GDB (xrefs)
Classes | Macros | Typedefs | Enumerations | Functions | Variables
/tmp/gdb-7.10/gdb/xtensa-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "solib-svr4.h"
#include "symtab.h"
#include "symfile.h"
#include "objfiles.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "value.h"
#include "dis-asm.h"
#include "inferior.h"
#include "floatformat.h"
#include "regcache.h"
#include "reggroups.h"
#include "regset.h"
#include "dummy-frame.h"
#include "dwarf2.h"
#include "dwarf2-frame.h"
#include "dwarf2loc.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "arch-utils.h"
#include "gdbarch.h"
#include "remote.h"
#include "serial.h"
#include "command.h"
#include "gdbcmd.h"
#include "xtensa-isa.h"
#include "xtensa-tdep.h"
#include "xtensa-config.h"

Go to the source code of this file.

Classes

struct  xtensa_windowed_frame_cache
 
struct  xtensa_c0reg
 
struct  xtensa_call0_frame_cache
 
struct  xtensa_frame_cache
 

Macros

#define DEBUGWARN(args...)
 
#define DEBUGINFO(args...)
 
#define DEBUGTRACE(args...)
 
#define DEBUGVERB(args...)
 
#define SP_ALIGNMENT   16
 
#define ARGS_NUM_REGS   6
 
#define REGISTER_SIZE   4
 
#define PS_CALLINC_SHIFT   16
 
#define PS_CALLINC_MASK   0x00030000
 
#define CALLINC(ps)   (((ps) & PS_CALLINC_MASK) >> PS_CALLINC_SHIFT)
 
#define WINSIZE(ra)   (4 * (( (ra) >> 30) & 0x3))
 
#define TX_PS   0x20
 
#define ARG_NOF(gdbarch)
 
#define ARG_1ST(gdbarch)
 
#define XTENSA_IS_ENTRY(gdbarch, op1)
 
#define XTENSA_ENTRY_LENGTH   3
 
#define PS_WOE   (1<<18)
 
#define PS_EXC   (1<<4)
 
#define SAVE_REST_FLAGS
 
#define SAVE_REST_VALID
 
#define XTENSA_NUM_SAVED_AREGS   12
 
#define C0_MAXOPDS
 
#define C0_NREGS   16 /* Number of A-registers to track. */
 
#define C0_CLESV   12 /* Callee-saved registers are here and up. */
 
#define C0_SP   1 /* Register used as SP. */
 
#define C0_FP   15 /* Register used as FP. */
 
#define C0_RA   0 /* Register used as return address. */
 
#define C0_ARGS   2 /* Register used as first arg/retval. */
 
#define C0_NARGS   6 /* Number of A-regs for args/retvals. */
 
#define C0_CONST   -1 /* fr_reg value if register contains a constant. */
 
#define C0_INEXP   -2 /* fr_reg value if inexpressible as reg + offset. */
 
#define C0_NOSTK   -1 /* to_stk value if register has not been stored. */
 
#define XTENSA_ISA_BSZ   32 /* Instruction buffer size. */
 
#define XTENSA_ISA_BADPC   ((CORE_ADDR)0) /* Bad PC value. */
 
#define RETURN_FP   goto done
 
#define BIG_BREAKPOINT   { 0x00, 0x04, 0x00 }
 
#define LITTLE_BREAKPOINT   { 0x00, 0x40, 0x00 }
 
#define DENSITY_BIG_BREAKPOINT   { 0xd2, 0x0f }
 
#define DENSITY_LITTLE_BREAKPOINT   { 0x2d, 0xf0 }
 
#define RETURN_RET   goto done
 
#define XTENSA_MAX_WINDOW_INTERRUPT_HANDLER_LEN   200
 
#define XTENSA_DBREGN_SREG(n)   (0x0200+(n))
 

Typedefs

typedef struct xtensa_windowed_frame_cache xtensa_windowed_frame_cache_t
 
typedef struct xtensa_c0reg xtensa_c0reg_t
 
typedef struct xtensa_call0_frame_cache xtensa_call0_frame_cache_t
 
typedef struct xtensa_frame_cache xtensa_frame_cache_t
 

Enumerations

