GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Enumerations | Functions | Variables
xstormy16-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "dwarf2/frame.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "value.h"
#include "dis-asm.h"
#include "inferior.h"
#include "arch-utils.h"
#include "regcache.h"
#include "osabi.h"
#include "objfiles.h"
#include "gdbsupport/byte-vector.h"

Go to the source code of this file.

Classes

struct  xstormy16_frame_cache
 

Macros

#define E_MAX_RETTYPE_SIZE(regnum)
 

Enumerations

enum  gdb_regnum {
  E_R0_REGNUM , E_R1_REGNUM , E_R2_REGNUM , E_1ST_ARG_REGNUM = E_R2_REGNUM ,
  E_PTR_RET_REGNUM = E_R2_REGNUM , E_R3_REGNUM , E_R4_REGNUM , E_R5_REGNUM ,
  E_R6_REGNUM , E_R7_REGNUM , E_LST_ARG_REGNUM = E_R7_REGNUM , E_R8_REGNUM ,
  E_R9_REGNUM , E_R10_REGNUM , E_R11_REGNUM , E_R12_REGNUM ,
  E_R13_REGNUM , E_FP_REGNUM = E_R13_REGNUM , E_R14_REGNUM , E_PSW_REGNUM = E_R14_REGNUM ,
  E_R15_REGNUM , E_SP_REGNUM = E_R15_REGNUM , E_PC_REGNUM , E_NUM_REGS
}
 
enum  { REG_UNAVAIL = (CORE_ADDR) -1 }
 
enum  { xstormy16_inst_size = 2 , xstormy16_reg_size = 2 , xstormy16_pc_size = 4 }
 
enum  { E_MAX_RETTYPE_SIZE_IN_REGS = E_MAX_RETTYPE_SIZE (E_R2_REGNUM) }
 

Functions

static const char * xstormy16_register_name (struct gdbarch *gdbarch, int regnum)
 
static struct typexstormy16_register_type (struct gdbarch *gdbarch, int regnum)
 
static int xstormy16_type_is_scalar (struct type *t)
 
static int xstormy16_use_struct_convention (struct type *type)
 
static void xstormy16_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *valbuf)
 
static void xstormy16_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
 
static enum return_value_convention xstormy16_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static CORE_ADDR xstormy16_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static CORE_ADDR xstormy16_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr)
 
static CORE_ADDR xstormy16_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR start_addr, CORE_ADDR end_addr, struct xstormy16_frame_cache *cache, frame_info_ptr this_frame)
 
static CORE_ADDR xstormy16_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static int xstormy16_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 
typedef BP_MANIPULATION (xstormy16_break_insn)
 
static CORE_ADDR xstormy16_find_jmp_table_entry (struct gdbarch *gdbarch, CORE_ADDR faddr)
 
static CORE_ADDR xstormy16_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
 
static CORE_ADDR xstormy16_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf)
 
static void xstormy16_address_to_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr)
 
static struct xstormy16_frame_cachexstormy16_alloc_frame_cache (void)
 
static struct xstormy16_frame_cache * xstormy16_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static struct valuexstormy16_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static void xstormy16_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static CORE_ADDR xstormy16_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 
static struct gdbarchxstormy16_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
void _initialize_xstormy16_tdep ()
 

Variables

constexpr gdb_byte xstormy16_break_insn [] = { 0x06, 0x0 }
 
static const struct frame_unwind xstormy16_frame_unwind
 
static const struct frame_base xstormy16_frame_base
 

Macro Definition Documentation

◆ E_MAX_RETTYPE_SIZE

