GDB (xrefs)
Loading...
Searching...
No Matches
Macros | Functions | Variables
sparc-tdep.c File Reference
#include "defs.h"
#include "arch-utils.h"
#include "dis-asm.h"
#include "dwarf2.h"
#include "dwarf2/frame.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "gdbcore.h"
#include "gdbtypes.h"
#include "inferior.h"
#include "symtab.h"
#include "objfiles.h"
#include "osabi.h"
#include "regcache.h"
#include "target.h"
#include "target-descriptions.h"
#include "value.h"
#include "sparc-tdep.h"
#include "sparc-ravenscar-thread.h"
#include <algorithm>

Go to the source code of this file.

Macros

#define BIAS   2047
 
#define X_OP(i)   (((i) >> 30) & 0x3)
 
#define X_RD(i)   (((i) >> 25) & 0x1f)
 
#define X_A(i)   (((i) >> 29) & 1)
 
#define X_COND(i)   (((i) >> 25) & 0xf)
 
#define X_OP2(i)   (((i) >> 22) & 0x7)
 
#define X_IMM22(i)   ((i) & 0x3fffff)
 
#define X_OP3(i)   (((i) >> 19) & 0x3f)
 
#define X_RS1(i)   (((i) >> 14) & 0x1f)
 
#define X_RS2(i)   ((i) & 0x1f)
 
#define X_I(i)   (((i) >> 13) & 1)
 
#define X_DISP22(i)   ((X_IMM22 (i) ^ 0x200000) - 0x200000)
 
#define X_DISP19(i)   ((((i) & 0x7ffff) ^ 0x40000) - 0x40000)
 
#define X_DISP10(i)   ((((((i) >> 11) && 0x300) | (((i) >> 5) & 0xff)) ^ 0x200) - 0x200)
 
#define X_SIMM13(i)   ((((i) & 0x1fff) ^ 0x1000) - 0x1000)
 
#define X_RETTURN(i)   ((X_OP (i) == 0x2) && (X_OP3 (i) == 0x39))
 
#define SPARC32_FPU_REGISTERS
 
#define SPARC32_CP0_REGISTERS    "y", "psr", "wim", "tbr", "pc", "npc", "fsr", "csr"
 
#define SPARC32_NUM_REGS   ARRAY_SIZE (sparc32_register_names)
 
#define SPARC32_NUM_PSEUDO_REGS   ARRAY_SIZE (sparc32_pseudo_register_names)
 

Functions

unsigned long sparc_fetch_instruction (CORE_ADDR pc)
 
static int sparc_is_unimp_insn (CORE_ADDR pc)
 
int sparc_is_annulled_branch_insn (CORE_ADDR pc)
 
ULONGEST sparc_fetch_wcookie (struct gdbarch *gdbarch)
 
static int sparc_integral_or_pointer_p (const struct type *type)
 
static int sparc_floating_p (const struct type *type)
 
static int sparc_complex_floating_p (const struct type *type)
 
static int sparc_structure_or_union_p (const struct type *type)
 
static bool sparc_structure_return_p (const struct type *type)
 
static bool sparc_arg_by_memory_p (const struct type *type)
 
static const char * sparc32_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
 
static const char * sparc32_register_name (struct gdbarch *gdbarch, int regnum)
 
static struct typesparc_psr_type (struct gdbarch *gdbarch)
 
static struct typesparc_fsr_type (struct gdbarch *gdbarch)
 
static struct typesparc32_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
 
static struct typesparc32_register_type (struct gdbarch *gdbarch, int regnum)
 
static enum register_status sparc32_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum, gdb_byte *buf)
 
static void sparc32_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf)
 
int sparc_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static CORE_ADDR sparc32_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
 
static CORE_ADDR sparc32_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funcaddr, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache)
 
static CORE_ADDR sparc32_store_arguments (struct regcache *regcache, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr)
 
static CORE_ADDR sparc32_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)
 
typedef BP_MANIPULATION (sparc_break_insn)
 
static CORE_ADDR sparc_skip_stack_check (const CORE_ADDR start_pc)
 
void sparc_record_save_insn (struct sparc_frame_cache *cache)
 
