|
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.
1.7.6.1