GDB (xrefs)

Classes | Functions | Variables
/tmp/gdb-8.1/gdb/or1k-tdep.c File Reference
`#include "defs.h"`
`#include "frame.h"`
`#include "inferior.h"`
`#include "symtab.h"`
`#include "value.h"`
`#include "gdbcmd.h"`
`#include "language.h"`
`#include "gdbcore.h"`
`#include "symfile.h"`
`#include "objfiles.h"`
`#include "gdbtypes.h"`
`#include "target.h"`
`#include "regcache.h"`
`#include "safe-ctype.h"`
`#include "block.h"`
`#include "reggroups.h"`
`#include "arch-utils.h"`
`#include "frame-unwind.h"`
`#include "frame-base.h"`
`#include "dwarf2-frame.h"`
`#include "trad-frame.h"`
`#include "regset.h"`
`#include "remote.h"`
`#include "target-descriptions.h"`
`#include <inttypes.h>`
`#include "dis-asm.h"`
`#include "or1k-tdep.h"`
`#include "features/or1k.c"`

Go to the source code of this file.

## Classes
struct | gdbarch_tdep

## Functions
static void | show_or1k_debug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
static ULONGEST | or1k_fetch_instruction (struct gdbarch *gdbarch, CORE_ADDR addr)
static bool | or1k_analyse_inst (uint32_t inst, const char *format,...)
static bool | or1k_analyse_l_addi (uint32_t inst, unsigned int *rd_ptr, unsigned int *ra_ptr, int *simm_ptr)
static bool | or1k_analyse_l_sw (uint32_t inst, int *simm_ptr, unsigned int *ra_ptr, unsigned int *rb_ptr)
static enum return_value_convention | or1k_return_value (struct gdbarch *gdbarch, struct value *functype, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
typedef | BP_MANIPULATION (or1k_break_insn)
static int | or1k_is_arg_reg (unsigned int regnum)
static int | or1k_is_callee_saved_reg (unsigned int regnum)
static CORE_ADDR | or1k_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
static CORE_ADDR | or1k_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
static CORE_ADDR | or1k_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
static CORE_ADDR | or1k_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
static CORE_ADDR | or1k_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR function, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache)
static CORE_ADDR | or1k_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
static struct frame_id | or1k_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
static struct trad_frame_cache * | or1k_frame_cache (struct frame_info *this_frame, void **prologue_cache)
static void | or1k_frame_this_id (struct frame_info *this_frame, void **prologue_cache, struct frame_id *this_id)
static struct value * | or1k_frame_prev_register (struct frame_info *this_frame, void **prologue_cache, int regnum)
static struct gdbarch * | or1k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
static void | or1k_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
void | _initialize_or1k_tdep (void)

## Variables
static int | or1k_debug = 0
constexpr gdb_byte | or1k_break_insn [] = {0x21, 0x00, 0x00, 0x01}
static const char *const | or1k_reg_names [OR1K_NUM_REGS]
static const struct frame_unwind | or1k_frame_unwind

## Function Documentation

## ◆ _initialize_or1k_tdep()

void _initialize_or1k_tdep | ( | void |  | ) |

Definition at line 1279 of file or1k-tdep.c.

References _, add_setshow_boolean_cmd(), class_maintenance, gdbarch_register(), initialize_tdesc_or1k(), or1k_debug, or1k_dump_tdep(), or1k_gdbarch_init(), setdebuglist, show_or1k_debug(), and showdebuglist.

## ◆ BP_MANIPULATION()

typedef BP_MANIPULATION | ( | or1k_break_insn |  | ) |

Definition at line 348 of file or1k-tdep.c.

References gdbarch_tdep::gdb_cgen_cpu_desc, gdbarch_tdep(), get_current_regcache(), or1k_fetch_instruction(), OR1K_NPC_REGNUM, OR1K_PPC_REGNUM, and regcache_cooked_read_unsigned().

## ◆ or1k_analyse_inst()

static bool or1k_analyse_inst | ( | uint32_t | inst,
|  | const char * | format,
|  |  | ...
| ) |  |
| static

Definition at line 93 of file or1k-tdep.c.

References _, bits, error(), gdb_assert, and OR1K_INSTBITLEN.

Referenced by or1k_analyse_l_addi(), and or1k_analyse_l_sw().

## ◆ or1k_analyse_l_addi()

static bool or1k_analyse_l_addi | ( | uint32_t | inst,
|  | unsigned int * | rd_ptr,
|  | unsigned int * | ra_ptr,
|  | int * | simm_ptr
| ) |  |
| static

