diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-05-28 20:34:24 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-05-28 20:34:24 (GMT) |
commit | 5311a943dffcc410739509b9215ca464f6d1e54c (patch) | |
tree | 9c34b5176606aa7bb3dcfb5970a20e3f9b27f1c3 /plugins/arm/v7/thumb_16.c | |
parent | 9f5ed46de568d3db882c939c8ca9d0117bff3369 (diff) |
Included support for ARMv7 system instructions.
Diffstat (limited to 'plugins/arm/v7/thumb_16.c')
-rw-r--r-- | plugins/arm/v7/thumb_16.c | 170 |
1 files changed, 85 insertions, 85 deletions
diff --git a/plugins/arm/v7/thumb_16.c b/plugins/arm/v7/thumb_16.c index a97779e..d592a80 100644 --- a/plugins/arm/v7/thumb_16.c +++ b/plugins/arm/v7/thumb_16.c @@ -94,7 +94,7 @@ GArchInstruction *process_armv7_thumb_16_instruction_set_encoding(uint16_t raw) result = process_armv7_thumb_16_special_data_instructions_and_branch_and_exchange(raw); else if ((opcode & b111110) == b010010) - result = armv7_read_thumb_16_instr_ldr_literal(raw); + result = armv7_read_thumb_16_instr_a8_ldr_literal(raw); else if ((opcode & b111100) == b010100) result = process_armv7_thumb_16_load_store_single_data_item(raw); @@ -106,25 +106,25 @@ GArchInstruction *process_armv7_thumb_16_instruction_set_encoding(uint16_t raw) result = process_armv7_thumb_16_load_store_single_data_item(raw); else if ((opcode & b111110) == b101000) - result = armv7_read_thumb_16_instr_adr(raw); + result = armv7_read_thumb_16_instr_a8_adr(raw); else if ((opcode & b111110) == b101010) - result = armv7_read_thumb_16_instr_add_sp_plus_immediate(raw); + result = armv7_read_thumb_16_instr_a8_add_sp_plus_immediate(raw); else if ((opcode & b111100) == b101100) result = process_armv7_thumb_16_miscellaneous_16_bit_instructions(raw); else if ((opcode & b111110) == b110000) - result = armv7_read_thumb_16_instr_stm_stmia_stmea(raw); + result = armv7_read_thumb_16_instr_a8_stm_stmia_stmea(raw); else if ((opcode & b111110) == b110010) - result = armv7_read_thumb_16_instr_ldm_ldmia_ldmfd_thumb(raw); + result = armv7_read_thumb_16_instr_a8_ldm_ldmia_ldmfd_thumb(raw); else if ((opcode & b111100) == b110100) result = process_armv7_thumb_16_conditional_branch_and_supervisor_call(raw); else if ((opcode & b111110) == b111000) - result = armv7_read_thumb_16_instr_b(raw); + result = armv7_read_thumb_16_instr_a8_b(raw); return result; @@ -160,37 +160,37 @@ static GArchInstruction *process_armv7_thumb_16_shift_immediate_add_subtract_mov opcode = (raw >> 9) & b11111; if ((opcode & b11100) == b00000) - result = armv7_read_thumb_16_instr_lsl_immediate(raw); + result = armv7_read_thumb_16_instr_a8_lsl_immediate(raw); else if ((opcode & b11100) == b00100) - result = armv7_read_thumb_16_instr_lsr_immediate(raw); + result = armv7_read_thumb_16_instr_a8_lsr_immediate(raw); else if ((opcode & b11100) == b01000) - result = armv7_read_thumb_16_instr_asr_immediate(raw); + result = armv7_read_thumb_16_instr_a8_asr_immediate(raw); else if (opcode == b01100) - result = armv7_read_thumb_16_instr_add_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_add_register_thumb(raw); else if (opcode == b01101) - result = armv7_read_thumb_16_instr_sub_register(raw); + result = armv7_read_thumb_16_instr_a8_sub_register(raw); else if (opcode == b01110) - result = armv7_read_thumb_16_instr_add_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_add_immediate_thumb(raw); else if (opcode == b01111) - result = armv7_read_thumb_16_instr_sub_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_sub_immediate_thumb(raw); else if ((opcode & b11100) == b10000) - result = armv7_read_thumb_16_instr_mov_immediate(raw); + result = armv7_read_thumb_16_instr_a8_mov_immediate(raw); else if ((opcode & b11100) == b10100) - result = armv7_read_thumb_16_instr_cmp_immediate(raw); + result = armv7_read_thumb_16_instr_a8_cmp_immediate(raw); else if ((opcode & b11100) == b11000) - result = armv7_read_thumb_16_instr_add_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_add_immediate_thumb(raw); else if ((opcode & b11100) == b11100) - result = armv7_read_thumb_16_instr_sub_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_sub_immediate_thumb(raw); return result; @@ -228,67 +228,67 @@ static GArchInstruction *process_armv7_thumb_16_data_processing(uint16_t raw) switch (opcode) { case b0000: - result = armv7_read_thumb_16_instr_and_register(raw); + result = armv7_read_thumb_16_instr_a8_and_register(raw); break; case b0001: - result = armv7_read_thumb_16_instr_eor_register(raw); + result = armv7_read_thumb_16_instr_a8_eor_register(raw); break; case b0010: - result = armv7_read_thumb_16_instr_lsl_register(raw); + result = armv7_read_thumb_16_instr_a8_lsl_register(raw); break; case b0011: - result = armv7_read_thumb_16_instr_lsr_register(raw); + result = armv7_read_thumb_16_instr_a8_lsr_register(raw); break; case b0100: - result = armv7_read_thumb_16_instr_asr_register(raw); + result = armv7_read_thumb_16_instr_a8_asr_register(raw); break; case b0101: - result = armv7_read_thumb_16_instr_adc_register(raw); + result = armv7_read_thumb_16_instr_a8_adc_register(raw); break; case b0110: - result = armv7_read_thumb_16_instr_sbc_register(raw); + result = armv7_read_thumb_16_instr_a8_sbc_register(raw); break; case b0111: - result = armv7_read_thumb_16_instr_ror_register(raw); + result = armv7_read_thumb_16_instr_a8_ror_register(raw); break; case b1000: - result = armv7_read_thumb_16_instr_tst_register(raw); + result = armv7_read_thumb_16_instr_a8_tst_register(raw); break; case b1001: - result = armv7_read_thumb_16_instr_rsb_immediate(raw); + result = armv7_read_thumb_16_instr_a8_rsb_immediate(raw); break; case b1010: - result = armv7_read_thumb_16_instr_cmp_register(raw); + result = armv7_read_thumb_16_instr_a8_cmp_register(raw); break; case b1011: - result = armv7_read_thumb_16_instr_cmn_register(raw); + result = armv7_read_thumb_16_instr_a8_cmn_register(raw); break; case b1100: - result = armv7_read_thumb_16_instr_orr_register(raw); + result = armv7_read_thumb_16_instr_a8_orr_register(raw); break; case b1101: - result = armv7_read_thumb_16_instr_mul(raw); + result = armv7_read_thumb_16_instr_a8_mul(raw); break; case b1110: - result = armv7_read_thumb_16_instr_bic_register(raw); + result = armv7_read_thumb_16_instr_a8_bic_register(raw); break; case b1111: - result = armv7_read_thumb_16_instr_mvn_register(raw); + result = armv7_read_thumb_16_instr_a8_mvn_register(raw); break; } @@ -327,31 +327,31 @@ static GArchInstruction *process_armv7_thumb_16_special_data_instructions_and_br opcode = (raw >> 6) & b1111; if (opcode == b0000) - result = armv7_read_thumb_16_instr_add_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_add_register_thumb(raw); else if (opcode == b0001) - result = armv7_read_thumb_16_instr_add_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_add_register_thumb(raw); else if ((opcode & b1110) == b0010) - result = armv7_read_thumb_16_instr_add_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_add_register_thumb(raw); else if ((opcode & b1100) == b0100) - result = armv7_read_thumb_16_instr_cmp_register(raw); + result = armv7_read_thumb_16_instr_a8_cmp_register(raw); else if (opcode == b1000) - result = armv7_read_thumb_16_instr_mov_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_mov_register_thumb(raw); else if (opcode == b1001) - result = armv7_read_thumb_16_instr_mov_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_mov_register_thumb(raw); else if ((opcode & b1110) == b1010) - result = armv7_read_thumb_16_instr_mov_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_mov_register_thumb(raw); else if ((opcode & b1110) == b1100) - result = armv7_read_thumb_16_instr_bx(raw); + result = armv7_read_thumb_16_instr_a8_bx(raw); else if ((opcode & b1110) == b1110) - result = armv7_read_thumb_16_instr_blx_register(raw); + result = armv7_read_thumb_16_instr_a8_blx_register(raw); return result; @@ -392,35 +392,35 @@ static GArchInstruction *process_armv7_thumb_16_load_store_single_data_item(uint switch (opb) { case b000: - result = armv7_read_thumb_16_instr_str_register(raw); + result = armv7_read_thumb_16_instr_a8_str_register(raw); break; case b001: - result = armv7_read_thumb_16_instr_strh_register(raw); + result = armv7_read_thumb_16_instr_a8_strh_register(raw); break; case b010: - result = armv7_read_thumb_16_instr_strb_register(raw); + result = armv7_read_thumb_16_instr_a8_strb_register(raw); break; case b011: - result = armv7_read_thumb_16_instr_ldrsb_register(raw); + result = armv7_read_thumb_16_instr_a8_ldrsb_register(raw); break; case b100: - result = armv7_read_thumb_16_instr_ldr_register_thumb(raw); + result = armv7_read_thumb_16_instr_a8_ldr_register_thumb(raw); break; case b101: - result = armv7_read_thumb_16_instr_ldrh_register(raw); + result = armv7_read_thumb_16_instr_a8_ldrh_register(raw); break; case b110: - result = armv7_read_thumb_16_instr_ldrb_register(raw); + result = armv7_read_thumb_16_instr_a8_ldrb_register(raw); break; case b111: - result = armv7_read_thumb_16_instr_ldrsh_register(raw); + result = armv7_read_thumb_16_instr_a8_ldrsh_register(raw); break; } @@ -429,36 +429,36 @@ static GArchInstruction *process_armv7_thumb_16_load_store_single_data_item(uint case b0110: if ((opb & b100) == b000) - result = armv7_read_thumb_16_instr_str_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_str_immediate_thumb(raw); else /*if ((opb & b100) == b100)*/ - result = armv7_read_thumb_16_instr_ldr_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_ldr_immediate_thumb(raw); break; case b0111: if ((opb & b100) == b000) - result = armv7_read_thumb_16_instr_strb_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_strb_immediate_thumb(raw); else /*if ((opb & b100) == b100)*/ - result = armv7_read_thumb_16_instr_ldrb_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_ldrb_immediate_thumb(raw); break; case b1000: if ((opb & b100) == b000) - result = armv7_read_thumb_16_instr_strh_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_strh_immediate_thumb(raw); else /*if ((opb & b100) == b100)*/ - result = armv7_read_thumb_16_instr_ldrh_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_ldrh_immediate_thumb(raw); break; case b1001: if ((opb & b100) == b000) - result = armv7_read_thumb_16_instr_str_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_str_immediate_thumb(raw); else /*if ((opb & b100) == b100)*/ - result = armv7_read_thumb_16_instr_ldr_immediate_thumb(raw); + result = armv7_read_thumb_16_instr_a8_ldr_immediate_thumb(raw); break; @@ -498,58 +498,58 @@ static GArchInstruction *process_armv7_thumb_16_miscellaneous_16_bit_instruction opcode = (raw >> 5) & b1111111; if ((opcode & b1111100) == b0000000) - result = armv7_read_thumb_16_instr_add_sp_plus_immediate(raw); + result = armv7_read_thumb_16_instr_a8_add_sp_plus_immediate(raw); else if ((opcode & b1111100) == b0000100) - result = armv7_read_thumb_16_instr_sub_sp_minus_immediate(raw); + result = armv7_read_thumb_16_instr_a8_sub_sp_minus_immediate(raw); else if ((opcode & b1111000) == b0001000) - result = armv7_read_thumb_16_instr_cbnz_cbz(raw); + result = armv7_read_thumb_16_instr_a8_cbnz_cbz(raw); else if ((opcode & b1111110) == b0010000) - result = armv7_read_thumb_16_instr_sxth(raw); + result = armv7_read_thumb_16_instr_a8_sxth(raw); else if ((opcode & b1111110) == b0010010) - result = armv7_read_thumb_16_instr_sxtb(raw); + result = armv7_read_thumb_16_instr_a8_sxtb(raw); else if ((opcode & b1111110) == b0010100) - result = armv7_read_thumb_16_instr_uxth(raw); + result = armv7_read_thumb_16_instr_a8_uxth(raw); else if ((opcode & b1111110) == b0010110) - result = armv7_read_thumb_16_instr_uxtb(raw); + result = armv7_read_thumb_16_instr_a8_uxtb(raw); else if ((opcode & b1111000) == b0011000) - result = armv7_read_thumb_16_instr_cbnz_cbz(raw); + result = armv7_read_thumb_16_instr_a8_cbnz_cbz(raw); else if ((opcode & b1110000) == b0100000) - result = armv7_read_thumb_16_instr_push(raw); + result = armv7_read_thumb_16_instr_a8_push(raw); else if (opcode == b0110010) - result = armv7_read_thumb_16_instr_setend(raw); + result = armv7_read_thumb_16_instr_a8_setend(raw); else if (opcode == b0110011) - result = armv7_read_thumb_16_instr_cps_thumb(raw); + result = armv7_read_thumb_16_instr_b9_cps_thumb(raw); else if ((opcode & b1111000) == b1001000) - result = armv7_read_thumb_16_instr_cbnz_cbz(raw); + result = armv7_read_thumb_16_instr_a8_cbnz_cbz(raw); else if ((opcode & b1111110) == b1010000) - result = armv7_read_thumb_16_instr_rev(raw); + result = armv7_read_thumb_16_instr_a8_rev(raw); else if ((opcode & b1111110) == b1010010) - result = armv7_read_thumb_16_instr_rev16(raw); + result = armv7_read_thumb_16_instr_a8_rev16(raw); else if ((opcode & b1111110) == b1010110) - result = armv7_read_thumb_16_instr_revsh(raw); + result = armv7_read_thumb_16_instr_a8_revsh(raw); else if ((opcode & b1111000) == b1011000) - result = armv7_read_thumb_16_instr_cbnz_cbz(raw); + result = armv7_read_thumb_16_instr_a8_cbnz_cbz(raw); else if ((opcode & b1110000) == b1100000) - result = armv7_read_thumb_16_instr_pop_thumb(raw); + result = armv7_read_thumb_16_instr_a8_pop_thumb(raw); else if ((opcode & b1111000) == b1110000) - result = armv7_read_thumb_16_instr_bkpt(raw); + result = armv7_read_thumb_16_instr_a8_bkpt(raw); else if ((opcode & b1111000) == b1111000) result = process_armv7_thumb_16_miscellaneous_16_bit_instructions_if_then_and_hints(raw); @@ -591,29 +591,29 @@ static GArchInstruction *process_armv7_thumb_16_miscellaneous_16_bit_instruction opb = (raw >> 0) & b1111; if (opb != b0000) - result = armv7_read_thumb_16_instr_it(raw); + result = armv7_read_thumb_16_instr_a8_it(raw); else switch (opa) { case b0000: - result = armv7_read_thumb_16_instr_nop(raw); + result = armv7_read_thumb_16_instr_a8_nop(raw); break; case b0001: - result = armv7_read_thumb_16_instr_yield(raw); + result = armv7_read_thumb_16_instr_a8_yield(raw); break; case b0010: - result = armv7_read_thumb_16_instr_wfe(raw); + result = armv7_read_thumb_16_instr_a8_wfe(raw); break; case b0011: - result = armv7_read_thumb_16_instr_wfi(raw); + result = armv7_read_thumb_16_instr_a8_wfi(raw); break; case b0100: - result = armv7_read_thumb_16_instr_sev(raw); + result = armv7_read_thumb_16_instr_a8_sev(raw); break; } @@ -654,15 +654,15 @@ static GArchInstruction *process_armv7_thumb_16_conditional_branch_and_superviso switch (opcode) { case b1110: - result = armv7_read_thumb_16_instr_udf(raw); + result = armv7_read_thumb_16_instr_a8_udf(raw); break; case b1111: - result = armv7_read_thumb_16_instr_svc_previously_swi(raw); + result = armv7_read_thumb_16_instr_a8_svc_previously_swi(raw); break; default: - result = armv7_read_thumb_16_instr_b(raw); + result = armv7_read_thumb_16_instr_a8_b(raw); break; } |