enum  xtensa_insn_kind {
  c0opc_illegal, c0opc_uninteresting, c0opc_flow, c0opc_entry,
  c0opc_break, c0opc_add, c0opc_addi, c0opc_and,
  c0opc_sub, c0opc_mov, c0opc_movi, c0opc_l32r,
  c0opc_s32i, c0opc_rwxsr, c0opc_l32e, c0opc_s32e,
  c0opc_rfwo, c0opc_rfwu, c0opc_NrOf
}
 
enum  xtensa_exception_handler_t { xtWindowOverflow, xtWindowUnderflow, xtNoExceptionHandler }
 

Functions

static int windowing_enabled (struct gdbarch *gdbarch, unsigned int ps)
 
static int arreg_number (struct gdbarch *gdbarch, int a_regnum, ULONGEST wb)
 
static int areg_number (struct gdbarch *gdbarch, int ar_regnum, unsigned int wb)
 
static unsigned long xtensa_read_register (int regnum)
 
static void xtensa_write_register (int regnum, ULONGEST value)
 
static int extract_call_winsize (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static int xtensa_find_register_by_name (struct gdbarch *gdbarch, char *name)
 
static const char * xtensa_register_name (struct gdbarch *gdbarch, int regnum)
 
static struct typextensa_register_type (struct gdbarch *gdbarch, int regnum)
 
static int xtensa_reg_to_regnum (struct gdbarch *gdbarch, int regnum)
 
static void xtensa_register_write_masked (struct regcache *regcache, xtensa_register_t *reg, const gdb_byte *buffer)
 
static enum register_status xtensa_register_read_masked (struct regcache *regcache, xtensa_register_t *reg, gdb_byte *buffer)
 
static enum register_status xtensa_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, gdb_byte *buffer)
 
static void xtensa_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buffer)
 
static void xtensa_init_reggroups (void)
 
static void xtensa_add_reggroups (struct gdbarch *gdbarch)
 
static int xtensa_coprocessor_register_group (struct reggroup *group)
 
static int xtensa_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *group)
 
static void xtensa_supply_gregset (const struct regset *regset, struct regcache *rc, int regnum, const void *gregs, size_t len)
 
static void xtensa_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
 
static struct xtensa_frame_cachextensa_alloc_frame_cache (int windowed)
 
static CORE_ADDR xtensa_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
 
static CORE_ADDR xtensa_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
 
static struct frame_id xtensa_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
 
static int xtensa_window_interrupt_insn (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static unsigned int xtensa_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR current_pc)
 
static void call0_frame_cache (struct frame_info *this_frame, xtensa_frame_cache_t *cache, CORE_ADDR pc)
 
static void xtensa_window_interrupt_frame_cache (struct frame_info *this_frame, xtensa_frame_cache_t *cache, CORE_ADDR pc)
 
static struct xtensa_frame_cachextensa_frame_cache (struct frame_info *this_frame, void **this_cache)
 
static void warning_once (void)
 
static void xtensa_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuextensa_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
 
static CORE_ADDR xtensa_frame_base_address (struct frame_info *this_frame, void **this_cache)
 
static void xtensa_extract_return_value (struct type *type, struct regcache *regcache, void *dst)
 
static void xtensa_store_return_value (struct type *type, struct regcache *regcache, const void *dst)
 
static enum return_value_convention xtensa_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static CORE_ADDR xtensa_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 const unsigned char * xtensa_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
 
static int call0_ret (CORE_ADDR start_pc, CORE_ADDR finish_pc)
 
static int rwx_special_register (const char *opcname)
 
static xtensa_insn_kind call0_classify_opcode (xtensa_isa isa, xtensa_opcode opc)
 
static int call0_track_op (struct gdbarch *gdbarch, xtensa_c0reg_t dst[], xtensa_c0reg_t src[], xtensa_insn_kind opclass, int nods, unsigned odv[], CORE_ADDR pc, int spreg, xtensa_frame_cache_t *cache)
 
static CORE_ADDR call0_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR start, CORE_ADDR pc, int nregs, xtensa_frame_cache_t *cache)
 
static void execute_l32e (struct gdbarch *gdbarch, int at, int as, int offset, CORE_ADDR wb)
 
static void execute_s32e (struct gdbarch *gdbarch, int at, int as, int offset, CORE_ADDR wb)
 
static xtensa_exception_handler_t execute_code (struct gdbarch *gdbarch, CORE_ADDR current_pc, CORE_ADDR wb)
 
static CORE_ADDR xtensa_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 
static void xtensa_verify_config (struct gdbarch *gdbarch)
 
