GDB (xrefs)
|
#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 "gdb_assert.h"
#include "xtensa-isa.h"
#include "xtensa-tdep.h"
#include "xtensa-config.h"
Go to the source code of this file.
(gdbarch_tdep (gdbarch)->call_abi == CallAbiCall0Only \ ? (gdbarch_tdep (gdbarch)->a0_base + C0_ARGS) \ : (gdbarch_tdep (gdbarch)->a0_base + 6))
Definition at line 102 of file xtensa-tdep.c.
Referenced by xtensa_push_dummy_call().
(gdbarch_tdep (gdbarch)->call_abi \ == CallAbiCall0Only ? C0_NARGS : (ARGS_NUM_REGS))
Definition at line 99 of file xtensa-tdep.c.
Referenced by xtensa_push_dummy_call().
#define ARGS_NUM_REGS 6 |
Definition at line 83 of file xtensa-tdep.c.
#define BIG_BREAKPOINT { 0x00, 0x04, 0x00 } |
Definition at line 1980 of file xtensa-tdep.c.
Referenced by xtensa_breakpoint_from_pc().
#define C0_ARGS 2 /* Register used as first arg/retval. */ |
Definition at line 963 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 959 of file xtensa-tdep.c.
Definition at line 973 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 961 of file xtensa-tdep.c.
Referenced by call0_frame_cache().
Definition at line 974 of file xtensa-tdep.c.
Referenced by call0_frame_cache(), call0_track_op(), and xtensa_alloc_frame_cache().
#define C0_MAXOPDS |
3 /* Maximum number of operands for prologue analysis. */
Definition at line 957 of file xtensa-tdep.c.
Referenced by call0_analyze_prologue().
Definition at line 964 of file xtensa-tdep.c.
Definition at line 975 of file xtensa-tdep.c.
Referenced by call0_frame_cache(), call0_track_op(), xtensa_alloc_frame_cache(), and xtensa_frame_prev_register().
Definition at line 958 of file xtensa-tdep.c.
Referenced by call0_frame_cache(), call0_track_op(), xtensa_alloc_frame_cache(), and xtensa_frame_prev_register().
#define C0_RA 0 /* Register used as return address. */ |
Definition at line 962 of file xtensa-tdep.c.
Referenced by call0_frame_cache().
#define C0_SP 1 /* Register used as SP. */ |
Definition at line 960 of file xtensa-tdep.c.
Referenced by call0_frame_cache().
#define CALLINC | ( | ps | ) | (((ps) & PS_CALLINC_MASK) >> PS_CALLINC_SHIFT) |
Definition at line 90 of file xtensa-tdep.c.
Referenced by xtensa_frame_cache().
#define DEBUGINFO | ( | args... | ) |
if (xtensa_debug_level > 1) \ fprintf_unfiltered (gdb_stdlog, "(info ) " args)
Definition at line 64 of file xtensa-tdep.c.
Referenced by xtensa_extract_return_value(), xtensa_push_dummy_call(), and xtensa_unwind_pc().
#define DEBUGTRACE | ( | args... | ) |
if (xtensa_debug_level > 2) \ fprintf_unfiltered (gdb_stdlog, "(trace) " args)
Definition at line 68 of file xtensa-tdep.c.
Referenced by call0_analyze_prologue(), call0_classify_opcode(), extract_call_winsize(), xtensa_alloc_frame_cache(), xtensa_breakpoint_from_pc(), xtensa_extract_return_value(), xtensa_gdbarch_init(), xtensa_pseudo_register_read(), xtensa_pseudo_register_write(), xtensa_push_dummy_call(), xtensa_register_read_masked(), xtensa_register_write_masked(), xtensa_regset_from_core_section(), xtensa_return_value(), xtensa_skip_prologue(), xtensa_store_return_value(), xtensa_supply_gregset(), and xtensa_unwind_pc().
#define DEBUGVERB | ( | args... | ) |
if (xtensa_debug_level > 3) \ fprintf_unfiltered (gdb_stdlog, "(verb ) " args)
Definition at line 72 of file xtensa-tdep.c.
Referenced by call0_analyze_prologue().
#define DEBUGWARN | ( | args... | ) |
if (xtensa_debug_level > 0) \ fprintf_unfiltered (gdb_stdlog, "(warn ) " args)
Definition at line 60 of file xtensa-tdep.c.
#define DENSITY_BIG_BREAKPOINT { 0xd2, 0x0f } |
Definition at line 1982 of file xtensa-tdep.c.
Referenced by xtensa_breakpoint_from_pc().
#define DENSITY_LITTLE_BREAKPOINT { 0x2d, 0xf0 } |
Definition at line 1983 of file xtensa-tdep.c.
Referenced by xtensa_breakpoint_from_pc().
#define LITTLE_BREAKPOINT { 0x00, 0x40, 0x00 } |
Definition at line 1981 of file xtensa-tdep.c.
Referenced by xtensa_breakpoint_from_pc().
#define PS_CALLINC_MASK 0x00030000 |
Definition at line 89 of file xtensa-tdep.c.
Referenced by xtensa_frame_cache().
#define PS_CALLINC_SHIFT 16 |
Definition at line 88 of file xtensa-tdep.c.
Referenced by xtensa_frame_cache().
#define PS_EXC (1<<4) |
Definition at line 121 of file xtensa-tdep.c.
Referenced by windowing_enabled(), and xtensa_window_interrupt_frame_cache().
#define PS_WOE (1<<18) |
Definition at line 120 of file xtensa-tdep.c.
Referenced by windowing_enabled().
#define REGISTER_SIZE 4 |
Definition at line 84 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 |
(XTENSA_REGISTER_FLAGS_READABLE \ | XTENSA_REGISTER_FLAGS_WRITABLE \ | XTENSA_REGISTER_FLAGS_VOLATILE)
Definition at line 799 of file xtensa-tdep.c.
Referenced by xtensa_register_reggroup_p().
#define SAVE_REST_VALID |
Definition at line 803 of file xtensa-tdep.c.
Referenced by xtensa_register_reggroup_p().
#define SP_ALIGNMENT 16 |
Definition at line 78 of file xtensa-tdep.c.
Referenced by xtensa_dummy_id(), and xtensa_push_dummy_call().
#define TX_PS 0x20 |
Definition at line 96 of file xtensa-tdep.c.
Referenced by xtensa_frame_cache().
#define WINSIZE | ( | ra | ) | (4 * (( (ra) >> 30) & 0x3)) |
Definition at line 91 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 114 of file xtensa-tdep.c.
#define XTENSA_IS_ENTRY | ( | gdbarch, | |
op1 | |||
) |
((gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) \ ? ((op1) == 0x6c) : ((op1) == 0x36))
Definition at line 110 of file xtensa-tdep.c.
Referenced by xtensa_frame_cache().
#define XTENSA_ISA_BADPC ((CORE_ADDR)0) /* Bad PC value. */ |
Definition at line 1145 of file xtensa-tdep.c.
Referenced by call0_analyze_prologue(), and call0_frame_cache().
#define XTENSA_ISA_BSZ 32 /* Instruction buffer size. */ |
Definition at line 1144 of file xtensa-tdep.c.
Referenced by call0_analyze_prologue(), call0_ret(), execute_code(), and xtensa_scan_prologue().
#define XTENSA_MAX_WINDOW_INTERRUPT_HANDLER_LEN 200 |
Definition at line 2791 of file xtensa-tdep.c.
Referenced by execute_code().
#define XTENSA_NUM_SAVED_AREGS 12 |
Definition at line 938 of file xtensa-tdep.c.
Referenced by xtensa_alloc_frame_cache(), xtensa_frame_prev_register(), and xtensa_window_interrupt_frame_cache().
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 |
typedef struct xtensa_windowed_frame_cache xtensa_windowed_frame_cache_t |
Definition at line 2793 of file xtensa-tdep.c.
enum xtensa_insn_kind |
Definition at line 2100 of file xtensa-tdep.c.
void _initialize_xtensa_tdep | ( | void | ) |
Definition at line 3303 of file xtensa-tdep.c.
References _, _initialize_xtensa_tdep, add_setshow_zuinteger_cmd(), class_maintenance, gdbarch_register(), setdebuglist, showdebuglist, xtensa_debug_level, xtensa_dump_tdep(), xtensa_gdbarch_init(), and xtensa_init_reggroups().
static int areg_number | ( | struct gdbarch * | gdbarch, |
int | ar_regnum, | ||
unsigned int | wb | ||
) | [static] |
Definition at line 151 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] |
Definition at line 136 of file xtensa-tdep.c.
References gdbarch_tdep::a0_base, gdbarch_tdep::ar_base, gdbarch_tdep(), gdbarch_tdep::num_aregs, and WB_SHIFT.
Referenced by execute_code(), execute_l32e(), execute_s32e(), xtensa_extract_return_value(), xtensa_frame_cache(), xtensa_frame_prev_register(), xtensa_pseudo_register_read(), xtensa_pseudo_register_write(), xtensa_store_return_value(), and xtensa_window_interrupt_frame_cache().
static CORE_ADDR call0_analyze_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | start, | ||
CORE_ADDR | pc, | ||
int | nregs, | ||
xtensa_frame_cache_t * | cache | ||
) | [static] |
Definition at line 2385 of file xtensa-tdep.c.
References _, xtensa_frame_cache::c0, C0_MAXOPDS, xtensa_call0_frame_cache::c0_rt, c0opc_break, c0opc_entry, c0opc_flow, c0opc_illegal, c0opc_mov, c0opc_rwxsr, c0opc_uninteresting, xtensa_frame_cache::call0, call0_classify_opcode(), call0_track_op(), DEBUGTRACE, DEBUGVERB, symtab_and_line::end, error(), find_pc_line(), find_pc_partial_function(), gdb_assert, symtab_and_line::line, min, target_read_memory(), xtensa_default_isa, XTENSA_ISA_BADPC, and XTENSA_ISA_BSZ.
Referenced by call0_frame_cache(), and xtensa_skip_prologue().
static xtensa_insn_kind call0_classify_opcode | ( | xtensa_isa | isa, |
xtensa_opcode | opc | ||
) | [static] |
Definition at line 2145 of file xtensa-tdep.c.
References c0opc_add, c0opc_addi, c0opc_and, c0opc_break, c0opc_entry, c0opc_flow, c0opc_illegal, c0opc_l32e, c0opc_l32r, c0opc_mov, c0opc_movi, c0opc_rfwo, c0opc_rfwu, c0opc_rwxsr, c0opc_s32e, c0opc_s32i, c0opc_sub, c0opc_uninteresting, DEBUGTRACE, and rwx_special_register().
Referenced by call0_analyze_prologue(), and execute_code().
static void call0_frame_cache | ( | struct frame_info * | this_frame, |
xtensa_frame_cache_t * | cache, | ||
CORE_ADDR | pc | ||
) | [static] |
Definition at line 2591 of file xtensa-tdep.c.
References gdbarch_tdep::a0_base, gdbarch::byte_order, xtensa_frame_cache::c0, C0_CONST, C0_FP, xtensa_call0_frame_cache::c0_fp, xtensa_call0_frame_cache::c0_fpalign, xtensa_call0_frame_cache::c0_frmsz, xtensa_call0_frame_cache::c0_hasfp, C0_INEXP, C0_NOSTK, C0_NREGS, xtensa_call0_frame_cache::c0_old_sp, C0_RA, xtensa_call0_frame_cache::c0_rt, C0_SP, xtensa_call0_frame_cache::c0_sp_ofs, call0_analyze_prologue(), find_pc_partial_function(), fp_regnum, xtensa_call0_frame_cache::fp_regnum, xtensa_c0reg::fr_ofs, xtensa_c0reg::fr_reg, gdbarch_byte_order(), gdbarch_tdep(), get_frame_arch(), get_frame_register_unsigned(), xtensa_frame_cache::pc, xtensa_frame_cache::prev_sp, xtensa_frame_cache::ra, read_memory_integer(), sp, xtensa_c0reg::to_stk, warning_once(), and XTENSA_ISA_BADPC.
Referenced by xtensa_frame_cache().
Definition at line 2029 of file xtensa-tdep.c.
References gdb_assert, RETURN_RET, target_read_memory(), xtensa_default_isa, and XTENSA_ISA_BSZ.
Referenced by xtensa_skip_prologue().
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] |
Definition at line 2218 of file xtensa-tdep.c.
References xtensa_frame_cache::c0, C0_CONST, xtensa_call0_frame_cache::c0_fpalign, C0_INEXP, C0_NOSTK, C0_NREGS, xtensa_call0_frame_cache::c0_old_sp, xtensa_call0_frame_cache::c0_sp_ofs, c0opc_add, c0opc_addi, c0opc_and, c0opc_l32e, c0opc_l32r, c0opc_mov, c0opc_movi, c0opc_rfwo, c0opc_rfwu, c0opc_s32e, c0opc_s32i, c0opc_sub, xtensa_c0reg::fr_ofs, xtensa_c0reg::fr_reg, gdb_assert, gdbarch_byte_order(), gdbarch_tdep(), gdbarch_tdep::litbase_regnum, read_memory_integer(), xtensa_c0reg::to_stk, and xtensa_read_register().
Referenced by call0_analyze_prologue().
static xtensa_exception_handler_t execute_code | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | current_pc, | ||
CORE_ADDR | wb | ||
) | [static] |
Definition at line 2803 of file xtensa-tdep.c.
References a0_saved, a0_was_saved, a11_saved, a11_was_saved, a7_saved, a7_was_saved, arreg_number(), c0opc_break, c0opc_entry, c0opc_flow, c0opc_illegal, c0opc_l32e, c0opc_rfwo, c0opc_rfwu, c0opc_s32e, call0_classify_opcode(), execute_l32e(), execute_s32e(), func, gdb_assert, int, offset, target_read_memory(), xtensa_default_isa, XTENSA_ISA_BSZ, XTENSA_MAX_WINDOW_INTERRUPT_HANDLER_LEN, xtensa_write_register(), xtNoExceptionHandler, xtWindowOverflow, and xtWindowUnderflow.
Referenced by xtensa_window_interrupt_frame_cache().
static void execute_l32e | ( | struct gdbarch * | gdbarch, |
int | at, | ||
int | as, | ||
int | offset, | ||
CORE_ADDR | wb | ||
) | [static] |
Definition at line 2750 of file xtensa-tdep.c.
References a0_saved, a0_was_saved, a11_saved, a11_was_saved, a7_saved, a7_was_saved, arreg_number(), gdbarch_byte_order(), offset, read_memory_unsigned_integer(), xtensa_read_register(), and xtensa_write_register().
Referenced by execute_code().
static void execute_s32e | ( | struct gdbarch * | gdbarch, |
int | at, | ||
int | as, | ||
int | offset, | ||
CORE_ADDR | wb | ||
) | [static] |
Definition at line 2779 of file xtensa-tdep.c.
References arreg_number(), gdbarch_byte_order(), offset, ULONGEST, write_memory_unsigned_integer(), and xtensa_read_register().
Referenced by execute_code().
static int extract_call_winsize | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 192 of file xtensa-tdep.c.
References DEBUGTRACE, extract_unsigned_integer(), gdbarch_byte_order(), and read_memory().
Referenced by xtensa_extract_return_value(), and xtensa_store_return_value().
static int rwx_special_register | ( | const char * | opcname | ) | [static] |
Definition at line 2126 of file xtensa-tdep.c.
Referenced by call0_classify_opcode().
static void warning_once | ( | void | ) | [static] |
Definition at line 1430 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 124 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] |
Definition at line 765 of file xtensa-tdep.c.
References all_reggroup, float_reggroup, general_reggroup, reggroup_add(), restore_reggroup, save_reggroup, system_reggroup, vector_reggroup, and XTENSA_MAX_COPROCESSOR.
Referenced by xtensa_gdbarch_init().
static struct xtensa_frame_cache* xtensa_alloc_frame_cache | ( | int | windowed | ) | [static, read] |
Definition at line 1024 of file xtensa-tdep.c.
References xtensa_windowed_frame_cache::aregs, xtensa_frame_cache::base, xtensa_frame_cache::c0, xtensa_call0_frame_cache::c0_fp, xtensa_call0_frame_cache::c0_fpalign, xtensa_call0_frame_cache::c0_frmsz, xtensa_call0_frame_cache::c0_hasfp, C0_INEXP, C0_NOSTK, C0_NREGS, xtensa_call0_frame_cache::c0_old_sp, xtensa_call0_frame_cache::c0_rt, xtensa_call0_frame_cache::c0_sp_ofs, xtensa_frame_cache::call0, xtensa_windowed_frame_cache::callsize, DEBUGTRACE, xtensa_call0_frame_cache::fp_regnum, xtensa_c0reg::fr_ofs, xtensa_c0reg::fr_reg, FRAME_OBSTACK_ZALLOC, xtensa_frame_cache::pc, xtensa_frame_cache::prev_sp, xtensa_frame_cache::ps, xtensa_frame_cache::ra, xtensa_c0reg::to_stk, xtensa_windowed_frame_cache::wb, xtensa_frame_cache::wd, xtensa_windowed_frame_cache::ws, and XTENSA_NUM_SAVED_AREGS.
Referenced by xtensa_frame_cache(), and xtensa_skip_prologue().
static const unsigned char* xtensa_breakpoint_from_pc | ( | struct gdbarch * | gdbarch, |
CORE_ADDR * | pcptr, | ||
int * | lenptr | ||
) | [static] |
Definition at line 1986 of file xtensa-tdep.c.
References BIG_BREAKPOINT, DEBUGTRACE, DENSITY_BIG_BREAKPOINT, DENSITY_LITTLE_BREAKPOINT, gdbarch_byte_order(), and LITTLE_BREAKPOINT.
Referenced by xtensa_gdbarch_init().
static int xtensa_coprocessor_register_group | ( | struct reggroup * | group | ) | [static] |
Definition at line 788 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] |
Definition at line 3127 of file xtensa-tdep.c.
References gdbarch_tdep::a0_base, gdbarch_tdep::ar_base, xtensa_register_t::byte_size, gdbarch_tdep::cpenable_regnum, gdbarch_tdep::debugcause_regnum, gdbarch_tdep::exccause_regnum, gdbarch_tdep::excvaddr_regnum, xtensa_register_t::flags, gdbarch_tdep::interrupt2_regnum, gdbarch_tdep::interrupt_regnum, gdbarch_tdep::lbeg_regnum, gdbarch_tdep::lcount_regnum, gdbarch_tdep::lend_regnum, gdbarch_tdep::litbase_regnum, xtensa_register_t::mask, gdbarch_tdep::max_register_raw_size, gdbarch_tdep::max_register_virtual_size, gdbarch_tdep::num_nopriv_regs, gdbarch_tdep::num_pseudo_regs, gdbarch_tdep::num_regs, gdbarch_tdep::pc_regnum, gdbarch_tdep::ps_regnum, gdbarch_tdep::regmap, rmap, gdbarch_tdep::sar_regnum, xtensa_register_t::target_number, gdbarch_tdep::wb_regnum, gdbarch_tdep::ws_regnum, XTENSA_DBREGN_SREG, and XTENSA_REGISTER_FLAGS_PRIVILEGED.
Referenced by xtensa_gdbarch_init().
static struct frame_id xtensa_dummy_id | ( | struct gdbarch * | gdbarch, |
struct frame_info * | this_frame | ||
) | [static, read] |
Definition at line 1095 of file xtensa-tdep.c.
References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and SP_ALIGNMENT.
Referenced by xtensa_gdbarch_init().
static void xtensa_dump_tdep | ( | struct gdbarch * | gdbarch, |
struct ui_file * | file | ||
) | [static] |
Definition at line 3294 of file xtensa-tdep.c.
Referenced by _initialize_xtensa_tdep().
static void xtensa_extract_return_value | ( | struct type * | type, |
struct regcache * | regcache, | ||
void * | dst | ||
) | [static] |
Definition at line 1576 of file xtensa-tdep.c.
References _, gdbarch_tdep::a0_base, arreg_number(), C0_ARGS, CallAbiCall0Only, DEBUGINFO, DEBUGTRACE, extract_call_winsize(), gdb_assert, gdbarch_byte_order(), gdbarch_pc_regnum(), gdbarch_tdep(), get_regcache_arch(), internal_error(), len, offset, regcache_raw_read(), regcache_raw_read_part(), regcache_raw_read_unsigned(), TYPE_LENGTH, and ULONGEST.
Referenced by xtensa_return_value().
static int xtensa_find_register_by_name | ( | struct gdbarch * | gdbarch, |
char * | name | ||
) | [static] |
Definition at line 231 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 1070 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 1557 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, read] |
Definition at line 1277 of file xtensa-tdep.c.
References xtensa_windowed_frame_cache::aregs, arreg_number(), xtensa_frame_cache::base, gdbarch::byte_order, xtensa_frame_cache::c0, call0_frame_cache(), CALLINC, xtensa_windowed_frame_cache::callsize, fp_regnum, xtensa_call0_frame_cache::fp_regnum, gdbarch_byte_order(), gdbarch_pc_regnum(), gdbarch_ps_regnum(), get_frame_arch(), get_frame_func(), get_frame_register_unsigned(), gdbarch_tdep::num_aregs, xtensa_frame_cache::pc, xtensa_frame_cache::prev_sp, cleanup_check::ps, xtensa_frame_cache::ps, PS_CALLINC_MASK, PS_CALLINC_SHIFT, gdbarch::ps_regnum, xtensa_frame_cache::ra, read_memory_integer(), regnum, sp, TX_PS, xtensa_windowed_frame_cache::wb, xtensa_frame_cache::wd, windowing_enabled(), WINSIZE, xtensa_windowed_frame_cache::ws, xtensa_alloc_frame_cache(), XTENSA_IS_ENTRY, xtensa_read_register(), xtensa_scan_prologue(), xtensa_window_interrupt_frame_cache(), and xtensa_window_interrupt_insn().
Referenced by xtensa_frame_base_address(), xtensa_frame_prev_register(), and xtensa_frame_this_id().
static struct value* xtensa_frame_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
int | regnum | ||
) | [static, read] |
Definition at line 1456 of file xtensa-tdep.c.
References gdbarch_tdep::ar_base, areg_number(), xtensa_windowed_frame_cache::aregs, arreg_number(), xtensa_frame_cache::c0, xtensa_call0_frame_cache::c0_fp, C0_NOSTK, C0_NREGS, xtensa_call0_frame_cache::c0_rt, xtensa_frame_cache::call0, xtensa_call0_frame_cache::fp_regnum, xtensa_c0reg::fr_ofs, frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), gdbarch_pc_regnum(), gdbarch_ps_regnum(), gdbarch_tdep(), get_frame_arch(), xtensa_frame_cache::prev_sp, xtensa_frame_cache::ps, xtensa_frame_cache::ra, regnum, xtensa_c0reg::to_stk, ULONGEST, xtensa_windowed_frame_cache::wb, xtensa_frame_cache::wd, xtensa_windowed_frame_cache::ws, xtensa_frame_cache(), and XTENSA_NUM_SAVED_AREGS.
static void xtensa_frame_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 1442 of file xtensa-tdep.c.
References frame_id_build(), xtensa_frame_cache::pc, xtensa_frame_cache::prev_sp, and xtensa_frame_cache().
static struct gdbarch* xtensa_gdbarch_init | ( | struct gdbarch_info | info, |
struct gdbarch_list * | arches | ||
) | [static, read] |
Definition at line 3205 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_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_regset_from_core_section(), 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_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_regset_from_core_section(), 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 748 of file xtensa-tdep.c.
References reggroup_new(), USER_REGGROUP, and XTENSA_MAX_COPROCESSOR.
Referenced by _initialize_xtensa_tdep().
static enum register_status xtensa_pseudo_register_read | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
int | regnum, | ||
gdb_byte * | buffer | ||
) | [static] |
Definition at line 548 of file xtensa-tdep.c.
References _, gdbarch_tdep::a0_base, arreg_number(), DEBUGTRACE, extract_unsigned_integer(), flags, gdbarch_byte_order(), gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_tdep(), internal_error(), MAX_REGISTER_SIZE, REG_VALID, regcache_raw_read(), gdbarch_tdep::regmap, regnum, exsummary::status, gdbarch_tdep::target_flags, xtensa_register_t::type, warning(), xtensa_register_name(), xtensa_register_read_masked(), xtRegisterTypeMapped, xtRegisterTypeTieRegfile, xtRegisterTypeTieState, xtRegisterTypeUnknown, xtRegisterTypeUnmapped, xtTargetFlagsNonVisibleRegs, and xtTargetFlagsUseFetchStore.
Referenced by xtensa_gdbarch_init().
static void xtensa_pseudo_register_write | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
int | regnum, | ||
const gdb_byte * | buffer | ||
) | [static] |
Definition at line 648 of file xtensa-tdep.c.
References _, gdbarch_tdep::a0_base, arreg_number(), DEBUGTRACE, extract_unsigned_integer(), flags, gdbarch_byte_order(), gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_tdep(), internal_error(), MAX_REGISTER_SIZE, regcache_raw_read(), regcache_raw_write(), gdbarch_tdep::regmap, regnum, gdbarch_tdep::target_flags, xtensa_register_t::type, warning(), xtensa_register_name(), xtensa_register_write_masked(), xtRegisterTypeMapped, xtRegisterTypeTieRegfile, xtRegisterTypeTieState, xtRegisterTypeUnknown, xtRegisterTypeUnmapped, xtTargetFlagsNonVisibleRegs, and xtTargetFlagsUseFetchStore.
Referenced by xtensa_gdbarch_init().
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] |
Definition at line 1718 of file xtensa-tdep.c.
References align_down(), ARG_1ST, ARG_NOF, builtin_type::builtin_long, builtin_type(), gdbarch::byte_order, CallAbiCall0Only, check_typedef(), DEBUGINFO, DEBUGTRACE, extract_unsigned_integer(), fprintf_unfiltered(), gdb_stdlog, gdbarch_byte_order(), gdbarch_ps_regnum(), host_address_to_string(), gdb::printing::long, offset, cleanup_check::ps, read_memory(), regcache_cooked_write(), regcache_cooked_write_unsigned(), regcache_raw_read(), regcache_raw_read_unsigned(), REGISTER_SIZE, size, SP_ALIGNMENT, store_unsigned_integer(), TYPE_CODE, TYPE_CODE_BOOL, TYPE_CODE_CHAR, TYPE_CODE_ENUM, TYPE_CODE_FLT, TYPE_CODE_INT, TYPE_CODE_RANGE, TYPE_CODE_STRUCT, TYPE_LENGTH, ULONGEST, value_cast(), value_contents(), value_type(), write_memory(), and xtensa_debug_level.
Referenced by xtensa_gdbarch_init().
static unsigned long xtensa_read_register | ( | int | regnum | ) | [static] |
Definition at line 165 of file xtensa-tdep.c.
References get_current_regcache(), regcache_raw_read_unsigned(), and ULONGEST.
Referenced by call0_track_op(), execute_l32e(), execute_s32e(), xtensa_frame_cache(), and xtensa_window_interrupt_frame_cache().
static int xtensa_reg_to_regnum | ( | struct gdbarch * | gdbarch, |
int | regnum | ||
) | [static] |
Definition at line 346 of file xtensa-tdep.c.
References _, gdbarch_tdep::a0_base, gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_tdep(), internal_error(), gdbarch_tdep::regmap, regnum, and xtensa_register_t::target_number.
Referenced by xtensa_gdbarch_init().
static const char* xtensa_register_name | ( | struct gdbarch * | gdbarch, |
int | regnum | ||
) | [static] |
Definition at line 247 of file xtensa-tdep.c.
References _, gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_tdep(), internal_error(), xtensa_register_t::name, gdbarch_tdep::regmap, and regnum.
Referenced by xtensa_gdbarch_init(), xtensa_pseudo_register_read(), and xtensa_pseudo_register_write().
static enum register_status xtensa_register_read_masked | ( | struct regcache * | regcache, |
xtensa_register_t * | reg, | ||
gdb_byte * | buffer | ||
) | [static] |
Definition at line 455 of file xtensa-tdep.c.
References _, xtensa_register_t::byte_size, DEBUGTRACE, error(), gdbarch_byte_order(), get_regcache_arch(), int, xtensa_register_t::mask, MAX_REGISTER_SIZE, xtensa_register_t::name, REG_VALID, regcache_cooked_read_unsigned(), size, exsummary::status, and ULONGEST.
Referenced by xtensa_pseudo_register_read().
static int xtensa_register_reggroup_p | ( | struct gdbarch * | gdbarch, |
int | regnum, | ||
struct reggroup * | group | ||
) | [static] |
Definition at line 807 of file xtensa-tdep.c.
References all_reggroup, xtensa_register_t::flags, float_reggroup, gdbarch_num_regs(), gdbarch_tdep(), general_reggroup, xtensa_register_t::group, gdbarch_tdep::regmap, regnum, restore_reggroup, save_reggroup, SAVE_REST_FLAGS, SAVE_REST_VALID, system_reggroup, xtensa_register_t::type, vector_reggroup, xtensa_coprocessor_register_group(), xtRegisterGroupAddrReg, xtRegisterGroupCP0, xtRegisterGroupFloat, xtRegisterGroupGeneral, xtRegisterGroupState, xtRegisterGroupUser, xtRegisterGroupVectra, xtRegisterTypeUnknown, and xtRegisterTypeUnmapped.
Referenced by xtensa_gdbarch_init().
static struct type* xtensa_register_type | ( | struct gdbarch * | gdbarch, |
int | regnum | ||
) | [static, read] |
Definition at line 261 of file xtensa-tdep.c.
References _, gdbarch_tdep::a0_base, gdbarch_tdep::ar_base, arch_integer_type(), builtin_type::builtin_data_ptr, builtin_type::builtin_int, builtin_type(), builtin_type::builtin_uint128, builtin_type::builtin_uint16, builtin_type::builtin_uint32, builtin_type::builtin_uint64, builtin_type::builtin_uint8, xtensa_register_t::byte_size, xtensa_register_t::ctype, gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_pc_regnum(), gdbarch_tdep(), internal_error(), name, gdbarch_tdep::ctype_cache::next, gdbarch_tdep::num_aregs, gdbarch_tdep::regmap, regnum, gdbarch_tdep::ctype_cache::size, size, gdbarch_tdep::type_entries, xfree(), xmalloc(), and xstrprintf().
Referenced by xtensa_gdbarch_init().
static void xtensa_register_write_masked | ( | struct regcache * | regcache, |
xtensa_register_t * | reg, | ||
const gdb_byte * | buffer | ||
) | [static] |
Definition at line 371 of file xtensa-tdep.c.
References _, xtensa_register_t::byte_size, DEBUGTRACE, error(), gdbarch_byte_order(), get_regcache_arch(), arm-linux::m, xtensa_register_t::mask, MAX_REGISTER_SIZE, regcache_cooked_read_unsigned(), regcache_cooked_write_unsigned(), size, and ULONGEST.
Referenced by xtensa_pseudo_register_write().
static struct regset* xtensa_regset_from_core_section | ( | struct gdbarch * | core_arch, |
const char * | sect_name, | ||
size_t | sect_size | ||
) | [static, read] |
Definition at line 919 of file xtensa-tdep.c.
References DEBUGTRACE, and xtensa_gregset.
Referenced by xtensa_gdbarch_init().
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] |
Definition at line 1682 of file xtensa-tdep.c.
References DEBUGTRACE, gdb_assert, RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_STRUCT, TYPE_CODE_UNION, TYPE_LENGTH, xtensa_extract_return_value(), and xtensa_store_return_value().
Referenced by xtensa_gdbarch_init().
static unsigned int xtensa_scan_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | current_pc | ||
) | [static] |
Definition at line 1148 of file xtensa-tdep.c.
References gdbarch_tdep::a0_base, find_pc_partial_function(), fp_regnum, gdb_assert, gdbarch_tdep(), RETURN_FP, target_read_memory(), xtensa_default_isa, and XTENSA_ISA_BSZ.
Referenced by xtensa_frame_cache(), and xtensa_window_interrupt_frame_cache().
static CORE_ADDR xtensa_skip_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | start_pc | ||
) | [static] |
Definition at line 3032 of file xtensa-tdep.c.
References call0_analyze_prologue(), call0_ret(), CallAbiCall0Only, DEBUGTRACE, symtab_and_line::end, find_pc_line(), find_pc_partial_function(), symtab_and_line::line, and xtensa_alloc_frame_cache().
Referenced by xtensa_gdbarch_init().
static void xtensa_store_return_value | ( | struct type * | type, |
struct regcache * | regcache, | ||
const void * | dst | ||
) | [static] |
Definition at line 1632 of file xtensa-tdep.c.
References _, gdbarch_tdep::a0_base, arreg_number(), C0_ARGS, CallAbiCall0Only, DEBUGTRACE, extract_call_winsize(), gdbarch_byte_order(), gdbarch_pc_regnum(), gdbarch_tdep(), get_regcache_arch(), internal_error(), len, offset, regcache_raw_read_unsigned(), regcache_raw_write(), regcache_raw_write_part(), TYPE_LENGTH, and ULONGEST.
Referenced by xtensa_return_value().
static void xtensa_supply_gregset | ( | const struct regset * | regset, |
struct regcache * | rc, | ||
int | regnum, | ||
const void * | gregs, | ||
size_t | len | ||
) | [static] |
Definition at line 856 of file xtensa-tdep.c.
References xtensa_elf_gregset_t::ar, gdbarch_tdep::ar_base, DEBUGTRACE, gdbarch_pc_regnum(), gdbarch_ps_regnum(), gdbarch_tdep(), get_regcache_arch(), xtensa_elf_gregset_t::lbeg, xtensa_elf_gregset_t::lcount, xtensa_elf_gregset_t::lend, gdbarch_tdep::num_aregs, xtensa_elf_gregset_t::pc, xtensa_elf_gregset_t::ps, regcache_raw_supply(), xtensa_elf_gregset_t::sar, xtensa_elf_gregset_t::windowbase, and xtensa_elf_gregset_t::windowstart.
static CORE_ADDR xtensa_unwind_pc | ( | struct gdbarch * | gdbarch, |
struct frame_info * | next_frame | ||
) | [static] |
Definition at line 1077 of file xtensa-tdep.c.
References DEBUGINFO, DEBUGTRACE, extract_typed_address(), frame_unwind_register(), gdbarch_pc_regnum(), host_address_to_string(), and xtensa_frame_cache::pc.
Referenced by xtensa_gdbarch_init().
static void xtensa_verify_config | ( | struct gdbarch * | gdbarch | ) | [static] |
Definition at line 3077 of file xtensa-tdep.c.
References _, gdbarch_tdep::a0_base, gdbarch_tdep::ar_base, do_cleanups(), fprintf_unfiltered(), gdbarch_tdep(), internal_error(), gdbarch_tdep::isa_use_exceptions, gdbarch_tdep::isa_use_windowed_registers, cleanup_check::log(), make_cleanup(), make_cleanup_ui_file_delete(), mem_fileopen(), gdbarch_tdep::num_aregs, gdbarch_tdep::pc_regnum, gdbarch_tdep::ps_regnum, ui_file_xstrdup(), gdbarch_tdep::wb_regnum, gdbarch_tdep::ws_regnum, and xfree().
Referenced by xtensa_gdbarch_init().
static void xtensa_window_interrupt_frame_cache | ( | struct frame_info * | this_frame, |
xtensa_frame_cache_t * | cache, | ||
CORE_ADDR | pc | ||
) | [static] |
Definition at line 2937 of file xtensa-tdep.c.
References _, xtensa_windowed_frame_cache::aregs, arreg_number(), xtensa_frame_cache::base, xtensa_frame_cache::call0, xtensa_windowed_frame_cache::callsize, error(), execute_code(), gdbarch_ps_regnum(), get_frame_arch(), get_frame_func(), get_frame_register_unsigned(), xtensa_frame_cache::pc, xtensa_frame_cache::prev_sp, cleanup_check::ps, xtensa_frame_cache::ps, PS_EXC, xtensa_frame_cache::ra, regnum, xtensa_windowed_frame_cache::wb, xtensa_frame_cache::wd, WINSIZE, xtensa_windowed_frame_cache::ws, xtensa_find_register_by_name(), XTENSA_NUM_SAVED_AREGS, xtensa_read_register(), xtensa_scan_prologue(), xtNoExceptionHandler, and xtWindowOverflow.
Referenced by xtensa_frame_cache().
static int xtensa_window_interrupt_insn | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 1113 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 175 of file xtensa-tdep.c.
References get_current_regcache(), and regcache_raw_write_unsigned().
Referenced by execute_code(), and execute_l32e().
Referenced by _initialize_xtensa_tdep(), and initialize_all_files().
Definition at line 2741 of file xtensa-tdep.c.
Referenced by execute_code(), and execute_l32e().
int a0_was_saved [static] |
Definition at line 2744 of file xtensa-tdep.c.
Referenced by execute_code(), and execute_l32e().
Definition at line 2743 of file xtensa-tdep.c.
Referenced by execute_code(), and execute_l32e().
int a11_was_saved [static] |
Definition at line 2746 of file xtensa-tdep.c.
Referenced by execute_code(), and execute_l32e().
Definition at line 2742 of file xtensa-tdep.c.
Referenced by execute_code(), and execute_l32e().
int a7_was_saved [static] |
Definition at line 2745 of file xtensa-tdep.c.
Referenced by execute_code(), and execute_l32e().
struct reggroup* xtensa_ar_reggroup [static] |
Definition at line 742 of file xtensa-tdep.c.
struct reggroup* xtensa_cp[XTENSA_MAX_COPROCESSOR] [static] |
Definition at line 745 of file xtensa-tdep.c.
unsigned int xtensa_debug_level = 0 [static] |
Definition at line 58 of file xtensa-tdep.c.
Referenced by _initialize_xtensa_tdep(), and xtensa_push_dummy_call().
xtensa_isa xtensa_default_isa |
Referenced by call0_analyze_prologue(), call0_ret(), execute_code(), and xtensa_scan_prologue().
struct frame_base xtensa_frame_base [static] |
{ &xtensa_unwind, xtensa_frame_base_address, xtensa_frame_base_address, xtensa_frame_base_address }
Definition at line 1566 of file xtensa-tdep.c.
struct regset xtensa_gregset [static] |
{ NULL, xtensa_supply_gregset }
Definition at line 908 of file xtensa-tdep.c.
Referenced by xtensa_regset_from_core_section().
int xtensa_session_once_reported = 1 [static] |
Definition at line 1424 of file xtensa-tdep.c.
Referenced by warning_once(), and xtensa_gdbarch_init().
struct gdbarch_tdep xtensa_tdep |
Referenced by xtensa_gdbarch_init().
struct frame_unwind xtensa_unwind [static] |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, xtensa_frame_this_id, xtensa_frame_prev_register, NULL, default_frame_sniffer }
Definition at line 1546 of file xtensa-tdep.c.
struct reggroup* xtensa_user_reggroup [static] |
Definition at line 743 of file xtensa-tdep.c.
struct reggroup* xtensa_vectra_reggroup [static] |
Definition at line 744 of file xtensa-tdep.c.