Definition at line 184 of file or1k-tdep.c.

References or1k_analyse_inst().

Referenced by or1k_frame_cache(), and or1k_skip_prologue().

## ◆ or1k_analyse_l_sw()

static bool or1k_analyse_l_sw | ( | uint32_t | inst,
|  | int * | simm_ptr,
|  | unsigned int * | ra_ptr,
|  | unsigned int * | rb_ptr
| ) |  |
| static

Definition at line 215 of file or1k-tdep.c.

References or1k_analyse_inst().

Referenced by or1k_frame_cache(), and or1k_skip_prologue().

## ◆ or1k_dummy_id()

static struct frame_id or1k_dummy_id | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | this_frame
| ) |  |
| static

Definition at line 795 of file or1k-tdep.c.

References frame_id_build(), get_frame_pc(), and get_frame_sp().

Referenced by or1k_gdbarch_init().

## ◆ or1k_dump_tdep()

static void or1k_dump_tdep | ( | struct gdbarch * | gdbarch,
|  | struct ui_file * | file
| ) |  |
| static

Definition at line 1264 of file or1k-tdep.c.

References gdbarch_tdep::bytes_per_address, gdbarch_tdep::bytes_per_word, fprintf_unfiltered(), and gdbarch_tdep().

Referenced by _initialize_or1k_tdep().

## ◆ or1k_fetch_instruction()

static ULONGEST or1k_fetch_instruction | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | addr
| ) |  |
| static

Definition at line 78 of file or1k-tdep.c.

References extract_unsigned_integer(), gdbarch_byte_order(), memory_error(), OR1K_INSTLEN, target_read_code(), and TARGET_XFER_E_IO.

Referenced by BP_MANIPULATION(), or1k_frame_cache(), and or1k_skip_prologue().

## ◆ or1k_frame_align()

static CORE_ADDR or1k_frame_align | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | sp
| ) |  |
| static

Definition at line 525 of file or1k-tdep.c.

References align_down(), and OR1K_STACK_ALIGN.

Referenced by or1k_gdbarch_init(), and or1k_push_dummy_code().

## ◆ or1k_frame_cache()

static struct trad_frame_cache* or1k_frame_cache | ( | struct frame_info * | this_frame,
|  | void ** | prologue_cache
| ) |  |
| static

Definition at line 870 of file or1k-tdep.c.

References _, error(), find_pc_partial_function(), fprintf_unfiltered(), frame_id_build(), gdb_stdlog, get_frame_arch(), get_frame_pc(), get_frame_register_unsigned(), host_address_to_string, or1k_analyse_l_addi(), or1k_analyse_l_sw(), or1k_debug, or1k_fetch_instruction(), OR1K_FP_REGNUM, OR1K_INSTLEN, or1k_is_arg_reg(), or1k_is_callee_saved_reg(), OR1K_LR_REGNUM, OR1K_NPC_REGNUM, or1k_skip_prologue(), OR1K_SP_REGNUM, paddress(), trad_frame_cache::this_frame, trad_frame_cache_zalloc(), trad_frame_set_id(), trad_frame_set_reg_addr(), trad_frame_set_reg_realreg(), trad_frame_set_reg_value(), and trad_frame_set_this_base().

Referenced by or1k_frame_prev_register(), and or1k_frame_this_id().

## ◆ or1k_frame_prev_register()

static struct value* or1k_frame_prev_register | ( | struct frame_info * | this_frame,
|  | void ** | prologue_cache,
|  | int | regnum
| ) |  |
| static

Definition at line 1095 of file or1k-tdep.c.

References or1k_frame_cache(), regnum, trad_frame_cache::this_frame, and trad_frame_get_register().

## ◆ or1k_frame_this_id()

static void or1k_frame_this_id | ( | struct frame_info * | this_frame,
|  | void ** | prologue_cache,
|  | struct frame_id * | this_id
| ) |  |
| static

Definition at line 1083 of file or1k-tdep.c.

References or1k_frame_cache(), trad_frame_cache::this_frame, trad_frame_cache::this_id, and trad_frame_get_id().

## ◆ or1k_gdbarch_init()

static struct gdbarch* or1k_gdbarch_init | ( | struct gdbarch_info | info,
|  | struct gdbarch_list * | arches
| ) |  |
| static

Definition at line 1119 of file or1k-tdep.c.

