GDB (xrefs)
|
#include "defs.h"
#include "arch-utils.h"
#include "dis-asm.h"
#include "frame.h"
#include "trad-frame.h"
#include "symtab.h"
#include "value.h"
#include "gdbcmd.h"
#include "breakpoint.h"
#include "inferior.h"
#include "regcache.h"
#include "target.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "dwarf2/frame.h"
#include "osabi.h"
#include "target-descriptions.h"
#include "opcodes/microblaze-opcm.h"
#include "opcodes/microblaze-dis.h"
#include "microblaze-tdep.h"
#include "remote.h"
#include "features/microblaze-with-stack-protect.c"
#include "features/microblaze.c"
Go to the source code of this file.
Macros | |
#define | IS_RETURN(op) (op == rtsd || op == rtid) |
#define | IS_UPDATE_SP(op, rd, ra) ((op == addik || op == addi) && rd == REG_SP && ra == REG_SP) |
#define | IS_SPILL_SP(op, rd, ra) ((op == swi || op == sw) && rd == REG_SP && ra == REG_SP) |
#define | IS_SPILL_REG(op, rd, ra) ((op == swi || op == sw) && rd != REG_SP && ra == REG_SP) |
#define | IS_ALSO_SPILL_REG(op, rd, ra, rb) ((op == swi || op == sw) && rd != REG_SP && ra == 0 && rb == REG_SP) |
#define | IS_SETUP_FP(op, ra, rb) ((op == add || op == addik || op == addk) && ra == REG_SP && rb == 0) |
#define | IS_SPILL_REG_FP(op, rd, ra, fpregnum) ((op == swi || op == sw) && rd != REG_SP && ra == fpregnum && ra != 0) |
#define | IS_SAVE_HIDDEN_PTR(op, rd, ra, rb) ((op == add || op == addik) && ra == MICROBLAZE_FIRST_ARGREG && rb == 0) |
#define | MICROBLAZE_NUM_REGS ARRAY_SIZE (microblaze_register_names) |
#define | microblaze_debug(fmt, ...) |
#define | MICROBLAZE_MY_FRAME_IN_SP 0x1 |
#define | MICROBLAZE_MY_FRAME_IN_FP 0x2 |
Functions | |
static const char * | microblaze_register_name (struct gdbarch *gdbarch, int regnum) |
static struct type * | microblaze_register_type (struct gdbarch *gdbarch, int regnum) |
static unsigned long | microblaze_fetch_instruction (CORE_ADDR pc) |
typedef | BP_MANIPULATION (microblaze_break_insn) |
static CORE_ADDR | microblaze_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc, struct microblaze_frame_cache *cache) |
static CORE_ADDR | microblaze_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame) |
static CORE_ADDR | microblaze_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) |
static struct microblaze_frame_cache * | microblaze_frame_cache (frame_info_ptr next_frame, void **this_cache) |
static void | microblaze_frame_this_id (frame_info_ptr next_frame, void **this_cache, struct frame_id *this_id) |
static struct value * | microblaze_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum) |
static CORE_ADDR | microblaze_frame_base_address (frame_info_ptr next_frame, void **this_cache) |
static void | microblaze_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *valbuf) |
static void | microblaze_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf) |
static enum return_value_convention | microblaze_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) |
static int | microblaze_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type) |
static int | microblaze_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int reg) |
static void | microblaze_register_g_packet_guesses (struct gdbarch *gdbarch) |
static struct gdbarch * | microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) |
void | _initialize_microblaze_tdep () |
Variables | |
static const char *const | microblaze_register_names [] |
static unsigned int | microblaze_debug_flag = 0 |
constexpr gdb_byte | microblaze_break_insn [] = MICROBLAZE_BREAKPOINT |
static const struct frame_unwind | microblaze_frame_unwind |
static const struct frame_base | microblaze_frame_base |
static int | dwarf2_to_reg_map [78] |
#define IS_ALSO_SPILL_REG | ( | op, | |
rd, | |||
ra, | |||
rb ) ((op == swi || op == sw) && rd != REG_SP && ra == 0 && rb == REG_SP) |
Definition at line 57 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define IS_RETURN | ( | op | ) | (op == rtsd || op == rtid) |
Definition at line 50 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define IS_SAVE_HIDDEN_PTR | ( | op, | |
rd, | |||
ra, | |||
rb ) ((op == add || op == addik) && ra == MICROBLAZE_FIRST_ARGREG && rb == 0) |
Definition at line 63 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define IS_SETUP_FP | ( | op, | |
ra, | |||
rb ) ((op == add || op == addik || op == addk) && ra == REG_SP && rb == 0) |
Definition at line 59 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define IS_SPILL_REG | ( | op, | |
rd, | |||
ra ) ((op == swi || op == sw) && rd != REG_SP && ra == REG_SP) |
Definition at line 55 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define IS_SPILL_REG_FP | ( | op, | |
rd, | |||
ra, | |||
fpregnum ) ((op == swi || op == sw) && rd != REG_SP && ra == fpregnum && ra != 0) |
Definition at line 61 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define IS_SPILL_SP | ( | op, | |
rd, | |||
ra ) ((op == swi || op == sw) && rd == REG_SP && ra == REG_SP) |
Definition at line 53 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define IS_UPDATE_SP | ( | op, | |
rd, | |||
ra ) ((op == addik || op == addi) && rd == REG_SP && ra == REG_SP) |
Definition at line 51 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define microblaze_debug | ( | fmt, | |
... ) |
Definition at line 85 of file microblaze-tdep.c.
Referenced by microblaze_analyze_prologue().
#define MICROBLAZE_MY_FRAME_IN_FP 0x2 |
Definition at line 165 of file microblaze-tdep.c.
#define MICROBLAZE_MY_FRAME_IN_SP 0x1 |
Definition at line 158 of file microblaze-tdep.c.
#define MICROBLAZE_NUM_REGS ARRAY_SIZE (microblaze_register_names) |
Definition at line 81 of file microblaze-tdep.c.
Referenced by microblaze_gdbarch_init(), microblaze_register_g_packet_guesses(), and microblaze_register_name().
void _initialize_microblaze_tdep | ( | ) |
Definition at line 741 of file microblaze-tdep.c.
References add_setshow_zuinteger_cmd(), class_maintenance, gdbarch_register(), initialize_tdesc_microblaze(), initialize_tdesc_microblaze_with_stack_protect(), microblaze_debug_flag, microblaze_gdbarch_init(), setdebuglist, and showdebuglist.
typedef BP_MANIPULATION | ( | microblaze_break_insn | ) |
Definition at line 130 of file microblaze-tdep.c.
References microblaze_frame_cache::base, FRAME_OBSTACK_ZALLOC, microblaze_frame_cache::frameless_p, and microblaze_frame_cache::pc.
|
static |
Definition at line 189 of file microblaze-tdep.c.
References find_pc_partial_function(), microblaze_frame_cache::fp_regnum, microblaze_frame_cache::frameless_p, microblaze_frame_cache::framesize, INST_WORD_SIZE, IS_ALSO_SPILL_REG, IS_RETURN, IS_SAVE_HIDDEN_PTR, IS_SETUP_FP, IS_SPILL_REG, IS_SPILL_REG_FP, IS_SPILL_SP, IS_UPDATE_SP, microblaze_debug, microblaze_fetch_instruction(), MICROBLAZE_SP_REGNUM, name, paddress(), microblaze_frame_cache::pc, and microblaze_frame_cache::register_offsets.
Referenced by microblaze_skip_prologue().
|
static |
Definition at line 618 of file microblaze-tdep.c.
References dwarf2_to_reg_map.
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 513 of file microblaze-tdep.c.
References readable_regcache::cooked_read(), type::length(), MICROBLAZE_REGISTER_SIZE, and MICROBLAZE_RETVAL_REGNUM.
Referenced by microblaze_return_value().
|
static |
Definition at line 116 of file microblaze-tdep.c.
References extract_unsigned_integer(), gdbarch_byte_order(), target_gdbarch(), and target_read_code().
Referenced by microblaze_analyze_prologue().
|
static |
Definition at line 493 of file microblaze-tdep.c.
References microblaze_frame_cache::base, and microblaze_frame_cache().
|
static |
Definition at line 420 of file microblaze-tdep.c.
References gdbarch_num_regs(), get_frame_address_in_block(), get_frame_arch(), get_frame_func(), microblaze_frame_cache::pc, microblaze_frame_cache::register_offsets, microblaze_frame_cache::saved_regs, and trad_frame_alloc_saved_regs().
Referenced by microblaze_frame_base_address(), microblaze_frame_prev_register(), and microblaze_frame_this_id().
|
static |
Definition at line 460 of file microblaze-tdep.c.
References microblaze_frame_cache::frameless_p, microblaze_frame_cache(), MICROBLAZE_PC_REGNUM, MICROBLAZE_SP_REGNUM, regnum, microblaze_frame_cache::saved_regs, and trad_frame_get_prev_register().
|
static |
Definition at line 446 of file microblaze-tdep.c.
References microblaze_frame_cache::base, frame_id_build(), microblaze_frame_cache(), and microblaze_frame_cache::pc.
|
static |
Definition at line 638 of file microblaze-tdep.c.
References arches, core_addr_lessthan(), dwarf2_append_unwinders(), dwarf2_frame_base_sniffer(), frame_base_append_sniffer(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), registry< T >::get(), microblaze_dwarf2_reg_to_regnum(), microblaze_frame_base, microblaze_frame_unwind, MICROBLAZE_NUM_CORE_REGS, MICROBLAZE_NUM_REGS, MICROBLAZE_PC_REGNUM, microblaze_register_g_packet_guesses(), microblaze_register_name(), microblaze_register_names, microblaze_register_type(), microblaze_return_value(), MICROBLAZE_SHR_REGNUM, microblaze_skip_prologue(), MICROBLAZE_SLR_REGNUM, MICROBLAZE_SP_REGNUM, microblaze_stabs_argument_has_addr(), microblaze_unwind_pc(), ON_STACK, set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_call_dummy_location(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_frame_args_skip(), set_gdbarch_inner_than(), set_gdbarch_long_double_bit(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stabs_argument_has_addr(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_unwind_pc(), tdesc_data, tdesc_data_alloc(), tdesc_find_feature(), tdesc_has_registers(), tdesc_microblaze, tdesc_numbered_register(), and tdesc_use_registers().
Referenced by _initialize_microblaze_tdep().
|
static |
Definition at line 626 of file microblaze-tdep.c.
References MICROBLAZE_NUM_CORE_REGS, MICROBLAZE_NUM_REGS, register_remote_g_packet_guess(), tdesc_microblaze, and tdesc_microblaze_with_stack_protect.
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 93 of file microblaze-tdep.c.
References gdb_static_assert(), MICROBLAZE_NUM_REGS, microblaze_register_names, and regnum.
Referenced by microblaze_gdbarch_init().
Definition at line 101 of file microblaze-tdep.c.
References builtin_type::builtin_data_ptr, builtin_type::builtin_func_ptr, builtin_type::builtin_int, builtin_type(), MICROBLAZE_PC_REGNUM, MICROBLAZE_SP_REGNUM, and regnum.
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 575 of file microblaze-tdep.c.
References microblaze_extract_return_value(), microblaze_store_return_value(), and RETURN_VALUE_REGISTER_CONVENTION.
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 390 of file microblaze-tdep.c.
References symtab_and_line::end, find_pc_line(), find_pc_partial_function(), and microblaze_analyze_prologue().
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 588 of file microblaze-tdep.c.
References type::length().
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 551 of file microblaze-tdep.c.
References regcache::cooked_write(), type::length(), and MICROBLAZE_RETVAL_REGNUM.
Referenced by microblaze_return_value().
|
static |
Definition at line 371 of file microblaze-tdep.c.
References extract_typed_address(), frame_relative_level(), frame_unwind_register(), MICROBLAZE_PC_REGNUM, and microblaze_frame_cache::pc.
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 594 of file microblaze-tdep.c.
Referenced by microblaze_dwarf2_reg_to_regnum().
|
constexpr |
Definition at line 128 of file microblaze-tdep.c.
|
static |
Definition at line 83 of file microblaze-tdep.c.
Referenced by _initialize_microblaze_tdep().
|
static |
Definition at line 502 of file microblaze-tdep.c.
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 481 of file microblaze-tdep.c.
Referenced by microblaze_gdbarch_init().
|
static |
Definition at line 68 of file microblaze-tdep.c.
Referenced by microblaze_gdbarch_init(), and microblaze_register_name().