static void xtensa_derive_tdep (struct gdbarch_tdep *tdep)
 
static struct gdbarchxtensa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
static void xtensa_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
 
void _initialize_xtensa_tdep (void)
 

Variables

static unsigned int xtensa_debug_level = 0
 
static struct reggroupxtensa_ar_reggroup
 
static struct reggroupxtensa_user_reggroup
 
static struct reggroupxtensa_vectra_reggroup
 
static struct reggroupxtensa_cp [XTENSA_MAX_COPROCESSOR]
 
static struct regset xtensa_gregset
 
xtensa_isa xtensa_default_isa
 
static int xtensa_session_once_reported = 1
 
static const struct frame_unwind xtensa_unwind
 
static const struct frame_base xtensa_frame_base
 
static CORE_ADDR a0_saved
 
static CORE_ADDR a7_saved
 
static CORE_ADDR a11_saved
 
static int a0_was_saved
 
static int a7_was_saved
 
static int a11_was_saved
 
struct gdbarch_tdep xtensa_tdep
 
initialize_file_ftype _initialize_xtensa_tdep
 

Macro Definition Documentation

#define ARG_1ST (   gdbarch)
Value:
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
Definition: gdbarch.c:1402
#define C0_ARGS
Definition: xtensa-tdep.c:949
call_abi_t call_abi
Definition: xtensa-tdep.h:184

Definition at line 100 of file xtensa-tdep.c.

Referenced by xtensa_push_dummy_call().

#define ARG_NOF (   gdbarch)
Value:
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
Definition: gdbarch.c:1402
#define C0_NARGS
Definition: xtensa-tdep.c:950
call_abi_t call_abi
Definition: xtensa-tdep.h:184
#define ARGS_NUM_REGS
Definition: xtensa-tdep.c:81

Definition at line 97 of file xtensa-tdep.c.

Referenced by xtensa_push_dummy_call().

#define ARGS_NUM_REGS   6

Definition at line 81 of file xtensa-tdep.c.

#define BIG_BREAKPOINT   { 0x00, 0x04, 0x00 }

Definition at line 1966 of file xtensa-tdep.c.

Referenced by xtensa_breakpoint_from_pc().

#define C0_ARGS   2 /* Register used as first arg/retval. */

Definition at line 949 of file xtensa-tdep.c.

Referenced by xtensa_extract_return_value(), and xtensa_store_return_value().

#define C0_CLESV   12 /* Callee-saved registers are here and up. */

Definition at line 945 of file xtensa-tdep.c.

#define C0_CONST   -1 /* fr_reg value if register contains a constant. */

Definition at line 959 of file xtensa-tdep.c.

Referenced by call0_frame_cache(), and call0_track_op().

#define C0_FP   15 /* Register used as FP. */

Definition at line 947 of file xtensa-tdep.c.

Referenced by call0_frame_cache().

#define C0_INEXP   -2 /* fr_reg value if inexpressible as reg + offset. */

Definition at line 960 of file xtensa-tdep.c.

Referenced by call0_frame_cache(), call0_track_op(), and xtensa_alloc_frame_cache().

#define C0_MAXOPDS
Value:
3 /* Maximum number of operands for prologue
analysis. */

Definition at line 942 of file xtensa-tdep.c.

Referenced by call0_analyze_prologue().

#define C0_NARGS   6 /* Number of A-regs for args/retvals. */

Definition at line 950 of file xtensa-tdep.c.

#define C0_NOSTK   -1 /* to_stk value if register has not been stored. */
#define C0_NREGS   16 /* Number of A-registers to track. */
#define C0_RA   0 /* Register used as return address. */

Definition at line 948 of file xtensa-tdep.c.

Referenced by call0_frame_cache().

#define C0_SP   1 /* Register used as SP. */

Definition at line 946 of file xtensa-tdep.c.

Referenced by call0_frame_cache().

#define CALLINC (   ps)    (((ps) & PS_CALLINC_MASK) >> PS_CALLINC_SHIFT)

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

Referenced by xtensa_frame_cache().

#define DEBUGINFO (   args...)
Value:
fprintf_unfiltered (gdb_stdlog, "(info ) " args)
struct ui_file * gdb_stdlog
Definition: main.c:73
static unsigned int xtensa_debug_level
Definition: xtensa-tdep.c:56

