OpenOCD
|
Go to the source code of this file.
Functions | |
int | arm_access_size (struct arm_instruction *instruction) |
int | arm_evaluate_opcode (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_add_sp_pc_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_add_sub_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_adjust_stack_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_b_bl (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_b_bl_blx_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_blx_imm (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_breakpoint_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_byterev_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_cb_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_cdp_mcr_mrc (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_cond_branch_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_cps_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_data_proc (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_data_proc_imm_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_data_proc_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_extend (uint32_t opcode, uint32_t address, char *cp) |
static int | evaluate_extend_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_hint_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_ifthen_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_ldc_stc_mcrr_mrrc (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_ldm_stm (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_load_literal_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_load_store (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_load_store_imm_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_load_store_multiple_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_load_store_reg_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_load_store_stack_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_media (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_misc_instr (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_misc_load_store (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_mov_imm (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_mrs_msr (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_mul_and_extra_ld_st (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_p_add_sub (uint32_t opcode, uint32_t address, char *cp) |
static int | evaluate_pld (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_shift_imm_thumb (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_srs (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_swi (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static int | evaluate_unknown (uint32_t opcode, uint32_t address, struct arm_instruction *instruction) |
static uint32_t | ror (uint32_t value, int places) |
static uint32_t | thumb_alignpc4 (uint32_t addr) |
int | thumb_evaluate_opcode (uint16_t opcode, uint32_t address, struct arm_instruction *instruction) |
Variables | |
static const char * | arm_condition_strings [] |
int arm_access_size | ( | struct arm_instruction * | instruction | ) |
int arm_evaluate_opcode | ( | uint32_t | opcode, |
uint32_t | address, | ||
struct arm_instruction * | instruction | ||
) |
Definition at line 1915 of file arm_disassembler.c.
References ARM_UNDEFINED_INSTRUCTION, ERROR_OK, evaluate_b_bl(), evaluate_blx_imm(), evaluate_cdp_mcr_mrc(), evaluate_data_proc(), evaluate_ldc_stc_mcrr_mrrc(), evaluate_ldm_stm(), evaluate_load_store(), evaluate_media(), evaluate_misc_instr(), evaluate_mov_imm(), evaluate_mrs_msr(), evaluate_mul_and_extra_ld_st(), evaluate_pld(), evaluate_srs(), evaluate_swi(), arm_instruction::instruction_size, LOG_ERROR, arm_instruction::opcode, arm_instruction::text, and arm_instruction::type.
Referenced by arm_simulate_step_core(), etm_read_instruction(), and xscale_read_instruction().
|
static |
Definition at line 2565 of file arm_disassembler.c.
References ARM_ADD, arm_instruction::data_proc, ERROR_OK, arm_shifter_operand::immediate, arm_instruction::info, arm_data_proc_instr::rd, arm_data_proc_instr::rn, arm_data_proc_instr::shifter_operand, arm_instruction::text, arm_instruction::type, and arm_data_proc_instr::variant.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2112 of file arm_disassembler.c.
References ARM_ADD, ARM_SUB, arm_instruction::data_proc, ERROR_OK, arm_shifter_operand::immediate, arm_shifter_operand::immediate_shift, arm_instruction::info, arm_data_proc_instr::rd, arm_shifter_operand::rm, arm_data_proc_instr::rn, arm_data_proc_instr::s, arm_data_proc_instr::shifter_operand, arm_instruction::text, arm_instruction::type, and arm_data_proc_instr::variant.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2596 of file arm_disassembler.c.
References ARM_ADD, ARM_SUB, arm_instruction::data_proc, ERROR_OK, arm_shifter_operand::immediate, arm_instruction::info, arm_data_proc_instr::rd, arm_data_proc_instr::rn, arm_data_proc_instr::shifter_operand, arm_instruction::text, arm_instruction::type, and arm_data_proc_instr::variant.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 338 of file arm_disassembler.c.
References ARM_B, ARM_BL, arm_instruction::b_bl_bx_blx, COND, ERROR_OK, arm_instruction::info, offset, arm_b_bl_bx_blx_instr::reg_operand, arm_b_bl_bx_blx_instr::target_address, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 2054 of file arm_disassembler.c.
References ARM_B, ARM_BL, ARM_BLX, ARM_UNKNOWN_INSTRUCTION, arm_instruction::b_bl_bx_blx, ERROR_OK, arm_instruction::info, NULL, offset, arm_b_bl_bx_blx_instr::reg_operand, arm_b_bl_bx_blx_instr::target_address, arm_instruction::text, and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 300 of file arm_disassembler.c.
References ARM_BLX, arm_instruction::b_bl_bx_blx, ERROR_OK, arm_instruction::info, offset, arm_b_bl_bx_blx_instr::reg_operand, arm_b_bl_bx_blx_instr::target_address, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 2624 of file arm_disassembler.c.
References ARM_BKPT, ERROR_OK, arm_instruction::text, and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2801 of file arm_disassembler.c.
References ERROR_OK, and arm_instruction::text.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2748 of file arm_disassembler.c.
References ERROR_OK, offset, and arm_instruction::text.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 468 of file arm_disassembler.c.
References ARM_CDP, ARM_MCR, ARM_MRC, COND, ERROR_OK, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 2709 of file arm_disassembler.c.
References ARM_B, arm_condition_strings, ARM_SWI, ARM_UNDEFINED_INSTRUCTION, arm_instruction::b_bl_bx_blx, ERROR_OK, arm_instruction::info, offset, arm_b_bl_bx_blx_instr::reg_operand, arm_b_bl_bx_blx_instr::target_address, arm_instruction::text, and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2780 of file arm_disassembler.c.
References ERROR_OK, and arm_instruction::text.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 1701 of file arm_disassembler.c.
References ARM_ADC, ARM_ADD, ARM_AND, ARM_BIC, ARM_CMN, ARM_CMP, ARM_EOR, ARM_MOV, ARM_MVN, ARM_ORR, ARM_RSB, ARM_RSC, ARM_SBC, ARM_SUB, ARM_TEQ, ARM_TST, COND, arm_instruction::data_proc, ERROR_OK, arm_shifter_operand::immediate, arm_shifter_operand::immediate_shift, arm_instruction::info, NULL, op, arm_data_proc_instr::rd, arm_shifter_operand::register_shift, arm_shifter_operand::rm, arm_data_proc_instr::rn, ror(), arm_shifter_operand::rs, arm_data_proc_instr::s, arm_shifter_operand::shift, arm_shifter_operand::shift_imm, arm_data_proc_instr::shifter_operand, arm_instruction::text, arm_instruction::type, and arm_data_proc_instr::variant.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 2197 of file arm_disassembler.c.
References ARM_ADD, ARM_CMP, ARM_MOV, ARM_SUB, arm_instruction::data_proc, ERROR_OK, arm_shifter_operand::immediate, arm_instruction::info, NULL, arm_data_proc_instr::rd, arm_data_proc_instr::rn, arm_data_proc_instr::s, arm_data_proc_instr::shifter_operand, arm_instruction::text, arm_instruction::type, and arm_data_proc_instr::variant.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2239 of file arm_disassembler.c.
References ARM_ADC, ARM_ADD, ARM_AND, ARM_BIC, ARM_BLX, ARM_BX, ARM_CMN, ARM_CMP, ARM_EOR, ARM_MOV, ARM_MUL, ARM_MVN, ARM_ORR, ARM_RSB, ARM_SBC, ARM_TST, ARM_UNDEFINED_INSTRUCTION, arm_instruction::b_bl_bx_blx, arm_instruction::data_proc, ERROR_OK, arm_shifter_operand::immediate, arm_shifter_operand::immediate_shift, arm_instruction::info, NULL, op, arm_data_proc_instr::rd, arm_b_bl_bx_blx_instr::reg_operand, arm_shifter_operand::register_shift, arm_shifter_operand::rm, arm_data_proc_instr::rn, arm_shifter_operand::rs, arm_data_proc_instr::s, arm_shifter_operand::shift, arm_data_proc_instr::shifter_operand, arm_instruction::text, arm_instruction::type, and arm_data_proc_instr::variant.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 702 of file arm_disassembler.c.
References ARM_ADD, ARM_MOV, ARM_UNDEFINED_INSTRUCTION, COND, and type.
Referenced by evaluate_media().
|
static |
Definition at line 2766 of file arm_disassembler.c.
References ERROR_OK, and arm_instruction::text.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2826 of file arm_disassembler.c.
References ERROR_OK, and arm_instruction::text.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2859 of file arm_disassembler.c.
References arm_condition_strings, ERROR_OK, and arm_instruction::text.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 382 of file arm_disassembler.c.
References ARM_LDC, ARM_MCRR, ARM_MRRC, ARM_STC, COND, ERROR_FAIL, ERROR_OK, LOG_ERROR, offset, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 1147 of file arm_disassembler.c.
References arm_load_store_multiple_instr::addressing_mode, ARM_LDM, ARM_STM, COND, ERROR_OK, arm_instruction::info, arm_instruction::load_store_multiple, arm_load_store_multiple_instr::register_list, arm_load_store_multiple_instr::rn, arm_load_store_multiple_instr::s, arm_instruction::text, arm_instruction::type, and arm_load_store_multiple_instr::w.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 2413 of file arm_disassembler.c.
References ARM_LDR, ERROR_OK, arm_load_store_instr::index_mode, arm_instruction::info, arm_instruction::load_store, arm_load_store_instr::offset, arm_load_store_instr::offset_mode, arm_load_store_instr::rd, arm_load_store_instr::rn, arm_instruction::text, thumb_alignpc4(), and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 532 of file arm_disassembler.c.
References ARM_LDR, ARM_LDRB, ARM_LDRBT, ARM_LDRT, ARM_STR, ARM_STRB, ARM_STRBT, ARM_STRT, COND, ERROR_OK, arm_load_store_instr::index_mode, arm_instruction::info, arm_instruction::load_store, offset, arm_load_store_instr::offset, arm_load_store_instr::offset_mode, arm_load_store_instr::rd, arm_load_store_instr::rn, arm_instruction::text, arm_instruction::type, and arm_load_store_instr::u.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 2495 of file arm_disassembler.c.
References ARM_LDR, ARM_STR, ERROR_OK, arm_load_store_instr::index_mode, arm_instruction::info, arm_instruction::load_store, offset, arm_load_store_instr::offset, arm_load_store_instr::offset_mode, arm_load_store_instr::rd, arm_load_store_instr::rn, arm_instruction::text, and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2638 of file arm_disassembler.c.
References arm_load_store_multiple_instr::addressing_mode, ARM_LDM, ARM_STM, ERROR_OK, arm_instruction::info, arm_instruction::load_store_multiple, arm_load_store_multiple_instr::register_list, arm_load_store_multiple_instr::rn, arm_instruction::text, and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2438 of file arm_disassembler.c.
References ARM_LDR, ARM_LDRB, ARM_LDRH, ARM_LDRSB, ARM_LDRSH, ARM_STR, ARM_STRB, ARM_STRH, ERROR_OK, arm_load_store_instr::index_mode, arm_instruction::info, arm_instruction::load_store, NULL, arm_load_store_instr::offset, arm_load_store_instr::offset_mode, arm_load_store_instr::rd, arm_load_store_instr::rn, arm_instruction::text, and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 2536 of file arm_disassembler.c.
References ARM_LDR, ARM_STR, ERROR_OK, arm_load_store_instr::index_mode, arm_instruction::info, arm_instruction::load_store, offset, arm_load_store_instr::offset, arm_load_store_instr::offset_mode, arm_load_store_instr::rd, arm_load_store_instr::rn, arm_instruction::text, and arm_instruction::type.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 825 of file arm_disassembler.c.
References COND, ERROR_OK, evaluate_extend(), evaluate_p_add_sub(), NULL, arm_instruction::text, type, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 1410 of file arm_disassembler.c.
References ARM_BKPT, ARM_BLX, ARM_BX, ARM_CLZ, ARM_ERET, ARM_HVC, ARM_QADD, ARM_QDADD, ARM_QDSUB, ARM_QSUB, ARM_SMC, ARM_SMLAWY, ARM_SMLAXY, ARM_SMULWY, ARM_SMULXY, arm_instruction::b_bl_bx_blx, COND, ERROR_OK, evaluate_mrs_msr(), arm_instruction::info, NULL, arm_b_bl_bx_blx_instr::reg_operand, arm_b_bl_bx_blx_instr::target_address, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 1018 of file arm_disassembler.c.
References ARM_LDRD, ARM_LDRH, ARM_LDRSB, ARM_LDRSH, ARM_STRD, ARM_STRH, COND, ERROR_OK, arm_load_store_instr::index_mode, arm_instruction::info, arm_instruction::load_store, offset, arm_load_store_instr::offset, arm_load_store_instr::offset_mode, arm_load_store_instr::rd, arm_load_store_instr::rn, arm_instruction::text, arm_instruction::type, and arm_load_store_instr::u.
Referenced by evaluate_mul_and_extra_ld_st().
|
static |
Definition at line 1674 of file arm_disassembler.c.
References ARM_MOV, COND, arm_instruction::data_proc, ERROR_OK, arm_instruction::info, arm_data_proc_instr::rd, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 1345 of file arm_disassembler.c.
References ARM_MRS, ARM_MSR, COND, ERROR_OK, ror(), arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode(), and evaluate_misc_instr().
|
static |
Definition at line 1227 of file arm_disassembler.c.
References ARM_MLA, ARM_MUL, ARM_SMLAL, ARM_SMULL, ARM_SWP, ARM_SWPB, ARM_UMLAL, ARM_UMULL, COND, ERROR_OK, evaluate_misc_load_store(), NULL, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 754 of file arm_disassembler.c.
References ARM_ADD, ARM_SUB, ARM_UNDEFINED_INSTRUCTION, COND, op, and type.
Referenced by evaluate_media().
|
static |
Definition at line 110 of file arm_disassembler.c.
References ARM_DSB, ARM_ISB, ARM_PLD, ERROR_OK, evaluate_unknown(), offset, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 2152 of file arm_disassembler.c.
References ARM_MOV, arm_instruction::data_proc, ERROR_OK, arm_shifter_operand::immediate_shift, arm_instruction::info, NULL, arm_data_proc_instr::rd, arm_shifter_operand::rm, arm_data_proc_instr::rn, arm_data_proc_instr::s, arm_shifter_operand::shift, arm_shifter_operand::shift_imm, arm_data_proc_instr::shifter_operand, arm_instruction::text, arm_instruction::type, and arm_data_proc_instr::variant.
Referenced by thumb_evaluate_opcode().
|
static |
Definition at line 244 of file arm_disassembler.c.
References ERROR_OK, evaluate_unknown(), mode, and arm_instruction::text.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 288 of file arm_disassembler.c.
References ARM_SWI, ERROR_OK, arm_instruction::text, and arm_instruction::type.
Referenced by arm_evaluate_opcode().
|
static |
Definition at line 100 of file arm_disassembler.c.
References ARM_UNDEFINED_INSTRUCTION, ERROR_OK, arm_instruction::text, and arm_instruction::type.
Referenced by evaluate_pld(), and evaluate_srs().
|
static |
Definition at line 95 of file arm_disassembler.c.
Referenced by evaluate_data_proc(), and evaluate_mrs_msr().
|
inlinestatic |
Definition at line 2408 of file arm_disassembler.c.
References addr.
Referenced by evaluate_load_literal_thumb().
int thumb_evaluate_opcode | ( | uint16_t | opcode, |
uint32_t | address, | ||
struct arm_instruction * | instruction | ||
) |
Definition at line 2884 of file arm_disassembler.c.
References ARM_UNDEFINED_INSTRUCTION, ERROR_OK, evaluate_add_sp_pc_thumb(), evaluate_add_sub_thumb(), evaluate_adjust_stack_thumb(), evaluate_b_bl_blx_thumb(), evaluate_breakpoint_thumb(), evaluate_byterev_thumb(), evaluate_cb_thumb(), evaluate_cond_branch_thumb(), evaluate_cps_thumb(), evaluate_data_proc_imm_thumb(), evaluate_data_proc_thumb(), evaluate_extend_thumb(), evaluate_hint_thumb(), evaluate_ifthen_thumb(), evaluate_load_literal_thumb(), evaluate_load_store_imm_thumb(), evaluate_load_store_multiple_thumb(), evaluate_load_store_reg_thumb(), evaluate_load_store_stack_thumb(), evaluate_shift_imm_thumb(), arm_instruction::instruction_size, LOG_ERROR, arm_instruction::opcode, arm_instruction::text, and arm_instruction::type.
Referenced by arm_simulate_step_core(), etm_read_instruction(), and xscale_read_instruction().
|
static |
Definition at line 90 of file arm_disassembler.c.
Referenced by evaluate_cond_branch_thumb(), and evaluate_ifthen_thumb().