|
GDB (xrefs)
|
Go to the source code of this file.
Classes | |
| struct | aarch64_register |
| struct | aarch64_memory_operand |
| struct | aarch64_insn_data |
| struct | aarch64_insn_visitor |
Macros | |
| #define | ENCODE(val, size, offset) ((uint32_t) ((val & ((1ULL << size) - 1)) << offset)) |
| #define | can_encode_int32(val, bits) (((val) >> (bits)) == 0 || ((val) >> (bits)) == -1) |
| #define | emit_b(buf, is_bl, offset) aarch64_emit_insn (buf, ((is_bl) ? BL : B) | (ENCODE ((offset) >> 2, 26, 0))) |
| #define | emit_bcond(buf, cond, offset) |
| #define | emit_cb(buf, is_cbnz, rt, offset) |
| #define | emit_ldr(buf, rt, rn, operand) aarch64_emit_load_store (buf, rt.is64 ? 3 : 2, LDR, rt, rn, operand) |
| #define | emit_ldrsw(buf, rt, rn, operand) aarch64_emit_load_store (buf, 3, LDRSW, rt, rn, operand) |
| #define | emit_tb(buf, is_tbnz, bit, rt, offset) |
| #define | emit_nop(buf) aarch64_emit_insn (buf, NOP) |
Enumerations | |
| enum | aarch64_opcodes { B = 0x14000000, BL = 0x80000000 | B, BCOND = 0x40000000 | B, CBZ = 0x20000000 | B, CBNZ = 0x21000000 | B, TBZ = 0x36000000 | B, TBNZ = 0x37000000 | B, BLR = 0xd63f0000, RET = 0xd65f0000, STP = 0x28000000, LDP = 0x28400000, STP_SIMD_VFP = 0x04000000 | STP, LDP_SIMD_VFP = 0x04000000 | LDP, STR = 0x38000000, LDR = 0x00400000 | STR, LDRSW = 0x80800000 | STR, LDAXR = 0x085ffc00, STXR = 0x08007c00, STLR = 0x089ffc00, MOV = 0x52800000, MOVK = 0x20000000 | MOV, ADD = 0x01000000, SUB = 0x40000000 | ADD, SUBS = 0x20000000 | SUB, AND = 0x0a000000, ORR = 0x20000000 | AND, ORN = 0x00200000 | ORR, EOR = 0x40000000 | AND, LSLV = 0x1ac02000, LSRV = 0x00000400 | LSLV, ASRV = 0x00000800 | LSLV, SBFM = 0x13000000, UBFM = 0x40000000 | SBFM, CSINC = 0x9a800400, MUL = 0x1b007c00, MSR = 0xd5100000, MRS = 0x00200000 | MSR, HINT = 0xd503201f, SEVL = (5 << 5) | HINT, WFE = (2 << 5) | HINT, NOP = (0 << 5) | HINT } |
| enum | aarch64_memory_operand_type { MEMORY_OPERAND_OFFSET, MEMORY_OPERAND_PREINDEX, MEMORY_OPERAND_POSTINDEX } |
Functions | |
| int | aarch64_decode_adr (CORE_ADDR addr, uint32_t insn, int *is_adrp, unsigned *rd, int32_t *offset) |
| int | aarch64_decode_b (CORE_ADDR addr, uint32_t insn, int *is_bl, int32_t *offset) |
| int | aarch64_decode_bcond (CORE_ADDR addr, uint32_t insn, unsigned *cond, int32_t *offset) |
| int | aarch64_decode_cb (CORE_ADDR addr, uint32_t insn, int *is64, int *is_cbnz, unsigned *rn, int32_t *offset) |
| int | aarch64_decode_tb (CORE_ADDR addr, uint32_t insn, int *is_tbnz, unsigned *bit, unsigned *rt, int32_t *imm) |
| int | aarch64_decode_ldr_literal (CORE_ADDR addr, uint32_t insn, int *is_w, int *is64, unsigned *rt, int32_t *offset) |
| void | aarch64_relocate_instruction (uint32_t insn, const struct aarch64_insn_visitor *visitor, struct aarch64_insn_data *data) |
| int | aarch64_emit_insn (uint32_t *buf, uint32_t insn) |
| int | aarch64_emit_load_store (uint32_t *buf, uint32_t size, enum aarch64_opcodes opcode, struct aarch64_register rt, struct aarch64_register rn, struct aarch64_memory_operand operand) |
Variables | |
| int | aarch64_debug |
Definition at line 215 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_b().
| #define emit_b | ( | buf, | |
| is_bl, | |||
| offset | |||
| ) | aarch64_emit_insn (buf, ((is_bl) ? BL : B) | (ENCODE ((offset) >> 2, 26, 0))) |
Definition at line 228 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_b().
| #define emit_bcond | ( | buf, | |
| cond, | |||
| offset | |||
| ) |
Definition at line 240 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_b_cond().
| #define emit_cb | ( | buf, | |
| is_cbnz, | |||
| rt, | |||
| offset | |||
| ) |
Definition at line 256 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_cb().
| #define emit_ldr | ( | buf, | |
| rt, | |||
| rn, | |||
| operand | |||
| ) | aarch64_emit_load_store (buf, rt.is64 ? 3 : 2, LDR, rt, rn, operand) |
Definition at line 274 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_ldr_literal().
| #define emit_ldrsw | ( | buf, | |
| rt, | |||
| rn, | |||
| operand | |||
| ) | aarch64_emit_load_store (buf, 3, LDRSW, rt, rn, operand) |
Definition at line 288 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_ldr_literal().
| #define emit_nop | ( | buf | ) | aarch64_emit_insn (buf, NOP) |
Definition at line 314 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_adr(), and aarch64_displaced_step_b().
Definition at line 304 of file aarch64-insn.h.
Referenced by aarch64_displaced_step_tb().
Definition at line 147 of file aarch64-insn.h.
Referenced by aarch64_emit_load_store().
| Enumerator | |
|---|---|
| MEMORY_OPERAND_OFFSET | |
| MEMORY_OPERAND_PREINDEX | |
| MEMORY_OPERAND_POSTINDEX | |
Definition at line 120 of file aarch64-insn.h.
| enum aarch64_opcodes |
Definition at line 27 of file aarch64-insn.h.
| int aarch64_decode_adr | ( | CORE_ADDR | addr, |
| uint32_t | insn, | ||
| int * | is_adrp, | ||
| unsigned * | rd, | ||
| int32_t * | offset | ||
| ) |
Definition at line 69 of file aarch64-insn.c.
References aarch64_debug, core_addr_to_string_nz(), debug_printf(), decode_masked_match(), extract_signed_bitfield(), and offset.
Referenced by aarch64_relocate_instruction().
| int aarch64_decode_b | ( | CORE_ADDR | addr, |
| uint32_t | insn, | ||
| int * | is_bl, | ||
| int32_t * | offset | ||
| ) |
Definition at line 113 of file aarch64-insn.c.
References aarch64_debug, core_addr_to_string_nz(), debug_printf(), decode_masked_match(), extract_signed_bitfield(), and offset.
Referenced by aarch64_relocate_instruction().
| int aarch64_decode_bcond | ( | CORE_ADDR | addr, |
| uint32_t | insn, | ||
| unsigned * | cond, | ||
| int32_t * | offset | ||
| ) |
Definition at line 147 of file aarch64-insn.c.
References aarch64_debug, core_addr_to_string_nz(), debug_printf(), decode_masked_match(), extract_signed_bitfield(), and offset.
Referenced by aarch64_relocate_instruction().
| int aarch64_decode_cb | ( | CORE_ADDR | addr, |
| uint32_t | insn, | ||
| int * | is64, | ||
| int * | is_cbnz, | ||
| unsigned * | rn, | ||
| int32_t * | offset | ||
| ) |
Definition at line 179 of file aarch64-insn.c.
References aarch64_debug, core_addr_to_string_nz(), debug_printf(), decode_masked_match(), extract_signed_bitfield(), and offset.
Referenced by aarch64_relocate_instruction().
| int aarch64_decode_ldr_literal | ( | CORE_ADDR | addr, |
| uint32_t | insn, | ||
| int * | is_w, | ||
| int * | is64, | ||
| unsigned * | rt, | ||
| int32_t * | offset | ||
| ) |
Definition at line 252 of file aarch64-insn.c.
References aarch64_debug, core_addr_to_string_nz(), debug_printf(), extract_signed_bitfield(), and offset.
Referenced by aarch64_relocate_instruction().
| int aarch64_decode_tb | ( | CORE_ADDR | addr, |
| uint32_t | insn, | ||
| int * | is_tbnz, | ||
| unsigned * | bit, | ||
| unsigned * | rt, | ||
| int32_t * | imm | ||
| ) |
Definition at line 215 of file aarch64-insn.c.
References aarch64_debug, bit, core_addr_to_string_nz(), debug_printf(), decode_masked_match(), and extract_signed_bitfield().
Referenced by aarch64_relocate_instruction().
| int aarch64_emit_insn | ( | uint32_t * | buf, |
| uint32_t | insn | ||
| ) |
Definition at line 336 of file aarch64-insn.c.
Referenced by aarch64_displaced_step_others(), and aarch64_emit_load_store().
| int aarch64_emit_load_store | ( | uint32_t * | buf, |
| uint32_t | size, | ||
| enum aarch64_opcodes | opcode, | ||
| struct aarch64_register | rt, | ||
| struct aarch64_register | rn, | ||
| struct aarch64_memory_operand | operand | ||
| ) |
Definition at line 345 of file aarch64-insn.c.
References aarch64_emit_insn(), ENCODE, aarch64_memory_operand::index, MEMORY_OPERAND_OFFSET, MEMORY_OPERAND_POSTINDEX, MEMORY_OPERAND_PREINDEX, aarch64_register::num, size, and aarch64_memory_operand::type.
| void aarch64_relocate_instruction | ( | uint32_t | insn, |
| const struct aarch64_insn_visitor * | visitor, | ||
| struct aarch64_insn_data * | data | ||
| ) |
Definition at line 296 of file aarch64-insn.c.
References aarch64_decode_adr(), aarch64_decode_b(), aarch64_decode_bcond(), aarch64_decode_cb(), aarch64_decode_ldr_literal(), aarch64_decode_tb(), aarch64_insn_visitor::adr, aarch64_insn_visitor::b, aarch64_insn_visitor::b_cond, bit, aarch64_insn_visitor::cb, gdbarch::data, aarch64_insn_visitor::ldr_literal, offset, aarch64_insn_visitor::others, aarch64_insn_visitor::tb, and visitor.
Referenced by aarch64_displaced_step_copy_insn().
| int aarch64_debug |
Definition at line 23 of file aarch64-insn.c.
Referenced by _initialize_aarch64_tdep(), aarch64_analyze_prologue(), aarch64_decode_adr(), aarch64_decode_b(), aarch64_decode_bcond(), aarch64_decode_cb(), aarch64_decode_ldr_literal(), aarch64_decode_tb(), aarch64_push_dummy_call(), aarch64_return_value(), aarch64_store_return_value(), BP_MANIPULATION(), pass_in_v(), pass_in_x(), and pass_on_stack().
1.8.14