Definition at line 62 of file xtensa-tdep.c.

Referenced by xtensa_extract_return_value(), xtensa_push_dummy_call(), and xtensa_unwind_pc().

#define DEBUGTRACE (   args...)
#define DEBUGVERB (   args...)
Value:
fprintf_unfiltered (gdb_stdlog, "(verb ) " args)
struct ui_file * gdb_stdlog
Definition: main.c:73
static unsigned int xtensa_debug_level
Definition: xtensa-tdep.c:56

Definition at line 70 of file xtensa-tdep.c.

Referenced by call0_analyze_prologue().

#define DEBUGWARN (   args...)
Value:
fprintf_unfiltered (gdb_stdlog, "(warn ) " args)
struct ui_file * gdb_stdlog
Definition: main.c:73
static unsigned int xtensa_debug_level
Definition: xtensa-tdep.c:56

Definition at line 58 of file xtensa-tdep.c.

#define DENSITY_BIG_BREAKPOINT   { 0xd2, 0x0f }

Definition at line 1968 of file xtensa-tdep.c.

Referenced by xtensa_breakpoint_from_pc().

#define DENSITY_LITTLE_BREAKPOINT   { 0x2d, 0xf0 }

Definition at line 1969 of file xtensa-tdep.c.

Referenced by xtensa_breakpoint_from_pc().

#define LITTLE_BREAKPOINT   { 0x00, 0x40, 0x00 }

Definition at line 1967 of file xtensa-tdep.c.

Referenced by xtensa_breakpoint_from_pc().

#define PS_CALLINC_MASK   0x00030000

Definition at line 87 of file xtensa-tdep.c.

Referenced by xtensa_frame_cache().

#define PS_CALLINC_SHIFT   16

Definition at line 86 of file xtensa-tdep.c.

Referenced by xtensa_frame_cache().

#define PS_EXC   (1<<4)

Definition at line 119 of file xtensa-tdep.c.

Referenced by windowing_enabled(), and xtensa_window_interrupt_frame_cache().

#define PS_WOE   (1<<18)

Definition at line 118 of file xtensa-tdep.c.

Referenced by windowing_enabled().

#define REGISTER_SIZE   4

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

Referenced by xtensa_push_dummy_call().

#define RETURN_FP   goto done

Referenced by xtensa_scan_prologue().

#define RETURN_RET   goto done

Referenced by call0_ret().

#define SAVE_REST_FLAGS
Value:
#define XTENSA_REGISTER_FLAGS_VOLATILE
Definition: xtensa-tdep.h:154
#define XTENSA_REGISTER_FLAGS_WRITABLE
Definition: xtensa-tdep.h:153
#define XTENSA_REGISTER_FLAGS_READABLE
Definition: xtensa-tdep.h:152

Definition at line 789 of file xtensa-tdep.c.

Referenced by xtensa_register_reggroup_p().

#define SAVE_REST_VALID
Value:
#define XTENSA_REGISTER_FLAGS_WRITABLE
Definition: xtensa-tdep.h:153
#define XTENSA_REGISTER_FLAGS_READABLE
Definition: xtensa-tdep.h:152

Definition at line 793 of file xtensa-tdep.c.

Referenced by xtensa_register_reggroup_p().

#define SP_ALIGNMENT   16

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

Referenced by xtensa_dummy_id(), and xtensa_push_dummy_call().

#define TX_PS   0x20

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

Referenced by xtensa_frame_cache().

#define WINSIZE (   ra)    (4 * (( (ra) >> 30) & 0x3))

Definition at line 89 of file xtensa-tdep.c.

Referenced by xtensa_frame_cache(), and xtensa_window_interrupt_frame_cache().

#define XTENSA_DBREGN_SREG (   n)    (0x0200+(n))

Referenced by xtensa_derive_tdep().

#define XTENSA_ENTRY_LENGTH   3

Definition at line 112 of file xtensa-tdep.c.

#define XTENSA_IS_ENTRY (   gdbarch,
  op1 
)
Value:
((gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) \
? ((op1) == 0x6c) : ((op1) == 0x36))
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
Definition: gdbarch.c:1420

Definition at line 108 of file xtensa-tdep.c.

Referenced by xtensa_frame_cache().

#define XTENSA_ISA_BADPC   ((CORE_ADDR)0) /* Bad PC value. */

Definition at line 1131 of file xtensa-tdep.c.