#define E_MAX_RETTYPE_SIZE ( regnum)
Value:
((E_LST_ARG_REGNUM - (regnum) + 1) \
int regnum
@ xstormy16_reg_size
@ E_LST_ARG_REGNUM

Definition at line 90 of file xstormy16-tdep.c.

Referenced by xstormy16_push_dummy_call().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
REG_UNAVAIL 

Definition at line 68 of file xstormy16-tdep.c.

◆ anonymous enum

anonymous enum
Enumerator
xstormy16_inst_size 
xstormy16_reg_size 
xstormy16_pc_size 

Definition at line 82 of file xstormy16-tdep.c.

◆ anonymous enum

anonymous enum
Enumerator
E_MAX_RETTYPE_SIZE_IN_REGS 

Definition at line 94 of file xstormy16-tdep.c.

◆ gdb_regnum

enum gdb_regnum
Enumerator
E_R0_REGNUM 
E_R1_REGNUM 
E_R2_REGNUM 
E_1ST_ARG_REGNUM 
E_PTR_RET_REGNUM 
E_R3_REGNUM 
E_R4_REGNUM 
E_R5_REGNUM 
E_R6_REGNUM 
E_R7_REGNUM 
E_LST_ARG_REGNUM 
E_R8_REGNUM 
E_R9_REGNUM 
E_R10_REGNUM 
E_R11_REGNUM 
E_R12_REGNUM 
E_R13_REGNUM 
E_FP_REGNUM 
E_R14_REGNUM 
E_PSW_REGNUM 
E_R15_REGNUM 
E_SP_REGNUM 
E_PC_REGNUM 
E_NUM_REGS 

Definition at line 38 of file xstormy16-tdep.c.

Function Documentation

◆ _initialize_xstormy16_tdep()

void _initialize_xstormy16_tdep ( )

Definition at line 831 of file xstormy16-tdep.c.

References gdbarch_register(), and xstormy16_gdbarch_init().

◆ BP_MANIPULATION()

typedef BP_MANIPULATION ( xstormy16_break_insn )

◆ xstormy16_address_to_pointer()

static void xstormy16_address_to_pointer ( struct gdbarch * gdbarch,
struct type * type,
gdb_byte * buf,
CORE_ADDR addr )
static

◆ xstormy16_alloc_frame_cache()

static struct xstormy16_frame_cache * xstormy16_alloc_frame_cache ( void )
static

◆ xstormy16_analyze_prologue()

static CORE_ADDR xstormy16_analyze_prologue ( struct gdbarch * gdbarch,
CORE_ADDR start_addr,
CORE_ADDR end_addr,
struct xstormy16_frame_cache * cache,
frame_info_ptr this_frame )
static

◆ xstormy16_extract_return_value()

static void xstormy16_extract_return_value ( struct type * type,
struct regcache * regcache,
gdb_byte * valbuf )
static

◆ xstormy16_find_jmp_table_entry()

static CORE_ADDR xstormy16_find_jmp_table_entry ( struct gdbarch * gdbarch,
CORE_ADDR faddr )
static

◆ xstormy16_frame_align()

static CORE_ADDR xstormy16_frame_align ( struct gdbarch * gdbarch,
CORE_ADDR addr )
static

Definition at line 206 of file xstormy16-tdep.c.

Referenced by xstormy16_gdbarch_init(), and xstormy16_push_dummy_call().

◆ xstormy16_frame_base_address()

static CORE_ADDR xstormy16_frame_base_address ( frame_info_ptr this_frame,
void ** this_cache )
static

Definition at line 723 of file xstormy16-tdep.c.

References xstormy16_frame_cache::base, and xstormy16_frame_cache().

◆ xstormy16_frame_cache()

static struct xstormy16_frame_cache * xstormy16_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ xstormy16_frame_prev_register()

static struct value * xstormy16_frame_prev_register ( frame_info_ptr this_frame,
void ** this_cache,
int regnum )
static

◆ xstormy16_frame_this_id()

static void xstormy16_frame_this_id ( frame_info_ptr this_frame,
void ** this_cache,
struct frame_id * this_id )
static

◆ xstormy16_gdbarch_init()

static struct gdbarch * xstormy16_gdbarch_init ( struct gdbarch_info info,
struct gdbarch_list * arches )
static

Definition at line 752 of file xstormy16-tdep.c.

References arches, core_addr_greaterthan(), dwarf2_append_unwinders(), E_NUM_REGS, E_PC_REGNUM, E_SP_REGNUM, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch::info(), set_gdbarch_addr_bit(), set_gdbarch_address_to_pointer(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_char_signed(), set_gdbarch_double_bit(), set_gdbarch_dwarf2_addr_size(), set_gdbarch_float_bit(), set_gdbarch_frame_align(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_pointer_to_address(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_skip_trampoline_code(), set_gdbarch_sp_regnum(), set_gdbarch_stack_frame_destroyed_p(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_wchar_bit(), set_gdbarch_wchar_signed(), xstormy16_address_to_pointer(), xstormy16_frame_align(), xstormy16_frame_base, xstormy16_frame_unwind, xstormy16_pointer_to_address(), xstormy16_push_dummy_call(), xstormy16_register_name(), xstormy16_register_type(), xstormy16_return_value(), xstormy16_skip_prologue(), xstormy16_skip_trampoline_code(), and xstormy16_stack_frame_destroyed_p().

Referenced by _initialize_xstormy16_tdep().

◆ xstormy16_pointer_to_address()

static CORE_ADDR xstormy16_pointer_to_address ( struct gdbarch * gdbarch,
struct type * type,
const gdb_byte * buf )
static

◆ xstormy16_push_dummy_call()

static CORE_ADDR xstormy16_push_dummy_call ( struct gdbarch * gdbarch,
struct value * function,
struct regcache * regcache,
CORE_ADDR bp_addr,
int nargs,
struct value ** args,
CORE_ADDR sp,
function_call_return_method return_method,
CORE_ADDR struct_addr )
static

◆ xstormy16_register_name()

static const char * xstormy16_register_name ( struct gdbarch * gdbarch,
int regnum )
static

Definition at line 103 of file xstormy16-tdep.c.

References E_NUM_REGS, gdb_static_assert(), and regnum.

Referenced by xstormy16_gdbarch_init().

◆ xstormy16_register_type()

static struct type * xstormy16_register_type ( struct gdbarch * gdbarch,
int regnum )
static

◆ xstormy16_return_value()

static enum return_value_convention xstormy16_return_value ( struct gdbarch * gdbarch,
struct value * function,
struct type * type,
struct regcache * regcache,
gdb_byte * readbuf,
const gdb_byte * writebuf )
static

◆ xstormy16_skip_prologue()

static CORE_ADDR xstormy16_skip_prologue ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

◆ xstormy16_skip_trampoline_code()

static CORE_ADDR xstormy16_skip_trampoline_code ( frame_info_ptr frame,
CORE_ADDR pc )
static

Definition at line 583 of file xstormy16-tdep.c.

References get_frame_arch().

Referenced by xstormy16_gdbarch_init().

◆ xstormy16_stack_frame_destroyed_p()

static int xstormy16_stack_frame_destroyed_p ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

◆ xstormy16_store_return_value()

static void xstormy16_store_return_value ( struct type * type,
struct regcache * regcache,
const gdb_byte * valbuf )
static

◆ xstormy16_type_is_scalar()

static int xstormy16_type_is_scalar ( struct type * t)
static

Definition at line 129 of file xstormy16-tdep.c.

References type::code().

Referenced by xstormy16_use_struct_convention().

◆ xstormy16_use_struct_convention()

static int xstormy16_use_struct_convention ( struct type * type)
static

Variable Documentation

◆ xstormy16_break_insn

constexpr gdb_byte xstormy16_break_insn[] = { 0x06, 0x0 }
constexpr

Definition at line 499 of file xstormy16-tdep.c.

◆ xstormy16_frame_base

const struct frame_base xstormy16_frame_base
static
Initial value:
= {
}
static const struct frame_unwind xstormy16_frame_unwind
static CORE_ADDR xstormy16_frame_base_address(frame_info_ptr this_frame, void **this_cache)

Definition at line 740 of file xstormy16-tdep.c.

Referenced by xstormy16_gdbarch_init().

◆ xstormy16_frame_unwind

const struct frame_unwind xstormy16_frame_unwind
static
Initial value:
= {
"xstormy16 prologue",
NULL,
}
int default_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
@ NORMAL_FRAME
Definition frame.h:187
static struct value * xstormy16_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
static void xstormy16_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)

Definition at line 730 of file xstormy16-tdep.c.

Referenced by xstormy16_gdbarch_init().