References all_reggroup, gdbarch_info::bfd_arch_info, gdbarch_info::byte_order, gdbarch_tdep::bytes_per_address, gdbarch_tdep::bytes_per_word, core_addr_lessthan(), dwarf2_append_unwinders(), float_reggroup, floatformats_ieee_double, floatformats_ieee_single, frame_unwind_append_unwinder(), gdbarch_tdep::gdb_cgen_cpu_desc, gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_list_lookup_by_info(), general_reggroup, ON_STACK, or1k_dummy_id(), OR1K_FP_REGNUM, or1k_frame_align(), OR1K_FRAME_RED_ZONE_SIZE, or1k_frame_unwind, OR1K_NPC_REGNUM, OR1K_NUM_PSEUDO_REGS, OR1K_NUM_REGS, or1k_push_dummy_call(), or1k_push_dummy_code(), or1k_reg_names, or1k_return_value(), or1k_skip_prologue(), OR1K_SP_REGNUM, OR1K_SR_REGNUM, or1k_unwind_pc(), or1k_unwind_sp(), reggroup_add(), restore_reggroup, save_reggroup, set_gdbarch_addr_bit(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_call_dummy_location(), set_gdbarch_char_signed(), set_gdbarch_deprecated_fp_regnum(), set_gdbarch_double_bit(), set_gdbarch_double_format(), set_gdbarch_dummy_id(), set_gdbarch_float_bit(), set_gdbarch_float_format(), set_gdbarch_frame_align(), set_gdbarch_frame_red_zone_size(), set_gdbarch_have_nonsteppable_watchpoint(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_long_long_bit(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_ps_regnum(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_push_dummy_code(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_single_step_through_delay(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), system_reggroup, gdbarch_info::target_desc, tdesc_data, tdesc_data_alloc(), tdesc_data_cleanup(), tdesc_find_feature(), tdesc_has_registers(), tdesc_numbered_register(), tdesc_or1k, tdesc_use_registers(), vector_reggroup, and XCNEW.

Referenced by _initialize_or1k_tdep().

## ◆ or1k_is_arg_reg()

static int or1k_is_arg_reg | ( | unsigned int | regnum | ) |
| static

Definition at line 408 of file or1k-tdep.c.

References OR1K_FIRST_ARG_REGNUM, OR1K_LAST_ARG_REGNUM, and regnum.

Referenced by or1k_frame_cache(), and or1k_skip_prologue().

## ◆ or1k_is_callee_saved_reg()

static int or1k_is_callee_saved_reg | ( | unsigned int | regnum | ) |
| static

Definition at line 415 of file or1k-tdep.c.

References OR1K_FIRST_SAVED_REGNUM, and regnum.

Referenced by or1k_frame_cache(), and or1k_skip_prologue().

## ◆ or1k_push_dummy_call()

static CORE_ADDR or1k_push_dummy_call | ( | struct gdbarch * | gdbarch,
|  | struct value * | function,
|  | struct regcache * | regcache,
|  | CORE_ADDR | bp_addr,
|  | int | nargs,
|  | struct value ** | args,
|  | CORE_ADDR | sp,
|  | int | struct_return,
|  | CORE_ADDR | struct_addr
| ) |  |
| static

Definition at line 595 of file or1k-tdep.c.

References align_up(), check_typedef(), extract_unsigned_integer(), gdb_assert, gdbarch_byte_order(), gdbarch_frame_align(), gdbarch_tdep(), OR1K_FIRST_ARG_REGNUM, OR1K_LAST_ARG_REGNUM, OR1K_LR_REGNUM, OR1K_SP_REGNUM, regcache_cooked_write_unsigned(), store_unsigned_integer(), TYPE_CODE, TYPE_CODE_STRUCT, TYPE_CODE_UNION, TYPE_LENGTH, TYPE_NFIELDS, TYPE_VARARGS, value_address(), value_contents(), value_type(), and write_memory().

Referenced by or1k_gdbarch_init().

## ◆ or1k_push_dummy_code()

static CORE_ADDR or1k_push_dummy_code | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | sp,
|  | CORE_ADDR | function,
|  | struct value ** | args,
|  | int | nargs,
|  | struct type * | value_type,
|  | CORE_ADDR * | real_pc,
|  | CORE_ADDR * | bp_addr,
|  | struct regcache * | regcache
| ) |  |
| static

Definition at line 573 of file or1k-tdep.c.

References or1k_frame_align().

Referenced by or1k_gdbarch_init().

## ◆ or1k_return_value()

static enum return_value_convention or1k_return_value | ( | struct gdbarch * | gdbarch,
|  | struct value * | functype,
|  | struct type * | valtype,
|  | struct regcache * | regcache,
|  | gdb_byte * | readbuf,
|  | const gdb_byte * | writebuf
| ) |  |
| static

Definition at line 244 of file or1k-tdep.c.

References free(), gdbarch_byte_order(), gdbarch_tdep(), OR1K_RV_REGNUM, read_memory(), regcache_cooked_read_unsigned(), regcache_cooked_write(), RETURN_VALUE_ABI_RETURNS_ADDRESS, RETURN_VALUE_REGISTER_CONVENTION, store_unsigned_integer(), TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_STRUCT, TYPE_CODE_UNION, TYPE_LENGTH, write_memory(), and XCNEWVEC.

Referenced by or1k_gdbarch_init().

## ◆ or1k_skip_prologue()

static CORE_ADDR or1k_skip_prologue | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 423 of file or1k-tdep.c.

References COMPUNIT_DEBUGFORMAT, find_pc_line(), find_pc_partial_function(), gdb_assert, or1k_analyse_l_addi(), or1k_analyse_l_sw(), or1k_fetch_instruction(), OR1K_FP_REGNUM, OR1K_INSTLEN, or1k_is_arg_reg(), or1k_is_callee_saved_reg(), OR1K_LR_REGNUM, OR1K_SP_REGNUM, gdbarch_tdep::pc, skip_prologue_using_sal(), symtab_and_line::symtab, and SYMTAB_COMPUNIT.

Referenced by or1k_frame_cache(), and or1k_gdbarch_init().

## ◆ or1k_unwind_pc()

static CORE_ADDR or1k_unwind_pc | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | next_frame
| ) |  |
| static

Definition at line 533 of file or1k-tdep.c.

References fprintf_unfiltered(), frame_relative_level(), frame_unwind_register_unsigned(), gdb_stdlog, or1k_debug, OR1K_NPC_REGNUM, and paddress().

Referenced by or1k_gdbarch_init().

## ◆ or1k_unwind_sp()

static CORE_ADDR or1k_unwind_sp | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | next_frame
| ) |  |
| static

Definition at line 553 of file or1k-tdep.c.

References fprintf_unfiltered(), frame_relative_level(), frame_unwind_register_unsigned(), gdb_stdlog, or1k_debug, OR1K_SP_REGNUM, and paddress().

Referenced by or1k_gdbarch_init().

## ◆ show_or1k_debug()

static void show_or1k_debug | ( | struct ui_file * | file,
|  | int | from_tty,
|  | struct cmd_list_element * | c,
|  | const char * | value
| ) |  |
| static

Definition at line 57 of file or1k-tdep.c.

References _, and fprintf_filtered().

Referenced by _initialize_or1k_tdep().

## Variable Documentation

## ◆ or1k_break_insn

constexpr gdb_byte or1k_break_insn[] = {0x21, 0x00, 0x00, 0x01}

Definition at line 346 of file or1k-tdep.c.

## ◆ or1k_debug

int or1k_debug = 0
| static

Definition at line 54 of file or1k-tdep.c.

Referenced by _initialize_or1k_tdep(), or1k_frame_cache(), or1k_unwind_pc(), and or1k_unwind_sp().

## ◆ or1k_frame_unwind

const struct frame_unwind or1k_frame_unwind
| static

Initial value:
= {
NORMAL_FRAME,
default_frame_unwind_stop_reason,
or1k_frame_this_id,
or1k_frame_prev_register,
NULL,
default_frame_sniffer,
NULL,
}
or1k_frame_prev_register
static struct value * or1k_frame_prev_register(struct frame_info *this_frame, void **prologue_cache, int regnum)
Definition: or1k-tdep.c:1095
NORMAL_FRAME
Definition: frame.h:244
default_frame_sniffer
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:174
default_frame_unwind_stop_reason
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:184
or1k_frame_this_id
static void or1k_frame_this_id(struct frame_info *this_frame, void **prologue_cache, struct frame_id *this_id)
Definition: or1k-tdep.c:1083

Definition at line 1106 of file or1k-tdep.c.

Referenced by or1k_gdbarch_init().

## ◆ or1k_reg_names

const char* const or1k_reg_names[OR1K_NUM_REGS]
| static

Initial value:
= {
"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
"r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
"r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",
"ppc", "npc", "sr"
}

Definition at line 396 of file or1k-tdep.c.

Referenced by or1k_gdbarch_init().