Referenced by call0_analyze_prologue(), and call0_frame_cache().

#define XTENSA_ISA_BSZ   32 /* Instruction buffer size. */
#define XTENSA_MAX_WINDOW_INTERRUPT_HANDLER_LEN   200

Definition at line 2777 of file xtensa-tdep.c.

Referenced by execute_code().

#define XTENSA_NUM_SAVED_AREGS   12

Typedef Documentation

typedef struct xtensa_c0reg xtensa_c0reg_t

Enumeration Type Documentation

Enumerator
xtWindowOverflow 
xtWindowUnderflow 
xtNoExceptionHandler 

Definition at line 2779 of file xtensa-tdep.c.

Enumerator
c0opc_illegal 
c0opc_uninteresting 
c0opc_flow 
c0opc_entry 
c0opc_break 
c0opc_add 
c0opc_addi 
c0opc_and 
c0opc_sub 
c0opc_mov 
c0opc_movi 
c0opc_l32r 
c0opc_s32i 
c0opc_rwxsr 
c0opc_l32e 
c0opc_s32e 
c0opc_rfwo 
c0opc_rfwu 
c0opc_NrOf 

Definition at line 2086 of file xtensa-tdep.c.

Function Documentation

void _initialize_xtensa_tdep ( void  )
static int areg_number ( struct gdbarch gdbarch,
int  ar_regnum,
unsigned int  wb 
)
static

Definition at line 149 of file xtensa-tdep.c.

References gdbarch_tdep::ar_base, gdbarch_tdep(), and gdbarch_tdep::num_aregs.

Referenced by xtensa_frame_prev_register().

static int arreg_number ( struct gdbarch gdbarch,
int  a_regnum,
ULONGEST  wb 
)
static
static CORE_ADDR call0_analyze_prologue ( struct gdbarch gdbarch,
CORE_ADDR  start,
CORE_ADDR  pc,
int  nregs,
xtensa_frame_cache_t cache 
)
static
static xtensa_insn_kind call0_classify_opcode ( xtensa_isa  isa,
xtensa_opcode  opc 
)
static
static void call0_frame_cache ( struct frame_info this_frame,
xtensa_frame_cache_t cache,
CORE_ADDR  pc 
)
static
static int call0_ret ( CORE_ADDR  start_pc,
CORE_ADDR  finish_pc 
)
static
static int call0_track_op ( struct gdbarch gdbarch,
xtensa_c0reg_t  dst[],
xtensa_c0reg_t  src[],
xtensa_insn_kind  opclass,
int  nods,
unsigned  odv[],
CORE_ADDR  pc,
int  spreg,
xtensa_frame_cache_t cache 
)
static
static xtensa_exception_handler_t execute_code ( struct gdbarch gdbarch,
CORE_ADDR  current_pc,
CORE_ADDR  wb 
)
static
static void execute_l32e ( struct gdbarch gdbarch,
int  at,
int  as,
int  offset,
CORE_ADDR  wb 
)
static
static void execute_s32e ( struct gdbarch gdbarch,
int  at,
int  as,
int  offset,
CORE_ADDR  wb 
)
static
static int extract_call_winsize ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static
static int rwx_special_register ( const char *  opcname)
static

Definition at line 2112 of file xtensa-tdep.c.

Referenced by call0_classify_opcode().

static void warning_once ( void  )
static

Definition at line 1416 of file xtensa-tdep.c.

References _, warning(), and xtensa_session_once_reported.

Referenced by call0_frame_cache().

static int windowing_enabled ( struct gdbarch gdbarch,
unsigned int  ps 
)
static

Definition at line 122 of file xtensa-tdep.c.

References CallAbiCall0Only, PS_EXC, and PS_WOE.

Referenced by xtensa_frame_cache().

static void xtensa_add_reggroups ( struct gdbarch gdbarch)
static
static struct xtensa_frame_cache* xtensa_alloc_frame_cache ( int  windowed)
static
static const unsigned char* xtensa_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR pcptr,
int lenptr 
)
static
static int xtensa_coprocessor_register_group ( struct reggroup group)
static

Definition at line 778 of file xtensa-tdep.c.

References XTENSA_MAX_COPROCESSOR.

Referenced by xtensa_register_reggroup_p().