CORE_ADDR sparc_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc, struct sparc_frame_cache *cache)
 
static CORE_ADDR sparc32_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 
struct sparc_frame_cache * sparc_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static int sparc32_struct_return_from_sym (struct symbol *sym)
 
struct sparc_frame_cachesparc32_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static void sparc32_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuesparc32_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static CORE_ADDR sparc32_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 
static struct frame_id sparc_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
 
static void sparc32_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *valbuf)
 
static void sparc32_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
 
static enum return_value_convention sparc32_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, struct value **read_value, const gdb_byte *writebuf)
 
static int sparc32_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type)
 
static int sparc32_dwarf2_struct_return_p (frame_info_ptr this_frame)
 
static void sparc32_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, frame_info_ptr this_frame)
 
static bool sparc_execute_dwarf_cfa_vendor_op (struct gdbarch *gdbarch, gdb_byte op, struct dwarf2_frame_state *fs)
 
static CORE_ADDR sparc_analyze_control_transfer (struct regcache *regcache, CORE_ADDR pc, CORE_ADDR *npc)
 
static CORE_ADDR sparc_step_trap (frame_info_ptr frame, unsigned long insn)
 
static std::vector< CORE_ADDR > sparc_software_single_step (struct regcache *regcache)
 
static void sparc_write_pc (struct regcache *regcache, CORE_ADDR pc)
 
static void sparc_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
 
static int validate_tdesc_registers (const struct target_desc *tdesc, struct tdesc_arch_data *tdesc_data, const char *feature_name, const char *const register_names[], unsigned int registers_num, unsigned int reg_start)
 
static struct gdbarchsparc32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
void sparc_supply_rwindow (struct regcache *regcache, CORE_ADDR sp, int regnum)
 
void sparc_collect_rwindow (const struct regcache *regcache, CORE_ADDR sp, int regnum)
 
void sparc32_supply_gregset (const struct sparc_gregmap *gregmap, struct regcache *regcache, int regnum, const void *gregs)
 
void sparc32_collect_gregset (const struct sparc_gregmap *gregmap, const struct regcache *regcache, int regnum, void *gregs)
 
void sparc32_supply_fpregset (const struct sparc_fpregmap *fpregmap, struct regcache *regcache, int regnum, const void *fpregs)
 
void sparc32_collect_fpregset (const struct sparc_fpregmap *fpregmap, const struct regcache *regcache, int regnum, void *fpregs)
 
void _initialize_sparc_tdep ()
 

Variables

static const char *const sparc_core_register_names []
 
static const char *const sparc32_fpu_register_names []
 
static const char *const sparc32_cp0_register_names []
 
static const char *const sparc32_register_names []
 
static const char *const sparc32_pseudo_register_names []
 
constexpr gdb_byte sparc_break_insn [] = { 0x91, 0xd0, 0x20, 0x01 }
 
static const struct frame_unwind sparc32_frame_unwind
 
static const struct frame_base sparc32_frame_base
 
const struct sparc_gregmap sparc32_sunos4_gregmap
 
const struct sparc_fpregmap sparc32_sunos4_fpregmap
 
const struct sparc_fpregmap sparc32_bsd_fpregmap
 

Macro Definition Documentation

◆ BIAS

#define BIAS   2047

◆ SPARC32_CP0_REGISTERS

#define SPARC32_CP0_REGISTERS    "y", "psr", "wim", "tbr", "pc", "npc", "fsr", "csr"

Definition at line 359 of file sparc-tdep.c.

◆ SPARC32_FPU_REGISTERS

#define SPARC32_FPU_REGISTERS
Value:
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"

Definition at line 354 of file sparc-tdep.c.

◆ SPARC32_NUM_PSEUDO_REGS

#define SPARC32_NUM_PSEUDO_REGS   ARRAY_SIZE (sparc32_pseudo_register_names)

Definition at line 392 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init(), and sparc32_pseudo_register_name().

◆ SPARC32_NUM_REGS

#define SPARC32_NUM_REGS   ARRAY_SIZE (sparc32_register_names)

Definition at line 380 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().