static void xtensa_derive_tdep ( struct gdbarch_tdep tdep)
static
static struct frame_id xtensa_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
)
static
static void xtensa_dump_tdep ( struct gdbarch gdbarch,
struct ui_file file 
)
static

Definition at line 3280 of file xtensa-tdep.c.

References _, and error().

Referenced by _initialize_xtensa_tdep().

static void xtensa_extract_return_value ( struct type type,
struct regcache regcache,
void *  dst 
)
static
static int xtensa_find_register_by_name ( struct gdbarch gdbarch,
char *  name 
)
static

Definition at line 229 of file xtensa-tdep.c.

References gdbarch_num_pseudo_regs(), gdbarch_num_regs(), and regmap.

Referenced by xtensa_window_interrupt_frame_cache().

static CORE_ADDR xtensa_frame_align ( struct gdbarch gdbarch,
CORE_ADDR  address 
)
static

Definition at line 1056 of file xtensa-tdep.c.

Referenced by xtensa_gdbarch_init().

static CORE_ADDR xtensa_frame_base_address ( struct frame_info this_frame,
void **  this_cache 
)
static

Definition at line 1543 of file xtensa-tdep.c.

References xtensa_frame_cache::base, and xtensa_frame_cache().

static struct xtensa_frame_cache* xtensa_frame_cache ( struct frame_info this_frame,
void **  this_cache 
)
static
static struct value* xtensa_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
)
static
static void xtensa_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
)
static
static struct gdbarch* xtensa_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
)
static

Definition at line 3191 of file xtensa-tdep.c.

References gdbarch_tdep::a0_base, gdbarch_info::byte_order, core_addr_lessthan(), DEBUGTRACE, dwarf2_append_unwinders(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_tdep::num_pseudo_regs, gdbarch_tdep::num_regs, gdbarch_tdep::pc_regnum, gdbarch_tdep::ps_regnum, set_gdbarch_believe_pcc_promotion(), set_gdbarch_breakpoint_from_pc(), set_gdbarch_decr_pc_after_break(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_args_skip(), set_gdbarch_have_nonsteppable_watchpoint(), set_gdbarch_inner_than(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_insn(), set_gdbarch_ps_regnum(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_reggroup_p(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stab_reg_to_regnum(), set_gdbarch_unwind_pc(), set_solib_svr4_fetch_link_map_offsets(), svr4_ilp32_fetch_link_map_offsets(), xtensa_add_reggroups(), xtensa_breakpoint_from_pc(), xtensa_derive_tdep(), xtensa_dummy_id(), xtensa_frame_align(), xtensa_iterate_over_regset_sections(), xtensa_pseudo_register_read(), xtensa_pseudo_register_write(), xtensa_push_dummy_call(), xtensa_reg_to_regnum(), xtensa_register_name(), xtensa_register_reggroup_p(), xtensa_register_type(), xtensa_return_value(), xtensa_session_once_reported, xtensa_skip_prologue(), xtensa_tdep, xtensa_unwind_pc(), and xtensa_verify_config().

Referenced by _initialize_xtensa_tdep().

static void xtensa_init_reggroups ( void  )
static

Definition at line 738 of file xtensa-tdep.c.

References reggroup_new(), USER_REGGROUP, and XTENSA_MAX_COPROCESSOR.

Referenced by _initialize_xtensa_tdep().

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

Definition at line 908 of file xtensa-tdep.c.

References DEBUGTRACE.

Referenced by xtensa_gdbarch_init().

static enum register_status xtensa_pseudo_register_read ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
gdb_byte buffer 
)
static
static void xtensa_pseudo_register_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
const gdb_byte buffer 
)
static
static CORE_ADDR xtensa_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
static unsigned long xtensa_read_register ( int  regnum)
static
static int xtensa_reg_to_regnum ( struct gdbarch gdbarch,
int  regnum 
)
static
static const char* xtensa_register_name ( struct gdbarch gdbarch,
int  regnum 
)
static
static enum register_status xtensa_register_read_masked ( struct regcache regcache,
xtensa_register_t reg,
gdb_byte buffer 
)
static
static int xtensa_register_reggroup_p ( struct gdbarch gdbarch,
int  regnum,
struct reggroup group 
)
static
static struct type* xtensa_register_type ( struct gdbarch gdbarch,
int  regnum 
)
static
static void xtensa_register_write_masked ( struct regcache regcache,
xtensa_register_t reg,
const gdb_byte buffer 
)
static
static enum return_value_convention xtensa_return_value ( struct gdbarch gdbarch,
struct value function,
struct type valtype,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
)
static
static unsigned int xtensa_scan_prologue ( struct gdbarch gdbarch,
CORE_ADDR  current_pc 
)
static
static CORE_ADDR xtensa_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  start_pc 
)
static
static void xtensa_store_return_value ( struct type type,
struct regcache regcache,
const void *  dst 
)
static
static void xtensa_supply_gregset ( const struct regset regset,
struct regcache rc,
int  regnum,
const void *  gregs,
size_t  len 
)
static
static CORE_ADDR xtensa_unwind_pc ( struct gdbarch gdbarch,
struct frame_info next_frame 
)
static
static void xtensa_verify_config ( struct gdbarch gdbarch)
static
static void xtensa_window_interrupt_frame_cache ( struct frame_info this_frame,
xtensa_frame_cache_t cache,
CORE_ADDR  pc 
)
static
static int xtensa_window_interrupt_insn ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static

Definition at line 1099 of file xtensa-tdep.c.

References code, gdbarch_byte_order(), and read_memory_integer().

Referenced by xtensa_frame_cache().

static void xtensa_write_register ( int  regnum,
ULONGEST  value 
)
static

Definition at line 173 of file xtensa-tdep.c.

References get_current_regcache(), and regcache_raw_write_unsigned().

Referenced by execute_code(), and execute_l32e().

Variable Documentation

initialize_file_ftype _initialize_xtensa_tdep
CORE_ADDR a0_saved
static

Definition at line 2727 of file xtensa-tdep.c.

Referenced by execute_code(), and execute_l32e().

int a0_was_saved
static

Definition at line 2730 of file xtensa-tdep.c.

Referenced by execute_code(), and execute_l32e().

CORE_ADDR a11_saved
static

Definition at line 2729 of file xtensa-tdep.c.

Referenced by execute_code(), and execute_l32e().

int a11_was_saved
static

Definition at line 2732 of file xtensa-tdep.c.

Referenced by execute_code(), and execute_l32e().

CORE_ADDR a7_saved
static

Definition at line 2728 of file xtensa-tdep.c.

Referenced by execute_code(), and execute_l32e().

int a7_was_saved
static

Definition at line 2731 of file xtensa-tdep.c.

Referenced by execute_code(), and execute_l32e().

struct reggroup* xtensa_ar_reggroup
static

Definition at line 732 of file xtensa-tdep.c.

struct reggroup* xtensa_cp[XTENSA_MAX_COPROCESSOR]
static

Definition at line 735 of file xtensa-tdep.c.

unsigned int xtensa_debug_level = 0
static

Definition at line 56 of file xtensa-tdep.c.

Referenced by _initialize_xtensa_tdep(), and xtensa_push_dummy_call().

xtensa_isa xtensa_default_isa
const struct frame_base xtensa_frame_base
static
Initial value:
=
{
xtensa_frame_base_address
}
static CORE_ADDR xtensa_frame_base_address(struct frame_info *this_frame, void **this_cache)
Definition: xtensa-tdep.c:1543
static const struct frame_unwind xtensa_unwind
Definition: xtensa-tdep.c:1532

Definition at line 1552 of file xtensa-tdep.c.

struct regset xtensa_gregset
static
Initial value:
=
{
NULL,
}
static void xtensa_supply_gregset(const struct regset *regset, struct regcache *rc, int regnum, const void *gregs, size_t len)
Definition: xtensa-tdep.c:846

Definition at line 898 of file xtensa-tdep.c.

int xtensa_session_once_reported = 1
static

Definition at line 1410 of file xtensa-tdep.c.

Referenced by warning_once(), and xtensa_gdbarch_init().

struct gdbarch_tdep xtensa_tdep

Referenced by xtensa_gdbarch_init().

const struct frame_unwind xtensa_unwind
static
Initial value:
=
{
NULL,
}
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:170
static struct value * xtensa_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: xtensa-tdep.c:1442
static void xtensa_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: xtensa-tdep.c:1428
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180

Definition at line 1532 of file xtensa-tdep.c.

struct reggroup* xtensa_user_reggroup
static

Definition at line 733 of file xtensa-tdep.c.

struct reggroup* xtensa_vectra_reggroup
static

Definition at line 734 of file xtensa-tdep.c.