◆ X_A

#define X_A ( i)    (((i) >> 29) & 1)

Definition at line 73 of file sparc-tdep.c.

Referenced by sparc_analyze_control_transfer(), and sparc_is_annulled_branch_insn().

◆ X_COND

#define X_COND ( i)    (((i) >> 25) & 0xf)

Definition at line 74 of file sparc-tdep.c.

Referenced by sparc_analyze_control_transfer(), and sparc_skip_stack_check().

◆ X_DISP10

#define X_DISP10 ( i)    ((((((i) >> 11) && 0x300) | (((i) >> 5) & 0xff)) ^ 0x200) - 0x200)

Definition at line 84 of file sparc-tdep.c.

Referenced by sparc_analyze_control_transfer().

◆ X_DISP19

#define X_DISP19 ( i)    ((((i) & 0x7ffff) ^ 0x40000) - 0x40000)

Definition at line 83 of file sparc-tdep.c.

Referenced by sparc_analyze_control_transfer().

◆ X_DISP22

#define X_DISP22 ( i)    ((X_IMM22 (i) ^ 0x200000) - 0x200000)

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

Referenced by sparc_analyze_control_transfer().

◆ X_I

#define X_I ( i)    (((i) >> 13) & 1)

◆ X_IMM22

#define X_IMM22 ( i)    ((i) & 0x3fffff)

Definition at line 76 of file sparc-tdep.c.

◆ X_OP

#define X_OP ( i)    (((i) >> 30) & 0x3)

◆ X_OP2

#define X_OP2 ( i)    (((i) >> 22) & 0x7)

◆ X_OP3

#define X_OP3 ( i)    (((i) >> 19) & 0x3f)

◆ X_RD

#define X_RD ( i)    (((i) >> 25) & 0x1f)

◆ X_RETTURN

#define X_RETTURN ( i)    ((X_OP (i) == 0x2) && (X_OP3 (i) == 0x39))

Definition at line 88 of file sparc-tdep.c.

Referenced by sparc_stack_frame_destroyed_p().

◆ X_RS1

#define X_RS1 ( i)    (((i) >> 14) & 0x1f)

◆ X_RS2

#define X_RS2 ( i)    ((i) & 0x1f)

Definition at line 79 of file sparc-tdep.c.

Referenced by sparc_analyze_prologue(), and sparc_skip_stack_check().

◆ X_SIMM13

#define X_SIMM13 ( i)    ((((i) & 0x1fff) ^ 0x1000) - 0x1000)

Function Documentation

◆ _initialize_sparc_tdep()

void _initialize_sparc_tdep ( )

Definition at line 2269 of file sparc-tdep.c.

References gdbarch_register(), and sparc32_gdbarch_init().

◆ BP_MANIPULATION()

typedef BP_MANIPULATION ( sparc_break_insn )

◆ sparc32_collect_fpregset()

void sparc32_collect_fpregset ( const struct sparc_fpregmap * fpregmap,
const struct regcache * regcache,
int regnum,
void * fpregs )

◆ sparc32_collect_gregset()

void sparc32_collect_gregset ( const struct sparc_gregmap * gregmap,
const struct regcache * regcache,
int regnum,
void * gregs )

◆ sparc32_dwarf2_frame_init_reg()

static void sparc32_dwarf2_frame_init_reg ( struct gdbarch * gdbarch,
int regnum,
struct dwarf2_frame_state_reg * reg,
frame_info_ptr this_frame )
static

◆ sparc32_dwarf2_struct_return_p()

static int sparc32_dwarf2_struct_return_p ( frame_info_ptr this_frame)
static

◆ sparc32_extract_return_value()

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

◆ sparc32_frame_align()

static CORE_ADDR sparc32_frame_align ( struct gdbarch * gdbarch,
CORE_ADDR address )
static

Definition at line 576 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().

◆ sparc32_frame_base_address()

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

Definition at line 1362 of file sparc-tdep.c.

References sparc_frame_cache::base, and sparc32_frame_cache().

◆ sparc32_frame_cache()

struct sparc_frame_cache * sparc32_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )

◆ sparc32_frame_prev_register()

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

◆ sparc32_frame_this_id()

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

◆ sparc32_gdbarch_init()

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

Definition at line 1811 of file sparc-tdep.c.

References arches, core_addr_lessthan(), sparc_gdbarch_tdep::cp0_register_names, sparc_gdbarch_tdep::cp0_registers_num, dwarf2_frame_set_init_reg(), floatformats_ieee_quad, sparc_gdbarch_tdep::fpu_register_names, sparc_gdbarch_tdep::fpu_registers_num, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), registry< T >::get(), sparc_gdbarch_tdep::gregset, sparc_gdbarch_tdep::npc_regnum, ON_STACK, sparc_gdbarch_tdep::pc_regnum, register_sparc_ravenscar_ops(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_call_dummy_location(), set_gdbarch_dummy_id(), set_gdbarch_execute_dwarf_cfa_vendor_op(), set_gdbarch_fp0_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_args_skip(), set_gdbarch_inner_than(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_push_dummy_call(), set_gdbarch_push_dummy_code(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value_as_value(), set_gdbarch_skip_prologue(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_stabs_argument_has_addr(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_wchar_bit(), set_gdbarch_wchar_signed(), set_gdbarch_write_pc(), set_tdesc_pseudo_register_name(), set_tdesc_pseudo_register_type(), sparc32_cp0_register_names, sparc32_dwarf2_frame_init_reg(), sparc32_fpu_register_names, sparc32_frame_align(), sparc32_frame_base, sparc32_frame_unwind, SPARC32_NPC_REGNUM, SPARC32_NUM_PSEUDO_REGS, SPARC32_NUM_REGS, SPARC32_PC_REGNUM, sparc32_pseudo_register_name(), sparc32_pseudo_register_read(), sparc32_pseudo_register_type(), sparc32_pseudo_register_write(), sparc32_push_dummy_call(), sparc32_push_dummy_code(), sparc32_register_name(), sparc32_register_type(), sparc32_return_value(), sparc32_skip_prologue(), sparc32_stabs_argument_has_addr(), sparc_core_register_names, sparc_dummy_id(), sparc_execute_dwarf_cfa_vendor_op(), SPARC_F0_REGNUM, SPARC_G0_REGNUM, sparc_iterate_over_regset_sections(), sparc_software_single_step(), SPARC_SP_REGNUM, sparc_step_trap(), sparc_write_pc(), sparc_gdbarch_tdep::step_trap, tdesc_data, tdesc_data_alloc(), tdesc_has_registers(), tdesc_use_registers(), and validate_tdesc_registers().

Referenced by _initialize_sparc_tdep().

◆ sparc32_pseudo_register_name()

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

◆ sparc32_pseudo_register_read()

static enum register_status sparc32_pseudo_register_read ( struct gdbarch * gdbarch,
readable_regcache * regcache,
int regnum,
gdb_byte * buf )
static

◆ sparc32_pseudo_register_type()

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

◆ sparc32_pseudo_register_write()

static void sparc32_pseudo_register_write ( struct gdbarch * gdbarch,
struct regcache * regcache,
int regnum,
const gdb_byte * buf )
static

◆ sparc32_push_dummy_call()

static CORE_ADDR sparc32_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

◆ sparc32_push_dummy_code()

static CORE_ADDR sparc32_push_dummy_code ( struct gdbarch * gdbarch,
CORE_ADDR sp,
CORE_ADDR funcaddr,
struct value ** args,
int nargs,
struct type * value_type,
CORE_ADDR * real_pc,
CORE_ADDR * bp_addr,
struct regcache * regcache )
static

◆ sparc32_register_name()

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

◆ sparc32_register_type()

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

◆ sparc32_return_value()

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

◆ sparc32_skip_prologue()

static CORE_ADDR sparc32_skip_prologue ( struct gdbarch * gdbarch,
CORE_ADDR start_pc )
static

◆ sparc32_stabs_argument_has_addr()

static int sparc32_stabs_argument_has_addr ( struct gdbarch * gdbarch,
struct type * type )
static

◆ sparc32_store_arguments()

static CORE_ADDR sparc32_store_arguments ( struct regcache * regcache,
int nargs,
struct value ** args,
CORE_ADDR sp,
function_call_return_method return_method,
CORE_ADDR struct_addr )
static

◆ sparc32_store_return_value()

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

◆ sparc32_struct_return_from_sym()

static int sparc32_struct_return_from_sym ( struct symbol * sym)
static

◆ sparc32_supply_fpregset()

void sparc32_supply_fpregset ( const struct sparc_fpregmap * fpregmap,
struct regcache * regcache,
int regnum,
const void * fpregs )

◆ sparc32_supply_gregset()

void sparc32_supply_gregset ( const struct sparc_gregmap * gregmap,
struct regcache * regcache,
int regnum,
const void * gregs )

◆ sparc_analyze_control_transfer()

static CORE_ADDR sparc_analyze_control_transfer ( struct regcache * regcache,
CORE_ADDR pc,
CORE_ADDR * npc )
static

◆ sparc_analyze_prologue()

CORE_ADDR sparc_analyze_prologue ( struct gdbarch * gdbarch,
CORE_ADDR pc,
CORE_ADDR current_pc,
struct sparc_frame_cache * cache )

◆ sparc_arg_by_memory_p()

static bool sparc_arg_by_memory_p ( const struct type * type)
static

◆ sparc_collect_rwindow()

void sparc_collect_rwindow ( const struct regcache * regcache,
CORE_ADDR sp,
int regnum )

◆ sparc_complex_floating_p()

static int sparc_complex_floating_p ( const struct type * type)
static

◆ sparc_dummy_id()

static struct frame_id sparc_dummy_id ( struct gdbarch * gdbarch,
frame_info_ptr this_frame )
static

◆ sparc_execute_dwarf_cfa_vendor_op()

static bool sparc_execute_dwarf_cfa_vendor_op ( struct gdbarch * gdbarch,
gdb_byte op,
struct dwarf2_frame_state * fs )
static

◆ sparc_fetch_instruction()

unsigned long sparc_fetch_instruction ( CORE_ADDR pc)

◆ sparc_fetch_wcookie()

ULONGEST sparc_fetch_wcookie ( struct gdbarch * gdbarch)

◆ sparc_floating_p()

static int sparc_floating_p ( const struct type * type)
static

◆ sparc_frame_cache()

struct sparc_frame_cache * sparc_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )

◆ sparc_fsr_type()

static struct type * sparc_fsr_type ( struct gdbarch * gdbarch)
static

◆ sparc_integral_or_pointer_p()

static int sparc_integral_or_pointer_p ( const struct type * type)
static

Definition at line 209 of file sparc-tdep.c.

References type::code(), and type::length().

Referenced by sparc32_extract_return_value(), and sparc32_store_return_value().

◆ sparc_is_annulled_branch_insn()

int sparc_is_annulled_branch_insn ( CORE_ADDR pc)

Definition at line 126 of file sparc-tdep.c.

References sparc_fetch_instruction(), X_A, X_OP, and X_OP2.

Referenced by sparc64_linux_get_longjmp_target().

◆ sparc_is_unimp_insn()

static int sparc_is_unimp_insn ( CORE_ADDR pc)
static

Definition at line 115 of file sparc-tdep.c.

References sparc_fetch_instruction().

Referenced by sparc32_frame_cache().

◆ sparc_iterate_over_regset_sections()

static void sparc_iterate_over_regset_sections ( struct gdbarch * gdbarch,
iterate_over_regset_sections_cb * cb,
void * cb_data,
const struct regcache * regcache )
static

◆ sparc_psr_type()

static struct type * sparc_psr_type ( struct gdbarch * gdbarch)
static

◆ sparc_record_save_insn()

void sparc_record_save_insn ( struct sparc_frame_cache * cache)

◆ sparc_skip_stack_check()

static CORE_ADDR sparc_skip_stack_check ( const CORE_ADDR start_pc)
static

◆ sparc_software_single_step()

static std::vector< CORE_ADDR > sparc_software_single_step ( struct regcache * regcache)
static

◆ sparc_stack_frame_destroyed_p()

int sparc_stack_frame_destroyed_p ( struct gdbarch * gdbarch,
CORE_ADDR pc )

Definition at line 554 of file sparc-tdep.c.

References sparc_fetch_instruction(), and X_RETTURN.

Referenced by sparc64_init_abi().

◆ sparc_step_trap()

static CORE_ADDR sparc_step_trap ( frame_info_ptr frame,
unsigned long insn )
static

Definition at line 1724 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().

◆ sparc_structure_or_union_p()

static int sparc_structure_or_union_p ( const struct type * type)
static

◆ sparc_structure_return_p()

static bool sparc_structure_return_p ( const struct type * type)
static

◆ sparc_supply_rwindow()

void sparc_supply_rwindow ( struct regcache * regcache,
CORE_ADDR sp,
int regnum )

◆ sparc_write_pc()

static void sparc_write_pc ( struct regcache * regcache,
CORE_ADDR pc )
static

◆ validate_tdesc_registers()

static int validate_tdesc_registers ( const struct target_desc * tdesc,
struct tdesc_arch_data * tdesc_data,
const char * feature_name,
const char *const register_names[],
unsigned int registers_num,
unsigned int reg_start )
static

Definition at line 1788 of file sparc-tdep.c.

References tdesc_data, tdesc_find_feature(), and tdesc_numbered_register().

Referenced by sparc32_gdbarch_init().

Variable Documentation

◆ sparc32_bsd_fpregmap

const struct sparc_fpregmap sparc32_bsd_fpregmap

◆ sparc32_cp0_register_names

const char* const sparc32_cp0_register_names[]
static
Initial value:
= {
}
#define SPARC32_CP0_REGISTERS
Definition sparc-tdep.c:359

Definition at line 368 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().

◆ sparc32_fpu_register_names

const char* const sparc32_fpu_register_names[]
static
Initial value:
= {
}
#define SPARC32_FPU_REGISTERS
Definition sparc-tdep.c:354

Definition at line 365 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().

◆ sparc32_frame_base

const struct frame_base sparc32_frame_base
static
Initial value:
=
{
}
static const struct frame_unwind sparc32_frame_unwind
static CORE_ADDR sparc32_frame_base_address(frame_info_ptr this_frame, void **this_cache)

Definition at line 1370 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().

◆ sparc32_frame_unwind

const struct frame_unwind sparc32_frame_unwind
static
Initial value:
=
{
"sparc32 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 * sparc32_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
static void sparc32_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)

Definition at line 1349 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().

◆ sparc32_pseudo_register_names

const char* const sparc32_pseudo_register_names[]
static
Initial value:
=
{
"d0", "d2", "d4", "d6", "d8", "d10", "d12", "d14",
"d16", "d18", "d20", "d22", "d24", "d26", "d28", "d30"
}

Definition at line 385 of file sparc-tdep.c.

Referenced by sparc32_pseudo_register_name().

◆ sparc32_register_names

const char* const sparc32_register_names[]
static
Initial value:

Definition at line 372 of file sparc-tdep.c.

Referenced by sparc32_register_name().

◆ sparc32_sunos4_fpregmap

const struct sparc_fpregmap sparc32_sunos4_fpregmap
Initial value:
=
{
0 * 4,
33 * 4,
}

Definition at line 2255 of file sparc-tdep.c.

Referenced by _initialize_sparc_nat().

◆ sparc32_sunos4_gregmap

const struct sparc_gregmap sparc32_sunos4_gregmap
Initial value:
=
{
0 * 4,
1 * 4,
2 * 4,
3 * 4,
-1,
-1,
4 * 4,
-1
}

Definition at line 2243 of file sparc-tdep.c.

Referenced by _initialize_sparc_nat().

◆ sparc_break_insn

constexpr gdb_byte sparc_break_insn[] = { 0x91, 0xd0, 0x20, 0x01 }
constexpr

Definition at line 744 of file sparc-tdep.c.

◆ sparc_core_register_names

const char* const sparc_core_register_names[]
static
Initial value:

Definition at line 362 of file sparc-tdep.c.

Referenced by sparc32_gdbarch_init().