diff options
-rw-r--r-- | plugins/arm/v7/arm.c | 544 | ||||
-rw-r--r-- | plugins/arm/v7/core.c | 2 | ||||
-rw-r--r-- | plugins/arm/v7/helpers.h | 64 | ||||
-rw-r--r-- | plugins/arm/v7/opcodes/opcodes_tmp_arm.h | 19 | ||||
-rw-r--r-- | plugins/arm/v7/opcodes/opcodes_tmp_simd.h | 270 | ||||
-rw-r--r-- | plugins/arm/v7/opcodes/opcodes_tmp_thumb_16.h | 1 | ||||
-rw-r--r-- | plugins/arm/v7/opcodes/opcodes_tmp_thumb_32.h | 37 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88100_mla.d (renamed from plugins/arm/v7/opdefs/mla_A88100.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88101_mls.d (renamed from plugins/arm/v7/opdefs/mls_A88101.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88102_mov.d (renamed from plugins/arm/v7/opdefs/mov_A88102.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88103_mov.d (renamed from plugins/arm/v7/opdefs/mov_A88103.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88104_mov.d (renamed from plugins/arm/v7/opdefs/mov_A88104.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88106_movt.d (renamed from plugins/arm/v7/opdefs/movt_A88106.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88107_mrc.d (renamed from plugins/arm/v7/opdefs/mrc_A88107.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88108_mrrc.d (renamed from plugins/arm/v7/opdefs/mrrc_A88108.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88109_mrs.d (renamed from plugins/arm/v7/opdefs/mrs_A88109.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8810_add.d (renamed from plugins/arm/v7/opdefs/add_A8810.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88111_msr.d (renamed from plugins/arm/v7/opdefs/msr_A88111.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88112_msr.d (renamed from plugins/arm/v7/opdefs/msr_A88112.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88114_mul.d (renamed from plugins/arm/v7/opdefs/mul_A88114.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88115_mvn.d (renamed from plugins/arm/v7/opdefs/mvn_A88115.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88116_mvn.d (renamed from plugins/arm/v7/opdefs/mvn_A88116.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88117_mvn.d (renamed from plugins/arm/v7/opdefs/mvn_A88117.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88119_nop.d (renamed from plugins/arm/v7/opdefs/nop_A88119.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8811_add.d (renamed from plugins/arm/v7/opdefs/add_A8811.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88120_orn.d (renamed from plugins/arm/v7/opdefs/orn_A88120.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88121_orn.d (renamed from plugins/arm/v7/opdefs/orn_A88121.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88122_orr.d (renamed from plugins/arm/v7/opdefs/orr_A88122.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88123_orr.d (renamed from plugins/arm/v7/opdefs/orr_A88123.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88124_orr.d (renamed from plugins/arm/v7/opdefs/orr_A88124.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88125_pkh.d (renamed from plugins/arm/v7/opdefs/pkh_A88125.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88126_pld.d (renamed from plugins/arm/v7/opdefs/pld_A88126.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88127_pld.d (renamed from plugins/arm/v7/opdefs/pld_A88127.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88128_pld.d (renamed from plugins/arm/v7/opdefs/pld_A88128.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8812_adr.d (renamed from plugins/arm/v7/opdefs/adr_A8812.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88130_pli.d (renamed from plugins/arm/v7/opdefs/pli_A88130.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88131_pop.d (renamed from plugins/arm/v7/opdefs/pop_A88131.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88132_pop.d (renamed from plugins/arm/v7/opdefs/pop_A88132.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88133_push.d (renamed from plugins/arm/v7/opdefs/push_A88133.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88134_qadd.d (renamed from plugins/arm/v7/opdefs/qadd_A88134.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88135_qadd16.d (renamed from plugins/arm/v7/opdefs/qadd16_A88135.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88136_qadd8.d (renamed from plugins/arm/v7/opdefs/qadd8_A88136.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88137_qasx.d (renamed from plugins/arm/v7/opdefs/qasx_A88137.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88138_qdadd.d (renamed from plugins/arm/v7/opdefs/qdadd_A88138.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88139_qdsub.d (renamed from plugins/arm/v7/opdefs/qdsub_A88139.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8813_and.d (renamed from plugins/arm/v7/opdefs/and_A8813.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88140_qsax.d (renamed from plugins/arm/v7/opdefs/qsax_A88140.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88141_qsub.d (renamed from plugins/arm/v7/opdefs/qsub_A88141.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88142_qsub16.d (renamed from plugins/arm/v7/opdefs/qsub16_A88142.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88143_qsub8.d (renamed from plugins/arm/v7/opdefs/qsub8_A88143.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88144_rbit.d (renamed from plugins/arm/v7/opdefs/rbit_A88144.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88145_rev.d (renamed from plugins/arm/v7/opdefs/rev_A88145.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88146_rev16.d (renamed from plugins/arm/v7/opdefs/rev16_A88146.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88147_revsh.d (renamed from plugins/arm/v7/opdefs/revsh_A88147.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88149_ror.d (renamed from plugins/arm/v7/opdefs/ror_A88149.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8814_and.d (renamed from plugins/arm/v7/opdefs/and_A8814.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88150_ror.d (renamed from plugins/arm/v7/opdefs/ror_A88150.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88151_rrx.d (renamed from plugins/arm/v7/opdefs/rrx_A88151.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88152_rsb.d (renamed from plugins/arm/v7/opdefs/rsb_A88152.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88153_rsb.d (renamed from plugins/arm/v7/opdefs/rsb_A88153.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88154_rsb.d (renamed from plugins/arm/v7/opdefs/rsb_A88154.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88155_rsc.d (renamed from plugins/arm/v7/opdefs/rsc_A88155.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88156_rsc.d (renamed from plugins/arm/v7/opdefs/rsc_A88156.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88157_rsc.d (renamed from plugins/arm/v7/opdefs/rsc_A88157.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88158_sadd16.d (renamed from plugins/arm/v7/opdefs/sadd16_A88158.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88159_sadd8.d (renamed from plugins/arm/v7/opdefs/sadd8_A88159.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8815_and.d (renamed from plugins/arm/v7/opdefs/and_A8815.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88160_sasx.d (renamed from plugins/arm/v7/opdefs/sasx_A88160.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88161_sbc.d (renamed from plugins/arm/v7/opdefs/sbc_A88161.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88162_sbc.d (renamed from plugins/arm/v7/opdefs/sbc_A88162.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88163_sbc.d (renamed from plugins/arm/v7/opdefs/sbc_A88163.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88164_sbfx.d (renamed from plugins/arm/v7/opdefs/sbfx_A88164.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88165_sdiv.d (renamed from plugins/arm/v7/opdefs/sdiv_A88165.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88166_sel.d (renamed from plugins/arm/v7/opdefs/sel_A88166.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88167_setend.d (renamed from plugins/arm/v7/opdefs/setend_A88167.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88168_sev.d (renamed from plugins/arm/v7/opdefs/sev_A88168.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88169_shadd16.d (renamed from plugins/arm/v7/opdefs/shadd16_A88169.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8816_asr.d (renamed from plugins/arm/v7/opdefs/asr_A8816.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88170_shadd8.d (renamed from plugins/arm/v7/opdefs/shadd8_A88170.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88171_shasx.d (renamed from plugins/arm/v7/opdefs/shasx_A88171.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88172_shsax.d (renamed from plugins/arm/v7/opdefs/shsax_A88172.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88173_shsub16.d (renamed from plugins/arm/v7/opdefs/shsub16_A88173.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88174_shsub8.d (renamed from plugins/arm/v7/opdefs/shsub8_A88174.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88176_smla.d (renamed from plugins/arm/v7/opdefs/smla_A88176.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88177_smlad.d (renamed from plugins/arm/v7/opdefs/smlad_A88177.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88178_smlal.d (renamed from plugins/arm/v7/opdefs/smlal_A88178.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88179_smlal.d (renamed from plugins/arm/v7/opdefs/smlal_A88179.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8817_asr.d (renamed from plugins/arm/v7/opdefs/asr_A8817.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88180_smlald.d (renamed from plugins/arm/v7/opdefs/smlald_A88180.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88181_smlaw.d (renamed from plugins/arm/v7/opdefs/smlaw_A88181.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88182_smlsd.d (renamed from plugins/arm/v7/opdefs/smlsd_A88182.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88183_smlsld.d (renamed from plugins/arm/v7/opdefs/smlsld_A88183.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88184_smmla.d (renamed from plugins/arm/v7/opdefs/smmla_A88184.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88185_smmls.d (renamed from plugins/arm/v7/opdefs/smmls_A88185.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88186_smmul.d (renamed from plugins/arm/v7/opdefs/smmul_A88186.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88187_smuad.d (renamed from plugins/arm/v7/opdefs/smuad_A88187.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88188_smul.d (renamed from plugins/arm/v7/opdefs/smul_A88188.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88189_smull.d (renamed from plugins/arm/v7/opdefs/smull_A88189.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8818_b.d (renamed from plugins/arm/v7/opdefs/b_A8818.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88190_smulw.d (renamed from plugins/arm/v7/opdefs/smulw_A88190.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88191_smusd.d (renamed from plugins/arm/v7/opdefs/smusd_A88191.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88193_ssat.d (renamed from plugins/arm/v7/opdefs/ssat_A88193.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88194_ssat16.d (renamed from plugins/arm/v7/opdefs/ssat16_A88194.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88195_ssax.d (renamed from plugins/arm/v7/opdefs/ssax_A88195.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88196_ssub16.d (renamed from plugins/arm/v7/opdefs/ssub16_A88196.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88197_ssub8.d (renamed from plugins/arm/v7/opdefs/ssub8_A88197.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88198_stc.d (renamed from plugins/arm/v7/opdefs/stc_A88198.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88199_stm.d (renamed from plugins/arm/v7/opdefs/stm_A88199.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8819_bfc.d (renamed from plugins/arm/v7/opdefs/bfc_A8819.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A881_adc.d (renamed from plugins/arm/v7/opdefs/adc_A881.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88200_stmda.d (renamed from plugins/arm/v7/opdefs/stmda_A88200.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88201_stmdb.d (renamed from plugins/arm/v7/opdefs/stmdb_A88201.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88202_stmib.d (renamed from plugins/arm/v7/opdefs/stmib_A88202.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88203_str.d (renamed from plugins/arm/v7/opdefs/str_A88203.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88204_str.d (renamed from plugins/arm/v7/opdefs/str_A88204.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88205_str.d (renamed from plugins/arm/v7/opdefs/str_A88205.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88206_strb.d (renamed from plugins/arm/v7/opdefs/strb_A88206.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88207_strb.d (renamed from plugins/arm/v7/opdefs/strb_A88207.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88208_strb.d (renamed from plugins/arm/v7/opdefs/strb_A88208.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88209_strbt.d (renamed from plugins/arm/v7/opdefs/strbt_A88209.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8820_bfi.d (renamed from plugins/arm/v7/opdefs/bfi_A8820.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88210_strd.d (renamed from plugins/arm/v7/opdefs/strd_A88210.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88211_strd.d (renamed from plugins/arm/v7/opdefs/strd_A88211.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88212_strex.d (renamed from plugins/arm/v7/opdefs/strex_A88212.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88213_strexb.d (renamed from plugins/arm/v7/opdefs/strexb_A88213.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88214_strexd.d (renamed from plugins/arm/v7/opdefs/strexd_A88214.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88215_strexh.d (renamed from plugins/arm/v7/opdefs/strexh_A88215.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88216_strh.d (renamed from plugins/arm/v7/opdefs/strh_A88216.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88217_strh.d (renamed from plugins/arm/v7/opdefs/strh_A88217.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88218_strh.d (renamed from plugins/arm/v7/opdefs/strh_A88218.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88219_strht.d (renamed from plugins/arm/v7/opdefs/strht_A88219.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8821_bic.d (renamed from plugins/arm/v7/opdefs/bic_A8821.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88220_strt.d (renamed from plugins/arm/v7/opdefs/strt_A88220.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88221_sub.d (renamed from plugins/arm/v7/opdefs/sub_A88221.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88222_sub.d (renamed from plugins/arm/v7/opdefs/sub_A88222.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88223_sub.d (renamed from plugins/arm/v7/opdefs/sub_A88223.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88224_sub.d (renamed from plugins/arm/v7/opdefs/sub_A88224.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88225_sub.d (renamed from plugins/arm/v7/opdefs/sub_A88225.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88226_sub.d (renamed from plugins/arm/v7/opdefs/sub_A88226.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88228_svc.d (renamed from plugins/arm/v7/opdefs/svc_A88228.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88229_swp.d (renamed from plugins/arm/v7/opdefs/swp_A88229.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8822_bic.d (renamed from plugins/arm/v7/opdefs/bic_A8822.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88230_sxtab.d (renamed from plugins/arm/v7/opdefs/sxtab_A88230.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88231_sxtab16.d (renamed from plugins/arm/v7/opdefs/sxtab16_A88231.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88232_sxtah.d (renamed from plugins/arm/v7/opdefs/sxtah_A88232.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88233_sxtb.d (renamed from plugins/arm/v7/opdefs/sxtb_A88233.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88234_sxtb16.d (renamed from plugins/arm/v7/opdefs/sxtb16_A88234.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88235_sxth.d (renamed from plugins/arm/v7/opdefs/sxth_A88235.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88237_teq.d (renamed from plugins/arm/v7/opdefs/teq_A88237.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88238_teq.d (renamed from plugins/arm/v7/opdefs/teq_A88238.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88239_teq.d (renamed from plugins/arm/v7/opdefs/teq_A88239.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8823_bic.d (renamed from plugins/arm/v7/opdefs/bic_A8823.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88240_tst.d (renamed from plugins/arm/v7/opdefs/tst_A88240.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88241_tst.d (renamed from plugins/arm/v7/opdefs/tst_A88241.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88242_tst.d (renamed from plugins/arm/v7/opdefs/tst_A88242.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88243_uadd16.d (renamed from plugins/arm/v7/opdefs/uadd16_A88243.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88244_uadd8.d (renamed from plugins/arm/v7/opdefs/uadd8_A88244.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88245_uasx.d (renamed from plugins/arm/v7/opdefs/uasx_A88245.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88246_ubfx.d (renamed from plugins/arm/v7/opdefs/ubfx_A88246.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88247_udf.d (renamed from plugins/arm/v7/opdefs/udf_A88247.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88248_udiv.d (renamed from plugins/arm/v7/opdefs/udiv_A88248.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88249_uhadd16.d (renamed from plugins/arm/v7/opdefs/uhadd16_A88249.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8824_bkpt.d (renamed from plugins/arm/v7/opdefs/bkpt_A8824.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88250_uhadd8.d (renamed from plugins/arm/v7/opdefs/uhadd8_A88250.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88251_uhasx.d (renamed from plugins/arm/v7/opdefs/uhasx_A88251.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88252_uhsax.d (renamed from plugins/arm/v7/opdefs/uhsax_A88252.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88253_uhsub16.d (renamed from plugins/arm/v7/opdefs/uhsub16_A88253.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88254_uhsub8.d (renamed from plugins/arm/v7/opdefs/uhsub8_A88254.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88255_umaal.d (renamed from plugins/arm/v7/opdefs/umaal_A88255.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88256_umlal.d (renamed from plugins/arm/v7/opdefs/umlal_A88256.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88257_umull.d (renamed from plugins/arm/v7/opdefs/umull_A88257.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88258_uqadd16.d (renamed from plugins/arm/v7/opdefs/uqadd16_A88258.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88259_uqadd8.d (renamed from plugins/arm/v7/opdefs/uqadd8_A88259.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8825_bl.d (renamed from plugins/arm/v7/opdefs/bl_A8825.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88260_uqasx.d (renamed from plugins/arm/v7/opdefs/uqasx_A88260.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88261_uqsax.d (renamed from plugins/arm/v7/opdefs/uqsax_A88261.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88262_uqsub16.d (renamed from plugins/arm/v7/opdefs/uqsub16_A88262.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88263_uqsub8.d (renamed from plugins/arm/v7/opdefs/uqsub8_A88263.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88264_usad8.d (renamed from plugins/arm/v7/opdefs/usad8_A88264.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88265_usada8.d (renamed from plugins/arm/v7/opdefs/usada8_A88265.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88266_usat.d (renamed from plugins/arm/v7/opdefs/usat_A88266.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88267_usat16.d (renamed from plugins/arm/v7/opdefs/usat16_A88267.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88268_usax.d (renamed from plugins/arm/v7/opdefs/usax_A88268.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88269_usub16.d (renamed from plugins/arm/v7/opdefs/usub16_A88269.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8826_blx.d (renamed from plugins/arm/v7/opdefs/blx_A8826.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88270_usub8.d (renamed from plugins/arm/v7/opdefs/usub8_A88270.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88271_uxtab.d (renamed from plugins/arm/v7/opdefs/uxtab_A88271.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88272_uxtab16.d (renamed from plugins/arm/v7/opdefs/uxtab16_A88272.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88273_uxtah.d (renamed from plugins/arm/v7/opdefs/uxtah_A88273.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88274_uxtb.d (renamed from plugins/arm/v7/opdefs/uxtb_A88274.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88275_uxtb16.d (renamed from plugins/arm/v7/opdefs/uxtb16_A88275.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88276_uxth.d (renamed from plugins/arm/v7/opdefs/uxth_A88276.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8827_bx.d (renamed from plugins/arm/v7/opdefs/bx_A8827.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8828_bxj.d (renamed from plugins/arm/v7/opdefs/bxj_A8828.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8829_cb.d (renamed from plugins/arm/v7/opdefs/cb_A8829.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A882_adc.d (renamed from plugins/arm/v7/opdefs/adc_A882.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8830_cdp.d (renamed from plugins/arm/v7/opdefs/cdp_A8830.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8832_clrex.d (renamed from plugins/arm/v7/opdefs/clrex_A8832.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8833_clz.d (renamed from plugins/arm/v7/opdefs/clz_A8833.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8834_cmn.d (renamed from plugins/arm/v7/opdefs/cmn_A8834.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8835_cmn.d (renamed from plugins/arm/v7/opdefs/cmn_A8835.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8836_cmn.d (renamed from plugins/arm/v7/opdefs/cmn_A8836.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8837_cmp.d (renamed from plugins/arm/v7/opdefs/cmp_A8837.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8838_cmp.d (renamed from plugins/arm/v7/opdefs/cmp_A8838.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8839_cmp.d (renamed from plugins/arm/v7/opdefs/cmp_A8839.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A883_adc.d (renamed from plugins/arm/v7/opdefs/adc_A883.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88424_wfe.d (renamed from plugins/arm/v7/opdefs/wfe_A88424.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88425_wfi.d (renamed from plugins/arm/v7/opdefs/wfi_A88425.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A88426_yield.d (renamed from plugins/arm/v7/opdefs/yield_A88426.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8842_dbg.d (renamed from plugins/arm/v7/opdefs/dbg_A8842.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8843_dmb.d (renamed from plugins/arm/v7/opdefs/dmb_A8843.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8844_dsb.d (renamed from plugins/arm/v7/opdefs/dsb_A8844.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8846_eor.d (renamed from plugins/arm/v7/opdefs/eor_A8846.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8847_eor.d (renamed from plugins/arm/v7/opdefs/eor_A8847.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8848_eor.d (renamed from plugins/arm/v7/opdefs/eor_A8848.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A884_add.d (renamed from plugins/arm/v7/opdefs/add_A884.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8854_it.d (renamed from plugins/arm/v7/opdefs/it_A8854.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8855_ldc.d (renamed from plugins/arm/v7/opdefs/ldc_A8855.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8856_ldc.d (renamed from plugins/arm/v7/opdefs/ldc_A8856.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8857_ldm.d (renamed from plugins/arm/v7/opdefs/ldm_A8857.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8858_ldm.d (renamed from plugins/arm/v7/opdefs/ldm_A8858.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8859_ldmda.d (renamed from plugins/arm/v7/opdefs/ldmda_A8859.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A885_add.d (renamed from plugins/arm/v7/opdefs/add_A885.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8860_ldmdb.d (renamed from plugins/arm/v7/opdefs/ldmdb_A8860.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8861_ldmib.d (renamed from plugins/arm/v7/opdefs/ldmib_A8861.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8862_ldr.d (renamed from plugins/arm/v7/opdefs/ldr_A8862.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8863_ldr.d (renamed from plugins/arm/v7/opdefs/ldr_A8863.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8864_ldr.d (renamed from plugins/arm/v7/opdefs/ldr_A8864.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8865_ldr.d (renamed from plugins/arm/v7/opdefs/ldr_A8865.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8866_ldr.d (renamed from plugins/arm/v7/opdefs/ldr_A8866.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8867_ldrb.d (renamed from plugins/arm/v7/opdefs/ldrb_A8867.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8868_ldrb.d (renamed from plugins/arm/v7/opdefs/ldrb_A8868.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8869_ldrb.d (renamed from plugins/arm/v7/opdefs/ldrb_A8869.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A886_add.d (renamed from plugins/arm/v7/opdefs/add_A886.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8870_ldrb.d (renamed from plugins/arm/v7/opdefs/ldrb_A8870.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8871_ldrbt.d (renamed from plugins/arm/v7/opdefs/ldrbt_A8871.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8872_ldrd.d (renamed from plugins/arm/v7/opdefs/ldrd_A8872.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8873_ldrd.d (renamed from plugins/arm/v7/opdefs/ldrd_A8873.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8874_ldrd.d (renamed from plugins/arm/v7/opdefs/ldrd_A8874.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8875_ldrex.d (renamed from plugins/arm/v7/opdefs/ldrex_A8875.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8876_ldrexb.d (renamed from plugins/arm/v7/opdefs/ldrexb_A8876.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8877_ldrexd.d (renamed from plugins/arm/v7/opdefs/ldrexd_A8877.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8878_ldrexh.d (renamed from plugins/arm/v7/opdefs/ldrexh_A8878.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8879_ldrh.d (renamed from plugins/arm/v7/opdefs/ldrh_A8879.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A887_add.d (renamed from plugins/arm/v7/opdefs/add_A887.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8880_ldrh.d (renamed from plugins/arm/v7/opdefs/ldrh_A8880.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8881_ldrh.d (renamed from plugins/arm/v7/opdefs/ldrh_A8881.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8882_ldrh.d (renamed from plugins/arm/v7/opdefs/ldrh_A8882.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8883_ldrht.d (renamed from plugins/arm/v7/opdefs/ldrht_A8883.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8884_ldrsb.d (renamed from plugins/arm/v7/opdefs/ldrsb_A8884.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8885_ldrsb.d (renamed from plugins/arm/v7/opdefs/ldrsb_A8885.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8886_ldrsb.d (renamed from plugins/arm/v7/opdefs/ldrsb_A8886.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8887_ldrsbt.d (renamed from plugins/arm/v7/opdefs/ldrsbt_A8887.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8888_ldrsh.d (renamed from plugins/arm/v7/opdefs/ldrsh_A8888.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8889_ldrsh.d (renamed from plugins/arm/v7/opdefs/ldrsh_A8889.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A888_add.d (renamed from plugins/arm/v7/opdefs/add_A888.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8890_ldrsh.d (renamed from plugins/arm/v7/opdefs/ldrsh_A8890.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8891_ldrsht.d (renamed from plugins/arm/v7/opdefs/ldrsht_A8891.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8892_ldrt.d (renamed from plugins/arm/v7/opdefs/ldrt_A8892.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8894_lsl.d (renamed from plugins/arm/v7/opdefs/lsl_A8894.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8895_lsl.d (renamed from plugins/arm/v7/opdefs/lsl_A8895.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8896_lsr.d (renamed from plugins/arm/v7/opdefs/lsr_A8896.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8897_lsr.d (renamed from plugins/arm/v7/opdefs/lsr_A8897.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8898_mcr.d (renamed from plugins/arm/v7/opdefs/mcr_A8898.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A8899_mcrr.d (renamed from plugins/arm/v7/opdefs/mcrr_A8899.d) | 2 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/A889_add.d (renamed from plugins/arm/v7/opdefs/add_A889.d) | 0 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9310_msr.d | 81 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9311_msr.d | 60 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9312_msr.d | 81 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9313_rfe.d | 169 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9314_smc.d | 79 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9315_srs.d | 77 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9316_srs.d | 131 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9317_stm.d | 151 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9319_subs.d | 55 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B931_cps.d | 147 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9320_subs.d | 95 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9321_vmrs.d | 75 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B9322_vmsr.d | 75 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B932_cps.d | 101 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B933_eret.d | 67 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B934_hvc.d | 73 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B935_ldm.d | 155 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B936_ldm.d | 151 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B938_mrs.d | 81 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/B939_mrs.d | 81 | ||||
-rw-r--r-- | plugins/arm/v7/opdefs/Makefile.am | 544 | ||||
-rw-r--r-- | plugins/arm/v7/operands/Makefile.am | 1 | ||||
-rw-r--r-- | plugins/arm/v7/operands/iflags.c | 337 | ||||
-rw-r--r-- | plugins/arm/v7/operands/iflags.h | 59 | ||||
-rw-r--r-- | plugins/arm/v7/operands/reglist.c | 28 | ||||
-rw-r--r-- | plugins/arm/v7/operands/reglist.h | 3 | ||||
-rw-r--r-- | plugins/arm/v7/simd.c | 386 | ||||
-rw-r--r-- | plugins/arm/v7/thumb_16.c | 170 | ||||
-rw-r--r-- | plugins/arm/v7/thumb_32.c | 528 | ||||
-rw-r--r-- | tools/d2c/coder.c | 241 | ||||
-rw-r--r-- | tools/d2c/coder.h | 5 | ||||
-rw-r--r-- | tools/d2c/d2c.c | 40 |
298 files changed, 4116 insertions, 1578 deletions
diff --git a/plugins/arm/v7/arm.c b/plugins/arm/v7/arm.c index 8fdeb8e..fac29a2 100644 --- a/plugins/arm/v7/arm.c +++ b/plugins/arm/v7/arm.c @@ -275,10 +275,10 @@ static GArchInstruction *process_armv7_arm_data_processing_and_miscellaneous_ins result = process_armv7_arm_data_processing_immediate(raw); else if (op1 == b10000) - result = armv7_read_arm_instr_mov_immediate(raw); + result = armv7_read_arm_instr_a8_mov_immediate(raw); else if (op1 == b10100) - result = armv7_read_arm_instr_movt(raw); + result = armv7_read_arm_instr_a8_movt(raw); else if ((op1 & b11011) == b10010) result = process_armv7_arm_msr_immediate_and_hints(raw); @@ -325,28 +325,28 @@ static GArchInstruction *process_armv7_arm_data_processing_register(uint32_t raw op2 = (raw >> 5) & 0x3; if ((op & b11110) == b00000) - result = armv7_read_arm_instr_and_register(raw); + result = armv7_read_arm_instr_a8_and_register(raw); else if ((op & b11110) == b00010) - result = armv7_read_arm_instr_eor_register(raw); + result = armv7_read_arm_instr_a8_eor_register(raw); else if ((op & b11110) == b00100) - result = armv7_read_arm_instr_sub_register(raw); + result = armv7_read_arm_instr_a8_sub_register(raw); else if ((op & b11110) == b00110) - result = armv7_read_arm_instr_rsb_register(raw); + result = armv7_read_arm_instr_a8_rsb_register(raw); else if ((op & b11110) == b01000) - result = armv7_read_arm_instr_add_register_arm(raw); + result = armv7_read_arm_instr_a8_add_register_arm(raw); else if ((op & b11110) == b01010) - result = armv7_read_arm_instr_adc_register(raw); + result = armv7_read_arm_instr_a8_adc_register(raw); else if ((op & b11110) == b01100) - result = armv7_read_arm_instr_sbc_register(raw); + result = armv7_read_arm_instr_a8_sbc_register(raw); else if ((op & b11110) == b01110) - result = armv7_read_arm_instr_rsc_register(raw); + result = armv7_read_arm_instr_a8_rsc_register(raw); /* else if ((op & b11001) == b10000) @@ -354,55 +354,55 @@ static GArchInstruction *process_armv7_arm_data_processing_register(uint32_t raw */ else if (op == b10001) - result = armv7_read_arm_instr_tst_register(raw); + result = armv7_read_arm_instr_a8_tst_register(raw); else if (op == b10011) - result = armv7_read_arm_instr_teq_register(raw); + result = armv7_read_arm_instr_a8_teq_register(raw); else if (op == b10101) - result = armv7_read_arm_instr_cmp_register(raw); + result = armv7_read_arm_instr_a8_cmp_register(raw); else if (op == b10111) - result = armv7_read_arm_instr_cmn_register(raw); + result = armv7_read_arm_instr_a8_cmn_register(raw); else if ((op & b11110) == b11000) - result = armv7_read_arm_instr_orr_register(raw); + result = armv7_read_arm_instr_a8_orr_register(raw); else if ((op & b11110) == b11010) { if (op2 == b00) { if (imm5 == b00000) - result = armv7_read_arm_instr_mov_register_arm(raw); + result = armv7_read_arm_instr_a8_mov_register_arm(raw); else - result = armv7_read_arm_instr_lsl_immediate(raw); + result = armv7_read_arm_instr_a8_lsl_immediate(raw); } else if (op2 == b01) - result = armv7_read_arm_instr_lsr_immediate(raw); + result = armv7_read_arm_instr_a8_lsr_immediate(raw); else if (op2 == b10) - result = armv7_read_arm_instr_asr_immediate(raw); + result = armv7_read_arm_instr_a8_asr_immediate(raw); else if (op2 == b11) { if (imm5 == b00000) - result = armv7_read_arm_instr_rrx(raw); + result = armv7_read_arm_instr_a8_rrx(raw); else - result = armv7_read_arm_instr_ror_immediate(raw); + result = armv7_read_arm_instr_a8_ror_immediate(raw); } } else if ((op & b11110) == b11100) - result = armv7_read_arm_instr_bic_register(raw); + result = armv7_read_arm_instr_a8_bic_register(raw); else if ((op & b11110) == b11110) - result = armv7_read_arm_instr_mvn_register(raw); + result = armv7_read_arm_instr_a8_mvn_register(raw); return result; @@ -440,28 +440,28 @@ static GArchInstruction *process_armv7_arm_data_processing_register_shifted_regi op2 = (raw >> 5) & 0x3; if ((op1 & b11110) == b00000) - result = armv7_read_arm_instr_and_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_and_register_shifted_register(raw); else if ((op1 & b11110) == b00010) - result = armv7_read_arm_instr_eor_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_eor_register_shifted_register(raw); else if ((op1 & b11110) == b00100) - result = armv7_read_arm_instr_sub_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_sub_register_shifted_register(raw); else if ((op1 & b11110) == b00110) - result = armv7_read_arm_instr_rsb_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_rsb_register_shifted_register(raw); else if ((op1 & b11110) == b01000) - result = armv7_read_arm_instr_add_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_add_register_shifted_register(raw); else if ((op1 & b11110) == b01010) - result = armv7_read_arm_instr_adc_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_adc_register_shifted_register(raw); else if ((op1 & b11110) == b01100) - result = armv7_read_arm_instr_sbc_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_sbc_register_shifted_register(raw); else if ((op1 & b11110) == b01110) - result = armv7_read_arm_instr_rsc_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_rsc_register_shifted_register(raw); #if 0 else if ((op1 & b11001) == b10000) @@ -469,41 +469,41 @@ static GArchInstruction *process_armv7_arm_data_processing_register_shifted_regi #endif else if (op1 == b10001) - result = armv7_read_arm_instr_tst_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_tst_register_shifted_register(raw); else if (op1 == b10011) - result = armv7_read_arm_instr_teq_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_teq_register_shifted_register(raw); else if (op1 == b10101) - result = armv7_read_arm_instr_cmp_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_cmp_register_shifted_register(raw); else if (op1 == b10111) - result = armv7_read_arm_instr_cmn_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_cmn_register_shifted_register(raw); else if ((op1 & b11110) == b11000) - result = armv7_read_arm_instr_orr_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_orr_register_shifted_register(raw); else if ((op1 & b11110) == b11010) { if (op2 == b00) - result = armv7_read_arm_instr_lsl_register(raw); + result = armv7_read_arm_instr_a8_lsl_register(raw); else if (op2 == b01) - result = armv7_read_arm_instr_lsr_register(raw); + result = armv7_read_arm_instr_a8_lsr_register(raw); else if (op2 == b10) - result = armv7_read_arm_instr_asr_register(raw); + result = armv7_read_arm_instr_a8_asr_register(raw); else if (op2 == b11) - result = armv7_read_arm_instr_ror_register(raw); + result = armv7_read_arm_instr_a8_ror_register(raw); } else if ((op1 & b11110) == b11100) - result = armv7_read_arm_instr_bic_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_bic_register_shifted_register(raw); else if ((op1 & b11110) == b11110) - result = armv7_read_arm_instr_mvn_register_shifted_register(raw); + result = armv7_read_arm_instr_a8_mvn_register_shifted_register(raw); return result; @@ -541,42 +541,42 @@ static GArchInstruction *process_armv7_arm_data_processing_immediate(uint32_t ra rn = (raw >> 16) & 0xf; if ((op & b11110) == b00000) - result = armv7_read_arm_instr_and_immediate(raw); + result = armv7_read_arm_instr_a8_and_immediate(raw); else if ((op & b11110) == b00010) - result = armv7_read_arm_instr_eor_immediate(raw); + result = armv7_read_arm_instr_a8_eor_immediate(raw); else if ((op & b11110) == b00100) { if (rn == b1111) - result = armv7_read_arm_instr_adr(raw); + result = armv7_read_arm_instr_a8_adr(raw); else - result = armv7_read_arm_instr_sub_immediate_arm(raw); + result = armv7_read_arm_instr_a8_sub_immediate_arm(raw); } else if ((op & b11110) == b00110) - result = armv7_read_arm_instr_rsb_immediate(raw); + result = armv7_read_arm_instr_a8_rsb_immediate(raw); else if ((op & b11110) == b01000) { if (rn == b1111) - result = armv7_read_arm_instr_adr(raw); + result = armv7_read_arm_instr_a8_adr(raw); else - result = armv7_read_arm_instr_add_immediate_arm(raw); + result = armv7_read_arm_instr_a8_add_immediate_arm(raw); } else if ((op & b11110) == b01010) - result = armv7_read_arm_instr_adc_immediate(raw); + result = armv7_read_arm_instr_a8_adc_immediate(raw); else if ((op & b11110) == b01100) - result = armv7_read_arm_instr_sbc_immediate(raw); + result = armv7_read_arm_instr_a8_sbc_immediate(raw); else if ((op & b11110) == b01110) - result = armv7_read_arm_instr_rsc_immediate(raw); + result = armv7_read_arm_instr_a8_rsc_immediate(raw); /* else if ((op & b11110) == b10000) @@ -584,28 +584,28 @@ static GArchInstruction *process_armv7_arm_data_processing_immediate(uint32_t ra */ else if (op == b10001) - result = armv7_read_arm_instr_tst_immediate(raw); + result = armv7_read_arm_instr_a8_tst_immediate(raw); else if (op == b10011) - result = armv7_read_arm_instr_teq_immediate(raw); + result = armv7_read_arm_instr_a8_teq_immediate(raw); else if (op == b10101) - result = armv7_read_arm_instr_cmp_immediate(raw); + result = armv7_read_arm_instr_a8_cmp_immediate(raw); else if (op == b10111) - result = armv7_read_arm_instr_cmn_immediate(raw); + result = armv7_read_arm_instr_a8_cmn_immediate(raw); else if ((op & b11110) == b11000) - result = armv7_read_arm_instr_orr_immediate(raw); + result = armv7_read_arm_instr_a8_orr_immediate(raw); else if ((op & b11110) == b11010) - result = armv7_read_arm_instr_mov_immediate(raw); + result = armv7_read_arm_instr_a8_mov_immediate(raw); else if ((op & b11110) == b11100) - result = armv7_read_arm_instr_bic_immediate(raw); + result = armv7_read_arm_instr_a8_bic_immediate(raw); else if ((op & b11110) == b11110) - result = armv7_read_arm_instr_mvn_immediate(raw); + result = armv7_read_arm_instr_a8_mvn_immediate(raw); return result; @@ -641,34 +641,34 @@ static GArchInstruction *process_armv7_arm_multiply_and_multiply_accumulate(uint op = (raw >> 20) & 0xf; if ((op & b1110) == b0000) - result = armv7_read_arm_instr_mul(raw); + result = armv7_read_arm_instr_a8_mul(raw); else if ((op & b1110) == b0010) - result = armv7_read_arm_instr_mla(raw); + result = armv7_read_arm_instr_a8_mla(raw); else if (op == b0100) - result = armv7_read_arm_instr_umaal(raw); + result = armv7_read_arm_instr_a8_umaal(raw); else if (op == b0101) result = NULL; /* Non défini */ else if (op == b0110) - result = armv7_read_arm_instr_mls(raw); + result = armv7_read_arm_instr_a8_mls(raw); else if (op == b0111) result = NULL; /* Non défini */ else if ((op & b1110) == b1000) - result = armv7_read_arm_instr_umull(raw); + result = armv7_read_arm_instr_a8_umull(raw); else if ((op & b1110) == b1010) - result = armv7_read_arm_instr_umlal(raw); + result = armv7_read_arm_instr_a8_umlal(raw); else if ((op & b1110) == b1100) - result = armv7_read_arm_instr_smull(raw); + result = armv7_read_arm_instr_a8_smull(raw); else if ((op & b1110) == b1110) - result = armv7_read_arm_instr_smlal(raw); + result = armv7_read_arm_instr_a8_smlal(raw); return result; @@ -704,16 +704,16 @@ static GArchInstruction *process_armv7_arm_saturating_addition_and_subtraction(u op = (raw >> 21) & 0x3; if (op == b00) - result = armv7_read_arm_instr_qadd(raw); + result = armv7_read_arm_instr_a8_qadd(raw); else if (op == b01) - result = armv7_read_arm_instr_qsub(raw); + result = armv7_read_arm_instr_a8_qsub(raw); else if (op == b10) - result = armv7_read_arm_instr_qdadd(raw); + result = armv7_read_arm_instr_a8_qdadd(raw); else if (op == b11) - result = armv7_read_arm_instr_qdsub(raw); + result = armv7_read_arm_instr_a8_qdsub(raw); return result; @@ -751,23 +751,23 @@ static GArchInstruction *process_armv7_arm_halfword_multiply_and_multiply_accumu op = (raw >> 5) & 0x1; if (op1 == b00) - result = armv7_read_arm_instr_smlabb_smlabt_smlatb_smlatt(raw); + result = armv7_read_arm_instr_a8_smlabb_smlabt_smlatb_smlatt(raw); else if (op1 == b01) { if (op == b0) - result = armv7_read_arm_instr_smlawb_smlawt(raw); + result = armv7_read_arm_instr_a8_smlawb_smlawt(raw); else/* if (op == b1)*/ - result = armv7_read_arm_instr_smulwb_smulwt(raw); + result = armv7_read_arm_instr_a8_smulwb_smulwt(raw); } else if (op1 == b10) - result = armv7_read_arm_instr_smlalbb_smlalbt_smlaltb_smlaltt(raw); + result = armv7_read_arm_instr_a8_smlalbb_smlalbt_smlaltb_smlaltt(raw); else if (op1 == b11) - result = armv7_read_arm_instr_smulbb_smulbt_smultb_smultt(raw); + result = armv7_read_arm_instr_a8_smulbb_smulbt_smultb_smultt(raw); return result; @@ -809,21 +809,21 @@ static GArchInstruction *process_armv7_arm_extra_load_store_instructions(uint32_ if (op2 == b01) { if ((op1 & b00101) == b00000) - result = armv7_read_arm_instr_strh_register(raw); + result = armv7_read_arm_instr_a8_strh_register(raw); else if ((op1 & b00101) == b00001) - result = armv7_read_arm_instr_ldrh_register(raw); + result = armv7_read_arm_instr_a8_ldrh_register(raw); else if ((op1 & b00101) == b00100) - result = armv7_read_arm_instr_strh_immediate_arm(raw); + result = armv7_read_arm_instr_a8_strh_immediate_arm(raw); else/* if ((op1 & b00101) == b00101)*/ { if (rn == b1111) - result = armv7_read_arm_instr_ldrh_literal(raw); + result = armv7_read_arm_instr_a8_ldrh_literal(raw); else - result = armv7_read_arm_instr_ldrh_immediate_arm(raw); + result = armv7_read_arm_instr_a8_ldrh_immediate_arm(raw); } @@ -832,28 +832,28 @@ static GArchInstruction *process_armv7_arm_extra_load_store_instructions(uint32_ else if (op2 == b10) { if ((op1 & b00101) == b00000) - result = armv7_read_arm_instr_ldrd_register(raw); + result = armv7_read_arm_instr_a8_ldrd_register(raw); else if ((op1 & b00101) == b00001) - result = armv7_read_arm_instr_ldrsb_register(raw); + result = armv7_read_arm_instr_a8_ldrsb_register(raw); else if ((op1 & b00101) == b00100) { if (rn == b1111) - result = armv7_read_arm_instr_ldrd_literal(raw); + result = armv7_read_arm_instr_a8_ldrd_literal(raw); else - result = armv7_read_arm_instr_ldrd_immediate(raw); + result = armv7_read_arm_instr_a8_ldrd_immediate(raw); } else/* if ((op1 & b00101) == b00101)*/ { if (rn == b1111) - result = armv7_read_arm_instr_ldrsb_literal(raw); + result = armv7_read_arm_instr_a8_ldrsb_literal(raw); else - result = armv7_read_arm_instr_ldrsb_immediate(raw); + result = armv7_read_arm_instr_a8_ldrsb_immediate(raw); } @@ -862,21 +862,21 @@ static GArchInstruction *process_armv7_arm_extra_load_store_instructions(uint32_ else if (op2 == b11) { if ((op1 & b00101) == b00000) - result = armv7_read_arm_instr_strd_register(raw); + result = armv7_read_arm_instr_a8_strd_register(raw); else if ((op1 & b00101) == b00001) - result = armv7_read_arm_instr_ldrsh_register(raw); + result = armv7_read_arm_instr_a8_ldrsh_register(raw); else if ((op1 & b00101) == b00100) - result = armv7_read_arm_instr_strd_immediate(raw); + result = armv7_read_arm_instr_a8_strd_immediate(raw); else/* if ((op1 & b00101) == b00101)*/ { if (rn == b1111) - result = armv7_read_arm_instr_ldrsh_literal(raw); + result = armv7_read_arm_instr_a8_ldrsh_literal(raw); else - result = armv7_read_arm_instr_ldrsh_immediate(raw); + result = armv7_read_arm_instr_a8_ldrsh_immediate(raw); } @@ -920,24 +920,24 @@ static GArchInstruction *process_armv7_arm_extra_load_store_instructions_unprivi if (op2 == b01) { if (op == b0) - result = armv7_read_arm_instr_strht(raw); + result = armv7_read_arm_instr_a8_strht(raw); else/* if (op == b1)*/ - result = armv7_read_arm_instr_ldrht(raw); + result = armv7_read_arm_instr_a8_ldrht(raw); } else if (op2 == b10) { if (op == b1) - result = armv7_read_arm_instr_ldrsbt(raw); + result = armv7_read_arm_instr_a8_ldrsbt(raw); } else if (op2 == b11) { if (op == b1) - result = armv7_read_arm_instr_ldrsht(raw); + result = armv7_read_arm_instr_a8_ldrsht(raw); } @@ -975,31 +975,31 @@ static GArchInstruction *process_armv7_arm_synchronization_primitives(uint32_t r op = (raw >> 20) & 0xf; if ((op & b1011) == b0000) - result = armv7_read_arm_instr_swp_swpb(raw); + result = armv7_read_arm_instr_a8_swp_swpb(raw); else if (op == b1000) - result = armv7_read_arm_instr_strex(raw); + result = armv7_read_arm_instr_a8_strex(raw); else if (op == b1001) - result = armv7_read_arm_instr_ldrex(raw); + result = armv7_read_arm_instr_a8_ldrex(raw); else if (op == b1010) - result = armv7_read_arm_instr_strexd(raw); + result = armv7_read_arm_instr_a8_strexd(raw); else if (op == b1011) - result = armv7_read_arm_instr_ldrexd(raw); + result = armv7_read_arm_instr_a8_ldrexd(raw); else if (op == b1100) - result = armv7_read_arm_instr_strexb(raw); + result = armv7_read_arm_instr_a8_strexb(raw); else if (op == b1101) - result = armv7_read_arm_instr_ldrexb(raw); + result = armv7_read_arm_instr_a8_ldrexb(raw); else if (op == b1110) - result = armv7_read_arm_instr_strexh(raw); + result = armv7_read_arm_instr_a8_strexh(raw); else if (op == b1111) - result = armv7_read_arm_instr_ldrexh(raw); + result = armv7_read_arm_instr_a8_ldrexh(raw); return result; @@ -1043,35 +1043,35 @@ static GArchInstruction *process_armv7_arm_msr_immediate_and_hints(uint32_t raw) if (op1 == b0000) { if (op2 == b00000000) - result = armv7_read_arm_instr_nop(raw); + result = armv7_read_arm_instr_a8_nop(raw); else if (op2 == b00000001) - result = armv7_read_arm_instr_yield(raw); + result = armv7_read_arm_instr_a8_yield(raw); else if (op2 == b00000010) - result = armv7_read_arm_instr_wfe(raw); + result = armv7_read_arm_instr_a8_wfe(raw); else if (op2 == b00000011) - result = armv7_read_arm_instr_wfi(raw); + result = armv7_read_arm_instr_a8_wfi(raw); else if (op2 == b00000100) - result = armv7_read_arm_instr_sev(raw); + result = armv7_read_arm_instr_a8_sev(raw); else if ((op2 & b11110000) == b11110000) - result = armv7_read_arm_instr_dbg(raw); + result = armv7_read_arm_instr_a8_dbg(raw); } else if (op1 == b0100 || (op1 & b1011) == b1000) - result = armv7_read_arm_instr_msr_immediate_a8(raw); + result = armv7_read_arm_instr_a8_msr_immediate(raw); else if ((op1 & b0011) == b0001 || (op1 & b0010) == b0010) - result = armv7_read_arm_instr_msr_immediate_b9(raw); + result = armv7_read_arm_instr_b9_msr_immediate(raw); } else/* if (op == b1)*/ - result = armv7_read_arm_instr_msr_immediate_b9(raw); + result = armv7_read_arm_instr_b9_msr_immediate(raw); return result; @@ -1117,29 +1117,29 @@ static GArchInstruction *process_armv7_arm_miscellaneous_instructions(uint32_t r if (b == b1) { if ((op & b01) == b00) - result = armv7_read_arm_instr_mrs_banked_register(raw); + result = armv7_read_arm_instr_b9_mrs_banked_register(raw); else/* if ((op & b01) == b01)*/ - result = armv7_read_arm_instr_msr_banked_register(raw); + result = armv7_read_arm_instr_b9_msr_banked_register(raw); } else/* if (b == b0)*/ { if ((op & b01) == b00) - result = armv7_read_arm_instr_mrs(raw); + result = armv7_read_arm_instr_a8_mrs(raw); /* B9 ? */ else if (op == b01) { if ((op1 & b0011) == b0000) - result = armv7_read_arm_instr_msr_register_a8(raw); + result = armv7_read_arm_instr_a8_msr_register(raw); else if ((op1 & b0011) == b0001 || (op1 & b0010) == b0010) - result = armv7_read_arm_instr_msr_register_b9(raw); + result = armv7_read_arm_instr_b9_msr_register(raw); } else if (op == b11) - result = armv7_read_arm_instr_msr_register_b9(raw); + result = armv7_read_arm_instr_b9_msr_register(raw); } @@ -1148,24 +1148,24 @@ static GArchInstruction *process_armv7_arm_miscellaneous_instructions(uint32_t r else if (op2 == b001) { if (op == b01) - result = armv7_read_arm_instr_bx(raw); + result = armv7_read_arm_instr_a8_bx(raw); else if (op == b11) - result = armv7_read_arm_instr_clz(raw); + result = armv7_read_arm_instr_a8_clz(raw); } else if (op2 == b010) { if (op == b01) - result = armv7_read_arm_instr_bxj(raw); + result = armv7_read_arm_instr_a8_bxj(raw); } else if (op2 == b011) { if (op == b01) - result = armv7_read_arm_instr_blx_register(raw); + result = armv7_read_arm_instr_a8_blx_register(raw); } @@ -1175,20 +1175,20 @@ static GArchInstruction *process_armv7_arm_miscellaneous_instructions(uint32_t r else if (op2 == b110) { if (op == b11) - result = armv7_read_arm_instr_eret(raw); + result = armv7_read_arm_instr_b9_eret(raw); } else if (op2 == b111) { if (op == b) - result = armv7_read_arm_instr_bkpt(raw); + result = armv7_read_arm_instr_a8_bkpt(raw); else if (op == b) - result = armv7_read_arm_instr_hvc(raw); + result = armv7_read_arm_instr_b9_hvc(raw); else if (op == b) - result = armv7_read_arm_instr_smc_previously_smi(raw); + result = armv7_read_arm_instr_b9_smc_previously_smi(raw); } @@ -1234,65 +1234,65 @@ static GArchInstruction *process_armv7_arm_load_store_word_and_unsigned_byte(uin if (a == b0) { if ((op1 & b00101) == b00000 && (op1 & b10111) != b00010) - result = armv7_read_arm_instr_str_immediate_arm(raw); + result = armv7_read_arm_instr_a8_str_immediate_arm(raw); else if ((op1 & b10111) == b00010) - result = armv7_read_arm_instr_strt(raw); + result = armv7_read_arm_instr_a8_strt(raw); else if ((op1 & b00101) == b00001 && (op1 & b10111) != b00011) { if (rn != b1111) - result = armv7_read_arm_instr_ldr_immediate_arm(raw); + result = armv7_read_arm_instr_a8_ldr_immediate_arm(raw); else - result = armv7_read_arm_instr_ldr_literal(raw); + result = armv7_read_arm_instr_a8_ldr_literal(raw); } else if ((op1 & b10111) == b00011) - result = armv7_read_arm_instr_ldrt(raw); + result = armv7_read_arm_instr_a8_ldrt(raw); else if ((op1 & b00101) == b00100 && (op1 & b10110) != b00110) - result = armv7_read_arm_instr_strb_immediate_arm(raw); + result = armv7_read_arm_instr_a8_strb_immediate_arm(raw); else if ((op1 & b10110) == b00110) - result = armv7_read_arm_instr_strbt(raw); + result = armv7_read_arm_instr_a8_strbt(raw); else if ((op1 & b00101) == b00101 && (op1 & b10111) != b00111) { if (rn != b1111) - result = armv7_read_arm_instr_ldrb_immediate_arm(raw); + result = armv7_read_arm_instr_a8_ldrb_immediate_arm(raw); else - result = armv7_read_arm_instr_ldrb_literal(raw); + result = armv7_read_arm_instr_a8_ldrb_literal(raw); } else if ((op1 & b10111) == b00111) - result = armv7_read_arm_instr_ldrbt(raw); + result = armv7_read_arm_instr_a8_ldrbt(raw); } else /*if (a == b1)*/ { if ((op1 & b00101) == b00000 && (op1 & b10111) != b00010 && b == b0) - result = armv7_read_arm_instr_str_register(raw); + result = armv7_read_arm_instr_a8_str_register(raw); else if ((op1 & b10111) == b00010 && b == b0) - result = armv7_read_arm_instr_strt(raw); + result = armv7_read_arm_instr_a8_strt(raw); else if ((op1 & b00101) == b00001 && (op1 & b10111) != b00011 && b == b0) - result = armv7_read_arm_instr_ldr_register_arm(raw); + result = armv7_read_arm_instr_a8_ldr_register_arm(raw); else if ((op1 & b10111) == b00011 && b == b0) - result = armv7_read_arm_instr_ldrt(raw); + result = armv7_read_arm_instr_a8_ldrt(raw); else if ((op1 & b00101) == b00100 && (op1 & b10110) != b00110 && b == b0) - result = armv7_read_arm_instr_strb_register(raw); + result = armv7_read_arm_instr_a8_strb_register(raw); else if ((op1 & b10110) == b00110 && b == b0) - result = armv7_read_arm_instr_strbt(raw); + result = armv7_read_arm_instr_a8_strbt(raw); else if ((op1 & b00101) == b00101 && (op1 & b10111) != b00111 && b == b0) - result = armv7_read_arm_instr_ldrb_register(raw); + result = armv7_read_arm_instr_a8_ldrb_register(raw); else if ((op1 & b10111) == b00111 && b == b0) - result = armv7_read_arm_instr_ldrbt(raw); + result = armv7_read_arm_instr_a8_ldrbt(raw); } @@ -1354,9 +1354,9 @@ static GArchInstruction *process_armv7_arm_media_instructions(uint32_t raw) if (op2 == b000) { if (rd == b1111) - result = armv7_read_arm_instr_usad8(raw); + result = armv7_read_arm_instr_a8_usad8(raw); else - result = armv7_read_arm_instr_usada8(raw); + result = armv7_read_arm_instr_a8_usada8(raw); } goto a54_done; @@ -1366,7 +1366,7 @@ static GArchInstruction *process_armv7_arm_media_instructions(uint32_t raw) else if ((op1 & b11110) == b11010) { if ((op2 & b011) == b010) - result = armv7_read_arm_instr_sbfx(raw); + result = armv7_read_arm_instr_a8_sbfx(raw); goto a54_done; @@ -1377,9 +1377,9 @@ static GArchInstruction *process_armv7_arm_media_instructions(uint32_t raw) if ((op2 & b011) == b000) { if (rn == b1111) - result = armv7_read_arm_instr_bfc(raw); + result = armv7_read_arm_instr_a8_bfc(raw); else - result = armv7_read_arm_instr_bfi(raw); + result = armv7_read_arm_instr_a8_bfi(raw); } goto a54_done; @@ -1389,14 +1389,14 @@ static GArchInstruction *process_armv7_arm_media_instructions(uint32_t raw) else if ((op1 & b11110) == b11110) { if ((op2 & b011) == b010) - result = armv7_read_arm_instr_ubfx(raw); + result = armv7_read_arm_instr_a8_ubfx(raw); goto a54_done; } else if (op1 == b11111 && op2 == b111 && cond == b1110) - result = armv7_read_arm_instr_ubfx(raw); + result = armv7_read_arm_instr_a8_udf(raw); a54_done: @@ -1438,66 +1438,66 @@ static GArchInstruction *process_armv7_arm_parallel_addition_and_subtraction_sig if (op1 == b01) { if (op2 == b000) - result = armv7_read_arm_instr_sadd16(raw); + result = armv7_read_arm_instr_a8_sadd16(raw); else if (op2 == b001) - result = armv7_read_arm_instr_sasx(raw); + result = armv7_read_arm_instr_a8_sasx(raw); else if (op2 == b010) - result = armv7_read_arm_instr_ssax(raw); + result = armv7_read_arm_instr_a8_ssax(raw); else if (op2 == b011) - result = armv7_read_arm_instr_ssub16(raw); + result = armv7_read_arm_instr_a8_ssub16(raw); else if (op2 == b100) - result = armv7_read_arm_instr_sadd8(raw); + result = armv7_read_arm_instr_a8_sadd8(raw); else if (op2 == b111) - result = armv7_read_arm_instr_ssub8(raw); + result = armv7_read_arm_instr_a8_ssub8(raw); } else if (op1 == b10) { if (op2 == b000) - result = armv7_read_arm_instr_qadd16(raw); + result = armv7_read_arm_instr_a8_qadd16(raw); else if (op2 == b001) - result = armv7_read_arm_instr_qasx(raw); + result = armv7_read_arm_instr_a8_qasx(raw); else if (op2 == b010) - result = armv7_read_arm_instr_qsax(raw); + result = armv7_read_arm_instr_a8_qsax(raw); else if (op2 == b011) - result = armv7_read_arm_instr_qsub16(raw); + result = armv7_read_arm_instr_a8_qsub16(raw); else if (op2 == b100) - result = armv7_read_arm_instr_qadd8(raw); + result = armv7_read_arm_instr_a8_qadd8(raw); else if (op2 == b111) - result = armv7_read_arm_instr_qsub8(raw); + result = armv7_read_arm_instr_a8_qsub8(raw); } else if (op1 == b11) { if (op2 == b000) - result = armv7_read_arm_instr_shadd16(raw); + result = armv7_read_arm_instr_a8_shadd16(raw); else if (op2 == b001) - result = armv7_read_arm_instr_shasx(raw); + result = armv7_read_arm_instr_a8_shasx(raw); else if (op2 == b010) - result = armv7_read_arm_instr_shsax(raw); + result = armv7_read_arm_instr_a8_shsax(raw); else if (op2 == b011) - result = armv7_read_arm_instr_shsub16(raw); + result = armv7_read_arm_instr_a8_shsub16(raw); else if (op2 == b100) - result = armv7_read_arm_instr_shadd8(raw); + result = armv7_read_arm_instr_a8_shadd8(raw); else if (op2 == b111) - result = armv7_read_arm_instr_shsub8(raw); + result = armv7_read_arm_instr_a8_shsub8(raw); } @@ -1539,66 +1539,66 @@ static GArchInstruction *process_armv7_arm_parallel_addition_and_subtraction_uns if (op1 == b01) { if (op2 == b000) - result = armv7_read_arm_instr_uadd16(raw); + result = armv7_read_arm_instr_a8_uadd16(raw); else if (op2 == b001) - result = armv7_read_arm_instr_uasx(raw); + result = armv7_read_arm_instr_a8_uasx(raw); else if (op2 == b010) - result = armv7_read_arm_instr_usax(raw); + result = armv7_read_arm_instr_a8_usax(raw); else if (op2 == b011) - result = armv7_read_arm_instr_usub16(raw); + result = armv7_read_arm_instr_a8_usub16(raw); else if (op2 == b100) - result = armv7_read_arm_instr_uadd8(raw); + result = armv7_read_arm_instr_a8_uadd8(raw); else if (op2 == b111) - result = armv7_read_arm_instr_usub8(raw); + result = armv7_read_arm_instr_a8_usub8(raw); } else if (op1 == b10) { if (op2 == b000) - result = armv7_read_arm_instr_uqadd16(raw); + result = armv7_read_arm_instr_a8_uqadd16(raw); else if (op2 == b001) - result = armv7_read_arm_instr_uqasx(raw); + result = armv7_read_arm_instr_a8_uqasx(raw); else if (op2 == b010) - result = armv7_read_arm_instr_uqsax(raw); + result = armv7_read_arm_instr_a8_uqsax(raw); else if (op2 == b011) - result = armv7_read_arm_instr_uqsub16(raw); + result = armv7_read_arm_instr_a8_uqsub16(raw); else if (op2 == b100) - result = armv7_read_arm_instr_uqadd8(raw); + result = armv7_read_arm_instr_a8_uqadd8(raw); else if (op2 == b111) - result = armv7_read_arm_instr_uqsub8(raw); + result = armv7_read_arm_instr_a8_uqsub8(raw); } else if (op1 == b11) { if (op2 == b000) - result = armv7_read_arm_instr_uhadd16(raw); + result = armv7_read_arm_instr_a8_uhadd16(raw); else if (op2 == b001) - result = armv7_read_arm_instr_uhasx(raw); + result = armv7_read_arm_instr_a8_uhasx(raw); else if (op2 == b010) - result = armv7_read_arm_instr_uhsax(raw); + result = armv7_read_arm_instr_a8_uhsax(raw); else if (op2 == b011) - result = armv7_read_arm_instr_uhsub16(raw); + result = armv7_read_arm_instr_a8_uhsub16(raw); else if (op2 == b100) - result = armv7_read_arm_instr_uhadd8(raw); + result = armv7_read_arm_instr_a8_uhadd8(raw); else if (op2 == b111) - result = armv7_read_arm_instr_uhsub8(raw); + result = armv7_read_arm_instr_a8_uhsub8(raw); } @@ -1643,32 +1643,32 @@ static GArchInstruction *process_armv7_arm_packing_unpacking_saturation_and_reve { if ((op2 & b001) == b000) { - result = armv7_read_arm_instr_pkh(raw); + result = armv7_read_arm_instr_a8_pkh(raw); goto a543_done; } else if (op2 == b011) { if (a == b1111) { - result = armv7_read_arm_instr_sxtb16(raw); + result = armv7_read_arm_instr_a8_sxtb16(raw); goto a543_done; } else { - result = armv7_read_arm_instr_sxtab16(raw); + result = armv7_read_arm_instr_a8_sxtab16(raw); goto a543_done; } } else if (op2 == b101) { - result = armv7_read_arm_instr_sel(raw); + result = armv7_read_arm_instr_a8_sel(raw); goto a543_done; } } else if ((op1 & b110) == b010 && (op2 & b001) == b000) { - result = armv7_read_arm_instr_ssat(raw); + result = armv7_read_arm_instr_a8_ssat(raw); goto a543_done; } @@ -1676,19 +1676,19 @@ static GArchInstruction *process_armv7_arm_packing_unpacking_saturation_and_reve { if (op2 == b001) { - result = armv7_read_arm_instr_ssat16(raw); + result = armv7_read_arm_instr_a8_ssat16(raw); goto a543_done; } else if (op2 == b011) { if (a == b1111) { - result = armv7_read_arm_instr_sxtb(raw); + result = armv7_read_arm_instr_a8_sxtb(raw); goto a543_done; } else { - result = armv7_read_arm_instr_sxtab(raw); + result = armv7_read_arm_instr_a8_sxtab(raw); goto a543_done; } } @@ -1698,25 +1698,25 @@ static GArchInstruction *process_armv7_arm_packing_unpacking_saturation_and_reve { if (op2 == b001) { - result = armv7_read_arm_instr_rev(raw); + result = armv7_read_arm_instr_a8_rev(raw); goto a543_done; } else if (op2 == b011) { if (a == b1111) { - result = armv7_read_arm_instr_sxth(raw); + result = armv7_read_arm_instr_a8_sxth(raw); goto a543_done; } else { - result = armv7_read_arm_instr_sxtah(raw); + result = armv7_read_arm_instr_a8_sxtah(raw); goto a543_done; } } else if (op2 == b101) { - result = armv7_read_arm_instr_rev16(raw); + result = armv7_read_arm_instr_a8_rev16(raw); goto a543_done; } } @@ -1725,19 +1725,19 @@ static GArchInstruction *process_armv7_arm_packing_unpacking_saturation_and_reve { if (a == b1111) { - result = armv7_read_arm_instr_uxtb16(raw); + result = armv7_read_arm_instr_a8_uxtb16(raw); goto a543_done; } else { - result = armv7_read_arm_instr_uxtab16(raw); + result = armv7_read_arm_instr_a8_uxtab16(raw); goto a543_done; } } else if ((op1 & b110) == b110 && (op2 & b001) == b000) { - result = armv7_read_arm_instr_usat(raw); + result = armv7_read_arm_instr_a8_usat(raw); goto a543_done; } @@ -1745,19 +1745,19 @@ static GArchInstruction *process_armv7_arm_packing_unpacking_saturation_and_reve { if (op2 == b001) { - result = armv7_read_arm_instr_usat16(raw); + result = armv7_read_arm_instr_a8_usat16(raw); goto a543_done; } else if (op2 == b011) { if (a == b1111) { - result = armv7_read_arm_instr_uxtb(raw); + result = armv7_read_arm_instr_a8_uxtb(raw); goto a543_done; } else { - result = armv7_read_arm_instr_uxtab(raw); + result = armv7_read_arm_instr_a8_uxtab(raw); goto a543_done; } } @@ -1767,25 +1767,25 @@ static GArchInstruction *process_armv7_arm_packing_unpacking_saturation_and_reve { if (op2 == b001) { - result = armv7_read_arm_instr_rbit(raw); + result = armv7_read_arm_instr_a8_rbit(raw); goto a543_done; } else if (op2 == b011) { if (a == b1111) { - result = armv7_read_arm_instr_uxth(raw); + result = armv7_read_arm_instr_a8_uxth(raw); goto a543_done; } else { - result = armv7_read_arm_instr_uxtah(raw); + result = armv7_read_arm_instr_a8_uxtah(raw); goto a543_done; } } else if (op2 == b101) { - result = armv7_read_arm_instr_revsh(raw); + result = armv7_read_arm_instr_a8_revsh(raw); goto a543_done; } } @@ -1834,18 +1834,18 @@ static GArchInstruction *process_armv7_arm_signed_multiply_signed_and_unsigned_d if ((op2 & b110) == b000) { if (a != b1111) - result = armv7_read_arm_instr_smlad(raw); + result = armv7_read_arm_instr_a8_smlad(raw); else/* if (a == b1111)*/ - result = armv7_read_arm_instr_smuad(raw); + result = armv7_read_arm_instr_a8_smuad(raw); } else if ((op2 & b110) == b010) { if (a != b1111) - result = armv7_read_arm_instr_smlsd(raw); + result = armv7_read_arm_instr_a8_smlsd(raw); else/* if (a == b1111)*/ - result = armv7_read_arm_instr_smusd(raw); + result = armv7_read_arm_instr_a8_smusd(raw); } @@ -1854,24 +1854,24 @@ static GArchInstruction *process_armv7_arm_signed_multiply_signed_and_unsigned_d else if (op1 == b001) { if (op2 == b000) - result = armv7_read_arm_instr_sdiv(raw); + result = armv7_read_arm_instr_a8_sdiv(raw); } else if (op1 == b011) { if (op2 == b000) - result = armv7_read_arm_instr_udiv(raw); + result = armv7_read_arm_instr_a8_udiv(raw); } else if (op1 == b100) { if ((op2 & b110) == b000) - result = armv7_read_arm_instr_smlald(raw); + result = armv7_read_arm_instr_a8_smlald(raw); else if ((op2 & b110) == b010) - result = armv7_read_arm_instr_smlsld(raw); + result = armv7_read_arm_instr_a8_smlsld(raw); } @@ -1880,14 +1880,14 @@ static GArchInstruction *process_armv7_arm_signed_multiply_signed_and_unsigned_d if ((op2 & b110) == b000) { if (a != b1111) - result = armv7_read_arm_instr_smmla(raw); + result = armv7_read_arm_instr_a8_smmla(raw); else/* if (a == b1111)*/ - result = armv7_read_arm_instr_smmul(raw); + result = armv7_read_arm_instr_a8_smmul(raw); } else if ((op2 & b110) == b110) - result = armv7_read_arm_instr_smmls(raw); + result = armv7_read_arm_instr_a8_smmls(raw); } @@ -1929,61 +1929,61 @@ static GArchInstruction *process_armv7_arm_branch_branch_with_link_and_block_dat r = (raw >> 15) & 0x1; if ((op & b111101) == b000000) - result = armv7_read_arm_instr_stmda_stmed(raw); + result = armv7_read_arm_instr_a8_stmda_stmed(raw); else if ((op & b111101) == b000001) - result = armv7_read_arm_instr_ldmda_ldmfa(raw); + result = armv7_read_arm_instr_a8_ldmda_ldmfa(raw); else if ((op & b111101) == b001000) - result = armv7_read_arm_instr_stm_stmia_stmea(raw); + result = armv7_read_arm_instr_a8_stm_stmia_stmea(raw); else if (op == b001001) - result = armv7_read_arm_instr_ldm_ldmia_ldmfd_arm(raw); + result = armv7_read_arm_instr_a8_ldm_ldmia_ldmfd_arm(raw); else if (op == b001011) { if (rn != b1101) - result = armv7_read_arm_instr_ldm_ldmia_ldmfd_arm(raw); + result = armv7_read_arm_instr_a8_ldm_ldmia_ldmfd_arm(raw); else /* if (rn == b1101) */ - result = armv7_read_arm_instr_pop_arm(raw); + result = armv7_read_arm_instr_a8_pop_arm(raw); } else if (op == b010000) - result = armv7_read_arm_instr_stmdb_stmfd(raw); + result = armv7_read_arm_instr_a8_stmdb_stmfd(raw); else if (op == b010010) { if (rn != b1101) - result = armv7_read_arm_instr_stmdb_stmfd(raw); + result = armv7_read_arm_instr_a8_stmdb_stmfd(raw); else /* if (rn == b1101) */ - result = armv7_read_arm_instr_push(raw); + result = armv7_read_arm_instr_a8_push(raw); } else if ((op & b111101) == b010001) - result = armv7_read_arm_instr_ldmdb_ldmea(raw); + result = armv7_read_arm_instr_a8_ldmdb_ldmea(raw); else if ((op & b111101) == b011000) - result = armv7_read_arm_instr_stmib_stmfa(raw); + result = armv7_read_arm_instr_a8_stmib_stmfa(raw); else if ((op & b111101) == b011001) - result = armv7_read_arm_instr_ldmib_ldmed(raw); + result = armv7_read_arm_instr_a8_ldmib_ldmed(raw); else if ((op & b100101) == b000100) - result = armv7_read_arm_instr_stm_user_registers(raw); + result = armv7_read_arm_instr_b9_stm_user_registers(raw); else if ((op & b100101) == b000101) { if (r == b0) - result = armv7_read_arm_instr_ldm_user_registers(raw); + result = armv7_read_arm_instr_b9_ldm_user_registers(raw); else /* if (r == b1) */ - result = armv7_read_arm_instr_ldm_exception_return(raw); + result = armv7_read_arm_instr_b9_ldm_exception_return(raw); } else if ((op & b110000) == b100000) - result = armv7_read_arm_instr_b(raw); + result = armv7_read_arm_instr_a8_b(raw); else if ((op & b110000) == b110000) - result = armv7_read_arm_instr_bl_blx_immediate(raw); + result = armv7_read_arm_instr_a8_bl_blx_immediate(raw); return result; @@ -2028,37 +2028,37 @@ static GArchInstruction *process_armv7_arm_coprocessor_instructions_and_supervis result = g_undef_instruction_new(IBS_UNDEFINED); else if ((op1 & b110000) == b110000) - result = armv7_read_arm_instr_svc_previously_swi(raw); + result = armv7_read_arm_instr_a8_svc_previously_swi(raw); else if ((coproc & b1110) != b1010) { if ((op1 & b100001) == b000000 && (op1 & b111011) != b000000) - result = armv7_read_arm_instr_stc_stc2(raw); + result = armv7_read_arm_instr_a8_stc_stc2(raw); else if ((op1 & b100001) == b000001 && (op1 & b111011) != b000001) { if (rn != b1111) - result = armv7_read_arm_instr_ldc_ldc2_immediate(raw); + result = armv7_read_arm_instr_a8_ldc_ldc2_immediate(raw); else - result = armv7_read_arm_instr_ldc_ldc2_literal(raw); + result = armv7_read_arm_instr_a8_ldc_ldc2_literal(raw); } else if (op1 == b000100) - result = armv7_read_arm_instr_mcrr_mcrr2(raw); + result = armv7_read_arm_instr_a8_mcrr_mcrr2(raw); else if (op1 == b000101) - result = armv7_read_arm_instr_mrrc_mrrc2(raw); + result = armv7_read_arm_instr_a8_mrrc_mrrc2(raw); else if ((op1 & b110000) == b100000 && op == b0) - result = armv7_read_arm_instr_cdp_cdp2(raw); + result = armv7_read_arm_instr_a8_cdp_cdp2(raw); else if ((op1 & b110001) == b100000 && op == b1) - result = armv7_read_arm_instr_mcr_mcr2(raw); + result = armv7_read_arm_instr_a8_mcr_mcr2(raw); else if ((op1 & b110001) == b100001 && op == b1) - result = armv7_read_arm_instr_mrc_mrc2(raw); + result = armv7_read_arm_instr_a8_mrc_mrc2(raw); } @@ -2109,39 +2109,39 @@ static GArchInstruction *process_armv7_arm_unconditional_instructions(uint32_t r result = process_armv7_arm_memory_hints_advanced_simd_instructions_and_miscellaneous_instructions(raw); else if ((op1 & b11100101) == b10000100) - result = armv7_read_arm_instr_srs_arm(raw); + result = armv7_read_arm_instr_b9_srs_arm(raw); else if ((op1 & b11100101) == b10000001) - result = armv7_read_arm_instr_rfe(raw); + result = armv7_read_arm_instr_b9_rfe(raw); else if ((op1 & b11100000) == b10100000) - result = armv7_read_arm_instr_bl_blx_immediate(raw); + result = armv7_read_arm_instr_a8_bl_blx_immediate(raw); else if ((op1 & b11100001) == b11000000 && (op1 & b11111011) != b11000000) - result = armv7_read_arm_instr_stc_stc2(raw); + result = armv7_read_arm_instr_a8_stc_stc2(raw); else if ((op1 & b11100001) == b11000001 && (op1 & b11111011) != b11000001) { if (rn != b1111) - result = armv7_read_arm_instr_ldc_ldc2_immediate(raw); + result = armv7_read_arm_instr_a8_ldc_ldc2_immediate(raw); else/* if (rn == b1111)*/ - result = armv7_read_arm_instr_ldc_ldc2_literal(raw); + result = armv7_read_arm_instr_a8_ldc_ldc2_literal(raw); } else if (op1 == b11000100) - result = armv7_read_arm_instr_mcrr_mcrr2(raw); + result = armv7_read_arm_instr_a8_mcrr_mcrr2(raw); else if (op1 == b11000101) - result = armv7_read_arm_instr_mrrc_mrrc2(raw); + result = armv7_read_arm_instr_a8_mrrc_mrrc2(raw); else if ((op1 & b11110000) == b11100000 && op == b0) - result = armv7_read_arm_instr_cdp_cdp2(raw); + result = armv7_read_arm_instr_a8_cdp_cdp2(raw); else if ((op1 & b11110001) == b11100000 && op == b1) - result = armv7_read_arm_instr_mcr_mcr2(raw); + result = armv7_read_arm_instr_a8_mcr_mcr2(raw); else if ((op1 & b11110001) == b11100001 && op == b1) - result = armv7_read_arm_instr_mrc_mrc2(raw); + result = armv7_read_arm_instr_a8_mrc_mrc2(raw); return result; @@ -2183,10 +2183,10 @@ static GArchInstruction *process_armv7_arm_memory_hints_advanced_simd_instructio if (op1 == b0010000) { if ((op2 & b0010) == b0000 && (rn & b0001) == b0000) - result = armv7_read_arm_instr_cps_arm(raw); + result = armv7_read_arm_instr_b9_cps_arm(raw); else if (op2 == b0000 && (rn & b0001) == b0001) - result = armv7_read_arm_instr_cps_arm(raw); + result = armv7_read_arm_instr_a8_setend(raw); } @@ -2200,7 +2200,7 @@ static GArchInstruction *process_armv7_arm_memory_hints_advanced_simd_instructio result = g_undef_instruction_new(IBS_NOP); else if ((op1 & b1110111) == b1000101) - result = armv7_read_arm_instr_pli_immediate_literal(raw); + result = armv7_read_arm_instr_a8_pli_immediate_literal(raw); else if ((op1 & b1110011) == b1000011) result = g_undef_instruction_new(IBS_UNPREDICTABLE); @@ -2208,7 +2208,7 @@ static GArchInstruction *process_armv7_arm_memory_hints_advanced_simd_instructio else if ((op1 & b1110111) == b1010101) { if (rn != b1111) - result = armv7_read_arm_instr_pld_pldw_immediate(raw); + result = armv7_read_arm_instr_a8_pld_pldw_immediate(raw); else result = g_undef_instruction_new(IBS_UNPREDICTABLE); @@ -2217,9 +2217,9 @@ static GArchInstruction *process_armv7_arm_memory_hints_advanced_simd_instructio else if ((op1 & b1110111) == b1010101) { if (rn != b1111) - result = armv7_read_arm_instr_pld_pldw_immediate(raw); + result = armv7_read_arm_instr_a8_pld_pldw_immediate(raw); else - result = armv7_read_arm_instr_pld_literal(raw); + result = armv7_read_arm_instr_a8_pld_literal(raw); } @@ -2232,19 +2232,19 @@ static GArchInstruction *process_armv7_arm_memory_hints_advanced_simd_instructio result = g_undef_instruction_new(IBS_UNPREDICTABLE); else if (op2 == b0001) - result = armv7_read_arm_instr_clrex(raw); + result = armv7_read_arm_instr_a8_clrex(raw); else if ((op2 & b1110) == b0010) result = g_undef_instruction_new(IBS_UNPREDICTABLE); else if (op2 == b0100) - result = armv7_read_arm_instr_dsb(raw); + result = armv7_read_arm_instr_a8_dsb(raw); else if (op2 == b0101) - result = armv7_read_arm_instr_dmb(raw); + result = armv7_read_arm_instr_a8_dmb(raw); else if (op2 == b0110) - result = armv7_read_arm_instr_isb(raw); + result = armv7_read_arm_instr_a8_isb(raw); else if (op2 == b0111) result = g_undef_instruction_new(IBS_UNPREDICTABLE); @@ -2261,10 +2261,10 @@ static GArchInstruction *process_armv7_arm_memory_hints_advanced_simd_instructio result = g_undef_instruction_new(IBS_NOP); else if ((op1 & b1110111) == b1100101 && (op2 & b0001) == b0000) - result = armv7_read_arm_instr_pli_register(raw); + result = armv7_read_arm_instr_a8_pli_register(raw); else if ((op1 & b1110111) == b1110001 && (op2 & b0001) == b0000) - result = armv7_read_arm_instr_pld_pldw_register(raw); + result = armv7_read_arm_instr_a8_pld_pldw_register(raw); return result; diff --git a/plugins/arm/v7/core.c b/plugins/arm/v7/core.c index cd5cdd8..5fd355c 100644 --- a/plugins/arm/v7/core.c +++ b/plugins/arm/v7/core.c @@ -30,6 +30,7 @@ #include "instruction.h" #include "processor.h" #include "operands/estate.h" +#include "operands/iflags.h" #include "operands/it.h" #include "operands/limitation.h" #include "operands/maccess.h" @@ -68,6 +69,7 @@ static void register_armv7_gtypes(void) g_type_ensure(G_TYPE_ARMV7_INSTRUCTION); g_type_ensure(G_TYPE_ARMV7_ENDIAN_OPERAND); + g_type_ensure(G_TYPE_ARMV7_IFLAGS_OPERAND); g_type_ensure(G_TYPE_ARMV7_ITCOND_OPERAND); g_type_ensure(G_TYPE_ARMV7_LIMITATION_OPERAND); g_type_ensure(G_TYPE_ARMV7_MACCESS_OPERAND); diff --git a/plugins/arm/v7/helpers.h b/plugins/arm/v7/helpers.h index d41f6e8..ad23bc7 100644 --- a/plugins/arm/v7/helpers.h +++ b/plugins/arm/v7/helpers.h @@ -31,12 +31,14 @@ #include "pseudo.h" #include "operands/estate.h" +#include "operands/iflags.h" #include "operands/it.h" #include "operands/maccess.h" #include "operands/register.h" #include "operands/reglist.h" #include "operands/rotation.h" #include "operands/shift.h" +#include "registers/banked.h" #include "registers/basic.h" #include "registers/coproc.h" #include "registers/special.h" @@ -72,6 +74,19 @@ }) +#define BankedRegister(r, sysm) \ + ({ \ + GArchOperand *__result; \ + GArchRegister *__reg; \ + __reg = g_armv7_banked_register_new(r, sysm); \ + if (__reg == NULL) \ + __result = NULL; \ + else \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ + __result; \ + }) + + #define BitDiff(msb, lsb) \ ({ \ GArchOperand *__result; \ @@ -154,6 +169,13 @@ }) +#define IFlagsDefinition(a, i, f) \ + ({ \ + GArchOperand *__result; \ + __result = g_armv7_iflags_operand_new(a, i, f); \ + __result; \ + }) + #define ITCond(firstcond, mask) \ ({ \ GArchOperand *__result; \ @@ -273,6 +295,48 @@ }) +#define RegListWithoutPC(mask) \ + ({ \ + GArchOperand *__result; \ + GArmV7Register *__pc; \ + GArmV7RegListOperand *__list; \ + __result = RegList(mask); \ + if (__result != NULL) \ + { \ + __pc = G_ARMV7_REGISTER(g_armv7_basic_register_new(15)); \ + __list = G_ARMV7_REGLIST_OPERAND(result); \ + if (g_armv7_reglist_operand_has_register(__list, __pc)) \ + { \ + g_object_unref(G_OBJECT(__result)); \ + __result = NULL; \ + } \ + g_object_unref(G_OBJECT(__pc)); \ + } \ + __result; \ + }) + + +#define RegListWithPC(mask) \ + ({ \ + GArchOperand *__result; \ + GArmV7Register *__pc; \ + GArmV7RegListOperand *__list; \ + __result = RegList(mask); \ + if (__result != NULL) \ + { \ + __pc = G_ARMV7_REGISTER(g_armv7_basic_register_new(15)); \ + __list = G_ARMV7_REGLIST_OPERAND(result); \ + if (!g_armv7_reglist_operand_has_register(__list, __pc)) \ + { \ + g_object_unref(G_OBJECT(__result)); \ + __result = NULL; \ + } \ + g_object_unref(G_OBJECT(__pc)); \ + } \ + __result; \ + }) + + #define Rotation(val5) \ ({ \ GArchOperand *__result; \ diff --git a/plugins/arm/v7/opcodes/opcodes_tmp_arm.h b/plugins/arm/v7/opcodes/opcodes_tmp_arm.h index a43474f..d6c4bc3 100644 --- a/plugins/arm/v7/opcodes/opcodes_tmp_arm.h +++ b/plugins/arm/v7/opcodes/opcodes_tmp_arm.h @@ -1,20 +1,5 @@ #ifndef arm_def_tmp_h #define arm_def_tmp_h -#define armv7_read_arm_instr_cps_arm(r) NULL -#define armv7_read_arm_instr_eret(r) NULL -#define armv7_read_arm_instr_hvc(r) NULL -#define armv7_read_arm_instr_isb(r) NULL -#define armv7_read_arm_instr_ldm_exception_return(r) NULL -#define armv7_read_arm_instr_ldm_user_registers(r) NULL -#define armv7_read_arm_instr_mrs_banked_register(r) NULL -#define armv7_read_arm_instr_msr_banked_register(r) NULL -#define armv7_read_arm_instr_msr_immediate_a8(r) NULL -#define armv7_read_arm_instr_msr_immediate_b9(r) NULL -#define armv7_read_arm_instr_msr_register_a8(r) NULL -#define armv7_read_arm_instr_msr_register_b9(r) NULL -#define armv7_read_arm_instr_pli_immediate_literal(r) NULL -#define armv7_read_arm_instr_rfe(r) NULL -#define armv7_read_arm_instr_smc_previously_smi(r) NULL -#define armv7_read_arm_instr_srs_arm(r) NULL -#define armv7_read_arm_instr_stm_user_registers(r) NULL +#define armv7_read_arm_instr_a8_isb(r) NULL +#define armv7_read_arm_instr_a8_pli_immediate_literal(r) NULL #endif diff --git a/plugins/arm/v7/opcodes/opcodes_tmp_simd.h b/plugins/arm/v7/opcodes/opcodes_tmp_simd.h index 1d7023e..9eab3f1 100644 --- a/plugins/arm/v7/opcodes/opcodes_tmp_simd.h +++ b/plugins/arm/v7/opcodes/opcodes_tmp_simd.h @@ -1,138 +1,138 @@ #ifndef simd_def_tmp_h #define simd_def_tmp_h -#define armv7_read_simd_instr_vaba_vabal(r, a) NULL -#define armv7_read_simd_instr_vabd_floating_point(r, a) NULL -#define armv7_read_simd_instr_vabd_vabdl_integer(r, a) NULL -#define armv7_read_simd_instr_vabs(r, a) NULL -#define armv7_read_simd_instr_vacge_vacgt_vacle_vaclt(r, a) NULL -#define armv7_read_simd_instr_vadd_floating_point(r, a) NULL -#define armv7_read_simd_instr_vaddhn(r, a) NULL -#define armv7_read_simd_instr_vadd_integer(r, a) NULL -#define armv7_read_simd_instr_vaddl_vaddw(r, a) NULL -#define armv7_read_simd_instr_vand_register(r, a) NULL -#define armv7_read_simd_instr_vbic_immediate(r, a) NULL -#define armv7_read_simd_instr_vbic_register(r, a) NULL -#define armv7_read_simd_instr_vbif_vbit_vbsl(r, a) NULL -#define armv7_read_simd_instr_vceq_immediate_0(r, a) NULL -#define armv7_read_simd_instr_vceq_register(r, a) NULL -#define armv7_read_simd_instr_vcge_immediate_0(r, a) NULL -#define armv7_read_simd_instr_vcge_register(r, a) NULL -#define armv7_read_simd_instr_vcgt_immediate_0(r, a) NULL -#define armv7_read_simd_instr_vcgt_register(r, a) NULL -#define armv7_read_simd_instr_vcle_immediate_0(r, a) NULL -#define armv7_read_simd_instr_vcls(r, a) NULL -#define armv7_read_simd_instr_vclt_immediate_0(r, a) NULL -#define armv7_read_simd_instr_vclz(r, a) NULL -#define armv7_read_simd_instr_vcmp_vcmpe(r, a) NULL -#define armv7_read_simd_instr_vcnt(r, a) NULL -#define armv7_read_simd_instr_vcvt_between_double_precision_and_single_precision(r, a) NULL -#define armv7_read_simd_instr_vcvt_between_floating_point_and_fixed_point_advanced_simd(r, a) NULL -#define armv7_read_simd_instr_vcvt_between_floating_point_and_fixed_point_floating_point(r, a) NULL -#define armv7_read_simd_instr_vcvtb_vcvtt(r, a) NULL -#define armv7_read_simd_instr_vcvt_vcvtr_between_floating_point_and_integer_floating_point(r, a) NULL -#define armv7_read_simd_instr_vdiv(r, a) NULL -#define armv7_read_simd_instr_vdup_arm_core_register(r, a) NULL -#define armv7_read_simd_instr_vdup_scalar(r, a) NULL -#define armv7_read_simd_instr_veor(r, a) NULL -#define armv7_read_simd_instr_vext(r, a) NULL -#define armv7_read_simd_instr_vfma_vfms(r, a) NULL -#define armv7_read_simd_instr_vfnma_vfnms(r, a) NULL -#define armv7_read_simd_instr_vhadd_vhsub(r, a) NULL -#define armv7_read_simd_instr_vld1_multiple_single_elements(r, a) NULL -#define armv7_read_simd_instr_vld1_single_element_to_all_lanes(r, a) NULL -#define armv7_read_simd_instr_vld1_single_element_to_one_lane(r, a) NULL -#define armv7_read_simd_instr_vld2_multiple_2_element_structures(r, a) NULL -#define armv7_read_simd_instr_vld2_single_2_element_structure_to_all_lanes(r, a) NULL -#define armv7_read_simd_instr_vld2_single_2_element_structure_to_one_lane(r, a) NULL -#define armv7_read_simd_instr_vld3_multiple_3_element_structures(r, a) NULL -#define armv7_read_simd_instr_vld3_single_3_element_structure_to_all_lanes(r, a) NULL -#define armv7_read_simd_instr_vld3_single_3_element_structure_to_one_lane(r, a) NULL -#define armv7_read_simd_instr_vld4_multiple_4_element_structures(r, a) NULL -#define armv7_read_simd_instr_vld4_single_4_element_structure_to_all_lanes(r, a) NULL -#define armv7_read_simd_instr_vld4_single_4_element_structure_to_one_lane(r, a) NULL -#define armv7_read_simd_instr_vldm(r, a) NULL -#define armv7_read_simd_instr_vldr(r, a) NULL -#define armv7_read_simd_instr_vmax_vmin_floating_point(r, a) NULL -#define armv7_read_simd_instr_vmax_vmin_integer(r, a) NULL -#define armv7_read_simd_instr_vmla_vmlal_vmls_vmlsl_by_scalar(r, a) NULL -#define armv7_read_simd_instr_vmla_vmlal_vmls_vmlsl_integer(r, a) NULL -#define armv7_read_simd_instr_vmla_vmls_floating_point(r, a) NULL -#define armv7_read_simd_instr_vmov_arm_core_register_to_scalar(r, a) NULL -#define armv7_read_simd_instr_vmov_between_arm_core_register_and_single_precision_register(r, a) NULL -#define armv7_read_simd_instr_vmov_between_two_arm_core_registers_and_a_doubleword_extension_register(r, a) NULL -#define armv7_read_simd_instr_vmov_between_two_arm_core_registers_and_two_single_precision_registers(r, a) NULL -#define armv7_read_simd_instr_vmov_immediate(r, a) NULL -#define armv7_read_simd_instr_vmovl(r, a) NULL -#define armv7_read_simd_instr_vmov_register(r, a) NULL -#define armv7_read_simd_instr_vmov_scalar_to_arm_core_register(r, a) NULL -#define armv7_read_simd_instr_vmrs(r, a) NULL -#define armv7_read_simd_instr_vmrs_b9(r, a) NULL -#define armv7_read_simd_instr_vmsr(r, a) NULL -#define armv7_read_simd_instr_vmsr_b9(r, a) NULL -#define armv7_read_simd_instr_vmul_floating_point(r, a) NULL -#define armv7_read_simd_instr_vmul_vmull_by_scalar(r, a) NULL -#define armv7_read_simd_instr_vmul_vmull_integer_and_polynomial(r, a) NULL -#define armv7_read_simd_instr_vmvn_immediate(r, a) NULL -#define armv7_read_simd_instr_vmvn_register(r, a) NULL -#define armv7_read_simd_instr_vneg(r, a) NULL -#define armv7_read_simd_instr_vnmla_vnmls_vnmul(r, a) NULL -#define armv7_read_simd_instr_vorn_register(r, a) NULL -#define armv7_read_simd_instr_vorr_immediate(r, a) NULL -#define armv7_read_simd_instr_vorr_register(r, a) NULL -#define armv7_read_simd_instr_vpadal(r, a) NULL -#define armv7_read_simd_instr_vpadd_floating_point(r, a) NULL -#define armv7_read_simd_instr_vpadd_integer(r, a) NULL -#define armv7_read_simd_instr_vpaddl(r, a) NULL -#define armv7_read_simd_instr_vpmax_vpmin_floating_point(r, a) NULL -#define armv7_read_simd_instr_vpmax_vpmin_integer(r, a) NULL -#define armv7_read_simd_instr_vpop(r, a) NULL -#define armv7_read_simd_instr_vpush(r, a) NULL -#define armv7_read_simd_instr_vqabs(r, a) NULL -#define armv7_read_simd_instr_vqadd(r, a) NULL -#define armv7_read_simd_instr_vqdmlal_vqdmlsl(r, a) NULL -#define armv7_read_simd_instr_vqdmulh(r, a) NULL -#define armv7_read_simd_instr_vqdmull(r, a) NULL -#define armv7_read_simd_instr_vqneg(r, a) NULL -#define armv7_read_simd_instr_vqrdmulh(r, a) NULL -#define armv7_read_simd_instr_vqrshl(r, a) NULL -#define armv7_read_simd_instr_vqrshrn_vqrshrun(r, a) NULL -#define armv7_read_simd_instr_vqshl_register(r, a) NULL -#define armv7_read_simd_instr_vqshl_vqshlu_immediate(r, a) NULL -#define armv7_read_simd_instr_vqshrn_vqshrun(r, a) NULL -#define armv7_read_simd_instr_vqsub(r, a) NULL -#define armv7_read_simd_instr_vraddhn(r, a) NULL -#define armv7_read_simd_instr_vrecps(r, a) NULL -#define armv7_read_simd_instr_vrev16_vrev32_vrev64(r, a) NULL -#define armv7_read_simd_instr_vrhadd(r, a) NULL -#define armv7_read_simd_instr_vrshl(r, a) NULL -#define armv7_read_simd_instr_vrshr(r, a) NULL -#define armv7_read_simd_instr_vrshrn(r, a) NULL -#define armv7_read_simd_instr_vrsqrts(r, a) NULL -#define armv7_read_simd_instr_vrsra(r, a) NULL -#define armv7_read_simd_instr_vrsubhn(r, a) NULL -#define armv7_read_simd_instr_vshl_immediate(r, a) NULL -#define armv7_read_simd_instr_vshll(r, a) NULL -#define armv7_read_simd_instr_vshl_register(r, a) NULL -#define armv7_read_simd_instr_vshr(r, a) NULL -#define armv7_read_simd_instr_vshrn(r, a) NULL -#define armv7_read_simd_instr_vsli(r, a) NULL -#define armv7_read_simd_instr_vsqrt(r, a) NULL -#define armv7_read_simd_instr_vsra(r, a) NULL -#define armv7_read_simd_instr_vsri(r, a) NULL -#define armv7_read_simd_instr_vst1_multiple_single_elements(r, a) NULL -#define armv7_read_simd_instr_vst1_single_element_from_one_lane(r, a) NULL -#define armv7_read_simd_instr_vst2_multiple_2_element_structures(r, a) NULL -#define armv7_read_simd_instr_vst2_single_2_element_structure_from_one_lane(r, a) NULL -#define armv7_read_simd_instr_vst3_multiple_3_element_structures(r, a) NULL -#define armv7_read_simd_instr_vst3_single_3_element_structure_from_one_lane(r, a) NULL -#define armv7_read_simd_instr_vst4_multiple_4_element_structures(r, a) NULL -#define armv7_read_simd_instr_vst4_single_4_element_structure_from_one_lane(r, a) NULL -#define armv7_read_simd_instr_vstm(r, a) NULL -#define armv7_read_simd_instr_vstr(r, a) NULL -#define armv7_read_simd_instr_vsub_floating_point(r, a) NULL -#define armv7_read_simd_instr_vsubhn(r, a) NULL -#define armv7_read_simd_instr_vsub_integer(r, a) NULL -#define armv7_read_simd_instr_vsubl_vsubw(r, a) NULL -#define armv7_read_simd_instr_vtbl_vtbx(r, a) NULL -#define armv7_read_simd_instr_vtst(r, a) NULL +#define armv7_read_simd_instr_a8_vaba_vabal(r, a) NULL +#define armv7_read_simd_instr_a8_vabd_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vabd_vabdl_integer(r, a) NULL +#define armv7_read_simd_instr_a8_vabs(r, a) NULL +#define armv7_read_simd_instr_a8_vacge_vacgt_vacle_vaclt(r, a) NULL +#define armv7_read_simd_instr_a8_vadd_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vaddhn(r, a) NULL +#define armv7_read_simd_instr_a8_vadd_integer(r, a) NULL +#define armv7_read_simd_instr_a8_vaddl_vaddw(r, a) NULL +#define armv7_read_simd_instr_a8_vand_register(r, a) NULL +#define armv7_read_simd_instr_a8_vbic_immediate(r, a) NULL +#define armv7_read_simd_instr_a8_vbic_register(r, a) NULL +#define armv7_read_simd_instr_a8_vbif_vbit_vbsl(r, a) NULL +#define armv7_read_simd_instr_a8_vceq_immediate_0(r, a) NULL +#define armv7_read_simd_instr_a8_vceq_register(r, a) NULL +#define armv7_read_simd_instr_a8_vcge_immediate_0(r, a) NULL +#define armv7_read_simd_instr_a8_vcge_register(r, a) NULL +#define armv7_read_simd_instr_a8_vcgt_immediate_0(r, a) NULL +#define armv7_read_simd_instr_a8_vcgt_register(r, a) NULL +#define armv7_read_simd_instr_a8_vcle_immediate_0(r, a) NULL +#define armv7_read_simd_instr_a8_vcls(r, a) NULL +#define armv7_read_simd_instr_a8_vclt_immediate_0(r, a) NULL +#define armv7_read_simd_instr_a8_vclz(r, a) NULL +#define armv7_read_simd_instr_a8_vcmp_vcmpe(r, a) NULL +#define armv7_read_simd_instr_a8_vcnt(r, a) NULL +#define armv7_read_simd_instr_a8_vcvt_between_double_precision_and_single_precision(r, a) NULL +#define armv7_read_simd_instr_a8_vcvt_between_floating_point_and_fixed_point_advanced_simd(r, a) NULL +#define armv7_read_simd_instr_a8_vcvt_between_floating_point_and_fixed_point_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vcvtb_vcvtt(r, a) NULL +#define armv7_read_simd_instr_a8_vcvt_vcvtr_between_floating_point_and_integer_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vdiv(r, a) NULL +#define armv7_read_simd_instr_a8_vdup_arm_core_register(r, a) NULL +#define armv7_read_simd_instr_a8_vdup_scalar(r, a) NULL +#define armv7_read_simd_instr_a8_veor(r, a) NULL +#define armv7_read_simd_instr_a8_vext(r, a) NULL +#define armv7_read_simd_instr_a8_vfma_vfms(r, a) NULL +#define armv7_read_simd_instr_a8_vfnma_vfnms(r, a) NULL +#define armv7_read_simd_instr_a8_vhadd_vhsub(r, a) NULL +#define armv7_read_simd_instr_a8_vld1_multiple_single_elements(r, a) NULL +#define armv7_read_simd_instr_a8_vld1_single_element_to_all_lanes(r, a) NULL +#define armv7_read_simd_instr_a8_vld1_single_element_to_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vld2_multiple_2_element_structures(r, a) NULL +#define armv7_read_simd_instr_a8_vld2_single_2_element_structure_to_all_lanes(r, a) NULL +#define armv7_read_simd_instr_a8_vld2_single_2_element_structure_to_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vld3_multiple_3_element_structures(r, a) NULL +#define armv7_read_simd_instr_a8_vld3_single_3_element_structure_to_all_lanes(r, a) NULL +#define armv7_read_simd_instr_a8_vld3_single_3_element_structure_to_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vld4_multiple_4_element_structures(r, a) NULL +#define armv7_read_simd_instr_a8_vld4_single_4_element_structure_to_all_lanes(r, a) NULL +#define armv7_read_simd_instr_a8_vld4_single_4_element_structure_to_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vldm(r, a) NULL +#define armv7_read_simd_instr_a8_vldr(r, a) NULL +#define armv7_read_simd_instr_a8_vmax_vmin_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vmax_vmin_integer(r, a) NULL +#define armv7_read_simd_instr_a8_vmla_vmlal_vmls_vmlsl_by_scalar(r, a) NULL +#define armv7_read_simd_instr_a8_vmla_vmlal_vmls_vmlsl_integer(r, a) NULL +#define armv7_read_simd_instr_a8_vmla_vmls_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vmov_arm_core_register_to_scalar(r, a) NULL +#define armv7_read_simd_instr_a8_vmov_between_arm_core_register_and_single_precision_register(r, a) NULL +#define armv7_read_simd_instr_a8_vmov_between_two_arm_core_registers_and_a_doubleword_extension_register(r, a) NULL +#define armv7_read_simd_instr_a8_vmov_between_two_arm_core_registers_and_two_single_precision_registers(r, a) NULL +#define armv7_read_simd_instr_a8_vmov_immediate(r, a) NULL +#define armv7_read_simd_instr_a8_vmovl(r, a) NULL +#define armv7_read_simd_instr_a8_vmov_register(r, a) NULL +#define armv7_read_simd_instr_a8_vmov_scalar_to_arm_core_register(r, a) NULL +#define armv7_read_simd_instr_a8_vmrs(r, a) NULL +#define armv7_read_simd_instr_a8_vmsr(r, a) NULL +#define armv7_read_simd_instr_a8_vmul_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vmul_vmull_by_scalar(r, a) NULL +#define armv7_read_simd_instr_a8_vmul_vmull_integer_and_polynomial(r, a) NULL +#define armv7_read_simd_instr_a8_vmvn_immediate(r, a) NULL +#define armv7_read_simd_instr_a8_vmvn_register(r, a) NULL +#define armv7_read_simd_instr_a8_vneg(r, a) NULL +#define armv7_read_simd_instr_a8_vnmla_vnmls_vnmul(r, a) NULL +#define armv7_read_simd_instr_a8_vorn_register(r, a) NULL +#define armv7_read_simd_instr_a8_vorr_immediate(r, a) NULL +#define armv7_read_simd_instr_a8_vorr_register(r, a) NULL +#define armv7_read_simd_instr_a8_vpadal(r, a) NULL +#define armv7_read_simd_instr_a8_vpadd_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vpadd_integer(r, a) NULL +#define armv7_read_simd_instr_a8_vpaddl(r, a) NULL +#define armv7_read_simd_instr_a8_vpmax_vpmin_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vpmax_vpmin_integer(r, a) NULL +#define armv7_read_simd_instr_a8_vpop(r, a) NULL +#define armv7_read_simd_instr_a8_vpush(r, a) NULL +#define armv7_read_simd_instr_a8_vqabs(r, a) NULL +#define armv7_read_simd_instr_a8_vqadd(r, a) NULL +#define armv7_read_simd_instr_a8_vqdmlal_vqdmlsl(r, a) NULL +#define armv7_read_simd_instr_a8_vqdmulh(r, a) NULL +#define armv7_read_simd_instr_a8_vqdmull(r, a) NULL +#define armv7_read_simd_instr_a8_vqneg(r, a) NULL +#define armv7_read_simd_instr_a8_vqrdmulh(r, a) NULL +#define armv7_read_simd_instr_a8_vqrshl(r, a) NULL +#define armv7_read_simd_instr_a8_vqrshrn_vqrshrun(r, a) NULL +#define armv7_read_simd_instr_a8_vqshl_register(r, a) NULL +#define armv7_read_simd_instr_a8_vqshl_vqshlu_immediate(r, a) NULL +#define armv7_read_simd_instr_a8_vqshrn_vqshrun(r, a) NULL +#define armv7_read_simd_instr_a8_vqsub(r, a) NULL +#define armv7_read_simd_instr_a8_vraddhn(r, a) NULL +#define armv7_read_simd_instr_a8_vrecps(r, a) NULL +#define armv7_read_simd_instr_a8_vrev16_vrev32_vrev64(r, a) NULL +#define armv7_read_simd_instr_a8_vrhadd(r, a) NULL +#define armv7_read_simd_instr_a8_vrshl(r, a) NULL +#define armv7_read_simd_instr_a8_vrshr(r, a) NULL +#define armv7_read_simd_instr_a8_vrshrn(r, a) NULL +#define armv7_read_simd_instr_a8_vrsqrts(r, a) NULL +#define armv7_read_simd_instr_a8_vrsra(r, a) NULL +#define armv7_read_simd_instr_a8_vrsubhn(r, a) NULL +#define armv7_read_simd_instr_a8_vshl_immediate(r, a) NULL +#define armv7_read_simd_instr_a8_vshll(r, a) NULL +#define armv7_read_simd_instr_a8_vshl_register(r, a) NULL +#define armv7_read_simd_instr_a8_vshr(r, a) NULL +#define armv7_read_simd_instr_a8_vshrn(r, a) NULL +#define armv7_read_simd_instr_a8_vsli(r, a) NULL +#define armv7_read_simd_instr_a8_vsqrt(r, a) NULL +#define armv7_read_simd_instr_a8_vsra(r, a) NULL +#define armv7_read_simd_instr_a8_vsri(r, a) NULL +#define armv7_read_simd_instr_a8_vst1_multiple_single_elements(r, a) NULL +#define armv7_read_simd_instr_a8_vst1_single_element_from_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vst2_multiple_2_element_structures(r, a) NULL +#define armv7_read_simd_instr_a8_vst2_single_2_element_structure_from_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vst3_multiple_3_element_structures(r, a) NULL +#define armv7_read_simd_instr_a8_vst3_single_3_element_structure_from_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vst4_multiple_4_element_structures(r, a) NULL +#define armv7_read_simd_instr_a8_vst4_single_4_element_structure_from_one_lane(r, a) NULL +#define armv7_read_simd_instr_a8_vstm(r, a) NULL +#define armv7_read_simd_instr_a8_vstr(r, a) NULL +#define armv7_read_simd_instr_a8_vsub_floating_point(r, a) NULL +#define armv7_read_simd_instr_a8_vsubhn(r, a) NULL +#define armv7_read_simd_instr_a8_vsub_integer(r, a) NULL +#define armv7_read_simd_instr_a8_vsubl_vsubw(r, a) NULL +#define armv7_read_simd_instr_a8_vtbl_vtbx(r, a) NULL +#define armv7_read_simd_instr_a8_vtst(r, a) NULL +#define armv7_read_simd_instr_b9_vmrs(r, a) NULL +#define armv7_read_simd_instr_b9_vmsr(r, a) NULL #endif diff --git a/plugins/arm/v7/opcodes/opcodes_tmp_thumb_16.h b/plugins/arm/v7/opcodes/opcodes_tmp_thumb_16.h index 449ea09..d21b056 100644 --- a/plugins/arm/v7/opcodes/opcodes_tmp_thumb_16.h +++ b/plugins/arm/v7/opcodes/opcodes_tmp_thumb_16.h @@ -1,4 +1,3 @@ #ifndef thumb_16_def_tmp_h #define thumb_16_def_tmp_h -#define armv7_read_thumb_16_instr_cps_thumb(r) NULL #endif diff --git a/plugins/arm/v7/opcodes/opcodes_tmp_thumb_32.h b/plugins/arm/v7/opcodes/opcodes_tmp_thumb_32.h index 4ecba24..ce803c6 100644 --- a/plugins/arm/v7/opcodes/opcodes_tmp_thumb_32.h +++ b/plugins/arm/v7/opcodes/opcodes_tmp_thumb_32.h @@ -1,27 +1,16 @@ #ifndef thumb_32_def_tmp_h #define thumb_32_def_tmp_h -#define armv7_read_thumb_32_instr_b_mrs(r) NULL -#define armv7_read_thumb_32_instr_b_msr_register(r) NULL -#define armv7_read_thumb_32_instr_cps_thumb(r) NULL -#define armv7_read_thumb_32_instr_enterx_leavex(r) NULL -#define armv7_read_thumb_32_instr_eret(r) NULL -#define armv7_read_thumb_32_instr_hvc(r) NULL -#define armv7_read_thumb_32_instr_isb(r) NULL -#define armv7_read_thumb_32_instr_mrs_banked_register(r) NULL -#define armv7_read_thumb_32_instr_msr_banked_register(r) NULL -#define armv7_read_thumb_32_instr_pld_immediate(r) NULL -#define armv7_read_thumb_32_instr_pld_register(r) NULL -#define armv7_read_thumb_32_instr_pli_immediate_literal(r) NULL -#define armv7_read_thumb_32_instr_rfe(r) NULL -#define armv7_read_thumb_32_instr_smc_previously_smi(r) NULL -#define armv7_read_thumb_32_instr_sqadd16(r) NULL -#define armv7_read_thumb_32_instr_sqadd8(r) NULL -#define armv7_read_thumb_32_instr_sqasx(r) NULL -#define armv7_read_thumb_32_instr_sqsax(r) NULL -#define armv7_read_thumb_32_instr_sqsub16(r) NULL -#define armv7_read_thumb_32_instr_sqsub8(r) NULL -#define armv7_read_thumb_32_instr_srs_thumb(r) NULL -#define armv7_read_thumb_32_instr_sub_register_thumb(r) NULL -#define armv7_read_thumb_32_instr_subs_pc_lr_thumb(r) NULL -#define armv7_read_thumb_32_instr_tbb_tbh(r) NULL +#define armv7_read_thumb_32_instr_a8_isb(r) NULL +#define armv7_read_thumb_32_instr_a8_pld_immediate(r) NULL +#define armv7_read_thumb_32_instr_a8_pld_register(r) NULL +#define armv7_read_thumb_32_instr_a8_pli_immediate_literal(r) NULL +#define armv7_read_thumb_32_instr_a8_sqadd16(r) NULL +#define armv7_read_thumb_32_instr_a8_sqadd8(r) NULL +#define armv7_read_thumb_32_instr_a8_sqasx(r) NULL +#define armv7_read_thumb_32_instr_a8_sqsax(r) NULL +#define armv7_read_thumb_32_instr_a8_sqsub16(r) NULL +#define armv7_read_thumb_32_instr_a8_sqsub8(r) NULL +#define armv7_read_thumb_32_instr_a8_sub_register_thumb(r) NULL +#define armv7_read_thumb_32_instr_a8_tbb_tbh(r) NULL +#define armv7_read_thumb_32_instr_a9_enterx_leavex(r) NULL #endif diff --git a/plugins/arm/v7/opdefs/mla_A88100.d b/plugins/arm/v7/opdefs/A88100_mla.d index ec8b92b..d5d0b94 100644 --- a/plugins/arm/v7/opdefs/mla_A88100.d +++ b/plugins/arm/v7/opdefs/A88100_mla.d @@ -23,7 +23,7 @@ @title MLA -@id 99 +@id 94 @desc { diff --git a/plugins/arm/v7/opdefs/mls_A88101.d b/plugins/arm/v7/opdefs/A88101_mls.d index 083e4e1..7fc527b 100644 --- a/plugins/arm/v7/opdefs/mls_A88101.d +++ b/plugins/arm/v7/opdefs/A88101_mls.d @@ -23,7 +23,7 @@ @title MLS -@id 100 +@id 95 @desc { diff --git a/plugins/arm/v7/opdefs/mov_A88102.d b/plugins/arm/v7/opdefs/A88102_mov.d index 805bc16..d3925b6 100644 --- a/plugins/arm/v7/opdefs/mov_A88102.d +++ b/plugins/arm/v7/opdefs/A88102_mov.d @@ -23,7 +23,7 @@ @title MOV (immediate) -@id 101 +@id 96 @desc { diff --git a/plugins/arm/v7/opdefs/mov_A88103.d b/plugins/arm/v7/opdefs/A88103_mov.d index 9497800..4f40758 100644 --- a/plugins/arm/v7/opdefs/mov_A88103.d +++ b/plugins/arm/v7/opdefs/A88103_mov.d @@ -23,7 +23,7 @@ @title MOV (register, Thumb) -@id 102 +@id 97 @desc { diff --git a/plugins/arm/v7/opdefs/mov_A88104.d b/plugins/arm/v7/opdefs/A88104_mov.d index 3d7eb99..e6a758c 100644 --- a/plugins/arm/v7/opdefs/mov_A88104.d +++ b/plugins/arm/v7/opdefs/A88104_mov.d @@ -23,7 +23,7 @@ @title MOV (register, ARM) -@id 103 +@id 98 @desc { diff --git a/plugins/arm/v7/opdefs/movt_A88106.d b/plugins/arm/v7/opdefs/A88106_movt.d index dc024df..fc6bd84 100644 --- a/plugins/arm/v7/opdefs/movt_A88106.d +++ b/plugins/arm/v7/opdefs/A88106_movt.d @@ -23,7 +23,7 @@ @title MOVT -@id 105 +@id 100 @desc { diff --git a/plugins/arm/v7/opdefs/mrc_A88107.d b/plugins/arm/v7/opdefs/A88107_mrc.d index ab3f0a1..1053e95 100644 --- a/plugins/arm/v7/opdefs/mrc_A88107.d +++ b/plugins/arm/v7/opdefs/A88107_mrc.d @@ -23,7 +23,7 @@ @title MRC, MRC2 -@id 106 +@id 101 @desc { diff --git a/plugins/arm/v7/opdefs/mrrc_A88108.d b/plugins/arm/v7/opdefs/A88108_mrrc.d index ea25147..3f451d5 100644 --- a/plugins/arm/v7/opdefs/mrrc_A88108.d +++ b/plugins/arm/v7/opdefs/A88108_mrrc.d @@ -23,7 +23,7 @@ @title MRRC, MRRC2 -@id 107 +@id 102 @desc { diff --git a/plugins/arm/v7/opdefs/mrs_A88109.d b/plugins/arm/v7/opdefs/A88109_mrs.d index 6ea0208..dd6215c 100644 --- a/plugins/arm/v7/opdefs/mrs_A88109.d +++ b/plugins/arm/v7/opdefs/A88109_mrs.d @@ -23,7 +23,7 @@ @title MRS -@id 108 +@id 103 @desc { diff --git a/plugins/arm/v7/opdefs/add_A8810.d b/plugins/arm/v7/opdefs/A8810_add.d index 357dadc..357dadc 100644 --- a/plugins/arm/v7/opdefs/add_A8810.d +++ b/plugins/arm/v7/opdefs/A8810_add.d diff --git a/plugins/arm/v7/opdefs/msr_A88111.d b/plugins/arm/v7/opdefs/A88111_msr.d index ccf86df..5def4c5 100644 --- a/plugins/arm/v7/opdefs/msr_A88111.d +++ b/plugins/arm/v7/opdefs/A88111_msr.d @@ -23,7 +23,7 @@ @title MSR (immediate) -@id 110 +@id 105 @desc { diff --git a/plugins/arm/v7/opdefs/msr_A88112.d b/plugins/arm/v7/opdefs/A88112_msr.d index 89aedc3..4967f01 100644 --- a/plugins/arm/v7/opdefs/msr_A88112.d +++ b/plugins/arm/v7/opdefs/A88112_msr.d @@ -23,7 +23,7 @@ @title MSR (register) -@id 111 +@id 106 @desc { diff --git a/plugins/arm/v7/opdefs/mul_A88114.d b/plugins/arm/v7/opdefs/A88114_mul.d index 9eb245f..341de39 100644 --- a/plugins/arm/v7/opdefs/mul_A88114.d +++ b/plugins/arm/v7/opdefs/A88114_mul.d @@ -23,7 +23,7 @@ @title MUL -@id 113 +@id 108 @desc { diff --git a/plugins/arm/v7/opdefs/mvn_A88115.d b/plugins/arm/v7/opdefs/A88115_mvn.d index 23d9525..ed0e7b8 100644 --- a/plugins/arm/v7/opdefs/mvn_A88115.d +++ b/plugins/arm/v7/opdefs/A88115_mvn.d @@ -23,7 +23,7 @@ @title MVN (immediate) -@id 114 +@id 109 @desc { diff --git a/plugins/arm/v7/opdefs/mvn_A88116.d b/plugins/arm/v7/opdefs/A88116_mvn.d index db9e070..208e7ad 100644 --- a/plugins/arm/v7/opdefs/mvn_A88116.d +++ b/plugins/arm/v7/opdefs/A88116_mvn.d @@ -23,7 +23,7 @@ @title MVN (register) -@id 115 +@id 110 @desc { diff --git a/plugins/arm/v7/opdefs/mvn_A88117.d b/plugins/arm/v7/opdefs/A88117_mvn.d index 8e88096..a4cd19f 100644 --- a/plugins/arm/v7/opdefs/mvn_A88117.d +++ b/plugins/arm/v7/opdefs/A88117_mvn.d @@ -23,7 +23,7 @@ @title MVN (register-shifted register) -@id 116 +@id 111 @desc { diff --git a/plugins/arm/v7/opdefs/nop_A88119.d b/plugins/arm/v7/opdefs/A88119_nop.d index 8efcb03..a46e84a 100644 --- a/plugins/arm/v7/opdefs/nop_A88119.d +++ b/plugins/arm/v7/opdefs/A88119_nop.d @@ -23,7 +23,7 @@ @title NOP -@id 118 +@id 113 @desc { diff --git a/plugins/arm/v7/opdefs/add_A8811.d b/plugins/arm/v7/opdefs/A8811_add.d index f5c19aa..f5c19aa 100644 --- a/plugins/arm/v7/opdefs/add_A8811.d +++ b/plugins/arm/v7/opdefs/A8811_add.d diff --git a/plugins/arm/v7/opdefs/orn_A88120.d b/plugins/arm/v7/opdefs/A88120_orn.d index b90857d..61c2b20 100644 --- a/plugins/arm/v7/opdefs/orn_A88120.d +++ b/plugins/arm/v7/opdefs/A88120_orn.d @@ -23,7 +23,7 @@ @title ORN (immediate) -@id 119 +@id 114 @desc { diff --git a/plugins/arm/v7/opdefs/orn_A88121.d b/plugins/arm/v7/opdefs/A88121_orn.d index 4e98abe..cacb69d 100644 --- a/plugins/arm/v7/opdefs/orn_A88121.d +++ b/plugins/arm/v7/opdefs/A88121_orn.d @@ -23,7 +23,7 @@ @title ORN (register) -@id 120 +@id 115 @desc { diff --git a/plugins/arm/v7/opdefs/orr_A88122.d b/plugins/arm/v7/opdefs/A88122_orr.d index 9855ad2..0f502a5 100644 --- a/plugins/arm/v7/opdefs/orr_A88122.d +++ b/plugins/arm/v7/opdefs/A88122_orr.d @@ -23,7 +23,7 @@ @title ORR (immediate) -@id 121 +@id 116 @desc { diff --git a/plugins/arm/v7/opdefs/orr_A88123.d b/plugins/arm/v7/opdefs/A88123_orr.d index 0a28002..c7a82dd 100644 --- a/plugins/arm/v7/opdefs/orr_A88123.d +++ b/plugins/arm/v7/opdefs/A88123_orr.d @@ -23,7 +23,7 @@ @title ORR (register) -@id 122 +@id 117 @desc { diff --git a/plugins/arm/v7/opdefs/orr_A88124.d b/plugins/arm/v7/opdefs/A88124_orr.d index adc1d42..f38333d 100644 --- a/plugins/arm/v7/opdefs/orr_A88124.d +++ b/plugins/arm/v7/opdefs/A88124_orr.d @@ -23,7 +23,7 @@ @title ORR (register-shifted register) -@id 123 +@id 118 @desc { diff --git a/plugins/arm/v7/opdefs/pkh_A88125.d b/plugins/arm/v7/opdefs/A88125_pkh.d index 1ca6a30..4b0c330 100644 --- a/plugins/arm/v7/opdefs/pkh_A88125.d +++ b/plugins/arm/v7/opdefs/A88125_pkh.d @@ -23,7 +23,7 @@ @title PKH -@id 124 +@id 119 @desc { diff --git a/plugins/arm/v7/opdefs/pld_A88126.d b/plugins/arm/v7/opdefs/A88126_pld.d index 3a82fe4..174ef24 100644 --- a/plugins/arm/v7/opdefs/pld_A88126.d +++ b/plugins/arm/v7/opdefs/A88126_pld.d @@ -23,7 +23,7 @@ @title PLD, PLDW (immediate) -@id 125 +@id 120 @desc { diff --git a/plugins/arm/v7/opdefs/pld_A88127.d b/plugins/arm/v7/opdefs/A88127_pld.d index e753579..5f85a38 100644 --- a/plugins/arm/v7/opdefs/pld_A88127.d +++ b/plugins/arm/v7/opdefs/A88127_pld.d @@ -23,7 +23,7 @@ @title PLD (literal) -@id 126 +@id 121 @desc { diff --git a/plugins/arm/v7/opdefs/pld_A88128.d b/plugins/arm/v7/opdefs/A88128_pld.d index 5c7eb2d..cfe6b0c 100644 --- a/plugins/arm/v7/opdefs/pld_A88128.d +++ b/plugins/arm/v7/opdefs/A88128_pld.d @@ -23,7 +23,7 @@ @title PLD, PLDW (register) -@id 127 +@id 122 @desc { diff --git a/plugins/arm/v7/opdefs/adr_A8812.d b/plugins/arm/v7/opdefs/A8812_adr.d index 1f77eea..1f77eea 100644 --- a/plugins/arm/v7/opdefs/adr_A8812.d +++ b/plugins/arm/v7/opdefs/A8812_adr.d diff --git a/plugins/arm/v7/opdefs/pli_A88130.d b/plugins/arm/v7/opdefs/A88130_pli.d index e669ff8..97cff04 100644 --- a/plugins/arm/v7/opdefs/pli_A88130.d +++ b/plugins/arm/v7/opdefs/A88130_pli.d @@ -23,7 +23,7 @@ @title PLI (register) -@id 129 +@id 123 @desc { diff --git a/plugins/arm/v7/opdefs/pop_A88131.d b/plugins/arm/v7/opdefs/A88131_pop.d index 12f1254..41fe0b7 100644 --- a/plugins/arm/v7/opdefs/pop_A88131.d +++ b/plugins/arm/v7/opdefs/A88131_pop.d @@ -23,7 +23,7 @@ @title POP (Thumb) -@id 130 +@id 124 @desc { diff --git a/plugins/arm/v7/opdefs/pop_A88132.d b/plugins/arm/v7/opdefs/A88132_pop.d index f4e681e..9b95613 100644 --- a/plugins/arm/v7/opdefs/pop_A88132.d +++ b/plugins/arm/v7/opdefs/A88132_pop.d @@ -23,7 +23,7 @@ @title POP (ARM) -@id 131 +@id 125 @desc { diff --git a/plugins/arm/v7/opdefs/push_A88133.d b/plugins/arm/v7/opdefs/A88133_push.d index 6240e66..bb1502d 100644 --- a/plugins/arm/v7/opdefs/push_A88133.d +++ b/plugins/arm/v7/opdefs/A88133_push.d @@ -23,7 +23,7 @@ @title PUSH -@id 132 +@id 126 @desc { diff --git a/plugins/arm/v7/opdefs/qadd_A88134.d b/plugins/arm/v7/opdefs/A88134_qadd.d index 11d86b1..4617c02 100644 --- a/plugins/arm/v7/opdefs/qadd_A88134.d +++ b/plugins/arm/v7/opdefs/A88134_qadd.d @@ -23,7 +23,7 @@ @title QADD -@id 133 +@id 127 @desc { diff --git a/plugins/arm/v7/opdefs/qadd16_A88135.d b/plugins/arm/v7/opdefs/A88135_qadd16.d index 4bcaff9..7aa565b 100644 --- a/plugins/arm/v7/opdefs/qadd16_A88135.d +++ b/plugins/arm/v7/opdefs/A88135_qadd16.d @@ -23,7 +23,7 @@ @title QADD16 -@id 134 +@id 128 @desc { diff --git a/plugins/arm/v7/opdefs/qadd8_A88136.d b/plugins/arm/v7/opdefs/A88136_qadd8.d index 7ceda6a..0b00037 100644 --- a/plugins/arm/v7/opdefs/qadd8_A88136.d +++ b/plugins/arm/v7/opdefs/A88136_qadd8.d @@ -23,7 +23,7 @@ @title QADD8 -@id 135 +@id 129 @desc { diff --git a/plugins/arm/v7/opdefs/qasx_A88137.d b/plugins/arm/v7/opdefs/A88137_qasx.d index 4c62bca..be7a880 100644 --- a/plugins/arm/v7/opdefs/qasx_A88137.d +++ b/plugins/arm/v7/opdefs/A88137_qasx.d @@ -23,7 +23,7 @@ @title QASX -@id 136 +@id 130 @desc { diff --git a/plugins/arm/v7/opdefs/qdadd_A88138.d b/plugins/arm/v7/opdefs/A88138_qdadd.d index 8f49b67..0058e44 100644 --- a/plugins/arm/v7/opdefs/qdadd_A88138.d +++ b/plugins/arm/v7/opdefs/A88138_qdadd.d @@ -23,7 +23,7 @@ @title QDADD -@id 137 +@id 131 @desc { diff --git a/plugins/arm/v7/opdefs/qdsub_A88139.d b/plugins/arm/v7/opdefs/A88139_qdsub.d index 2747f27..cd7cd21 100644 --- a/plugins/arm/v7/opdefs/qdsub_A88139.d +++ b/plugins/arm/v7/opdefs/A88139_qdsub.d @@ -23,7 +23,7 @@ @title QDSUB -@id 138 +@id 132 @desc { diff --git a/plugins/arm/v7/opdefs/and_A8813.d b/plugins/arm/v7/opdefs/A8813_and.d index 988bdd7..988bdd7 100644 --- a/plugins/arm/v7/opdefs/and_A8813.d +++ b/plugins/arm/v7/opdefs/A8813_and.d diff --git a/plugins/arm/v7/opdefs/qsax_A88140.d b/plugins/arm/v7/opdefs/A88140_qsax.d index f8217b2..3aec301 100644 --- a/plugins/arm/v7/opdefs/qsax_A88140.d +++ b/plugins/arm/v7/opdefs/A88140_qsax.d @@ -23,7 +23,7 @@ @title QSAX -@id 139 +@id 133 @desc { diff --git a/plugins/arm/v7/opdefs/qsub_A88141.d b/plugins/arm/v7/opdefs/A88141_qsub.d index 89d034b..6f9631f 100644 --- a/plugins/arm/v7/opdefs/qsub_A88141.d +++ b/plugins/arm/v7/opdefs/A88141_qsub.d @@ -23,7 +23,7 @@ @title QSUB -@id 140 +@id 134 @desc { diff --git a/plugins/arm/v7/opdefs/qsub16_A88142.d b/plugins/arm/v7/opdefs/A88142_qsub16.d index b971c85..9d9eb8a 100644 --- a/plugins/arm/v7/opdefs/qsub16_A88142.d +++ b/plugins/arm/v7/opdefs/A88142_qsub16.d @@ -23,7 +23,7 @@ @title QSUB16 -@id 141 +@id 135 @desc { diff --git a/plugins/arm/v7/opdefs/qsub8_A88143.d b/plugins/arm/v7/opdefs/A88143_qsub8.d index d7f96c7..23e77be 100644 --- a/plugins/arm/v7/opdefs/qsub8_A88143.d +++ b/plugins/arm/v7/opdefs/A88143_qsub8.d @@ -23,7 +23,7 @@ @title QSUB8 -@id 142 +@id 136 @desc { diff --git a/plugins/arm/v7/opdefs/rbit_A88144.d b/plugins/arm/v7/opdefs/A88144_rbit.d index b5c610c..f28a7d9 100644 --- a/plugins/arm/v7/opdefs/rbit_A88144.d +++ b/plugins/arm/v7/opdefs/A88144_rbit.d @@ -23,7 +23,7 @@ @title RBIT -@id 143 +@id 137 @desc { diff --git a/plugins/arm/v7/opdefs/rev_A88145.d b/plugins/arm/v7/opdefs/A88145_rev.d index cb81837..33ed857 100644 --- a/plugins/arm/v7/opdefs/rev_A88145.d +++ b/plugins/arm/v7/opdefs/A88145_rev.d @@ -23,7 +23,7 @@ @title REV -@id 144 +@id 138 @desc { diff --git a/plugins/arm/v7/opdefs/rev16_A88146.d b/plugins/arm/v7/opdefs/A88146_rev16.d index 49821e5..326a5e6 100644 --- a/plugins/arm/v7/opdefs/rev16_A88146.d +++ b/plugins/arm/v7/opdefs/A88146_rev16.d @@ -23,7 +23,7 @@ @title REV16 -@id 145 +@id 139 @desc { diff --git a/plugins/arm/v7/opdefs/revsh_A88147.d b/plugins/arm/v7/opdefs/A88147_revsh.d index bf04a89..824e46d 100644 --- a/plugins/arm/v7/opdefs/revsh_A88147.d +++ b/plugins/arm/v7/opdefs/A88147_revsh.d @@ -23,7 +23,7 @@ @title REVSH -@id 146 +@id 140 @desc { diff --git a/plugins/arm/v7/opdefs/ror_A88149.d b/plugins/arm/v7/opdefs/A88149_ror.d index 98735fd..402cbbd 100644 --- a/plugins/arm/v7/opdefs/ror_A88149.d +++ b/plugins/arm/v7/opdefs/A88149_ror.d @@ -23,7 +23,7 @@ @title ROR (immediate) -@id 148 +@id 142 @desc { diff --git a/plugins/arm/v7/opdefs/and_A8814.d b/plugins/arm/v7/opdefs/A8814_and.d index 1a807f9..1a807f9 100644 --- a/plugins/arm/v7/opdefs/and_A8814.d +++ b/plugins/arm/v7/opdefs/A8814_and.d diff --git a/plugins/arm/v7/opdefs/ror_A88150.d b/plugins/arm/v7/opdefs/A88150_ror.d index 031f56e..c2ff476 100644 --- a/plugins/arm/v7/opdefs/ror_A88150.d +++ b/plugins/arm/v7/opdefs/A88150_ror.d @@ -23,7 +23,7 @@ @title ROR (register) -@id 149 +@id 143 @desc { diff --git a/plugins/arm/v7/opdefs/rrx_A88151.d b/plugins/arm/v7/opdefs/A88151_rrx.d index 445a5d3..f78791d 100644 --- a/plugins/arm/v7/opdefs/rrx_A88151.d +++ b/plugins/arm/v7/opdefs/A88151_rrx.d @@ -23,7 +23,7 @@ @title RRX -@id 150 +@id 144 @desc { diff --git a/plugins/arm/v7/opdefs/rsb_A88152.d b/plugins/arm/v7/opdefs/A88152_rsb.d index 9b5e13e..cc5a1c6 100644 --- a/plugins/arm/v7/opdefs/rsb_A88152.d +++ b/plugins/arm/v7/opdefs/A88152_rsb.d @@ -23,7 +23,7 @@ @title RSB (immediate) -@id 151 +@id 145 @desc { diff --git a/plugins/arm/v7/opdefs/rsb_A88153.d b/plugins/arm/v7/opdefs/A88153_rsb.d index cb8ad6d..aedd51d 100644 --- a/plugins/arm/v7/opdefs/rsb_A88153.d +++ b/plugins/arm/v7/opdefs/A88153_rsb.d @@ -23,7 +23,7 @@ @title RSB (register) -@id 152 +@id 146 @desc { diff --git a/plugins/arm/v7/opdefs/rsb_A88154.d b/plugins/arm/v7/opdefs/A88154_rsb.d index cfc0a11..8fe52ef 100644 --- a/plugins/arm/v7/opdefs/rsb_A88154.d +++ b/plugins/arm/v7/opdefs/A88154_rsb.d @@ -23,7 +23,7 @@ @title RSB (register-shifted register) -@id 153 +@id 147 @desc { diff --git a/plugins/arm/v7/opdefs/rsc_A88155.d b/plugins/arm/v7/opdefs/A88155_rsc.d index e30a4a1..8f2688f 100644 --- a/plugins/arm/v7/opdefs/rsc_A88155.d +++ b/plugins/arm/v7/opdefs/A88155_rsc.d @@ -23,7 +23,7 @@ @title RSC (immediate) -@id 154 +@id 148 @desc { diff --git a/plugins/arm/v7/opdefs/rsc_A88156.d b/plugins/arm/v7/opdefs/A88156_rsc.d index 63d39fb..0efd043 100644 --- a/plugins/arm/v7/opdefs/rsc_A88156.d +++ b/plugins/arm/v7/opdefs/A88156_rsc.d @@ -23,7 +23,7 @@ @title RSC (register) -@id 155 +@id 149 @desc { diff --git a/plugins/arm/v7/opdefs/rsc_A88157.d b/plugins/arm/v7/opdefs/A88157_rsc.d index 25d1ea2..6d2a46f 100644 --- a/plugins/arm/v7/opdefs/rsc_A88157.d +++ b/plugins/arm/v7/opdefs/A88157_rsc.d @@ -23,7 +23,7 @@ @title RSC (register-shifted register) -@id 156 +@id 150 @desc { diff --git a/plugins/arm/v7/opdefs/sadd16_A88158.d b/plugins/arm/v7/opdefs/A88158_sadd16.d index b181221..10917ec 100644 --- a/plugins/arm/v7/opdefs/sadd16_A88158.d +++ b/plugins/arm/v7/opdefs/A88158_sadd16.d @@ -23,7 +23,7 @@ @title SADD16 -@id 157 +@id 151 @desc { diff --git a/plugins/arm/v7/opdefs/sadd8_A88159.d b/plugins/arm/v7/opdefs/A88159_sadd8.d index 94a91d7..cf9bb74 100644 --- a/plugins/arm/v7/opdefs/sadd8_A88159.d +++ b/plugins/arm/v7/opdefs/A88159_sadd8.d @@ -23,7 +23,7 @@ @title SADD8 -@id 158 +@id 152 @desc { diff --git a/plugins/arm/v7/opdefs/and_A8815.d b/plugins/arm/v7/opdefs/A8815_and.d index 3d890cb..3d890cb 100644 --- a/plugins/arm/v7/opdefs/and_A8815.d +++ b/plugins/arm/v7/opdefs/A8815_and.d diff --git a/plugins/arm/v7/opdefs/sasx_A88160.d b/plugins/arm/v7/opdefs/A88160_sasx.d index 30c86be..676915a 100644 --- a/plugins/arm/v7/opdefs/sasx_A88160.d +++ b/plugins/arm/v7/opdefs/A88160_sasx.d @@ -23,7 +23,7 @@ @title SASX -@id 159 +@id 153 @desc { diff --git a/plugins/arm/v7/opdefs/sbc_A88161.d b/plugins/arm/v7/opdefs/A88161_sbc.d index 8d307fa..9962438 100644 --- a/plugins/arm/v7/opdefs/sbc_A88161.d +++ b/plugins/arm/v7/opdefs/A88161_sbc.d @@ -23,7 +23,7 @@ @title SBC (immediate) -@id 160 +@id 154 @desc { diff --git a/plugins/arm/v7/opdefs/sbc_A88162.d b/plugins/arm/v7/opdefs/A88162_sbc.d index 27f97fc..f931d4d 100644 --- a/plugins/arm/v7/opdefs/sbc_A88162.d +++ b/plugins/arm/v7/opdefs/A88162_sbc.d @@ -23,7 +23,7 @@ @title SBC (register) -@id 161 +@id 155 @desc { diff --git a/plugins/arm/v7/opdefs/sbc_A88163.d b/plugins/arm/v7/opdefs/A88163_sbc.d index a7e7c27..f287959 100644 --- a/plugins/arm/v7/opdefs/sbc_A88163.d +++ b/plugins/arm/v7/opdefs/A88163_sbc.d @@ -23,7 +23,7 @@ @title SBC (register-shifted register) -@id 162 +@id 156 @desc { diff --git a/plugins/arm/v7/opdefs/sbfx_A88164.d b/plugins/arm/v7/opdefs/A88164_sbfx.d index 8a3f4de..bdc3fbd 100644 --- a/plugins/arm/v7/opdefs/sbfx_A88164.d +++ b/plugins/arm/v7/opdefs/A88164_sbfx.d @@ -23,7 +23,7 @@ @title SBFX -@id 163 +@id 157 @desc { diff --git a/plugins/arm/v7/opdefs/sdiv_A88165.d b/plugins/arm/v7/opdefs/A88165_sdiv.d index 0e74d6c..498cafd 100644 --- a/plugins/arm/v7/opdefs/sdiv_A88165.d +++ b/plugins/arm/v7/opdefs/A88165_sdiv.d @@ -23,7 +23,7 @@ @title SDIV -@id 164 +@id 158 @desc { diff --git a/plugins/arm/v7/opdefs/sel_A88166.d b/plugins/arm/v7/opdefs/A88166_sel.d index 660dd46..3fb9747 100644 --- a/plugins/arm/v7/opdefs/sel_A88166.d +++ b/plugins/arm/v7/opdefs/A88166_sel.d @@ -23,7 +23,7 @@ @title SEL -@id 165 +@id 159 @desc { diff --git a/plugins/arm/v7/opdefs/setend_A88167.d b/plugins/arm/v7/opdefs/A88167_setend.d index ac6d59b..c9d3f0a 100644 --- a/plugins/arm/v7/opdefs/setend_A88167.d +++ b/plugins/arm/v7/opdefs/A88167_setend.d @@ -23,7 +23,7 @@ @title SETEND -@id 166 +@id 160 @desc { diff --git a/plugins/arm/v7/opdefs/sev_A88168.d b/plugins/arm/v7/opdefs/A88168_sev.d index 8695ace..23d7cae 100644 --- a/plugins/arm/v7/opdefs/sev_A88168.d +++ b/plugins/arm/v7/opdefs/A88168_sev.d @@ -23,7 +23,7 @@ @title SEV -@id 167 +@id 161 @desc { diff --git a/plugins/arm/v7/opdefs/shadd16_A88169.d b/plugins/arm/v7/opdefs/A88169_shadd16.d index 0ecbd43..c0f8fd5 100644 --- a/plugins/arm/v7/opdefs/shadd16_A88169.d +++ b/plugins/arm/v7/opdefs/A88169_shadd16.d @@ -23,7 +23,7 @@ @title SHADD16 -@id 168 +@id 162 @desc { diff --git a/plugins/arm/v7/opdefs/asr_A8816.d b/plugins/arm/v7/opdefs/A8816_asr.d index 401c4c5..401c4c5 100644 --- a/plugins/arm/v7/opdefs/asr_A8816.d +++ b/plugins/arm/v7/opdefs/A8816_asr.d diff --git a/plugins/arm/v7/opdefs/shadd8_A88170.d b/plugins/arm/v7/opdefs/A88170_shadd8.d index c1d358a..d08052e 100644 --- a/plugins/arm/v7/opdefs/shadd8_A88170.d +++ b/plugins/arm/v7/opdefs/A88170_shadd8.d @@ -23,7 +23,7 @@ @title SHADD8 -@id 169 +@id 163 @desc { diff --git a/plugins/arm/v7/opdefs/shasx_A88171.d b/plugins/arm/v7/opdefs/A88171_shasx.d index b48ef07..5761f3d 100644 --- a/plugins/arm/v7/opdefs/shasx_A88171.d +++ b/plugins/arm/v7/opdefs/A88171_shasx.d @@ -23,7 +23,7 @@ @title SHASX -@id 170 +@id 164 @desc { diff --git a/plugins/arm/v7/opdefs/shsax_A88172.d b/plugins/arm/v7/opdefs/A88172_shsax.d index f9d0742..af81443 100644 --- a/plugins/arm/v7/opdefs/shsax_A88172.d +++ b/plugins/arm/v7/opdefs/A88172_shsax.d @@ -23,7 +23,7 @@ @title SHSAX -@id 171 +@id 165 @desc { diff --git a/plugins/arm/v7/opdefs/shsub16_A88173.d b/plugins/arm/v7/opdefs/A88173_shsub16.d index 802def4..de01a16 100644 --- a/plugins/arm/v7/opdefs/shsub16_A88173.d +++ b/plugins/arm/v7/opdefs/A88173_shsub16.d @@ -23,7 +23,7 @@ @title SHSUB16 -@id 172 +@id 166 @desc { diff --git a/plugins/arm/v7/opdefs/shsub8_A88174.d b/plugins/arm/v7/opdefs/A88174_shsub8.d index a4113db..e8b6eab 100644 --- a/plugins/arm/v7/opdefs/shsub8_A88174.d +++ b/plugins/arm/v7/opdefs/A88174_shsub8.d @@ -23,7 +23,7 @@ @title SHSUB8 -@id 173 +@id 167 @desc { diff --git a/plugins/arm/v7/opdefs/smla_A88176.d b/plugins/arm/v7/opdefs/A88176_smla.d index b167f82..10d9bcc 100644 --- a/plugins/arm/v7/opdefs/smla_A88176.d +++ b/plugins/arm/v7/opdefs/A88176_smla.d @@ -23,7 +23,7 @@ @title SMLABB, SMLABT, SMLATB, SMLATT -@id 175 +@id 169 @desc { diff --git a/plugins/arm/v7/opdefs/smlad_A88177.d b/plugins/arm/v7/opdefs/A88177_smlad.d index ff62a60..c27b907 100644 --- a/plugins/arm/v7/opdefs/smlad_A88177.d +++ b/plugins/arm/v7/opdefs/A88177_smlad.d @@ -23,7 +23,7 @@ @title SMLAD -@id 176 +@id 170 @desc { diff --git a/plugins/arm/v7/opdefs/smlal_A88178.d b/plugins/arm/v7/opdefs/A88178_smlal.d index 311ae7d..cb1909a 100644 --- a/plugins/arm/v7/opdefs/smlal_A88178.d +++ b/plugins/arm/v7/opdefs/A88178_smlal.d @@ -23,7 +23,7 @@ @title SMLAL -@id 177 +@id 171 @desc { diff --git a/plugins/arm/v7/opdefs/smlal_A88179.d b/plugins/arm/v7/opdefs/A88179_smlal.d index f7ce190..fa09e7c 100644 --- a/plugins/arm/v7/opdefs/smlal_A88179.d +++ b/plugins/arm/v7/opdefs/A88179_smlal.d @@ -23,7 +23,7 @@ @title SMLALBB, SMLALBT, SMLALTB, SMLALTT -@id 178 +@id 172 @desc { diff --git a/plugins/arm/v7/opdefs/asr_A8817.d b/plugins/arm/v7/opdefs/A8817_asr.d index 0ddeae9..0ddeae9 100644 --- a/plugins/arm/v7/opdefs/asr_A8817.d +++ b/plugins/arm/v7/opdefs/A8817_asr.d diff --git a/plugins/arm/v7/opdefs/smlald_A88180.d b/plugins/arm/v7/opdefs/A88180_smlald.d index ed8e718..39a475c 100644 --- a/plugins/arm/v7/opdefs/smlald_A88180.d +++ b/plugins/arm/v7/opdefs/A88180_smlald.d @@ -23,7 +23,7 @@ @title SMLALD -@id 179 +@id 173 @desc { diff --git a/plugins/arm/v7/opdefs/smlaw_A88181.d b/plugins/arm/v7/opdefs/A88181_smlaw.d index d9b8918..d7aaa7f 100644 --- a/plugins/arm/v7/opdefs/smlaw_A88181.d +++ b/plugins/arm/v7/opdefs/A88181_smlaw.d @@ -23,7 +23,7 @@ @title SMLAWB, SMLAWT -@id 180 +@id 174 @desc { diff --git a/plugins/arm/v7/opdefs/smlsd_A88182.d b/plugins/arm/v7/opdefs/A88182_smlsd.d index e24eb18..90a2ca7 100644 --- a/plugins/arm/v7/opdefs/smlsd_A88182.d +++ b/plugins/arm/v7/opdefs/A88182_smlsd.d @@ -23,7 +23,7 @@ @title SMLSD -@id 181 +@id 175 @desc { diff --git a/plugins/arm/v7/opdefs/smlsld_A88183.d b/plugins/arm/v7/opdefs/A88183_smlsld.d index 2b82705..bca92d9 100644 --- a/plugins/arm/v7/opdefs/smlsld_A88183.d +++ b/plugins/arm/v7/opdefs/A88183_smlsld.d @@ -23,7 +23,7 @@ @title SMLSLD -@id 182 +@id 176 @desc { diff --git a/plugins/arm/v7/opdefs/smmla_A88184.d b/plugins/arm/v7/opdefs/A88184_smmla.d index a025895..a805bff 100644 --- a/plugins/arm/v7/opdefs/smmla_A88184.d +++ b/plugins/arm/v7/opdefs/A88184_smmla.d @@ -23,7 +23,7 @@ @title SMMLA -@id 183 +@id 177 @desc { diff --git a/plugins/arm/v7/opdefs/smmls_A88185.d b/plugins/arm/v7/opdefs/A88185_smmls.d index 18bd82c..e195b3b 100644 --- a/plugins/arm/v7/opdefs/smmls_A88185.d +++ b/plugins/arm/v7/opdefs/A88185_smmls.d @@ -23,7 +23,7 @@ @title SMMLS -@id 184 +@id 178 @desc { diff --git a/plugins/arm/v7/opdefs/smmul_A88186.d b/plugins/arm/v7/opdefs/A88186_smmul.d index f1b2579..31ed01d 100644 --- a/plugins/arm/v7/opdefs/smmul_A88186.d +++ b/plugins/arm/v7/opdefs/A88186_smmul.d @@ -23,7 +23,7 @@ @title SMMUL -@id 185 +@id 179 @desc { diff --git a/plugins/arm/v7/opdefs/smuad_A88187.d b/plugins/arm/v7/opdefs/A88187_smuad.d index c5fc1e8..47d4d9e 100644 --- a/plugins/arm/v7/opdefs/smuad_A88187.d +++ b/plugins/arm/v7/opdefs/A88187_smuad.d @@ -23,7 +23,7 @@ @title SMUAD -@id 186 +@id 180 @desc { diff --git a/plugins/arm/v7/opdefs/smul_A88188.d b/plugins/arm/v7/opdefs/A88188_smul.d index 18d8631..6d01041 100644 --- a/plugins/arm/v7/opdefs/smul_A88188.d +++ b/plugins/arm/v7/opdefs/A88188_smul.d @@ -23,7 +23,7 @@ @title SMULBB, SMULBT, SMULTB, SMULTT -@id 187 +@id 181 @desc { diff --git a/plugins/arm/v7/opdefs/smull_A88189.d b/plugins/arm/v7/opdefs/A88189_smull.d index 1903894..35e1d46 100644 --- a/plugins/arm/v7/opdefs/smull_A88189.d +++ b/plugins/arm/v7/opdefs/A88189_smull.d @@ -23,7 +23,7 @@ @title SMULL -@id 188 +@id 182 @desc { diff --git a/plugins/arm/v7/opdefs/b_A8818.d b/plugins/arm/v7/opdefs/A8818_b.d index d10b297..d10b297 100644 --- a/plugins/arm/v7/opdefs/b_A8818.d +++ b/plugins/arm/v7/opdefs/A8818_b.d diff --git a/plugins/arm/v7/opdefs/smulw_A88190.d b/plugins/arm/v7/opdefs/A88190_smulw.d index 5b5d5d3..8c3a2e1 100644 --- a/plugins/arm/v7/opdefs/smulw_A88190.d +++ b/plugins/arm/v7/opdefs/A88190_smulw.d @@ -23,7 +23,7 @@ @title SMULWB, SMULWT -@id 189 +@id 183 @desc { diff --git a/plugins/arm/v7/opdefs/smusd_A88191.d b/plugins/arm/v7/opdefs/A88191_smusd.d index 7ab2e6d..d6f8aed 100644 --- a/plugins/arm/v7/opdefs/smusd_A88191.d +++ b/plugins/arm/v7/opdefs/A88191_smusd.d @@ -23,7 +23,7 @@ @title SMUSD -@id 190 +@id 184 @desc { diff --git a/plugins/arm/v7/opdefs/ssat_A88193.d b/plugins/arm/v7/opdefs/A88193_ssat.d index 835b80f..e381f92 100644 --- a/plugins/arm/v7/opdefs/ssat_A88193.d +++ b/plugins/arm/v7/opdefs/A88193_ssat.d @@ -23,7 +23,7 @@ @title SSAT -@id 192 +@id 186 @desc { diff --git a/plugins/arm/v7/opdefs/ssat16_A88194.d b/plugins/arm/v7/opdefs/A88194_ssat16.d index 6cae060..02c52df 100644 --- a/plugins/arm/v7/opdefs/ssat16_A88194.d +++ b/plugins/arm/v7/opdefs/A88194_ssat16.d @@ -23,7 +23,7 @@ @title SSAT16 -@id 193 +@id 187 @desc { diff --git a/plugins/arm/v7/opdefs/ssax_A88195.d b/plugins/arm/v7/opdefs/A88195_ssax.d index be5e94a..257be5e 100644 --- a/plugins/arm/v7/opdefs/ssax_A88195.d +++ b/plugins/arm/v7/opdefs/A88195_ssax.d @@ -23,7 +23,7 @@ @title SSAX -@id 194 +@id 188 @desc { diff --git a/plugins/arm/v7/opdefs/ssub16_A88196.d b/plugins/arm/v7/opdefs/A88196_ssub16.d index b3a1935..54ed2dd 100644 --- a/plugins/arm/v7/opdefs/ssub16_A88196.d +++ b/plugins/arm/v7/opdefs/A88196_ssub16.d @@ -23,7 +23,7 @@ @title SSUB16 -@id 195 +@id 189 @desc { diff --git a/plugins/arm/v7/opdefs/ssub8_A88197.d b/plugins/arm/v7/opdefs/A88197_ssub8.d index b7b9d9c..43f32ba 100644 --- a/plugins/arm/v7/opdefs/ssub8_A88197.d +++ b/plugins/arm/v7/opdefs/A88197_ssub8.d @@ -23,7 +23,7 @@ @title SSUB8 -@id 196 +@id 190 @desc { diff --git a/plugins/arm/v7/opdefs/stc_A88198.d b/plugins/arm/v7/opdefs/A88198_stc.d index 88b68ac..764d611 100644 --- a/plugins/arm/v7/opdefs/stc_A88198.d +++ b/plugins/arm/v7/opdefs/A88198_stc.d @@ -23,7 +23,7 @@ @title STC, STC2 -@id 197 +@id 191 @desc { diff --git a/plugins/arm/v7/opdefs/stm_A88199.d b/plugins/arm/v7/opdefs/A88199_stm.d index 0b519e6..610c757 100644 --- a/plugins/arm/v7/opdefs/stm_A88199.d +++ b/plugins/arm/v7/opdefs/A88199_stm.d @@ -23,7 +23,7 @@ @title STM (STMIA, STMEA) -@id 198 +@id 192 @desc { diff --git a/plugins/arm/v7/opdefs/bfc_A8819.d b/plugins/arm/v7/opdefs/A8819_bfc.d index f8875e5..f8875e5 100644 --- a/plugins/arm/v7/opdefs/bfc_A8819.d +++ b/plugins/arm/v7/opdefs/A8819_bfc.d diff --git a/plugins/arm/v7/opdefs/adc_A881.d b/plugins/arm/v7/opdefs/A881_adc.d index d470638..d470638 100644 --- a/plugins/arm/v7/opdefs/adc_A881.d +++ b/plugins/arm/v7/opdefs/A881_adc.d diff --git a/plugins/arm/v7/opdefs/stmda_A88200.d b/plugins/arm/v7/opdefs/A88200_stmda.d index 8515c74..192f7e9 100644 --- a/plugins/arm/v7/opdefs/stmda_A88200.d +++ b/plugins/arm/v7/opdefs/A88200_stmda.d @@ -23,7 +23,7 @@ @title STMDA (STMED) -@id 199 +@id 193 @desc { diff --git a/plugins/arm/v7/opdefs/stmdb_A88201.d b/plugins/arm/v7/opdefs/A88201_stmdb.d index 52d7bfb..cce1a8b 100644 --- a/plugins/arm/v7/opdefs/stmdb_A88201.d +++ b/plugins/arm/v7/opdefs/A88201_stmdb.d @@ -23,7 +23,7 @@ @title STMDB (STMFD) -@id 200 +@id 194 @desc { diff --git a/plugins/arm/v7/opdefs/stmib_A88202.d b/plugins/arm/v7/opdefs/A88202_stmib.d index 9ce1840..fa881e0 100644 --- a/plugins/arm/v7/opdefs/stmib_A88202.d +++ b/plugins/arm/v7/opdefs/A88202_stmib.d @@ -23,7 +23,7 @@ @title STMIB (STMFA) -@id 201 +@id 195 @desc { diff --git a/plugins/arm/v7/opdefs/str_A88203.d b/plugins/arm/v7/opdefs/A88203_str.d index 591641b..680562f 100644 --- a/plugins/arm/v7/opdefs/str_A88203.d +++ b/plugins/arm/v7/opdefs/A88203_str.d @@ -23,7 +23,7 @@ @title STR (immediate, Thumb) -@id 202 +@id 196 @desc { diff --git a/plugins/arm/v7/opdefs/str_A88204.d b/plugins/arm/v7/opdefs/A88204_str.d index 6182de8..d280fb4 100644 --- a/plugins/arm/v7/opdefs/str_A88204.d +++ b/plugins/arm/v7/opdefs/A88204_str.d @@ -23,7 +23,7 @@ @title STR (immediate, ARM) -@id 203 +@id 197 @desc { diff --git a/plugins/arm/v7/opdefs/str_A88205.d b/plugins/arm/v7/opdefs/A88205_str.d index cbc9f78..0e33f0e 100644 --- a/plugins/arm/v7/opdefs/str_A88205.d +++ b/plugins/arm/v7/opdefs/A88205_str.d @@ -23,7 +23,7 @@ @title STR (register) -@id 204 +@id 198 @desc { diff --git a/plugins/arm/v7/opdefs/strb_A88206.d b/plugins/arm/v7/opdefs/A88206_strb.d index cb7b74a..acceb11 100644 --- a/plugins/arm/v7/opdefs/strb_A88206.d +++ b/plugins/arm/v7/opdefs/A88206_strb.d @@ -23,7 +23,7 @@ @title STRB (immediate, Thumb) -@id 205 +@id 199 @desc { diff --git a/plugins/arm/v7/opdefs/strb_A88207.d b/plugins/arm/v7/opdefs/A88207_strb.d index 3ee78b9..74e43c8 100644 --- a/plugins/arm/v7/opdefs/strb_A88207.d +++ b/plugins/arm/v7/opdefs/A88207_strb.d @@ -23,7 +23,7 @@ @title STRB (immediate, ARM) -@id 206 +@id 200 @desc { diff --git a/plugins/arm/v7/opdefs/strb_A88208.d b/plugins/arm/v7/opdefs/A88208_strb.d index 8ecc962..07801b0 100644 --- a/plugins/arm/v7/opdefs/strb_A88208.d +++ b/plugins/arm/v7/opdefs/A88208_strb.d @@ -23,7 +23,7 @@ @title STRB (register) -@id 207 +@id 201 @desc { diff --git a/plugins/arm/v7/opdefs/strbt_A88209.d b/plugins/arm/v7/opdefs/A88209_strbt.d index ac91408..b7f4bfb 100644 --- a/plugins/arm/v7/opdefs/strbt_A88209.d +++ b/plugins/arm/v7/opdefs/A88209_strbt.d @@ -23,7 +23,7 @@ @title STRBT -@id 208 +@id 202 @desc { diff --git a/plugins/arm/v7/opdefs/bfi_A8820.d b/plugins/arm/v7/opdefs/A8820_bfi.d index aa71aa8..aa71aa8 100644 --- a/plugins/arm/v7/opdefs/bfi_A8820.d +++ b/plugins/arm/v7/opdefs/A8820_bfi.d diff --git a/plugins/arm/v7/opdefs/strd_A88210.d b/plugins/arm/v7/opdefs/A88210_strd.d index 83e7af7..41a9cf8 100644 --- a/plugins/arm/v7/opdefs/strd_A88210.d +++ b/plugins/arm/v7/opdefs/A88210_strd.d @@ -23,7 +23,7 @@ @title STRD (immediate) -@id 209 +@id 203 @desc { diff --git a/plugins/arm/v7/opdefs/strd_A88211.d b/plugins/arm/v7/opdefs/A88211_strd.d index 817d2f1..407dfe3 100644 --- a/plugins/arm/v7/opdefs/strd_A88211.d +++ b/plugins/arm/v7/opdefs/A88211_strd.d @@ -23,7 +23,7 @@ @title STRD (register) -@id 210 +@id 204 @desc { diff --git a/plugins/arm/v7/opdefs/strex_A88212.d b/plugins/arm/v7/opdefs/A88212_strex.d index 8a3ab87..b73767e 100644 --- a/plugins/arm/v7/opdefs/strex_A88212.d +++ b/plugins/arm/v7/opdefs/A88212_strex.d @@ -23,7 +23,7 @@ @title STREX -@id 211 +@id 205 @desc { diff --git a/plugins/arm/v7/opdefs/strexb_A88213.d b/plugins/arm/v7/opdefs/A88213_strexb.d index 45ec2f2..40aa68e 100644 --- a/plugins/arm/v7/opdefs/strexb_A88213.d +++ b/plugins/arm/v7/opdefs/A88213_strexb.d @@ -23,7 +23,7 @@ @title STREXB -@id 212 +@id 206 @desc { diff --git a/plugins/arm/v7/opdefs/strexd_A88214.d b/plugins/arm/v7/opdefs/A88214_strexd.d index ec1f4f6..cef38ed 100644 --- a/plugins/arm/v7/opdefs/strexd_A88214.d +++ b/plugins/arm/v7/opdefs/A88214_strexd.d @@ -23,7 +23,7 @@ @title STREXD -@id 213 +@id 207 @desc { diff --git a/plugins/arm/v7/opdefs/strexh_A88215.d b/plugins/arm/v7/opdefs/A88215_strexh.d index 6ca68ce..3066ddc 100644 --- a/plugins/arm/v7/opdefs/strexh_A88215.d +++ b/plugins/arm/v7/opdefs/A88215_strexh.d @@ -23,7 +23,7 @@ @title STREXH -@id 214 +@id 208 @desc { diff --git a/plugins/arm/v7/opdefs/strh_A88216.d b/plugins/arm/v7/opdefs/A88216_strh.d index fadbcbe..5376406 100644 --- a/plugins/arm/v7/opdefs/strh_A88216.d +++ b/plugins/arm/v7/opdefs/A88216_strh.d @@ -23,7 +23,7 @@ @title STRH (immediate, Thumb) -@id 215 +@id 209 @desc { diff --git a/plugins/arm/v7/opdefs/strh_A88217.d b/plugins/arm/v7/opdefs/A88217_strh.d index 76fc365..b3f7763 100644 --- a/plugins/arm/v7/opdefs/strh_A88217.d +++ b/plugins/arm/v7/opdefs/A88217_strh.d @@ -23,7 +23,7 @@ @title STRH (immediate, ARM) -@id 216 +@id 210 @desc { diff --git a/plugins/arm/v7/opdefs/strh_A88218.d b/plugins/arm/v7/opdefs/A88218_strh.d index 0d222a8..7a5a23b 100644 --- a/plugins/arm/v7/opdefs/strh_A88218.d +++ b/plugins/arm/v7/opdefs/A88218_strh.d @@ -23,7 +23,7 @@ @title STRH (register) -@id 217 +@id 211 @desc { diff --git a/plugins/arm/v7/opdefs/strht_A88219.d b/plugins/arm/v7/opdefs/A88219_strht.d index a15db3a..5ed4f1b 100644 --- a/plugins/arm/v7/opdefs/strht_A88219.d +++ b/plugins/arm/v7/opdefs/A88219_strht.d @@ -23,7 +23,7 @@ @title STRHT -@id 218 +@id 212 @desc { diff --git a/plugins/arm/v7/opdefs/bic_A8821.d b/plugins/arm/v7/opdefs/A8821_bic.d index 59d4bb0..59d4bb0 100644 --- a/plugins/arm/v7/opdefs/bic_A8821.d +++ b/plugins/arm/v7/opdefs/A8821_bic.d diff --git a/plugins/arm/v7/opdefs/strt_A88220.d b/plugins/arm/v7/opdefs/A88220_strt.d index 0750a0d..feb9927 100644 --- a/plugins/arm/v7/opdefs/strt_A88220.d +++ b/plugins/arm/v7/opdefs/A88220_strt.d @@ -23,7 +23,7 @@ @title STRT -@id 219 +@id 213 @desc { diff --git a/plugins/arm/v7/opdefs/sub_A88221.d b/plugins/arm/v7/opdefs/A88221_sub.d index 30ccb68..415c99e 100644 --- a/plugins/arm/v7/opdefs/sub_A88221.d +++ b/plugins/arm/v7/opdefs/A88221_sub.d @@ -23,7 +23,7 @@ @title SUB (immediate, Thumb) -@id 220 +@id 214 @desc { diff --git a/plugins/arm/v7/opdefs/sub_A88222.d b/plugins/arm/v7/opdefs/A88222_sub.d index 74bb4e0..14489a7 100644 --- a/plugins/arm/v7/opdefs/sub_A88222.d +++ b/plugins/arm/v7/opdefs/A88222_sub.d @@ -23,7 +23,7 @@ @title SUB (immediate, ARM) -@id 221 +@id 215 @desc { diff --git a/plugins/arm/v7/opdefs/sub_A88223.d b/plugins/arm/v7/opdefs/A88223_sub.d index 1498889..585fa60 100644 --- a/plugins/arm/v7/opdefs/sub_A88223.d +++ b/plugins/arm/v7/opdefs/A88223_sub.d @@ -23,7 +23,7 @@ @title SUB (register) -@id 222 +@id 216 @desc { diff --git a/plugins/arm/v7/opdefs/sub_A88224.d b/plugins/arm/v7/opdefs/A88224_sub.d index e52e818..bf7cee4 100644 --- a/plugins/arm/v7/opdefs/sub_A88224.d +++ b/plugins/arm/v7/opdefs/A88224_sub.d @@ -23,7 +23,7 @@ @title SUB (register-shifted register) -@id 223 +@id 217 @desc { diff --git a/plugins/arm/v7/opdefs/sub_A88225.d b/plugins/arm/v7/opdefs/A88225_sub.d index 3248f19..c8b95d4 100644 --- a/plugins/arm/v7/opdefs/sub_A88225.d +++ b/plugins/arm/v7/opdefs/A88225_sub.d @@ -23,7 +23,7 @@ @title SUB (SP minus immediate) -@id 224 +@id 218 @desc { diff --git a/plugins/arm/v7/opdefs/sub_A88226.d b/plugins/arm/v7/opdefs/A88226_sub.d index cdbd277..3f42232 100644 --- a/plugins/arm/v7/opdefs/sub_A88226.d +++ b/plugins/arm/v7/opdefs/A88226_sub.d @@ -23,7 +23,7 @@ @title SUB (SP minus register) -@id 225 +@id 219 @desc { diff --git a/plugins/arm/v7/opdefs/svc_A88228.d b/plugins/arm/v7/opdefs/A88228_svc.d index d9f709e..c74f818 100644 --- a/plugins/arm/v7/opdefs/svc_A88228.d +++ b/plugins/arm/v7/opdefs/A88228_svc.d @@ -23,7 +23,7 @@ @title SVC (previously SWI) -@id 227 +@id 221 @desc { diff --git a/plugins/arm/v7/opdefs/swp_A88229.d b/plugins/arm/v7/opdefs/A88229_swp.d index 09a8110..6d8261a 100644 --- a/plugins/arm/v7/opdefs/swp_A88229.d +++ b/plugins/arm/v7/opdefs/A88229_swp.d @@ -23,7 +23,7 @@ @title SWP, SWPB -@id 228 +@id 222 @desc { diff --git a/plugins/arm/v7/opdefs/bic_A8822.d b/plugins/arm/v7/opdefs/A8822_bic.d index f4746b9..f4746b9 100644 --- a/plugins/arm/v7/opdefs/bic_A8822.d +++ b/plugins/arm/v7/opdefs/A8822_bic.d diff --git a/plugins/arm/v7/opdefs/sxtab_A88230.d b/plugins/arm/v7/opdefs/A88230_sxtab.d index ccd1859..138c0a5 100644 --- a/plugins/arm/v7/opdefs/sxtab_A88230.d +++ b/plugins/arm/v7/opdefs/A88230_sxtab.d @@ -23,7 +23,7 @@ @title SXTAB -@id 229 +@id 223 @desc { diff --git a/plugins/arm/v7/opdefs/sxtab16_A88231.d b/plugins/arm/v7/opdefs/A88231_sxtab16.d index f60a624..6fac4ba 100644 --- a/plugins/arm/v7/opdefs/sxtab16_A88231.d +++ b/plugins/arm/v7/opdefs/A88231_sxtab16.d @@ -23,7 +23,7 @@ @title SXTAB16 -@id 230 +@id 224 @desc { diff --git a/plugins/arm/v7/opdefs/sxtah_A88232.d b/plugins/arm/v7/opdefs/A88232_sxtah.d index e1d4135..d2170b6 100644 --- a/plugins/arm/v7/opdefs/sxtah_A88232.d +++ b/plugins/arm/v7/opdefs/A88232_sxtah.d @@ -23,7 +23,7 @@ @title SXTAH -@id 231 +@id 225 @desc { diff --git a/plugins/arm/v7/opdefs/sxtb_A88233.d b/plugins/arm/v7/opdefs/A88233_sxtb.d index 99b43c0..84d7ed4 100644 --- a/plugins/arm/v7/opdefs/sxtb_A88233.d +++ b/plugins/arm/v7/opdefs/A88233_sxtb.d @@ -23,7 +23,7 @@ @title SXTB -@id 232 +@id 226 @desc { diff --git a/plugins/arm/v7/opdefs/sxtb16_A88234.d b/plugins/arm/v7/opdefs/A88234_sxtb16.d index fe9fb17..5f690be 100644 --- a/plugins/arm/v7/opdefs/sxtb16_A88234.d +++ b/plugins/arm/v7/opdefs/A88234_sxtb16.d @@ -23,7 +23,7 @@ @title SXTB16 -@id 233 +@id 227 @desc { diff --git a/plugins/arm/v7/opdefs/sxth_A88235.d b/plugins/arm/v7/opdefs/A88235_sxth.d index 76e09d2..c75cdf3 100644 --- a/plugins/arm/v7/opdefs/sxth_A88235.d +++ b/plugins/arm/v7/opdefs/A88235_sxth.d @@ -23,7 +23,7 @@ @title SXTH -@id 234 +@id 228 @desc { diff --git a/plugins/arm/v7/opdefs/teq_A88237.d b/plugins/arm/v7/opdefs/A88237_teq.d index 9972918..148d76d 100644 --- a/plugins/arm/v7/opdefs/teq_A88237.d +++ b/plugins/arm/v7/opdefs/A88237_teq.d @@ -23,7 +23,7 @@ @title TEQ (immediate) -@id 236 +@id 229 @desc { diff --git a/plugins/arm/v7/opdefs/teq_A88238.d b/plugins/arm/v7/opdefs/A88238_teq.d index def4bc4..2fc99bb 100644 --- a/plugins/arm/v7/opdefs/teq_A88238.d +++ b/plugins/arm/v7/opdefs/A88238_teq.d @@ -23,7 +23,7 @@ @title TEQ (register) -@id 237 +@id 230 @desc { diff --git a/plugins/arm/v7/opdefs/teq_A88239.d b/plugins/arm/v7/opdefs/A88239_teq.d index 3c6ab33..806328e 100644 --- a/plugins/arm/v7/opdefs/teq_A88239.d +++ b/plugins/arm/v7/opdefs/A88239_teq.d @@ -23,7 +23,7 @@ @title TEQ (register-shifted register) -@id 238 +@id 231 @desc { diff --git a/plugins/arm/v7/opdefs/bic_A8823.d b/plugins/arm/v7/opdefs/A8823_bic.d index fb57338..fb57338 100644 --- a/plugins/arm/v7/opdefs/bic_A8823.d +++ b/plugins/arm/v7/opdefs/A8823_bic.d diff --git a/plugins/arm/v7/opdefs/tst_A88240.d b/plugins/arm/v7/opdefs/A88240_tst.d index 125febc..d1258d4 100644 --- a/plugins/arm/v7/opdefs/tst_A88240.d +++ b/plugins/arm/v7/opdefs/A88240_tst.d @@ -23,7 +23,7 @@ @title TST (immediate) -@id 239 +@id 232 @desc { diff --git a/plugins/arm/v7/opdefs/tst_A88241.d b/plugins/arm/v7/opdefs/A88241_tst.d index 1be33f8..98e820e 100644 --- a/plugins/arm/v7/opdefs/tst_A88241.d +++ b/plugins/arm/v7/opdefs/A88241_tst.d @@ -23,7 +23,7 @@ @title TST (register) -@id 240 +@id 233 @desc { diff --git a/plugins/arm/v7/opdefs/tst_A88242.d b/plugins/arm/v7/opdefs/A88242_tst.d index 04bfdd2..ef1c4df 100644 --- a/plugins/arm/v7/opdefs/tst_A88242.d +++ b/plugins/arm/v7/opdefs/A88242_tst.d @@ -23,7 +23,7 @@ @title TST (register-shifted register) -@id 241 +@id 234 @desc { diff --git a/plugins/arm/v7/opdefs/uadd16_A88243.d b/plugins/arm/v7/opdefs/A88243_uadd16.d index ba9ad7a..3a220d2 100644 --- a/plugins/arm/v7/opdefs/uadd16_A88243.d +++ b/plugins/arm/v7/opdefs/A88243_uadd16.d @@ -23,7 +23,7 @@ @title UADD16 -@id 242 +@id 235 @desc { diff --git a/plugins/arm/v7/opdefs/uadd8_A88244.d b/plugins/arm/v7/opdefs/A88244_uadd8.d index bf8e18d..a2d4a97 100644 --- a/plugins/arm/v7/opdefs/uadd8_A88244.d +++ b/plugins/arm/v7/opdefs/A88244_uadd8.d @@ -23,7 +23,7 @@ @title UADD8 -@id 243 +@id 236 @desc { diff --git a/plugins/arm/v7/opdefs/uasx_A88245.d b/plugins/arm/v7/opdefs/A88245_uasx.d index b802f43..eca3303 100644 --- a/plugins/arm/v7/opdefs/uasx_A88245.d +++ b/plugins/arm/v7/opdefs/A88245_uasx.d @@ -23,7 +23,7 @@ @title UASX -@id 244 +@id 237 @desc { diff --git a/plugins/arm/v7/opdefs/ubfx_A88246.d b/plugins/arm/v7/opdefs/A88246_ubfx.d index 3fe25c7..cd39cb3 100644 --- a/plugins/arm/v7/opdefs/ubfx_A88246.d +++ b/plugins/arm/v7/opdefs/A88246_ubfx.d @@ -23,7 +23,7 @@ @title UBFX -@id 245 +@id 238 @desc { diff --git a/plugins/arm/v7/opdefs/udf_A88247.d b/plugins/arm/v7/opdefs/A88247_udf.d index 500e714..f6aeb3a 100644 --- a/plugins/arm/v7/opdefs/udf_A88247.d +++ b/plugins/arm/v7/opdefs/A88247_udf.d @@ -23,7 +23,7 @@ @title UDF -@id 246 +@id 239 @desc { diff --git a/plugins/arm/v7/opdefs/udiv_A88248.d b/plugins/arm/v7/opdefs/A88248_udiv.d index 27ef02b..b142ffb 100644 --- a/plugins/arm/v7/opdefs/udiv_A88248.d +++ b/plugins/arm/v7/opdefs/A88248_udiv.d @@ -23,7 +23,7 @@ @title UDIV -@id 247 +@id 240 @desc { diff --git a/plugins/arm/v7/opdefs/uhadd16_A88249.d b/plugins/arm/v7/opdefs/A88249_uhadd16.d index 379b0e9..4d220ae 100644 --- a/plugins/arm/v7/opdefs/uhadd16_A88249.d +++ b/plugins/arm/v7/opdefs/A88249_uhadd16.d @@ -23,7 +23,7 @@ @title UHADD16 -@id 248 +@id 241 @desc { diff --git a/plugins/arm/v7/opdefs/bkpt_A8824.d b/plugins/arm/v7/opdefs/A8824_bkpt.d index e9c9f4b..e9c9f4b 100644 --- a/plugins/arm/v7/opdefs/bkpt_A8824.d +++ b/plugins/arm/v7/opdefs/A8824_bkpt.d diff --git a/plugins/arm/v7/opdefs/uhadd8_A88250.d b/plugins/arm/v7/opdefs/A88250_uhadd8.d index 1f4a626..e28cb14 100644 --- a/plugins/arm/v7/opdefs/uhadd8_A88250.d +++ b/plugins/arm/v7/opdefs/A88250_uhadd8.d @@ -23,7 +23,7 @@ @title UHADD8 -@id 249 +@id 242 @desc { diff --git a/plugins/arm/v7/opdefs/uhasx_A88251.d b/plugins/arm/v7/opdefs/A88251_uhasx.d index 148d120..6aa7d7e 100644 --- a/plugins/arm/v7/opdefs/uhasx_A88251.d +++ b/plugins/arm/v7/opdefs/A88251_uhasx.d @@ -23,7 +23,7 @@ @title UHASX -@id 250 +@id 243 @desc { diff --git a/plugins/arm/v7/opdefs/uhsax_A88252.d b/plugins/arm/v7/opdefs/A88252_uhsax.d index eb7dd83..6639e6c 100644 --- a/plugins/arm/v7/opdefs/uhsax_A88252.d +++ b/plugins/arm/v7/opdefs/A88252_uhsax.d @@ -23,7 +23,7 @@ @title UHSAX -@id 251 +@id 244 @desc { diff --git a/plugins/arm/v7/opdefs/uhsub16_A88253.d b/plugins/arm/v7/opdefs/A88253_uhsub16.d index f526389..c64a424 100644 --- a/plugins/arm/v7/opdefs/uhsub16_A88253.d +++ b/plugins/arm/v7/opdefs/A88253_uhsub16.d @@ -23,7 +23,7 @@ @title UHSUB16 -@id 252 +@id 245 @desc { diff --git a/plugins/arm/v7/opdefs/uhsub8_A88254.d b/plugins/arm/v7/opdefs/A88254_uhsub8.d index a2d27ac..1e1d7d1 100644 --- a/plugins/arm/v7/opdefs/uhsub8_A88254.d +++ b/plugins/arm/v7/opdefs/A88254_uhsub8.d @@ -23,7 +23,7 @@ @title UHSUB8 -@id 253 +@id 246 @desc { diff --git a/plugins/arm/v7/opdefs/umaal_A88255.d b/plugins/arm/v7/opdefs/A88255_umaal.d index 6e5f7e9..69623a2 100644 --- a/plugins/arm/v7/opdefs/umaal_A88255.d +++ b/plugins/arm/v7/opdefs/A88255_umaal.d @@ -23,7 +23,7 @@ @title UMAAL -@id 254 +@id 247 @desc { diff --git a/plugins/arm/v7/opdefs/umlal_A88256.d b/plugins/arm/v7/opdefs/A88256_umlal.d index 0eccc37..64d7cc1 100644 --- a/plugins/arm/v7/opdefs/umlal_A88256.d +++ b/plugins/arm/v7/opdefs/A88256_umlal.d @@ -23,7 +23,7 @@ @title UMLAL -@id 255 +@id 248 @desc { diff --git a/plugins/arm/v7/opdefs/umull_A88257.d b/plugins/arm/v7/opdefs/A88257_umull.d index b016016..3ded23c 100644 --- a/plugins/arm/v7/opdefs/umull_A88257.d +++ b/plugins/arm/v7/opdefs/A88257_umull.d @@ -23,7 +23,7 @@ @title UMULL -@id 256 +@id 249 @desc { diff --git a/plugins/arm/v7/opdefs/uqadd16_A88258.d b/plugins/arm/v7/opdefs/A88258_uqadd16.d index ed4c130..bc37e8c 100644 --- a/plugins/arm/v7/opdefs/uqadd16_A88258.d +++ b/plugins/arm/v7/opdefs/A88258_uqadd16.d @@ -23,7 +23,7 @@ @title UQADD16 -@id 257 +@id 250 @desc { diff --git a/plugins/arm/v7/opdefs/uqadd8_A88259.d b/plugins/arm/v7/opdefs/A88259_uqadd8.d index ca6054d..349b1b8 100644 --- a/plugins/arm/v7/opdefs/uqadd8_A88259.d +++ b/plugins/arm/v7/opdefs/A88259_uqadd8.d @@ -23,7 +23,7 @@ @title UQADD8 -@id 258 +@id 251 @desc { diff --git a/plugins/arm/v7/opdefs/bl_A8825.d b/plugins/arm/v7/opdefs/A8825_bl.d index 221bbc5..221bbc5 100644 --- a/plugins/arm/v7/opdefs/bl_A8825.d +++ b/plugins/arm/v7/opdefs/A8825_bl.d diff --git a/plugins/arm/v7/opdefs/uqasx_A88260.d b/plugins/arm/v7/opdefs/A88260_uqasx.d index 12930a2..4733d58 100644 --- a/plugins/arm/v7/opdefs/uqasx_A88260.d +++ b/plugins/arm/v7/opdefs/A88260_uqasx.d @@ -23,7 +23,7 @@ @title UQASX -@id 259 +@id 252 @desc { diff --git a/plugins/arm/v7/opdefs/uqsax_A88261.d b/plugins/arm/v7/opdefs/A88261_uqsax.d index d39f0f4..92bef77 100644 --- a/plugins/arm/v7/opdefs/uqsax_A88261.d +++ b/plugins/arm/v7/opdefs/A88261_uqsax.d @@ -23,7 +23,7 @@ @title UQSAX -@id 260 +@id 253 @desc { diff --git a/plugins/arm/v7/opdefs/uqsub16_A88262.d b/plugins/arm/v7/opdefs/A88262_uqsub16.d index cd77b0a..9b9611d 100644 --- a/plugins/arm/v7/opdefs/uqsub16_A88262.d +++ b/plugins/arm/v7/opdefs/A88262_uqsub16.d @@ -23,7 +23,7 @@ @title UQSUB16 -@id 261 +@id 254 @desc { diff --git a/plugins/arm/v7/opdefs/uqsub8_A88263.d b/plugins/arm/v7/opdefs/A88263_uqsub8.d index aa42724..ea041bc 100644 --- a/plugins/arm/v7/opdefs/uqsub8_A88263.d +++ b/plugins/arm/v7/opdefs/A88263_uqsub8.d @@ -23,7 +23,7 @@ @title UQSUB8 -@id 262 +@id 255 @desc { diff --git a/plugins/arm/v7/opdefs/usad8_A88264.d b/plugins/arm/v7/opdefs/A88264_usad8.d index 286ba2c..d804b6f 100644 --- a/plugins/arm/v7/opdefs/usad8_A88264.d +++ b/plugins/arm/v7/opdefs/A88264_usad8.d @@ -23,7 +23,7 @@ @title USAD8 -@id 263 +@id 256 @desc { diff --git a/plugins/arm/v7/opdefs/usada8_A88265.d b/plugins/arm/v7/opdefs/A88265_usada8.d index bce78eb..faace0c 100644 --- a/plugins/arm/v7/opdefs/usada8_A88265.d +++ b/plugins/arm/v7/opdefs/A88265_usada8.d @@ -23,7 +23,7 @@ @title USADA8 -@id 264 +@id 257 @desc { diff --git a/plugins/arm/v7/opdefs/usat_A88266.d b/plugins/arm/v7/opdefs/A88266_usat.d index d2a2819..7275113 100644 --- a/plugins/arm/v7/opdefs/usat_A88266.d +++ b/plugins/arm/v7/opdefs/A88266_usat.d @@ -23,7 +23,7 @@ @title USAT -@id 265 +@id 258 @desc { diff --git a/plugins/arm/v7/opdefs/usat16_A88267.d b/plugins/arm/v7/opdefs/A88267_usat16.d index d36f52f..eaaaa3f 100644 --- a/plugins/arm/v7/opdefs/usat16_A88267.d +++ b/plugins/arm/v7/opdefs/A88267_usat16.d @@ -23,7 +23,7 @@ @title USAT16 -@id 266 +@id 259 @desc { diff --git a/plugins/arm/v7/opdefs/usax_A88268.d b/plugins/arm/v7/opdefs/A88268_usax.d index d85083c..89731f1 100644 --- a/plugins/arm/v7/opdefs/usax_A88268.d +++ b/plugins/arm/v7/opdefs/A88268_usax.d @@ -23,7 +23,7 @@ @title USAX -@id 267 +@id 260 @desc { diff --git a/plugins/arm/v7/opdefs/usub16_A88269.d b/plugins/arm/v7/opdefs/A88269_usub16.d index 6a9a2f5..192d7bf 100644 --- a/plugins/arm/v7/opdefs/usub16_A88269.d +++ b/plugins/arm/v7/opdefs/A88269_usub16.d @@ -23,7 +23,7 @@ @title USUB16 -@id 268 +@id 261 @desc { diff --git a/plugins/arm/v7/opdefs/blx_A8826.d b/plugins/arm/v7/opdefs/A8826_blx.d index 2c975d3..2c975d3 100644 --- a/plugins/arm/v7/opdefs/blx_A8826.d +++ b/plugins/arm/v7/opdefs/A8826_blx.d diff --git a/plugins/arm/v7/opdefs/usub8_A88270.d b/plugins/arm/v7/opdefs/A88270_usub8.d index 2987469..a2e921e 100644 --- a/plugins/arm/v7/opdefs/usub8_A88270.d +++ b/plugins/arm/v7/opdefs/A88270_usub8.d @@ -23,7 +23,7 @@ @title USUB8 -@id 269 +@id 262 @desc { diff --git a/plugins/arm/v7/opdefs/uxtab_A88271.d b/plugins/arm/v7/opdefs/A88271_uxtab.d index 104d379..f84b7d4 100644 --- a/plugins/arm/v7/opdefs/uxtab_A88271.d +++ b/plugins/arm/v7/opdefs/A88271_uxtab.d @@ -23,7 +23,7 @@ @title UXTAB -@id 270 +@id 263 @desc { diff --git a/plugins/arm/v7/opdefs/uxtab16_A88272.d b/plugins/arm/v7/opdefs/A88272_uxtab16.d index 0cbc980..ac2e47d 100644 --- a/plugins/arm/v7/opdefs/uxtab16_A88272.d +++ b/plugins/arm/v7/opdefs/A88272_uxtab16.d @@ -23,7 +23,7 @@ @title UXTAB16 -@id 271 +@id 264 @desc { diff --git a/plugins/arm/v7/opdefs/uxtah_A88273.d b/plugins/arm/v7/opdefs/A88273_uxtah.d index 9e454ac..9a30d32 100644 --- a/plugins/arm/v7/opdefs/uxtah_A88273.d +++ b/plugins/arm/v7/opdefs/A88273_uxtah.d @@ -23,7 +23,7 @@ @title UXTAH -@id 272 +@id 265 @desc { diff --git a/plugins/arm/v7/opdefs/uxtb_A88274.d b/plugins/arm/v7/opdefs/A88274_uxtb.d index 0ac40b6..d2a46ae 100644 --- a/plugins/arm/v7/opdefs/uxtb_A88274.d +++ b/plugins/arm/v7/opdefs/A88274_uxtb.d @@ -23,7 +23,7 @@ @title UXTB -@id 273 +@id 266 @desc { diff --git a/plugins/arm/v7/opdefs/uxtb16_A88275.d b/plugins/arm/v7/opdefs/A88275_uxtb16.d index 5d67eb8..f1b3384 100644 --- a/plugins/arm/v7/opdefs/uxtb16_A88275.d +++ b/plugins/arm/v7/opdefs/A88275_uxtb16.d @@ -23,7 +23,7 @@ @title UXTB16 -@id 274 +@id 267 @desc { diff --git a/plugins/arm/v7/opdefs/uxth_A88276.d b/plugins/arm/v7/opdefs/A88276_uxth.d index 3ebf512..90c3310 100644 --- a/plugins/arm/v7/opdefs/uxth_A88276.d +++ b/plugins/arm/v7/opdefs/A88276_uxth.d @@ -23,7 +23,7 @@ @title UXTH -@id 275 +@id 268 @desc { diff --git a/plugins/arm/v7/opdefs/bx_A8827.d b/plugins/arm/v7/opdefs/A8827_bx.d index 64ad628..64ad628 100644 --- a/plugins/arm/v7/opdefs/bx_A8827.d +++ b/plugins/arm/v7/opdefs/A8827_bx.d diff --git a/plugins/arm/v7/opdefs/bxj_A8828.d b/plugins/arm/v7/opdefs/A8828_bxj.d index 7c6ddb5..7c6ddb5 100644 --- a/plugins/arm/v7/opdefs/bxj_A8828.d +++ b/plugins/arm/v7/opdefs/A8828_bxj.d diff --git a/plugins/arm/v7/opdefs/cb_A8829.d b/plugins/arm/v7/opdefs/A8829_cb.d index 5e004b7..5e004b7 100644 --- a/plugins/arm/v7/opdefs/cb_A8829.d +++ b/plugins/arm/v7/opdefs/A8829_cb.d diff --git a/plugins/arm/v7/opdefs/adc_A882.d b/plugins/arm/v7/opdefs/A882_adc.d index aaca002..aaca002 100644 --- a/plugins/arm/v7/opdefs/adc_A882.d +++ b/plugins/arm/v7/opdefs/A882_adc.d diff --git a/plugins/arm/v7/opdefs/cdp_A8830.d b/plugins/arm/v7/opdefs/A8830_cdp.d index 32fc2f1..32fc2f1 100644 --- a/plugins/arm/v7/opdefs/cdp_A8830.d +++ b/plugins/arm/v7/opdefs/A8830_cdp.d diff --git a/plugins/arm/v7/opdefs/clrex_A8832.d b/plugins/arm/v7/opdefs/A8832_clrex.d index 5edfb58..5edfb58 100644 --- a/plugins/arm/v7/opdefs/clrex_A8832.d +++ b/plugins/arm/v7/opdefs/A8832_clrex.d diff --git a/plugins/arm/v7/opdefs/clz_A8833.d b/plugins/arm/v7/opdefs/A8833_clz.d index 7cbb51c..7cbb51c 100644 --- a/plugins/arm/v7/opdefs/clz_A8833.d +++ b/plugins/arm/v7/opdefs/A8833_clz.d diff --git a/plugins/arm/v7/opdefs/cmn_A8834.d b/plugins/arm/v7/opdefs/A8834_cmn.d index 45462c7..45462c7 100644 --- a/plugins/arm/v7/opdefs/cmn_A8834.d +++ b/plugins/arm/v7/opdefs/A8834_cmn.d diff --git a/plugins/arm/v7/opdefs/cmn_A8835.d b/plugins/arm/v7/opdefs/A8835_cmn.d index 55c281c..55c281c 100644 --- a/plugins/arm/v7/opdefs/cmn_A8835.d +++ b/plugins/arm/v7/opdefs/A8835_cmn.d diff --git a/plugins/arm/v7/opdefs/cmn_A8836.d b/plugins/arm/v7/opdefs/A8836_cmn.d index e1052a8..e1052a8 100644 --- a/plugins/arm/v7/opdefs/cmn_A8836.d +++ b/plugins/arm/v7/opdefs/A8836_cmn.d diff --git a/plugins/arm/v7/opdefs/cmp_A8837.d b/plugins/arm/v7/opdefs/A8837_cmp.d index 261467b..261467b 100644 --- a/plugins/arm/v7/opdefs/cmp_A8837.d +++ b/plugins/arm/v7/opdefs/A8837_cmp.d diff --git a/plugins/arm/v7/opdefs/cmp_A8838.d b/plugins/arm/v7/opdefs/A8838_cmp.d index 401e4ac..401e4ac 100644 --- a/plugins/arm/v7/opdefs/cmp_A8838.d +++ b/plugins/arm/v7/opdefs/A8838_cmp.d diff --git a/plugins/arm/v7/opdefs/cmp_A8839.d b/plugins/arm/v7/opdefs/A8839_cmp.d index 6bdafb3..6bdafb3 100644 --- a/plugins/arm/v7/opdefs/cmp_A8839.d +++ b/plugins/arm/v7/opdefs/A8839_cmp.d diff --git a/plugins/arm/v7/opdefs/adc_A883.d b/plugins/arm/v7/opdefs/A883_adc.d index 0270402..0270402 100644 --- a/plugins/arm/v7/opdefs/adc_A883.d +++ b/plugins/arm/v7/opdefs/A883_adc.d diff --git a/plugins/arm/v7/opdefs/wfe_A88424.d b/plugins/arm/v7/opdefs/A88424_wfe.d index dc0f72e..6c245a2 100644 --- a/plugins/arm/v7/opdefs/wfe_A88424.d +++ b/plugins/arm/v7/opdefs/A88424_wfe.d @@ -23,7 +23,7 @@ @title WFE -@id 423 +@id 349 @desc { diff --git a/plugins/arm/v7/opdefs/wfi_A88425.d b/plugins/arm/v7/opdefs/A88425_wfi.d index 961c293..ef3c73b 100644 --- a/plugins/arm/v7/opdefs/wfi_A88425.d +++ b/plugins/arm/v7/opdefs/A88425_wfi.d @@ -23,7 +23,7 @@ @title WFI -@id 424 +@id 350 @desc { diff --git a/plugins/arm/v7/opdefs/yield_A88426.d b/plugins/arm/v7/opdefs/A88426_yield.d index 66e8f39..f782682 100644 --- a/plugins/arm/v7/opdefs/yield_A88426.d +++ b/plugins/arm/v7/opdefs/A88426_yield.d @@ -23,7 +23,7 @@ @title YIELD -@id 425 +@id 351 @desc { diff --git a/plugins/arm/v7/opdefs/dbg_A8842.d b/plugins/arm/v7/opdefs/A8842_dbg.d index d053ca3..d053ca3 100644 --- a/plugins/arm/v7/opdefs/dbg_A8842.d +++ b/plugins/arm/v7/opdefs/A8842_dbg.d diff --git a/plugins/arm/v7/opdefs/dmb_A8843.d b/plugins/arm/v7/opdefs/A8843_dmb.d index b8d9717..b8d9717 100644 --- a/plugins/arm/v7/opdefs/dmb_A8843.d +++ b/plugins/arm/v7/opdefs/A8843_dmb.d diff --git a/plugins/arm/v7/opdefs/dsb_A8844.d b/plugins/arm/v7/opdefs/A8844_dsb.d index e8ede64..e8ede64 100644 --- a/plugins/arm/v7/opdefs/dsb_A8844.d +++ b/plugins/arm/v7/opdefs/A8844_dsb.d diff --git a/plugins/arm/v7/opdefs/eor_A8846.d b/plugins/arm/v7/opdefs/A8846_eor.d index dfafa9b..dfafa9b 100644 --- a/plugins/arm/v7/opdefs/eor_A8846.d +++ b/plugins/arm/v7/opdefs/A8846_eor.d diff --git a/plugins/arm/v7/opdefs/eor_A8847.d b/plugins/arm/v7/opdefs/A8847_eor.d index f6e3387..f6e3387 100644 --- a/plugins/arm/v7/opdefs/eor_A8847.d +++ b/plugins/arm/v7/opdefs/A8847_eor.d diff --git a/plugins/arm/v7/opdefs/eor_A8848.d b/plugins/arm/v7/opdefs/A8848_eor.d index 94f0e92..94f0e92 100644 --- a/plugins/arm/v7/opdefs/eor_A8848.d +++ b/plugins/arm/v7/opdefs/A8848_eor.d diff --git a/plugins/arm/v7/opdefs/add_A884.d b/plugins/arm/v7/opdefs/A884_add.d index c35685f..c35685f 100644 --- a/plugins/arm/v7/opdefs/add_A884.d +++ b/plugins/arm/v7/opdefs/A884_add.d diff --git a/plugins/arm/v7/opdefs/it_A8854.d b/plugins/arm/v7/opdefs/A8854_it.d index 42ee4c9..5d0fe36 100644 --- a/plugins/arm/v7/opdefs/it_A8854.d +++ b/plugins/arm/v7/opdefs/A8854_it.d @@ -23,7 +23,7 @@ @title IT -@id 53 +@id 48 @desc { diff --git a/plugins/arm/v7/opdefs/ldc_A8855.d b/plugins/arm/v7/opdefs/A8855_ldc.d index 96cf4a5..958adb1 100644 --- a/plugins/arm/v7/opdefs/ldc_A8855.d +++ b/plugins/arm/v7/opdefs/A8855_ldc.d @@ -23,7 +23,7 @@ @title LDC, LDC2 (immediate) -@id 54 +@id 49 @desc { diff --git a/plugins/arm/v7/opdefs/ldc_A8856.d b/plugins/arm/v7/opdefs/A8856_ldc.d index 4731ff0..3cead5c 100644 --- a/plugins/arm/v7/opdefs/ldc_A8856.d +++ b/plugins/arm/v7/opdefs/A8856_ldc.d @@ -23,7 +23,7 @@ @title LDC, LDC2 (literal) -@id 55 +@id 50 @desc { diff --git a/plugins/arm/v7/opdefs/ldm_A8857.d b/plugins/arm/v7/opdefs/A8857_ldm.d index e7733e0..817a2a2 100644 --- a/plugins/arm/v7/opdefs/ldm_A8857.d +++ b/plugins/arm/v7/opdefs/A8857_ldm.d @@ -23,7 +23,7 @@ @title LDM/LDMIA/LDMFD (Thumb) -@id 56 +@id 51 @desc { diff --git a/plugins/arm/v7/opdefs/ldm_A8858.d b/plugins/arm/v7/opdefs/A8858_ldm.d index 8b41183..a5670e8 100644 --- a/plugins/arm/v7/opdefs/ldm_A8858.d +++ b/plugins/arm/v7/opdefs/A8858_ldm.d @@ -23,7 +23,7 @@ @title LDM/LDMIA/LDMFD (ARM) -@id 57 +@id 52 @desc { diff --git a/plugins/arm/v7/opdefs/ldmda_A8859.d b/plugins/arm/v7/opdefs/A8859_ldmda.d index 6eb27d1..cc8ee05 100644 --- a/plugins/arm/v7/opdefs/ldmda_A8859.d +++ b/plugins/arm/v7/opdefs/A8859_ldmda.d @@ -23,7 +23,7 @@ @title LDMDA/LDMFA -@id 58 +@id 53 @desc { diff --git a/plugins/arm/v7/opdefs/add_A885.d b/plugins/arm/v7/opdefs/A885_add.d index 87b92a6..87b92a6 100644 --- a/plugins/arm/v7/opdefs/add_A885.d +++ b/plugins/arm/v7/opdefs/A885_add.d diff --git a/plugins/arm/v7/opdefs/ldmdb_A8860.d b/plugins/arm/v7/opdefs/A8860_ldmdb.d index a66d2a4..ccc409b 100644 --- a/plugins/arm/v7/opdefs/ldmdb_A8860.d +++ b/plugins/arm/v7/opdefs/A8860_ldmdb.d @@ -23,7 +23,7 @@ @title LDMDB/LDMEA -@id 59 +@id 54 @desc { diff --git a/plugins/arm/v7/opdefs/ldmib_A8861.d b/plugins/arm/v7/opdefs/A8861_ldmib.d index fa12e8a..3f76523 100644 --- a/plugins/arm/v7/opdefs/ldmib_A8861.d +++ b/plugins/arm/v7/opdefs/A8861_ldmib.d @@ -23,7 +23,7 @@ @title LDMIB/LDMED -@id 60 +@id 55 @desc { diff --git a/plugins/arm/v7/opdefs/ldr_A8862.d b/plugins/arm/v7/opdefs/A8862_ldr.d index 9771bae..2f8dd08 100644 --- a/plugins/arm/v7/opdefs/ldr_A8862.d +++ b/plugins/arm/v7/opdefs/A8862_ldr.d @@ -23,7 +23,7 @@ @title LDR (immediate, Thumb) -@id 61 +@id 56 @desc { diff --git a/plugins/arm/v7/opdefs/ldr_A8863.d b/plugins/arm/v7/opdefs/A8863_ldr.d index e2a443c..9842cc9 100644 --- a/plugins/arm/v7/opdefs/ldr_A8863.d +++ b/plugins/arm/v7/opdefs/A8863_ldr.d @@ -23,7 +23,7 @@ @title LDR (immediate, ARM) -@id 62 +@id 57 @desc { diff --git a/plugins/arm/v7/opdefs/ldr_A8864.d b/plugins/arm/v7/opdefs/A8864_ldr.d index fc19f13..c10421f 100644 --- a/plugins/arm/v7/opdefs/ldr_A8864.d +++ b/plugins/arm/v7/opdefs/A8864_ldr.d @@ -23,7 +23,7 @@ @title LDR (literal) -@id 63 +@id 58 @desc { diff --git a/plugins/arm/v7/opdefs/ldr_A8865.d b/plugins/arm/v7/opdefs/A8865_ldr.d index 8851ea2..a810586 100644 --- a/plugins/arm/v7/opdefs/ldr_A8865.d +++ b/plugins/arm/v7/opdefs/A8865_ldr.d @@ -23,7 +23,7 @@ @title LDR (register, Thumb) -@id 64 +@id 59 @desc { diff --git a/plugins/arm/v7/opdefs/ldr_A8866.d b/plugins/arm/v7/opdefs/A8866_ldr.d index e676fec..6ad2086 100644 --- a/plugins/arm/v7/opdefs/ldr_A8866.d +++ b/plugins/arm/v7/opdefs/A8866_ldr.d @@ -23,7 +23,7 @@ @title LDR (register, ARM) -@id 65 +@id 60 @desc { diff --git a/plugins/arm/v7/opdefs/ldrb_A8867.d b/plugins/arm/v7/opdefs/A8867_ldrb.d index a5c1a35..0155850 100644 --- a/plugins/arm/v7/opdefs/ldrb_A8867.d +++ b/plugins/arm/v7/opdefs/A8867_ldrb.d @@ -23,7 +23,7 @@ @title LDRB (immediate, Thumb) -@id 66 +@id 61 @desc { diff --git a/plugins/arm/v7/opdefs/ldrb_A8868.d b/plugins/arm/v7/opdefs/A8868_ldrb.d index 67f122c..6c19871 100644 --- a/plugins/arm/v7/opdefs/ldrb_A8868.d +++ b/plugins/arm/v7/opdefs/A8868_ldrb.d @@ -23,7 +23,7 @@ @title LDRB (immediate, ARM) -@id 67 +@id 62 @desc { diff --git a/plugins/arm/v7/opdefs/ldrb_A8869.d b/plugins/arm/v7/opdefs/A8869_ldrb.d index defb999..ca9863d 100644 --- a/plugins/arm/v7/opdefs/ldrb_A8869.d +++ b/plugins/arm/v7/opdefs/A8869_ldrb.d @@ -23,7 +23,7 @@ @title LDRB (literal) -@id 68 +@id 63 @desc { diff --git a/plugins/arm/v7/opdefs/add_A886.d b/plugins/arm/v7/opdefs/A886_add.d index 856272e..856272e 100644 --- a/plugins/arm/v7/opdefs/add_A886.d +++ b/plugins/arm/v7/opdefs/A886_add.d diff --git a/plugins/arm/v7/opdefs/ldrb_A8870.d b/plugins/arm/v7/opdefs/A8870_ldrb.d index b99d19b..c20c8cc 100644 --- a/plugins/arm/v7/opdefs/ldrb_A8870.d +++ b/plugins/arm/v7/opdefs/A8870_ldrb.d @@ -23,7 +23,7 @@ @title LDRB (register) -@id 69 +@id 64 @desc { diff --git a/plugins/arm/v7/opdefs/ldrbt_A8871.d b/plugins/arm/v7/opdefs/A8871_ldrbt.d index fdd9176..5aacaf1 100644 --- a/plugins/arm/v7/opdefs/ldrbt_A8871.d +++ b/plugins/arm/v7/opdefs/A8871_ldrbt.d @@ -23,7 +23,7 @@ @title LDRBT -@id 70 +@id 65 @desc { diff --git a/plugins/arm/v7/opdefs/ldrd_A8872.d b/plugins/arm/v7/opdefs/A8872_ldrd.d index 752f956..e27a114 100644 --- a/plugins/arm/v7/opdefs/ldrd_A8872.d +++ b/plugins/arm/v7/opdefs/A8872_ldrd.d @@ -23,7 +23,7 @@ @title LDRD (immediate) -@id 71 +@id 66 @desc { diff --git a/plugins/arm/v7/opdefs/ldrd_A8873.d b/plugins/arm/v7/opdefs/A8873_ldrd.d index 031fb31..d3d44c3 100644 --- a/plugins/arm/v7/opdefs/ldrd_A8873.d +++ b/plugins/arm/v7/opdefs/A8873_ldrd.d @@ -23,7 +23,7 @@ @title LDRD (literal) -@id 72 +@id 67 @desc { diff --git a/plugins/arm/v7/opdefs/ldrd_A8874.d b/plugins/arm/v7/opdefs/A8874_ldrd.d index c35f2cc..e48844d 100644 --- a/plugins/arm/v7/opdefs/ldrd_A8874.d +++ b/plugins/arm/v7/opdefs/A8874_ldrd.d @@ -23,7 +23,7 @@ @title LDRD (register) -@id 73 +@id 68 @desc { diff --git a/plugins/arm/v7/opdefs/ldrex_A8875.d b/plugins/arm/v7/opdefs/A8875_ldrex.d index af19077..39c708c 100644 --- a/plugins/arm/v7/opdefs/ldrex_A8875.d +++ b/plugins/arm/v7/opdefs/A8875_ldrex.d @@ -23,7 +23,7 @@ @title LDREX -@id 74 +@id 69 @desc { diff --git a/plugins/arm/v7/opdefs/ldrexb_A8876.d b/plugins/arm/v7/opdefs/A8876_ldrexb.d index 39b07b3..4a00839 100644 --- a/plugins/arm/v7/opdefs/ldrexb_A8876.d +++ b/plugins/arm/v7/opdefs/A8876_ldrexb.d @@ -23,7 +23,7 @@ @title LDREXB -@id 75 +@id 70 @desc { diff --git a/plugins/arm/v7/opdefs/ldrexd_A8877.d b/plugins/arm/v7/opdefs/A8877_ldrexd.d index 232f4fa..44a6984 100644 --- a/plugins/arm/v7/opdefs/ldrexd_A8877.d +++ b/plugins/arm/v7/opdefs/A8877_ldrexd.d @@ -23,7 +23,7 @@ @title LDREXD -@id 76 +@id 71 @desc { diff --git a/plugins/arm/v7/opdefs/ldrexh_A8878.d b/plugins/arm/v7/opdefs/A8878_ldrexh.d index ac124f5..8687ded 100644 --- a/plugins/arm/v7/opdefs/ldrexh_A8878.d +++ b/plugins/arm/v7/opdefs/A8878_ldrexh.d @@ -23,7 +23,7 @@ @title LDREXH -@id 77 +@id 72 @desc { diff --git a/plugins/arm/v7/opdefs/ldrh_A8879.d b/plugins/arm/v7/opdefs/A8879_ldrh.d index 674a7d4..2fcbd0c 100644 --- a/plugins/arm/v7/opdefs/ldrh_A8879.d +++ b/plugins/arm/v7/opdefs/A8879_ldrh.d @@ -23,7 +23,7 @@ @title LDRH (immediate, Thumb) -@id 78 +@id 73 @desc { diff --git a/plugins/arm/v7/opdefs/add_A887.d b/plugins/arm/v7/opdefs/A887_add.d index 6105f18..6105f18 100644 --- a/plugins/arm/v7/opdefs/add_A887.d +++ b/plugins/arm/v7/opdefs/A887_add.d diff --git a/plugins/arm/v7/opdefs/ldrh_A8880.d b/plugins/arm/v7/opdefs/A8880_ldrh.d index 7f7f1f7..a517a23 100644 --- a/plugins/arm/v7/opdefs/ldrh_A8880.d +++ b/plugins/arm/v7/opdefs/A8880_ldrh.d @@ -23,7 +23,7 @@ @title LDRH (immediate, ARM) -@id 79 +@id 74 @desc { diff --git a/plugins/arm/v7/opdefs/ldrh_A8881.d b/plugins/arm/v7/opdefs/A8881_ldrh.d index 43346e9..000974f 100644 --- a/plugins/arm/v7/opdefs/ldrh_A8881.d +++ b/plugins/arm/v7/opdefs/A8881_ldrh.d @@ -23,7 +23,7 @@ @title LDRH (literal) -@id 80 +@id 75 @desc { diff --git a/plugins/arm/v7/opdefs/ldrh_A8882.d b/plugins/arm/v7/opdefs/A8882_ldrh.d index 6f9fb73..9697112 100644 --- a/plugins/arm/v7/opdefs/ldrh_A8882.d +++ b/plugins/arm/v7/opdefs/A8882_ldrh.d @@ -23,7 +23,7 @@ @title LDRH (register) -@id 81 +@id 76 @desc { diff --git a/plugins/arm/v7/opdefs/ldrht_A8883.d b/plugins/arm/v7/opdefs/A8883_ldrht.d index 46bd025..e02c949 100644 --- a/plugins/arm/v7/opdefs/ldrht_A8883.d +++ b/plugins/arm/v7/opdefs/A8883_ldrht.d @@ -23,7 +23,7 @@ @title LDRHT -@id 82 +@id 77 @desc { diff --git a/plugins/arm/v7/opdefs/ldrsb_A8884.d b/plugins/arm/v7/opdefs/A8884_ldrsb.d index 828918f..bacfa6a 100644 --- a/plugins/arm/v7/opdefs/ldrsb_A8884.d +++ b/plugins/arm/v7/opdefs/A8884_ldrsb.d @@ -23,7 +23,7 @@ @title LDRSB (immediate) -@id 83 +@id 78 @desc { diff --git a/plugins/arm/v7/opdefs/ldrsb_A8885.d b/plugins/arm/v7/opdefs/A8885_ldrsb.d index 5d5c1c4..6ea8617 100644 --- a/plugins/arm/v7/opdefs/ldrsb_A8885.d +++ b/plugins/arm/v7/opdefs/A8885_ldrsb.d @@ -23,7 +23,7 @@ @title LDRSB (literal) -@id 84 +@id 79 @desc { diff --git a/plugins/arm/v7/opdefs/ldrsb_A8886.d b/plugins/arm/v7/opdefs/A8886_ldrsb.d index 9ce942b..1dbd651 100644 --- a/plugins/arm/v7/opdefs/ldrsb_A8886.d +++ b/plugins/arm/v7/opdefs/A8886_ldrsb.d @@ -23,7 +23,7 @@ @title LDRSB (register) -@id 85 +@id 80 @desc { diff --git a/plugins/arm/v7/opdefs/ldrsbt_A8887.d b/plugins/arm/v7/opdefs/A8887_ldrsbt.d index 181739c..fc145ac 100644 --- a/plugins/arm/v7/opdefs/ldrsbt_A8887.d +++ b/plugins/arm/v7/opdefs/A8887_ldrsbt.d @@ -23,7 +23,7 @@ @title LDRSBT -@id 86 +@id 81 @desc { diff --git a/plugins/arm/v7/opdefs/ldrsh_A8888.d b/plugins/arm/v7/opdefs/A8888_ldrsh.d index 3d9c2a3..b908ec1 100644 --- a/plugins/arm/v7/opdefs/ldrsh_A8888.d +++ b/plugins/arm/v7/opdefs/A8888_ldrsh.d @@ -23,7 +23,7 @@ @title LDRSH (immediate) -@id 87 +@id 82 @desc { diff --git a/plugins/arm/v7/opdefs/ldrsh_A8889.d b/plugins/arm/v7/opdefs/A8889_ldrsh.d index d6a6197..a3ca43f 100644 --- a/plugins/arm/v7/opdefs/ldrsh_A8889.d +++ b/plugins/arm/v7/opdefs/A8889_ldrsh.d @@ -23,7 +23,7 @@ @title LDRSH (literal) -@id 88 +@id 83 @desc { diff --git a/plugins/arm/v7/opdefs/add_A888.d b/plugins/arm/v7/opdefs/A888_add.d index 8fd6078..8fd6078 100644 --- a/plugins/arm/v7/opdefs/add_A888.d +++ b/plugins/arm/v7/opdefs/A888_add.d diff --git a/plugins/arm/v7/opdefs/ldrsh_A8890.d b/plugins/arm/v7/opdefs/A8890_ldrsh.d index 9269ca0..3efd231 100644 --- a/plugins/arm/v7/opdefs/ldrsh_A8890.d +++ b/plugins/arm/v7/opdefs/A8890_ldrsh.d @@ -23,7 +23,7 @@ @title LDRSH (register) -@id 89 +@id 84 @desc { diff --git a/plugins/arm/v7/opdefs/ldrsht_A8891.d b/plugins/arm/v7/opdefs/A8891_ldrsht.d index b1402f7..ffeb9fd 100644 --- a/plugins/arm/v7/opdefs/ldrsht_A8891.d +++ b/plugins/arm/v7/opdefs/A8891_ldrsht.d @@ -23,7 +23,7 @@ @title LDRSHT -@id 90 +@id 85 @desc { diff --git a/plugins/arm/v7/opdefs/ldrt_A8892.d b/plugins/arm/v7/opdefs/A8892_ldrt.d index 23d1d6f..86699de 100644 --- a/plugins/arm/v7/opdefs/ldrt_A8892.d +++ b/plugins/arm/v7/opdefs/A8892_ldrt.d @@ -23,7 +23,7 @@ @title LDRT -@id 91 +@id 86 @desc { diff --git a/plugins/arm/v7/opdefs/lsl_A8894.d b/plugins/arm/v7/opdefs/A8894_lsl.d index b4689bb..b8cde63 100644 --- a/plugins/arm/v7/opdefs/lsl_A8894.d +++ b/plugins/arm/v7/opdefs/A8894_lsl.d @@ -23,7 +23,7 @@ @title LSL (immediate) -@id 93 +@id 88 @desc { diff --git a/plugins/arm/v7/opdefs/lsl_A8895.d b/plugins/arm/v7/opdefs/A8895_lsl.d index 59bbb91..3cdc75d 100644 --- a/plugins/arm/v7/opdefs/lsl_A8895.d +++ b/plugins/arm/v7/opdefs/A8895_lsl.d @@ -23,7 +23,7 @@ @title LSL (register) -@id 94 +@id 89 @desc { diff --git a/plugins/arm/v7/opdefs/lsr_A8896.d b/plugins/arm/v7/opdefs/A8896_lsr.d index 07f12da..2efcbed 100644 --- a/plugins/arm/v7/opdefs/lsr_A8896.d +++ b/plugins/arm/v7/opdefs/A8896_lsr.d @@ -23,7 +23,7 @@ @title LSR (immediate) -@id 95 +@id 90 @desc { diff --git a/plugins/arm/v7/opdefs/lsr_A8897.d b/plugins/arm/v7/opdefs/A8897_lsr.d index fa0b70f..6e05dd4 100644 --- a/plugins/arm/v7/opdefs/lsr_A8897.d +++ b/plugins/arm/v7/opdefs/A8897_lsr.d @@ -23,7 +23,7 @@ @title LSR (register) -@id 96 +@id 91 @desc { diff --git a/plugins/arm/v7/opdefs/mcr_A8898.d b/plugins/arm/v7/opdefs/A8898_mcr.d index 8a2252b..06f5aa2 100644 --- a/plugins/arm/v7/opdefs/mcr_A8898.d +++ b/plugins/arm/v7/opdefs/A8898_mcr.d @@ -23,7 +23,7 @@ @title MCR, MCR2 -@id 97 +@id 92 @desc { diff --git a/plugins/arm/v7/opdefs/mcrr_A8899.d b/plugins/arm/v7/opdefs/A8899_mcrr.d index b500446..6177a4c 100644 --- a/plugins/arm/v7/opdefs/mcrr_A8899.d +++ b/plugins/arm/v7/opdefs/A8899_mcrr.d @@ -23,7 +23,7 @@ @title MCRR, MCRR2 -@id 98 +@id 93 @desc { diff --git a/plugins/arm/v7/opdefs/add_A889.d b/plugins/arm/v7/opdefs/A889_add.d index 834de50..834de50 100644 --- a/plugins/arm/v7/opdefs/add_A889.d +++ b/plugins/arm/v7/opdefs/A889_add.d diff --git a/plugins/arm/v7/opdefs/B9310_msr.d b/plugins/arm/v7/opdefs/B9310_msr.d new file mode 100644 index 0000000..79c569a --- /dev/null +++ b/plugins/arm/v7/opdefs/B9310_msr.d @@ -0,0 +1,81 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title MSR (Banked register) + +@id 361 + +@desc { + + Move to Banked or Special register from ARM core register moves the value of an ARM core register to the Banked ARM core register or SPSR of the specified mode, or to ELR_hyp. MSR (Banked register) is UNPREDICTABLE if executed in User mode. The effect of using an MSR (Banked register) instruction with a register argument that is not valid for the current mode is UNPREDICTABLE. For more information see Usage restrictions on the Banked register transfer instructions on page B9-1972. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 0 1 1 1 0 0 R(1) Rn(4) 1 0 0 0 m1(4) 0 0 1 m(1) 0 0 0 0 + + @syntax { + + @subid 2012 + + @conv { + + banked_reg = BankedRegister(R, m:m1) + reg_N = Register(Rn) + + } + + @asm msr banked_reg reg_N + + } + +} + +@encoding (A1) { + + @word cond(4) 0 0 0 1 0 R(1) 1 0 m1(4) 1 1 1 1 0 0 1 m(1) 0 0 0 0 Rn(4) + + @syntax { + + @subid 2013 + + @conv { + + banked_reg = BankedRegister(R, m:m1) + reg_N = Register(Rn) + + } + + @asm msr banked_reg reg_N + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9311_msr.d b/plugins/arm/v7/opdefs/B9311_msr.d new file mode 100644 index 0000000..f996e5d --- /dev/null +++ b/plugins/arm/v7/opdefs/B9311_msr.d @@ -0,0 +1,60 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title MSR (immediate) + +@id 362 + +@desc { + + Move immediate value to Special register moves selected bits of an immediate value to the CPSR or the SPSR of the current mode. MSR (immediate) is UNPREDICTABLE if: • In Non-debug state, it is attempting to update the CPSR, and that update would change to a mode that is not permitted in the context in which the instruction is executed, see Restrictions on updates to the CPSR.M field on page B9-1970. • In Debug state, it is attempting an update to the CPSR with a <fields> value that is not <fsxc>. See Behavior of MRS and MSR instructions that access the CPSR in Debug state on page C5-2097. An MSR (immediate) executed in User mode: • is UNPREDICTABLE if it attempts to update the SPSR • otherwise, does not update any CPSR field that is accessible only at PL1 or higher, Note MSR (immediate) on page A8-498 describes the valid application level uses of the MSR (immediate) instruction. An MSR (immediate) executed in System mode is UNPREDICTABLE if it attempts to update the SPSR. + +} + +@encoding (A1) { + + @word cond(4) 0 0 1 1 0 R(1) 1 0 mask(4) 1 1 1 1 imm12(12) + + @syntax { + + @subid 2014 + + @conv { + + spec_reg = SpecRegFromMask(mask) + imm32 = ARMExpandImm(imm12) + + } + + @asm msr spec_reg imm32 + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9312_msr.d b/plugins/arm/v7/opdefs/B9312_msr.d new file mode 100644 index 0000000..76ae378 --- /dev/null +++ b/plugins/arm/v7/opdefs/B9312_msr.d @@ -0,0 +1,81 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title MSR (register) + +@id 363 + +@desc { + + Move to Special register from ARM core register moves the value of an ARM core register to the CPSR or the SPSR of the current mode. MSR (register) is UNPREDICTABLE if: • In Non-debug state, it is attempting to update the CPSR, and that update would change to a mode that is not permitted in the context in which the instruction is executed, see Restrictions on updates to the CPSR.M field on page B9-1970. • In Debug state, it is attempting an update to the CPSR with a <fields> value that is not <fsxc>. See Behavior of MRS and MSR instructions that access the CPSR in Debug state on page C5-2097. An MSR (register) executed in User mode: • is UNPREDICTABLE if it attempts to update the SPSR • otherwise, does not update any CPSR field that is accessible only at PL1 or higher, Note MSR (register) on page A8-500 describes the valid application level uses of the MSR (register) instruction. An MSR (register) executed in System mode is UNPREDICTABLE if it attempts to update the SPSR. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 0 1 1 1 0 0 R(1) Rn(4) 1 0 0 0 mask(4) 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2015 + + @conv { + + spec_reg = SpecRegFromMask(mask) + reg_N = Register(Rn) + + } + + @asm msr spec_reg reg_N + + } + +} + +@encoding (A1) { + + @word cond(4) 0 0 0 1 0 R(1) 1 0 mask(4) 1 1 1 1 0 0 0 0 0 0 0 0 Rn(4) + + @syntax { + + @subid 2016 + + @conv { + + spec_reg = SpecRegFromMask(mask) + reg_N = Register(Rn) + + } + + @asm msr spec_reg reg_N + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9313_rfe.d b/plugins/arm/v7/opdefs/B9313_rfe.d new file mode 100644 index 0000000..fae2d56 --- /dev/null +++ b/plugins/arm/v7/opdefs/B9313_rfe.d @@ -0,0 +1,169 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title RFE + +@id 364 + +@desc { + + Return From Exception loads the PC and the CPSR from the word at the specified address and the following word respectively. For information about memory accesses see Memory accesses on page A8-294. RFE is: • UNDEFINED in Hyp mode. • UNPREDICTABLE in: — The cases described in Restrictions on exception return instructions on page B9-1970. Note As identified in Restrictions on exception return instructions on page B9-1970, RFE differs from other exception return instructions in that it can be executed in System mode. — Debug state. + +} + +@encoding (T1) { + + @word 1 1 1 0 1 0 0 0 0 0 W(1) 1 Rn(4) 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2017 + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + + } + + @asm rfedb wb_reg + + } + +} + +@encoding (T2) { + + @word 1 1 1 0 1 0 0 1 1 0 W(1) 1 Rn(4) 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2018 + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + + } + + @asm rfeia wb_reg + + } + +} + +@encoding (A1) { + + @word 1 1 1 1 1 0 0 P(1) U(1) 0 W(1) 1 Rn(4) 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2019 + + @assert { + + P == 0 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + + } + + @asm rfeda wb_reg + + } + + @syntax { + + @subid 2020 + + @assert { + + P == 1 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + + } + + @asm rfedb wb_reg + + } + + @syntax { + + @subid 2021 + + @assert { + + P == 0 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + + } + + @asm rfeia wb_reg + + } + + @syntax { + + @subid 2022 + + @assert { + + P == 1 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + + } + + @asm rfeib wb_reg + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9314_smc.d b/plugins/arm/v7/opdefs/B9314_smc.d new file mode 100644 index 0000000..cf2bcf2 --- /dev/null +++ b/plugins/arm/v7/opdefs/B9314_smc.d @@ -0,0 +1,79 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title SMC (previously SMI) + +@id 365 + +@desc { + + Secure Monitor Call causes a Secure Monitor Call exception. For more information see Secure Monitor Call (SMC) exception on page B1-1210. SMC is available only from software executing at PL1 or higher. It is UNDEFINED in User mode. In an implementation that includes the Virtualization Extensions: • If HCR.TSC is set to 1, execution of an SMC instruction in a Non-secure PL1 mode generates a Hyp Trap exception, regardless of the value of SCR.SCD. For more information see Trapping use of the SMC instruction on page B1-1254. • Otherwise, when SCR.SCD is set to 1, the SMC instruction is: — UNDEFINED in Non-secure state — UNPREDICTABLE if executed in a Secure PL1 mode. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 1 1 1 1 1 1 1 imm4(4) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2023 + + @conv { + + direct_imm4 = UInt(imm4) + + } + + @asm smc direct_imm4 + + } + +} + +@encoding (A1) { + + @word cond(4) 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 imm4(4) + + @syntax { + + @subid 2024 + + @conv { + + direct_imm4 = UInt(imm4) + + } + + @asm smc direct_imm4 + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9315_srs.d b/plugins/arm/v7/opdefs/B9315_srs.d new file mode 100644 index 0000000..e03935c --- /dev/null +++ b/plugins/arm/v7/opdefs/B9315_srs.d @@ -0,0 +1,77 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title SRS (Thumb) + +@id 366 + +@desc { + + Store Return State stores the LR and SPSR of the current mode to the stack of a specified mode. For information about memory accesses see Memory accesses on page A8-294. SRS is: • UNDEFINED in Hyp mode • UNPREDICTABLE if: — it is executed in ThumbEE state — it is executed in User or System mode — it attempts to store the Monitor mode SP when in Non-secure state — NSACR.RFR is set to 1 and it attempts to store the FIQ mode SP when in Non-secure state — it attempts to store the Hyp mode SP. + +} + +@encoding (T1) { + + @word 1 1 1 0 1 0 0 0 0 0 W(1) 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 mode(5) + + @syntax { + + @subid 2025 + + @conv { + + reg_SP = Register(13) + wb_reg = WrittenBackReg(reg_SP, W) + direct_mode = UInt(mode) + + } + + @asm srsdb wb_reg direct_mode + + } + +} + +@encoding (T2) { + + @word 1 1 1 0 1 0 0 1 1 0 W(1) 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 mode(5) + + @syntax { + + @subid 2026 + + @conv { + + reg_SP = Register(13) + wb_reg = WrittenBackReg(reg_SP, W) + direct_mode = UInt(mode) + + } + + @asm srsia wb_reg direct_mode + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9316_srs.d b/plugins/arm/v7/opdefs/B9316_srs.d new file mode 100644 index 0000000..2fbdb5d --- /dev/null +++ b/plugins/arm/v7/opdefs/B9316_srs.d @@ -0,0 +1,131 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title SRS (ARM) + +@id 367 + +@desc { + + Store Return State stores the LR and SPSR of the current mode to the stack of a specified mode. For information about memory accesses see Memory accesses on page A8-294. SRS is: • UNDEFINED in Hyp mode • UNPREDICTABLE if: — it is executed in User or System mode — it attempts to store the Monitor mode SP when in Non-secure state — NSACR.RFR is set to 1 and it attempts to store the FIQ mode SP when in Non-secure state — if it attempts to store the Hyp mode SP. + +} + +@encoding (A1) { + + @word 1 1 1 1 1 0 0 P(1) U(1) 1 W(1) 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 mode(5) + + @syntax { + + @subid 2027 + + @assert { + + P == 0 + U == 0 + + } + + @conv { + + reg_SP = Register(13) + wb_reg = WrittenBackReg(reg_SP, W) + direct_mode = UInt(mode) + + } + + @asm srsda wb_reg direct_mode + + } + + @syntax { + + @subid 2028 + + @assert { + + P == 1 + U == 0 + + } + + @conv { + + reg_SP = Register(13) + wb_reg = WrittenBackReg(reg_SP, W) + direct_mode = UInt(mode) + + } + + @asm srsdb wb_reg direct_mode + + } + + @syntax { + + @subid 2029 + + @assert { + + P == 0 + U == 1 + + } + + @conv { + + reg_SP = Register(13) + wb_reg = WrittenBackReg(reg_SP, W) + direct_mode = UInt(mode) + + } + + @asm srsia wb_reg direct_mode + + } + + @syntax { + + @subid 2030 + + @assert { + + P == 1 + U == 1 + + } + + @conv { + + reg_SP = Register(13) + wb_reg = WrittenBackReg(reg_SP, W) + direct_mode = UInt(mode) + + } + + @asm srsib wb_reg direct_mode + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9317_stm.d b/plugins/arm/v7/opdefs/B9317_stm.d new file mode 100644 index 0000000..552640f --- /dev/null +++ b/plugins/arm/v7/opdefs/B9317_stm.d @@ -0,0 +1,151 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title STM (User registers) + +@id 368 + +@desc { + + In a PL1 mode other than System mode, Store Multiple (user registers) stores multiple User mode registers to consecutive memory locations using an address from a base register. The processor reads the base register value normally, using the current mode to determine the correct Banked version of the register. This instruction cannot writeback to the base register. STM (User registers) is UNDEFINED in Hyp mode, and UNPREDICTABLE in User or System modes. + +} + +@encoding (A1) { + + @word cond(4) 1 0 0 P(1) U(1) 1 0 0 Rn(4) register_list(16) + + @syntax { + + @subid 2031 + + @assert { + + P == 0 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegList(register_list) + + } + + @asm stmda reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2032 + + @assert { + + P == 1 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegList(register_list) + + } + + @asm stmdb reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2033 + + @assert { + + P == 0 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegList(register_list) + + } + + @asm stmia reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2034 + + @assert { + + P == 1 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegList(register_list) + + } + + @asm stmib reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9319_subs.d b/plugins/arm/v7/opdefs/B9319_subs.d new file mode 100644 index 0000000..eaf6eca --- /dev/null +++ b/plugins/arm/v7/opdefs/B9319_subs.d @@ -0,0 +1,55 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title SUBS PC, LR (Thumb) + +@id 370 + +@desc { + + The SUBS PC, LR, #<const> instruction provides an exception return without the use of the stack. It subtracts the immediate constant from LR, branches to the resulting address, and also copies the SPSR to the CPSR. Note • The instruction SUBS PC, LR, #0 is equivalent to MOVS PC, LR and ERET. • For an implementation that includes the Virtualization Extensions, ERET is the preferred disassembly of the T1 encoding defined in this section. Therefore, a disassembler might report an ERET where the original assembler code used SUBS PC, LR, #0. When executing in Hyp mode: • the encoding for SUBS PC, LR, #0 is the encoding of the ERET instruction, see ERET on page B9-1980 • SUBS PC, LR, #<const> with a nonzero constant is UNDEFINED. SUBS PC, LR, #<const> is UNPREDICTABLE: • in the cases described in Restrictions on exception return instructions on page B9-1970 • if it is executed in Debug state. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 imm8(8) + + @syntax { + + @subid 2035 + + @conv { + + reg_PC = Register(15) + reg_LR = Register(14) + imm32 = ZeroExtend(imm8, 32) + + } + + @asm subs reg_PC reg_LR imm32 + + } + +} + diff --git a/plugins/arm/v7/opdefs/B931_cps.d b/plugins/arm/v7/opdefs/B931_cps.d new file mode 100644 index 0000000..e04d320 --- /dev/null +++ b/plugins/arm/v7/opdefs/B931_cps.d @@ -0,0 +1,147 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title CPS (Thumb) + +@id 352 + +@desc { + + Change Processor State changes one or more of the CPSR.{A, I, F} interrupt mask bits and the CPSR.M mode field, without changing the other CPSR bits. CPS is treated as NOP if executed in User mode. CPS is UNPREDICTABLE if it is either: • attempting to change to a mode that is not permitted in the context in which it is executed, see Restrictions on updates to the CPSR.M field on page B9-1970 • executed in Debug state. + +} + +@encoding (t1) { + + @half 1 0 1 1 0 1 1 0 0 1 1 im(1) 0 A(1) I(1) F(1) + + @syntax { + + @subid 1988 + + @assert { + + im == 0 + + } + + @conv { + + iflags = IFlagsDefinition(a, i, f) + + } + + @asm cpsie iflags + + } + + @syntax { + + @subid 1989 + + @assert { + + im == 1 + + } + + @conv { + + iflags = IFlagsDefinition(a, i, f) + + } + + @asm cpsid iflags + + } + +} + +@encoding (T2) { + + @word 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 0 0 0 0 imod(2) M(1) A(1) I(1) F(1) mode(5) + + @syntax { + + @subid 1990 + + @assert { + + M == 0 + imod == 10 + + } + + @conv { + + iflags = IFlagsDefinition(a, i, f) + + } + + @asm cpsie.w iflags + + } + + @syntax { + + @subid 1991 + + @assert { + + M == 0 + imod == 11 + + } + + @conv { + + iflags = IFlagsDefinition(a, i, f) + + } + + @asm cpsid.w iflags + + } + + @syntax { + + @subid 1992 + + @assert { + + M == 1 + + } + + @conv { + + direct_mode = UInt(mode) + + } + + @asm cps.w direct_mode + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9320_subs.d b/plugins/arm/v7/opdefs/B9320_subs.d new file mode 100644 index 0000000..ed14d60 --- /dev/null +++ b/plugins/arm/v7/opdefs/B9320_subs.d @@ -0,0 +1,95 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title SUBS PC, LR and related instructions (ARM) + +@id 371 + +@desc { + + The SUBS PC, LR, #<const> instruction provides an exception return without the use of the stack. It subtracts the immediate constant from LR, branches to the resulting address, and also copies the SPSR to the CPSR. The ARM instruction set contains similar instructions based on other data-processing operations, or with a wider range of operands, or both. ARM deprecates using these other instructions, except for MOVS PC, LR. All of these instructions are: • UNDEFINED in Hyp mode • UNPREDICTABLE: — in the cases described in Restrictions on exception return instructions on page B9-1970 — if executed in Debug state. + +} + +@encoding (A1) { + + @word cond(4) 0 0 1 opcode(4) 1 Rn(4) 1 1 1 1 imm12(12) + + @syntax { + + @subid 2036 + + @conv { + + reg_PC = Register(15) + reg_LR = Register(14) + imm32 = ARMExpandImm(imm12) + + } + + @asm subs reg_PC reg_LR imm32 + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + +@encoding (A2) { + + @word cond(4) 0 0 0 opcode(4) 1 Rn(4) 1 1 1 1 imm5(5) type(2) 0 Rm(4) + + @syntax { + + @subid 2037 + + @assert { + + opcode == 1111 + + } + + @conv { + + reg_PC = Register(15) + reg_M = Register(Rm) + shift = DecodeImmShift(type, imm5) + + } + + @asm mvns reg_PC reg_M ?shift + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9321_vmrs.d b/plugins/arm/v7/opdefs/B9321_vmrs.d new file mode 100644 index 0000000..4dcb42d --- /dev/null +++ b/plugins/arm/v7/opdefs/B9321_vmrs.d @@ -0,0 +1,75 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title VMRS + +@id 372 + +@desc { + + Move to ARM core register from Advanced SIMD and Floating-point Extension System Register moves the value of an extension system register to an ARM core register. When the specified Floating-point Extension System Register is the FPSCR, a form of the instruction transfers the FPSCR.{N, Z, C, V} condition flags to the APSR.{N, Z, C, V} condition flags. Depending on settings in the CPACR, NSACR, HCPTR, and FPEXC registers, and the security state and mode in which the instruction is executed, an attempt to execute a VMRS instruction might be UNDEFINED, or trapped to Hyp mode. Summary of general controls of CP10 and CP11 functionality on page B1-1230 and Summary of access controls for Advanced SIMD functionality on page B1-1232 summarize these controls. When these settings permit the execution of floating-point and Advanced SIMD instructions, if the specified Floating-point Extension System Register is not the FPSCR, the instruction is UNDEFINED if executed in User mode. In an implementation that includes the Virtualization Extensions, when HCR.TID0 is set to 1, any VMRS access to FPSID from a Non-secure PL1 mode, that would be permitted if HCR.TID0 was set to 0, generates a Hyp Trap exception. For more information, see ID group 0, Primary device identification registers on page B1-1251. Note • VMRS on page A8-954 describes the valid application level uses of the VMRS instruction • for simplicity, the VMRS pseudocode does not show the possible trap to Hyp mode. + +} + +@encoding (T1) { + + @word 1 1 1 0 1 1 1 0 1 1 1 1 reg(4) Rt(4) 1 0 1 0 0 0 0 1 0 0 0 0 + + @syntax { + + @subid 2038 + + @conv { + + reg_T = Register(Rt) + spec_reg = SpecRegFromReg(reg) + + } + + @asm vmrs reg_T spec_reg + + } + +} + +@encoding (A1) { + + @word 1 1 1 0 1 1 1 0 1 1 1 1 reg(4) Rt(4) 1 0 1 0 0 0 0 1 0 0 0 0 + + @syntax { + + @subid 2039 + + @conv { + + reg_T = Register(Rt) + spec_reg = SpecRegFromReg(reg) + + } + + @asm vmrs reg_T spec_reg + + } + +} + diff --git a/plugins/arm/v7/opdefs/B9322_vmsr.d b/plugins/arm/v7/opdefs/B9322_vmsr.d new file mode 100644 index 0000000..8fdc8ab --- /dev/null +++ b/plugins/arm/v7/opdefs/B9322_vmsr.d @@ -0,0 +1,75 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title VMSR + +@id 373 + +@desc { + + Move to Advanced SIMD and Floating-point Extension System Register from ARM core register moves the value of an ARM core register to a Floating-point system register. Depending on settings in the CPACR, NSACR, HCPTR, and FPEXC registers, and the security state and mode in which the instruction is executed, an attempt to execute a VMSR instruction might be UNDEFINED, or trapped to Hyp mode. Summary of general controls of CP10 and CP11 functionality on page B1-1230 and Summary of access controls for Advanced SIMD functionality on page B1-1232 summarize these controls. When these settings permit the execution of floating-point and Advanced SIMD instructions, if the specified Floating-point Extension System Register is not the FPSCR, the instruction is UNDEFINED if executed in User mode. Note VMSR on page A8-956 describes the valid application level uses of the VMSR instruction. + +} + +@encoding (T1) { + + @word 1 1 1 0 1 1 1 0 1 1 1 0 reg(4) Rt(4) 1 0 1 0 0 0 0 1 0 0 0 0 + + @syntax { + + @subid 2040 + + @conv { + + spec_reg = SpecRegFromReg(reg) + reg_T = Register(Rt) + + } + + @asm vmsr spec_reg reg_T + + } + +} + +@encoding (A1) { + + @word 1 1 1 0 1 1 1 0 1 1 1 0 reg(4) Rt(4) 1 0 1 0 0 0 0 1 0 0 0 0 + + @syntax { + + @subid 2041 + + @conv { + + spec_reg = SpecRegFromReg(reg) + reg_T = Register(Rt) + + } + + @asm vmsr spec_reg reg_T + + } + +} + diff --git a/plugins/arm/v7/opdefs/B932_cps.d b/plugins/arm/v7/opdefs/B932_cps.d new file mode 100644 index 0000000..2d93d60 --- /dev/null +++ b/plugins/arm/v7/opdefs/B932_cps.d @@ -0,0 +1,101 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title CPS (ARM) + +@id 353 + +@desc { + + Change Processor State changes one or more of the CPSR.{A, I, F} interrupt mask bits and the CPSR.M mode field, without changing the other CPSR bits. CPS is treated as NOP if executed in User mode. CPS is UNPREDICTABLE if it is either: • attempting to change to a mode that is not permitted in the context in which it is executed, see Restrictions on updates to the CPSR.M field on page B9-1970 • executed in Debug state. + +} + +@encoding (A1) { + + @word 1 1 1 1 0 0 0 1 0 0 0 0 imod(2) M(1) 0 0 0 0 0 0 0 0 A(1) I(1) F(1) 0 mode(5) + + @syntax { + + @subid 1993 + + @assert { + + M == 0 + imod == 10 + + } + + @conv { + + iflags = IFlagsDefinition(a, i, f) + + } + + @asm cpsie iflags + + } + + @syntax { + + @subid 1994 + + @assert { + + M == 0 + imod == 11 + + } + + @conv { + + iflags = IFlagsDefinition(a, i, f) + + } + + @asm cpsid iflags + + } + + @syntax { + + @subid 1995 + + @assert { + + M == 1 + + } + + @conv { + + direct_mode = UInt(mode) + + } + + @asm cps direct_mode + + } + +} + diff --git a/plugins/arm/v7/opdefs/B933_eret.d b/plugins/arm/v7/opdefs/B933_eret.d new file mode 100644 index 0000000..0beb321 --- /dev/null +++ b/plugins/arm/v7/opdefs/B933_eret.d @@ -0,0 +1,67 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title ERET + +@id 354 + +@desc { + + When executed in Hyp mode, Exception Return loads the PC from ELR_hyp and loads the CPSR from SPSR_hyp. When executed in a Secure or Non-secure PL1 mode, ERET behaves as: MOVS PC, • LR in the ARM instruction set, see SUBS PC, LR and related instructions (ARM) on page B9-2010 • the equivalent SUBS PC, LR, #0 in the Thumb instruction set, see SUBS PC, LR (Thumb) on page B9-2008. ERET is UNPREDICTABLE: • in the cases described in Restrictions on exception return instructions on page B9-1970 • if it is executed in Debug state. Note In an implementation that includes the Virtualization Extensions: • LR, #0 in the Thumb The T1 encoding of ERET is not a new encoding but, is the preferred synonym of SUBS PC, instruction set. See SUBS PC, LR (Thumb) on page B9-2008 for more information. • Because ERET is the preferred encoding, when decoding Thumb instructions, a disassembler will report an ERET where the original assembler code used SUBS PC, LR, #0. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 1996 + + @asm eret + + } + +} + +@encoding (A1) { + + @word cond(4) 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 + + @syntax { + + @subid 1997 + + @asm eret + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B934_hvc.d b/plugins/arm/v7/opdefs/B934_hvc.d new file mode 100644 index 0000000..e7909a9 --- /dev/null +++ b/plugins/arm/v7/opdefs/B934_hvc.d @@ -0,0 +1,73 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title HVC + +@id 355 + +@desc { + + Hypervisor Call causes a Hypervisor Call exception. For more information see Hypervisor Call (HVC) exception on page B1-1211. Non-secure software executing at PL1 can use this instruction to call the hypervisor to request a service. The HVC instruction is: • UNDEFINED in Secure state, and in User mode in Non-secure state • when SCR.HCE is set to 0, UNDEFINED in Non-secure PL1 modes and UNPREDICTABLE in Hyp mode • UNPREDICTABLE in Debug state. On executing an HVC instruction, the HSR reports the exception as a Hypervisor Call exception, using the EC value 0x12, and captures the value of the immediate argument, see Use of the HSR on page B3-1424. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 1 1 1 1 1 1 0 imm4(4) 1 0 0 0 imm12(12) + + @syntax { + + @subid 1998 + + @conv { + + imm16 = UInt(imm4:imm12) + + } + + @asm hvc imm16 + + } + +} + +@encoding (A1) { + + @word cond(4) 0 0 0 1 0 1 0 0 imm12(12) 0 1 1 1 imm4(4) + + @syntax { + + @subid 1999 + + @conv { + + imm16 = UInt(imm12:imm4) + + } + + @asm hvc imm16 + + } + +} + diff --git a/plugins/arm/v7/opdefs/B935_ldm.d b/plugins/arm/v7/opdefs/B935_ldm.d new file mode 100644 index 0000000..9563920 --- /dev/null +++ b/plugins/arm/v7/opdefs/B935_ldm.d @@ -0,0 +1,155 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title LDM (exception return) + +@id 356 + +@desc { + + Load Multiple (exception return) loads multiple registers from consecutive memory locations using an address from a base register. The SPSR of the current mode is copied to the CPSR. An address adjusted by the size of the data loaded can optionally be written back to the base register. The registers loaded include the PC. The word loaded for the PC is treated as an address and a branch occurs to that address. LDM (exception return) is: • UNDEFINED in Hyp mode • UNPREDICTABLE in: — the cases described in Restrictions on exception return instructions on page B9-1970 — Debug state. + +} + +@encoding (A1) { + + @word cond(4) 1 0 0 P(1) U(1) 1 W(1) 1 Rn(4) 1 register_list(15) + + @syntax { + + @subid 2000 + + @assert { + + P == 0 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + registers = RegListWithPC(register_list) + + } + + @asm ldmda wb_reg registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2001 + + @assert { + + P == 1 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + registers = RegListWithPC(register_list) + + } + + @asm ldmdb wb_reg registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2002 + + @assert { + + P == 0 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + registers = RegListWithPC(register_list) + + } + + @asm ldmia wb_reg registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2003 + + @assert { + + P == 1 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + wb_reg = WrittenBackReg(reg_N, W) + registers = RegListWithPC(register_list) + + } + + @asm ldmib wb_reg registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B936_ldm.d b/plugins/arm/v7/opdefs/B936_ldm.d new file mode 100644 index 0000000..331febc --- /dev/null +++ b/plugins/arm/v7/opdefs/B936_ldm.d @@ -0,0 +1,151 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title LDM (User registers) + +@id 357 + +@desc { + + In a PL1 mode other than System mode, Load Multiple (User registers) loads multiple User mode registers from consecutive memory locations using an address from a base register. The registers loaded cannot include the PC. The processor reads the base register value normally, using the current mode to determine the correct Banked version of the register. This instruction cannot writeback to the base register. LDM (user registers) is UNDEFINED in Hyp mode, and UNPREDICTABLE in User and System modes. + +} + +@encoding (A1) { + + @word cond(4) 1 0 0 P(1) U(1) 1 0 1 Rn(4) 0 register_list(15) + + @syntax { + + @subid 2004 + + @assert { + + P == 0 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegListWithoutPC(register_list) + + } + + @asm ldmda reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2005 + + @assert { + + P == 1 + U == 0 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegListWithoutPC(register_list) + + } + + @asm ldmdb reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2006 + + @assert { + + P == 0 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegListWithoutPC(register_list) + + } + + @asm ldmia reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + + @syntax { + + @subid 2007 + + @assert { + + P == 1 + U == 1 + + } + + @conv { + + reg_N = Register(Rn) + registers = RegListWithoutPC(register_list) + + } + + @asm ldmib reg_N registers + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B938_mrs.d b/plugins/arm/v7/opdefs/B938_mrs.d new file mode 100644 index 0000000..259daae --- /dev/null +++ b/plugins/arm/v7/opdefs/B938_mrs.d @@ -0,0 +1,81 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title MRS + +@id 359 + +@desc { + + Move to Register from Special register moves the value from the CPSR or SPSR of the current mode into an ARM core register. An MRS that accesses the SPSR is UNPREDICTABLE if executed in User or System mode. An MRS that is executed in User mode and accesses the CPSR returns an UNKNOWN value for the CPSR.{E, A, I, F, M} fields. Note MRS on page A8-496 describes the valid application level uses of the MRS instruction. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 0 1 1 1 1 1 R(1) 1 1 1 1 1 0 0 0 Rd(4) 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2008 + + @conv { + + reg_D = Register(Rd) + spec_reg = SpecRegCSPSR(R) + + } + + @asm mrs reg_D spec_reg + + } + +} + +@encoding (A1) { + + @word cond(4) 0 0 0 1 0 R(1) 0 0 1 1 1 1 Rd(4) 0 0 0 0 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2009 + + @conv { + + reg_D = Register(Rd) + spec_reg = SpecRegCSPSR(R) + + } + + @asm mrs reg_D spec_reg + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/B939_mrs.d b/plugins/arm/v7/opdefs/B939_mrs.d new file mode 100644 index 0000000..61db344 --- /dev/null +++ b/plugins/arm/v7/opdefs/B939_mrs.d @@ -0,0 +1,81 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * ##FILE## - traduction d'instructions ARMv7 + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +@title MRS (Banked register) + +@id 360 + +@desc { + + Move to Register from Banked or Special register moves the value from the Banked ARM core register or SPSR of the specified mode, or the value of ELR_hyp, to an ARM core register. MRS (Banked register) is UNPREDICTABLE if executed in User mode. The effect of using an MRS (Banked register) instruction with a register argument that is not valid for the current mode is UNPREDICTABLE. For more information see Usage restrictions on the Banked register transfer instructions on page B9-1972. + +} + +@encoding (T1) { + + @word 1 1 1 1 0 0 1 1 1 1 1 R(1) m1(4) 1 0 0 0 Rd(4) 0 0 1 m(1) 0 0 0 0 + + @syntax { + + @subid 2010 + + @conv { + + reg_D = Register(Rd) + banked_reg = BankedRegister(R, m:m1) + + } + + @asm mrs reg_D banked_reg + + } + +} + +@encoding (A1) { + + @word cond(4) 0 0 0 1 0 R(1) 0 0 m1(4) Rd(4) 0 0 1 m(1) 0 0 0 0 0 0 0 0 + + @syntax { + + @subid 2011 + + @conv { + + reg_D = Register(Rd) + banked_reg = BankedRegister(R, m:m1) + + } + + @asm mrs reg_D banked_reg + + @rules { + + check g_arm_instruction_set_cond(cond) + + } + + } + +} + diff --git a/plugins/arm/v7/opdefs/Makefile.am b/plugins/arm/v7/opdefs/Makefile.am index 331ac98..68e6c6f 100644 --- a/plugins/arm/v7/opdefs/Makefile.am +++ b/plugins/arm/v7/opdefs/Makefile.am @@ -22,7 +22,7 @@ D2C_ENCODINGS = \ D2C_ID_PREFIX = AOP7 D2C_ID_COUNT = 500 -D2C_SPECIFIC = +D2C_SPECIFIC = --filename-reuse=2 FIXED_C_INCLUDES = \ @@ -49,267 +49,289 @@ FIXED_H_HOOKS_INCLUDES = \ \n\#include "../../link.h" -# for i in $(seq 1 426); do test -f *A88$i.d && (ls *A88$i.d | sed 's/^/\t/' | sed 's/$/\t\t\t\t\t\t\\/') ; done +# for i in $(seq 1 426); do file=A88${i}_*d ; test -f $file && ls $file ; done | sed 's/^/\t/' | sed 's/$/\t\t\t\t\t\t\\/' +# for i in $(seq 1 22); do file=B93${i}_*d ; test -f $file && ls $file ; done | sed 's/^/\t/' | sed 's/$/\t\t\t\t\t\t\\/' + ARMV7_DEFS = \ - adc_A881.d \ - adc_A882.d \ - adc_A883.d \ - add_A884.d \ - add_A885.d \ - add_A886.d \ - add_A887.d \ - add_A888.d \ - add_A889.d \ - add_A8810.d \ - add_A8811.d \ - adr_A8812.d \ - and_A8813.d \ - and_A8814.d \ - and_A8815.d \ - asr_A8816.d \ - asr_A8817.d \ - b_A8818.d \ - bfc_A8819.d \ - bfi_A8820.d \ - bic_A8821.d \ - bic_A8822.d \ - bic_A8823.d \ - bkpt_A8824.d \ - bl_A8825.d \ - blx_A8826.d \ - bx_A8827.d \ - bxj_A8828.d \ - cb_A8829.d \ - cdp_A8830.d \ - clrex_A8832.d \ - clz_A8833.d \ - cmn_A8834.d \ - cmn_A8835.d \ - cmn_A8836.d \ - cmp_A8837.d \ - cmp_A8838.d \ - cmp_A8839.d \ - dbg_A8842.d \ - dmb_A8843.d \ - dsb_A8844.d \ - eor_A8846.d \ - eor_A8847.d \ - eor_A8848.d \ - it_A8854.d \ - ldc_A8855.d \ - ldc_A8856.d \ - ldm_A8857.d \ - ldm_A8858.d \ - ldmda_A8859.d \ - ldmdb_A8860.d \ - ldmib_A8861.d \ - ldr_A8862.d \ - ldr_A8863.d \ - ldr_A8864.d \ - ldr_A8865.d \ - ldr_A8866.d \ - ldrb_A8867.d \ - ldrb_A8868.d \ - ldrb_A8869.d \ - ldrb_A8870.d \ - ldrbt_A8871.d \ - ldrd_A8872.d \ - ldrd_A8873.d \ - ldrd_A8874.d \ - ldrex_A8875.d \ - ldrexb_A8876.d \ - ldrexd_A8877.d \ - ldrexh_A8878.d \ - ldrh_A8879.d \ - ldrh_A8880.d \ - ldrh_A8881.d \ - ldrh_A8882.d \ - ldrht_A8883.d \ - ldrsb_A8884.d \ - ldrsb_A8885.d \ - ldrsb_A8886.d \ - ldrsbt_A8887.d \ - ldrsh_A8888.d \ - ldrsh_A8889.d \ - ldrsh_A8890.d \ - ldrsht_A8891.d \ - ldrt_A8892.d \ - lsl_A8894.d \ - lsl_A8895.d \ - lsr_A8896.d \ - lsr_A8897.d \ - mcr_A8898.d \ - mcrr_A8899.d \ - mla_A88100.d \ - mls_A88101.d \ - mov_A88102.d \ - mov_A88103.d \ - mov_A88104.d \ - movt_A88106.d \ - mrc_A88107.d \ - mrrc_A88108.d \ - mrs_A88109.d \ - msr_A88111.d \ - msr_A88112.d \ - mul_A88114.d \ - mvn_A88115.d \ - mvn_A88116.d \ - mvn_A88117.d \ - nop_A88119.d \ - orn_A88120.d \ - orn_A88121.d \ - orr_A88122.d \ - orr_A88123.d \ - orr_A88124.d \ - pkh_A88125.d \ - pld_A88126.d \ - pld_A88127.d \ - pld_A88128.d \ - pli_A88130.d \ - pop_A88131.d \ - pop_A88132.d \ - push_A88133.d \ - qadd_A88134.d \ - qadd16_A88135.d \ - qadd8_A88136.d \ - qasx_A88137.d \ - qdadd_A88138.d \ - qdsub_A88139.d \ - qsax_A88140.d \ - qsub_A88141.d \ - qsub16_A88142.d \ - qsub8_A88143.d \ - rbit_A88144.d \ - rev_A88145.d \ - rev16_A88146.d \ - revsh_A88147.d \ - ror_A88149.d \ - ror_A88150.d \ - rrx_A88151.d \ - rsb_A88152.d \ - rsb_A88153.d \ - rsb_A88154.d \ - rsc_A88155.d \ - rsc_A88156.d \ - rsc_A88157.d \ - sadd16_A88158.d \ - sadd8_A88159.d \ - sasx_A88160.d \ - sbc_A88161.d \ - sbc_A88162.d \ - sbc_A88163.d \ - sbfx_A88164.d \ - sdiv_A88165.d \ - sel_A88166.d \ - setend_A88167.d \ - sev_A88168.d \ - shadd16_A88169.d \ - shadd8_A88170.d \ - shasx_A88171.d \ - shsax_A88172.d \ - shsub16_A88173.d \ - shsub8_A88174.d \ - smla_A88176.d \ - smlad_A88177.d \ - smlal_A88178.d \ - smlal_A88179.d \ - smlald_A88180.d \ - smlaw_A88181.d \ - smlsd_A88182.d \ - smlsld_A88183.d \ - smmla_A88184.d \ - smmls_A88185.d \ - smmul_A88186.d \ - smuad_A88187.d \ - smul_A88188.d \ - smull_A88189.d \ - smulw_A88190.d \ - smusd_A88191.d \ - ssat_A88193.d \ - ssat16_A88194.d \ - ssax_A88195.d \ - ssub16_A88196.d \ - ssub8_A88197.d \ - stc_A88198.d \ - stm_A88199.d \ - stmda_A88200.d \ - stmdb_A88201.d \ - stmib_A88202.d \ - str_A88203.d \ - str_A88204.d \ - str_A88205.d \ - strb_A88206.d \ - strb_A88207.d \ - strb_A88208.d \ - strbt_A88209.d \ - strd_A88210.d \ - strd_A88211.d \ - strex_A88212.d \ - strexb_A88213.d \ - strexd_A88214.d \ - strexh_A88215.d \ - strh_A88216.d \ - strh_A88217.d \ - strh_A88218.d \ - strht_A88219.d \ - strt_A88220.d \ - sub_A88221.d \ - sub_A88222.d \ - sub_A88223.d \ - sub_A88224.d \ - sub_A88225.d \ - sub_A88226.d \ - svc_A88228.d \ - swp_A88229.d \ - sxtab_A88230.d \ - sxtab16_A88231.d \ - sxtah_A88232.d \ - sxtb_A88233.d \ - sxtb16_A88234.d \ - sxth_A88235.d \ - teq_A88237.d \ - teq_A88238.d \ - teq_A88239.d \ - tst_A88240.d \ - tst_A88241.d \ - tst_A88242.d \ - uadd16_A88243.d \ - uadd8_A88244.d \ - uasx_A88245.d \ - ubfx_A88246.d \ - udf_A88247.d \ - udiv_A88248.d \ - uhadd16_A88249.d \ - uhadd8_A88250.d \ - uhasx_A88251.d \ - uhsax_A88252.d \ - uhsub16_A88253.d \ - uhsub8_A88254.d \ - umaal_A88255.d \ - umlal_A88256.d \ - umull_A88257.d \ - uqadd16_A88258.d \ - uqadd8_A88259.d \ - uqasx_A88260.d \ - uqsax_A88261.d \ - uqsub16_A88262.d \ - uqsub8_A88263.d \ - usad8_A88264.d \ - usada8_A88265.d \ - usat_A88266.d \ - usat16_A88267.d \ - usax_A88268.d \ - usub16_A88269.d \ - usub8_A88270.d \ - uxtab_A88271.d \ - uxtab16_A88272.d \ - uxtah_A88273.d \ - uxtb_A88274.d \ - uxtb16_A88275.d \ - uxth_A88276.d \ - wfe_A88424.d \ - wfi_A88425.d \ - yield_A88426.d + A881_adc.d \ + A882_adc.d \ + A883_adc.d \ + A884_add.d \ + A885_add.d \ + A886_add.d \ + A887_add.d \ + A888_add.d \ + A889_add.d \ + A8810_add.d \ + A8811_add.d \ + A8812_adr.d \ + A8813_and.d \ + A8814_and.d \ + A8815_and.d \ + A8816_asr.d \ + A8817_asr.d \ + A8818_b.d \ + A8819_bfc.d \ + A8820_bfi.d \ + A8821_bic.d \ + A8822_bic.d \ + A8823_bic.d \ + A8824_bkpt.d \ + A8825_bl.d \ + A8826_blx.d \ + A8827_bx.d \ + A8828_bxj.d \ + A8829_cb.d \ + A8830_cdp.d \ + A8832_clrex.d \ + A8833_clz.d \ + A8834_cmn.d \ + A8835_cmn.d \ + A8836_cmn.d \ + A8837_cmp.d \ + A8838_cmp.d \ + A8839_cmp.d \ + A8842_dbg.d \ + A8843_dmb.d \ + A8844_dsb.d \ + A8846_eor.d \ + A8847_eor.d \ + A8848_eor.d \ + A8854_it.d \ + A8855_ldc.d \ + A8856_ldc.d \ + A8857_ldm.d \ + A8858_ldm.d \ + A8859_ldmda.d \ + A8860_ldmdb.d \ + A8861_ldmib.d \ + A8862_ldr.d \ + A8863_ldr.d \ + A8864_ldr.d \ + A8865_ldr.d \ + A8866_ldr.d \ + A8867_ldrb.d \ + A8868_ldrb.d \ + A8869_ldrb.d \ + A8870_ldrb.d \ + A8871_ldrbt.d \ + A8872_ldrd.d \ + A8873_ldrd.d \ + A8874_ldrd.d \ + A8875_ldrex.d \ + A8876_ldrexb.d \ + A8877_ldrexd.d \ + A8878_ldrexh.d \ + A8879_ldrh.d \ + A8880_ldrh.d \ + A8881_ldrh.d \ + A8882_ldrh.d \ + A8883_ldrht.d \ + A8884_ldrsb.d \ + A8885_ldrsb.d \ + A8886_ldrsb.d \ + A8887_ldrsbt.d \ + A8888_ldrsh.d \ + A8889_ldrsh.d \ + A8890_ldrsh.d \ + A8891_ldrsht.d \ + A8892_ldrt.d \ + A8894_lsl.d \ + A8895_lsl.d \ + A8896_lsr.d \ + A8897_lsr.d \ + A8898_mcr.d \ + A8899_mcrr.d \ + A88100_mla.d \ + A88101_mls.d \ + A88102_mov.d \ + A88103_mov.d \ + A88104_mov.d \ + A88106_movt.d \ + A88107_mrc.d \ + A88108_mrrc.d \ + A88109_mrs.d \ + A88111_msr.d \ + A88112_msr.d \ + A88114_mul.d \ + A88115_mvn.d \ + A88116_mvn.d \ + A88117_mvn.d \ + A88119_nop.d \ + A88120_orn.d \ + A88121_orn.d \ + A88122_orr.d \ + A88123_orr.d \ + A88124_orr.d \ + A88125_pkh.d \ + A88126_pld.d \ + A88127_pld.d \ + A88128_pld.d \ + A88130_pli.d \ + A88131_pop.d \ + A88132_pop.d \ + A88133_push.d \ + A88134_qadd.d \ + A88135_qadd16.d \ + A88136_qadd8.d \ + A88137_qasx.d \ + A88138_qdadd.d \ + A88139_qdsub.d \ + A88140_qsax.d \ + A88141_qsub.d \ + A88142_qsub16.d \ + A88143_qsub8.d \ + A88144_rbit.d \ + A88145_rev.d \ + A88146_rev16.d \ + A88147_revsh.d \ + A88149_ror.d \ + A88150_ror.d \ + A88151_rrx.d \ + A88152_rsb.d \ + A88153_rsb.d \ + A88154_rsb.d \ + A88155_rsc.d \ + A88156_rsc.d \ + A88157_rsc.d \ + A88158_sadd16.d \ + A88159_sadd8.d \ + A88160_sasx.d \ + A88161_sbc.d \ + A88162_sbc.d \ + A88163_sbc.d \ + A88164_sbfx.d \ + A88165_sdiv.d \ + A88166_sel.d \ + A88167_setend.d \ + A88168_sev.d \ + A88169_shadd16.d \ + A88170_shadd8.d \ + A88171_shasx.d \ + A88172_shsax.d \ + A88173_shsub16.d \ + A88174_shsub8.d \ + A88176_smla.d \ + A88177_smlad.d \ + A88178_smlal.d \ + A88179_smlal.d \ + A88180_smlald.d \ + A88181_smlaw.d \ + A88182_smlsd.d \ + A88183_smlsld.d \ + A88184_smmla.d \ + A88185_smmls.d \ + A88186_smmul.d \ + A88187_smuad.d \ + A88188_smul.d \ + A88189_smull.d \ + A88190_smulw.d \ + A88191_smusd.d \ + A88193_ssat.d \ + A88194_ssat16.d \ + A88195_ssax.d \ + A88196_ssub16.d \ + A88197_ssub8.d \ + A88198_stc.d \ + A88199_stm.d \ + A88200_stmda.d \ + A88201_stmdb.d \ + A88202_stmib.d \ + A88203_str.d \ + A88204_str.d \ + A88205_str.d \ + A88206_strb.d \ + A88207_strb.d \ + A88208_strb.d \ + A88209_strbt.d \ + A88210_strd.d \ + A88211_strd.d \ + A88212_strex.d \ + A88213_strexb.d \ + A88214_strexd.d \ + A88215_strexh.d \ + A88216_strh.d \ + A88217_strh.d \ + A88218_strh.d \ + A88219_strht.d \ + A88220_strt.d \ + A88221_sub.d \ + A88222_sub.d \ + A88223_sub.d \ + A88224_sub.d \ + A88225_sub.d \ + A88226_sub.d \ + A88228_svc.d \ + A88229_swp.d \ + A88230_sxtab.d \ + A88231_sxtab16.d \ + A88232_sxtah.d \ + A88233_sxtb.d \ + A88234_sxtb16.d \ + A88235_sxth.d \ + A88237_teq.d \ + A88238_teq.d \ + A88239_teq.d \ + A88240_tst.d \ + A88241_tst.d \ + A88242_tst.d \ + A88243_uadd16.d \ + A88244_uadd8.d \ + A88245_uasx.d \ + A88246_ubfx.d \ + A88247_udf.d \ + A88248_udiv.d \ + A88249_uhadd16.d \ + A88250_uhadd8.d \ + A88251_uhasx.d \ + A88252_uhsax.d \ + A88253_uhsub16.d \ + A88254_uhsub8.d \ + A88255_umaal.d \ + A88256_umlal.d \ + A88257_umull.d \ + A88258_uqadd16.d \ + A88259_uqadd8.d \ + A88260_uqasx.d \ + A88261_uqsax.d \ + A88262_uqsub16.d \ + A88263_uqsub8.d \ + A88264_usad8.d \ + A88265_usada8.d \ + A88266_usat.d \ + A88267_usat16.d \ + A88268_usax.d \ + A88269_usub16.d \ + A88270_usub8.d \ + A88271_uxtab.d \ + A88272_uxtab16.d \ + A88273_uxtah.d \ + A88274_uxtb.d \ + A88275_uxtb16.d \ + A88276_uxth.d \ + A88424_wfe.d \ + A88425_wfi.d \ + A88426_yield.d \ + B931_cps.d \ + B932_cps.d \ + B933_eret.d \ + B934_hvc.d \ + B935_ldm.d \ + B936_ldm.d \ + B938_mrs.d \ + B939_mrs.d \ + B9310_msr.d \ + B9311_msr.d \ + B9312_msr.d \ + B9313_rfe.d \ + B9314_smc.d \ + B9315_srs.d \ + B9316_srs.d \ + B9317_stm.d \ + B9319_subs.d \ + B9320_subs.d \ + B9321_vmrs.d \ + B9322_vmsr.d # make dist procède répertoire par répertoire. Or le répertoire opcodes utilise diff --git a/plugins/arm/v7/operands/Makefile.am b/plugins/arm/v7/operands/Makefile.am index d19db29..ac08569 100644 --- a/plugins/arm/v7/operands/Makefile.am +++ b/plugins/arm/v7/operands/Makefile.am @@ -3,6 +3,7 @@ noinst_LTLIBRARIES = libarmv7operands.la libarmv7operands_la_SOURCES = \ estate.h estate.c \ + iflags.h iflags.c \ it.h it.c \ limitation.h limitation.c \ maccess.h maccess.c \ diff --git a/plugins/arm/v7/operands/iflags.c b/plugins/arm/v7/operands/iflags.c new file mode 100644 index 0000000..e7b1b41 --- /dev/null +++ b/plugins/arm/v7/operands/iflags.c @@ -0,0 +1,337 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * iflags.c - opérandes précisant un masque d'interruption ARMv7 + * + * Copyright (C) 2018 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +#include "iflags.h" + + +#include <arch/operand-int.h> + + + +/* Définition d'un opérande précisant un masque d'interruption ARMv7 (instance) */ +struct _GArmV7IFlagsOperand +{ + GArchOperand parent; /* Instance parente */ + + bool abort_bit; /* Interruption d'arrêt async. */ + bool irq_bit; /* Interruption IRQ */ + bool fiq_bit; /* Interruption FIQ */ + +}; + + +/* Définition d'un opérande précisant un masque d'interruption ARMv7 (classe) */ +struct _GArmV7IFlagsOperandClass +{ + GArchOperandClass parent; /* Classe parente */ + +}; + + +/* Initialise la classe des opérandes de masque d'interruption. */ +static void g_armv7_iflags_operand_class_init(GArmV7IFlagsOperandClass *); + +/* Initialise une instance d'opérande de masque d'interruption. */ +static void g_armv7_iflags_operand_init(GArmV7IFlagsOperand *); + +/* Supprime toutes les références externes. */ +static void g_armv7_iflags_operand_dispose(GArmV7IFlagsOperand *); + +/* Procède à la libération totale de la mémoire. */ +static void g_armv7_iflags_operand_finalize(GArmV7IFlagsOperand *); + +/* Traduit un opérande en version humainement lisible. */ +static void g_armv7_iflags_operand_print(const GArmV7IFlagsOperand *, GBufferLine *, AsmSyntax); + + + +/* --------------------- TRANSPOSITIONS VIA CACHE DES OPERANDES --------------------- */ + + +/* Charge un opérande depuis une mémoire tampon. */ +static bool g_armv7_iflags_operand_unserialize(GArmV7IFlagsOperand *, GAsmStorage *, GBinFormat *, packed_buffer *); + +/* Sauvegarde un opérande dans une mémoire tampon. */ +static bool g_armv7_iflags_operand_serialize(const GArmV7IFlagsOperand *, GAsmStorage *, packed_buffer *); + + + +/* Indique le type défini par la GLib pour un opérande de masque d'interruption ARMv7. */ +G_DEFINE_TYPE(GArmV7IFlagsOperand, g_armv7_iflags_operand, G_TYPE_ARCH_OPERAND); + + +/****************************************************************************** +* * +* Paramètres : klass = classe à initialiser. * +* * +* Description : Initialise la classe des opérandes de masque d'interruption. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_armv7_iflags_operand_class_init(GArmV7IFlagsOperandClass *klass) +{ + GObjectClass *object; /* Autre version de la classe */ + GArchOperandClass *operand; /* Version de classe parente */ + + object = G_OBJECT_CLASS(klass); + + object->dispose = (GObjectFinalizeFunc/* ! */)g_armv7_iflags_operand_dispose; + object->finalize = (GObjectFinalizeFunc)g_armv7_iflags_operand_finalize; + + operand = G_ARCH_OPERAND_CLASS(klass); + + operand->print = (operand_print_fc)g_armv7_iflags_operand_print; + + operand->unserialize = (unserialize_operand_fc)g_armv7_iflags_operand_unserialize; + operand->serialize = (serialize_operand_fc)g_armv7_iflags_operand_serialize; + +} + + +/****************************************************************************** +* * +* Paramètres : operand = instance à initialiser. * +* * +* Description : Initialise une instance d'opérande de masque d'interruption. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_armv7_iflags_operand_init(GArmV7IFlagsOperand *operand) +{ + operand->abort_bit = false; + operand->irq_bit = false; + operand->fiq_bit = false; + +} + + +/****************************************************************************** +* * +* Paramètres : operand = instance d'objet GLib à traiter. * +* * +* Description : Supprime toutes les références externes. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_armv7_iflags_operand_dispose(GArmV7IFlagsOperand *operand) +{ + G_OBJECT_CLASS(g_armv7_iflags_operand_parent_class)->dispose(G_OBJECT(operand)); + +} + + +/****************************************************************************** +* * +* Paramètres : operand = instance d'objet GLib à traiter. * +* * +* Description : Procède à la libération totale de la mémoire. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_armv7_iflags_operand_finalize(GArmV7IFlagsOperand *operand) +{ + G_OBJECT_CLASS(g_armv7_iflags_operand_parent_class)->finalize(G_OBJECT(operand)); + +} + + +/****************************************************************************** +* * +* Paramètres : operand = opérande à traiter. * +* line = ligne tampon où imprimer l'opérande donné. * +* syntax = type de représentation demandée. * +* * +* Description : Traduit un opérande en version humainement lisible. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_armv7_iflags_operand_print(const GArmV7IFlagsOperand *operand, GBufferLine *line, AsmSyntax syntax) +{ + if (operand->abort_bit) + g_buffer_line_append_text(line, BLC_ASSEMBLY, "A", 1, RTT_REGISTER, NULL); + + if (operand->irq_bit) + g_buffer_line_append_text(line, BLC_ASSEMBLY, "I", 1, RTT_REGISTER, NULL); + + if (operand->fiq_bit) + g_buffer_line_append_text(line, BLC_ASSEMBLY, "F", 1, RTT_REGISTER, NULL); + +} + + +/****************************************************************************** +* * +* Paramètres : a = bit d'arrêt asynchrone. * +* i = bit d'interruption IRQ. * +* f = bit d'interruption FIQ. * +* * +* Description : Crée un opérande de masque d'interruption ARMv7. * +* * +* Retour : Opérande mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GArchOperand *g_armv7_iflags_operand_new(bool a, bool i, bool f) +{ + GArmV7IFlagsOperand *result; /* Structure à retourner */ + + result = g_object_new(G_TYPE_ARMV7_IFLAGS_OPERAND, NULL); + + result->abort_bit = a; + result->irq_bit = i; + result->fiq_bit = f; + + return G_ARCH_OPERAND(result); + +} + + +/* ---------------------------------------------------------------------------------- */ +/* TRANSPOSITIONS VIA CACHE DES OPERANDES */ +/* ---------------------------------------------------------------------------------- */ + + +/****************************************************************************** +* * +* Paramètres : operand = opérande d'assemblage à constituer. * +* storage = mécanisme de sauvegarde à manipuler. * +* format = format binaire chargé associé à l'architecture. * +* pbuf = zone tampon à remplir. * +* * +* Description : Charge un opérande depuis une mémoire tampon. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static bool g_armv7_iflags_operand_unserialize(GArmV7IFlagsOperand *operand, GAsmStorage *storage, GBinFormat *format, packed_buffer *pbuf) +{ + bool result; /* Bilan à retourner */ + GArchOperandClass *parent; /* Classe parente à consulter */ + uint8_t boolean; /* Valeur booléenne */ + + parent = G_ARCH_OPERAND_CLASS(g_armv7_iflags_operand_parent_class); + + result = parent->unserialize(G_ARCH_OPERAND(operand), storage, format, pbuf); + + if (result) + { + result = extract_packed_buffer(pbuf, &boolean, sizeof(uint8_t), false); + + if (result) + operand->abort_bit = (boolean == 1 ? true : false); + + } + + if (result) + { + result = extract_packed_buffer(pbuf, &boolean, sizeof(uint8_t), false); + + if (result) + operand->irq_bit = (boolean == 1 ? true : false); + + } + + if (result) + { + result = extract_packed_buffer(pbuf, &boolean, sizeof(uint8_t), false); + + if (result) + operand->fiq_bit = (boolean == 1 ? true : false); + + } + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : operand = opérande d'assemblage à consulter. * +* storage = mécanisme de sauvegarde à manipuler. * +* pbuf = zone tampon à remplir. * +* * +* Description : Sauvegarde un opérande dans une mémoire tampon. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static bool g_armv7_iflags_operand_serialize(const GArmV7IFlagsOperand *operand, GAsmStorage *storage, packed_buffer *pbuf) +{ + bool result; /* Bilan à retourner */ + GArchOperandClass *parent; /* Classe parente à consulter */ + uint8_t boolean; /* Valeur booléenne */ + + parent = G_ARCH_OPERAND_CLASS(g_armv7_iflags_operand_parent_class); + + result = parent->serialize(G_ARCH_OPERAND(operand), storage, pbuf); + + if (result) + { + boolean = (operand->abort_bit ? 1 : 0); + result = extend_packed_buffer(pbuf, &boolean, sizeof(uint8_t), false); + } + + if (result) + { + boolean = (operand->irq_bit ? 1 : 0); + result = extend_packed_buffer(pbuf, &boolean, sizeof(uint8_t), false); + } + + if (result) + { + boolean = (operand->fiq_bit ? 1 : 0); + result = extend_packed_buffer(pbuf, &boolean, sizeof(uint8_t), false); + } + + return result; + +} diff --git a/plugins/arm/v7/operands/iflags.h b/plugins/arm/v7/operands/iflags.h new file mode 100644 index 0000000..c0155a1 --- /dev/null +++ b/plugins/arm/v7/operands/iflags.h @@ -0,0 +1,59 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * iflags.h - prototypes pour les opérandes précisant un masque d'interruption ARMv7 + * + * Copyright (C) 2018 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +#ifndef _PLUGINS_ARM_V7_OPERANDS_IFLAGS_H +#define _PLUGINS_ARM_V7_OPERANDS_IFLAGS_H + + +#include <glib-object.h> +#include <stdbool.h> + + +#include <arch/operand.h> + + + +#define G_TYPE_ARMV7_IFLAGS_OPERAND g_armv7_iflags_operand_get_type() +#define G_ARMV7_IFLAGS_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_ARMV7_IFLAGS_OPERAND, GArmV7IFlagsOperand)) +#define G_IS_ARMV7_IFLAGS_OPERAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_ARMV7_IFLAGS_OPERAND)) +#define G_ARMV7_IFLAGS_OPERAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_ARMV7_IFLAGS_OPERAND, GArmV7IFlagsOperandClass)) +#define G_IS_ARMV7_IFLAGS_OPERAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_ARMV7_IFLAGS_OPERAND)) +#define G_ARMV7_IFLAGS_OPERAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_ARMV7_IFLAGS_OPERAND, GArmV7IFlagsOperandClass)) + + +/* Définition d'un opérande précisant un masque d'interruption ARMv7 (instance) */ +typedef struct _GArmV7IFlagsOperand GArmV7IFlagsOperand; + +/* Définition d'un opérande précisant un masque d'interruption ARMv7 (classe) */ +typedef struct _GArmV7IFlagsOperandClass GArmV7IFlagsOperandClass; + + +/* Indique le type défini par la GLib pour un opérande de masque d'interruption ARMv7. */ +GType g_armv7_iflags_operand_get_type(void); + +/* Crée un opérande de masque d'interruption ARMv7. */ +GArchOperand *g_armv7_iflags_operand_new(bool, bool, bool); + + + +#endif /* _PLUGINS_ARM_V7_OPERANDS_IFLAGS_H */ diff --git a/plugins/arm/v7/operands/reglist.c b/plugins/arm/v7/operands/reglist.c index 0f87424..53b24a4 100644 --- a/plugins/arm/v7/operands/reglist.c +++ b/plugins/arm/v7/operands/reglist.c @@ -378,6 +378,34 @@ GArmV7Register *g_armv7_reglist_operand_get_register(const GArmV7RegListOperand } +/****************************************************************************** +* * +* Paramètres : operand = liste de registres à consulter. * +* reg = registre à rechercher. * +* * +* Description : Indique si un registre est présent dans une liste. * +* * +* Retour : Bilan de l'analyse. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool g_armv7_reglist_operand_has_register(const GArmV7RegListOperand *operand, const GArmV7Register *reg) +{ + bool result; /* Bilan à faire remonter */ + size_t i; /* Boucle de parcours */ + + result = false; + + for (i = 0; i < operand->count && !result; i++) + result = (g_arch_register_compare(G_ARCH_REGISTER(operand->registers[i]), G_ARCH_REGISTER(reg)) == 0); + + return result; + +} + + /* ---------------------------------------------------------------------------------- */ /* TRANSPOSITIONS VIA CACHE DES OPERANDES */ diff --git a/plugins/arm/v7/operands/reglist.h b/plugins/arm/v7/operands/reglist.h index a8adc47..2d1bfa9 100644 --- a/plugins/arm/v7/operands/reglist.h +++ b/plugins/arm/v7/operands/reglist.h @@ -66,6 +66,9 @@ size_t g_armv7_reglist_count_registers(const GArmV7RegListOperand *); /* Founit un élément donné d'une liste de registres ARM. */ GArmV7Register *g_armv7_reglist_operand_get_register(const GArmV7RegListOperand *, size_t ); +/* Indique si un registre est présent dans une liste. */ +bool g_armv7_reglist_operand_has_register(const GArmV7RegListOperand *, const GArmV7Register *); + #endif /* _PLUGINS_ARM_V7_OPERANDS_REGLIST_H */ diff --git a/plugins/arm/v7/simd.c b/plugins/arm/v7/simd.c index 79ddcf2..a565011 100644 --- a/plugins/arm/v7/simd.c +++ b/plugins/arm/v7/simd.c @@ -139,7 +139,7 @@ GArchInstruction *process_armv7_simd_advanced_simd_data_processing_instructions( result = process_armv7_simd_two_registers_and_a_scalar(raw, arm); else if (u == b0 && (a & b10110) == b10110 && (c & b0001) == b0000) - result = armv7_read_simd_instr_vext(raw, arm); + result = armv7_read_simd_instr_a8_vext(raw, arm); else if (u == b1 && (a & b10110) == b10110) { @@ -147,10 +147,10 @@ GArchInstruction *process_armv7_simd_advanced_simd_data_processing_instructions( result = process_armv7_simd_two_registers_miscellaneous(raw, arm); else if ((b & b1100) == b1000 && (c & b0001) == b0000) - result = armv7_read_simd_instr_vtbl_vtbx(raw, arm); + result = armv7_read_simd_instr_a8_vtbl_vtbx(raw, arm); else if (b == b1100 && (c & b1001) == b0000) - result = armv7_read_simd_instr_vdup_scalar(raw, arm); + result = armv7_read_simd_instr_a8_vdup_scalar(raw, arm); } @@ -214,17 +214,17 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u if (a == b0000) { if (b == b0) - result = armv7_read_simd_instr_vhadd_vhsub(raw, arm); + result = armv7_read_simd_instr_a8_vhadd_vhsub(raw, arm); else/* if (b == b1)*/ - result = armv7_read_simd_instr_vqadd(raw, arm); + result = armv7_read_simd_instr_a8_vqadd(raw, arm); } else if (a == b0001) { if (b == b0) - result = armv7_read_simd_instr_vrhadd(raw, arm); + result = armv7_read_simd_instr_a8_vrhadd(raw, arm); else/* if (b == b1)*/ { @@ -232,20 +232,20 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u switch (c) { case b00: - result = armv7_read_simd_instr_vand_register(raw, arm); + result = armv7_read_simd_instr_a8_vand_register(raw, arm); break; case b01: - result = armv7_read_simd_instr_vbic_register(raw, arm); + result = armv7_read_simd_instr_a8_vbic_register(raw, arm); break; case b10: /* Cf. vmov_register aussi */ - result = armv7_read_simd_instr_vorr_register(raw, arm); + result = armv7_read_simd_instr_a8_vorr_register(raw, arm); break; case b11: - result = armv7_read_simd_instr_vorn_register(raw, arm); + result = armv7_read_simd_instr_a8_vorn_register(raw, arm); break; } @@ -254,19 +254,19 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u switch (c) { case b00: - result = armv7_read_simd_instr_veor(raw, arm); + result = armv7_read_simd_instr_a8_veor(raw, arm); break; case b01: - result = armv7_read_simd_instr_vbif_vbit_vbsl(raw, arm); + result = armv7_read_simd_instr_a8_vbif_vbit_vbsl(raw, arm); break; case b10: - result = armv7_read_simd_instr_vbif_vbit_vbsl(raw, arm); + result = armv7_read_simd_instr_a8_vbif_vbit_vbsl(raw, arm); break; case b11: - result = armv7_read_simd_instr_vbif_vbit_vbsl(raw, arm); + result = armv7_read_simd_instr_a8_vbif_vbit_vbsl(raw, arm); break; } @@ -278,53 +278,53 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u else if (a == b0010) { if (b == b0) - result = armv7_read_simd_instr_vhadd_vhsub(raw, arm); + result = armv7_read_simd_instr_a8_vhadd_vhsub(raw, arm); else/* if (b == b1)*/ - result = armv7_read_simd_instr_vqsub(raw, arm); + result = armv7_read_simd_instr_a8_vqsub(raw, arm); } else if (a == b0011) { if (b == b0) - result = armv7_read_simd_instr_vcgt_register(raw, arm); + result = armv7_read_simd_instr_a8_vcgt_register(raw, arm); else/* if (b == b1)*/ - result = armv7_read_simd_instr_vcge_register(raw, arm); + result = armv7_read_simd_instr_a8_vcge_register(raw, arm); } else if (a == b0100) { if (b == b0) - result = armv7_read_simd_instr_vshl_register(raw, arm); + result = armv7_read_simd_instr_a8_vshl_register(raw, arm); else/* if (b == b1)*/ - result = armv7_read_simd_instr_vqshl_register(raw, arm); + result = armv7_read_simd_instr_a8_vqshl_register(raw, arm); } else if (a == b0101) { if (b == b0) - result = armv7_read_simd_instr_vrshl(raw, arm); + result = armv7_read_simd_instr_a8_vrshl(raw, arm); else/* if (b == b1)*/ - result = armv7_read_simd_instr_vqrshl(raw, arm); + result = armv7_read_simd_instr_a8_vqrshl(raw, arm); } else if (a == b0110) - result = armv7_read_simd_instr_vmax_vmin_integer(raw, arm); + result = armv7_read_simd_instr_a8_vmax_vmin_integer(raw, arm); else if (a == b0111) { if (b == b0) - result = armv7_read_simd_instr_vabd_vabdl_integer(raw, arm); + result = armv7_read_simd_instr_a8_vabd_vabdl_integer(raw, arm); else/* if (b == b1)*/ - result = armv7_read_simd_instr_vaba_vabal(raw, arm); + result = armv7_read_simd_instr_a8_vaba_vabal(raw, arm); } @@ -333,20 +333,20 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u if (b == b0) { if (u == b0) - result = armv7_read_simd_instr_vadd_integer(raw, arm); + result = armv7_read_simd_instr_a8_vadd_integer(raw, arm); else/* if (u == b1)*/ - result = armv7_read_simd_instr_vsub_integer(raw, arm); + result = armv7_read_simd_instr_a8_vsub_integer(raw, arm); } else/* if (b == b1)*/ { if (u == b0) - result = armv7_read_simd_instr_vtst(raw, arm); + result = armv7_read_simd_instr_a8_vtst(raw, arm); else/* if (u == b1)*/ - result = armv7_read_simd_instr_vceq_register(raw, arm); + result = armv7_read_simd_instr_a8_vceq_register(raw, arm); } @@ -355,32 +355,32 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u else if (a == b1001) { if (b == b0) - result = armv7_read_simd_instr_vmla_vmlal_vmls_vmlsl_integer(raw, arm); + result = armv7_read_simd_instr_a8_vmla_vmlal_vmls_vmlsl_integer(raw, arm); else/* if (b == b1)*/ - result = armv7_read_simd_instr_vmul_vmull_integer_and_polynomial(raw, arm); + result = armv7_read_simd_instr_a8_vmul_vmull_integer_and_polynomial(raw, arm); } else if (a == b1010) - result = armv7_read_simd_instr_vpmax_vpmin_integer(raw, arm); + result = armv7_read_simd_instr_a8_vpmax_vpmin_integer(raw, arm); else if (a == b1011) { if (b == b0) { if (u == b0) - result = armv7_read_simd_instr_vqdmulh(raw, arm); + result = armv7_read_simd_instr_a8_vqdmulh(raw, arm); else/* if (u == b1)*/ - result = armv7_read_simd_instr_vqrdmulh(raw, arm); + result = armv7_read_simd_instr_a8_vqrdmulh(raw, arm); } else/* if (b == b1)*/ { if (u == b0) - result = armv7_read_simd_instr_vpadd_integer(raw, arm); + result = armv7_read_simd_instr_a8_vpadd_integer(raw, arm); } @@ -389,7 +389,7 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u else if (a == b1100) { if (b == b1 && u == b0) - result = armv7_read_simd_instr_vfma_vfms(raw, arm); + result = armv7_read_simd_instr_a8_vfma_vfms(raw, arm); } @@ -400,20 +400,20 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u if (u == b0) { if ((c & b10) == b00) - result = armv7_read_simd_instr_vadd_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vadd_floating_point(raw, arm); else/* if ((c & b10) == b10)*/ - result = armv7_read_simd_instr_vsub_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vsub_floating_point(raw, arm); } else/* if (u == b1)*/ { if ((c & b10) == b00) - result = armv7_read_simd_instr_vpadd_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vpadd_floating_point(raw, arm); else/* if ((c & b10) == b10)*/ - result = armv7_read_simd_instr_vabd_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vabd_floating_point(raw, arm); } @@ -422,12 +422,12 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u else/* if (b == b1)*/ { if (u == b0) - result = armv7_read_simd_instr_vmla_vmls_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vmla_vmls_floating_point(raw, arm); else/* if (u == b1)*/ { if ((c & b10) == b00) - result = armv7_read_simd_instr_vmul_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vmul_floating_point(raw, arm); } @@ -442,17 +442,17 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u if (u == b0) { if ((c & b10) == b00) - result = armv7_read_simd_instr_vceq_register(raw, arm); + result = armv7_read_simd_instr_a8_vceq_register(raw, arm); } else/* if (u == b1)*/ { if ((c & b10) == b00) - result = armv7_read_simd_instr_vcge_register(raw, arm); + result = armv7_read_simd_instr_a8_vcge_register(raw, arm); else/* if ((c & b10) == b10)*/ - result = armv7_read_simd_instr_vcgt_register(raw, arm); + result = armv7_read_simd_instr_a8_vcgt_register(raw, arm); } @@ -461,7 +461,7 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u else/* if (b == b1)*/ { if (u == b1) - result = armv7_read_simd_instr_vacge_vacgt_vacle_vaclt(raw, arm); + result = armv7_read_simd_instr_a8_vacge_vacgt_vacle_vaclt(raw, arm); } @@ -472,10 +472,10 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u if (b == b0) { if (u == b0) - result = armv7_read_simd_instr_vmax_vmin_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vmax_vmin_floating_point(raw, arm); else/* if (u == b1)*/ - result = armv7_read_simd_instr_vpmax_vpmin_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vpmax_vpmin_floating_point(raw, arm); } @@ -484,10 +484,10 @@ static GArchInstruction *process_armv7_simd_three_registers_of_the_same_length(u if (u == b0) { if ((c & b10) == b00) - result = armv7_read_simd_instr_vrecps(raw, arm); + result = armv7_read_simd_instr_a8_vrecps(raw, arm); else/* if ((c & b10) == b10)*/ - result = armv7_read_simd_instr_vrsqrts(raw, arm); + result = armv7_read_simd_instr_a8_vrsqrts(raw, arm); } @@ -547,59 +547,59 @@ static GArchInstruction *process_armv7_simd_three_registers_of_different_lengths } if ((a & b1110) == b0000) - result = armv7_read_simd_instr_vaddl_vaddw(raw, arm); + result = armv7_read_simd_instr_a8_vaddl_vaddw(raw, arm); else if ((a & b1110) == b0010) - result = armv7_read_simd_instr_vsubl_vsubw(raw, arm); + result = armv7_read_simd_instr_a8_vsubl_vsubw(raw, arm); else if (a == b0100) { if (u == b0) - result = armv7_read_simd_instr_vaddhn(raw, arm); + result = armv7_read_simd_instr_a8_vaddhn(raw, arm); else/* if (u == b1)*/ - result = armv7_read_simd_instr_vraddhn(raw, arm); + result = armv7_read_simd_instr_a8_vraddhn(raw, arm); } else if (a == b0101) - result = armv7_read_simd_instr_vaba_vabal(raw, arm); + result = armv7_read_simd_instr_a8_vaba_vabal(raw, arm); else if (a == b0110) { if (u == b0) - result = armv7_read_simd_instr_vsubhn(raw, arm); + result = armv7_read_simd_instr_a8_vsubhn(raw, arm); else/* if (u == b1)*/ - result = armv7_read_simd_instr_vrsubhn(raw, arm); + result = armv7_read_simd_instr_a8_vrsubhn(raw, arm); } else if (a == b0111) - result = armv7_read_simd_instr_vabd_vabdl_integer(raw, arm); + result = armv7_read_simd_instr_a8_vabd_vabdl_integer(raw, arm); else if ((a & b1101) == b1000) - result = armv7_read_simd_instr_vmla_vmlal_vmls_vmlsl_integer(raw, arm); + result = armv7_read_simd_instr_a8_vmla_vmlal_vmls_vmlsl_integer(raw, arm); else if ((a & b1101) == b1001) { if (u == b0) - result = armv7_read_simd_instr_vqdmlal_vqdmlsl(raw, arm); + result = armv7_read_simd_instr_a8_vqdmlal_vqdmlsl(raw, arm); } else if (a == b1100) - result = armv7_read_simd_instr_vmul_vmull_integer_and_polynomial(raw, arm); + result = armv7_read_simd_instr_a8_vmul_vmull_integer_and_polynomial(raw, arm); else if (a == b1101) { if (u == b0) - result = armv7_read_simd_instr_vqdmull(raw, arm); + result = armv7_read_simd_instr_a8_vqdmull(raw, arm); } else if (a == b1110) - result = armv7_read_simd_instr_vmul_vmull_integer_and_polynomial(raw, arm); + result = armv7_read_simd_instr_a8_vmul_vmull_integer_and_polynomial(raw, arm); return result; @@ -653,28 +653,28 @@ static GArchInstruction *process_armv7_simd_two_registers_and_a_scalar(uint32_t } if ((a & b1010) == b0000) - result = armv7_read_simd_instr_vmla_vmlal_vmls_vmlsl_by_scalar(raw, arm); + result = armv7_read_simd_instr_a8_vmla_vmlal_vmls_vmlsl_by_scalar(raw, arm); else if ((a & b1010) == b0010) - result = armv7_read_simd_instr_vmla_vmlal_vmls_vmlsl_by_scalar(raw, arm); + result = armv7_read_simd_instr_a8_vmla_vmlal_vmls_vmlsl_by_scalar(raw, arm); else if ((a & b1011) == b0011 && u == b0) - result = armv7_read_simd_instr_vqdmlal_vqdmlsl(raw, arm); + result = armv7_read_simd_instr_a8_vqdmlal_vqdmlsl(raw, arm); else if ((a & b1110) == b1000) - result = armv7_read_simd_instr_vmul_vmull_by_scalar(raw, arm); + result = armv7_read_simd_instr_a8_vmul_vmull_by_scalar(raw, arm); else if (a == b1010) - result = armv7_read_simd_instr_vmul_vmull_by_scalar(raw, arm); + result = armv7_read_simd_instr_a8_vmul_vmull_by_scalar(raw, arm); else if (a == b1011 && u == b0) - result = armv7_read_simd_instr_vqdmull(raw, arm); + result = armv7_read_simd_instr_a8_vqdmull(raw, arm); else if (a == b1100) - result = armv7_read_simd_instr_vqdmulh(raw, arm); + result = armv7_read_simd_instr_a8_vqdmulh(raw, arm); else if (a == b1101) - result = armv7_read_simd_instr_vqrdmulh(raw, arm); + result = armv7_read_simd_instr_a8_vqrdmulh(raw, arm); return result; @@ -734,51 +734,51 @@ static GArchInstruction *process_armv7_simd_two_registers_and_a_shift_amount(uin } if (a == b0000) - result = armv7_read_simd_instr_vshr(raw, arm); + result = armv7_read_simd_instr_a8_vshr(raw, arm); else if (a == b0001) - result = armv7_read_simd_instr_vsra(raw, arm); + result = armv7_read_simd_instr_a8_vsra(raw, arm); else if (a == b0010) - result = armv7_read_simd_instr_vrshr(raw, arm); + result = armv7_read_simd_instr_a8_vrshr(raw, arm); else if (a == b0011) - result = armv7_read_simd_instr_vrsra(raw, arm); + result = armv7_read_simd_instr_a8_vrsra(raw, arm); else if (a == b0100 && u == b1) - result = armv7_read_simd_instr_vsri(raw, arm); + result = armv7_read_simd_instr_a8_vsri(raw, arm); else if (a == b0101) { if (u == b0) - result = armv7_read_simd_instr_vshl_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vshl_immediate(raw, arm); else/* if (u == b1)*/ - result = armv7_read_simd_instr_vsli(raw, arm); + result = armv7_read_simd_instr_a8_vsli(raw, arm); } else if ((a & b1110) == b0110) - result = armv7_read_simd_instr_vqshl_vqshlu_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vqshl_vqshlu_immediate(raw, arm); else if (a == b1000) { if (u == b0) { if (b == b0 && l == b0) - result = armv7_read_simd_instr_vshrn(raw, arm); + result = armv7_read_simd_instr_a8_vshrn(raw, arm); else if (b == b1 && l == b0) - result = armv7_read_simd_instr_vrshrn(raw, arm); + result = armv7_read_simd_instr_a8_vrshrn(raw, arm); } else/* if (u == b1)*/ { if (b == b0 && l == b0) - result = armv7_read_simd_instr_vqshrn_vqshrun(raw, arm); + result = armv7_read_simd_instr_a8_vqshrn_vqshrun(raw, arm); else if (b == b1 && l == b0) - result = armv7_read_simd_instr_vqrshrn_vqrshrun(raw, arm); + result = armv7_read_simd_instr_a8_vqrshrn_vqrshrun(raw, arm); } @@ -787,25 +787,25 @@ static GArchInstruction *process_armv7_simd_two_registers_and_a_shift_amount(uin else if (a == b1001) { if (b == b0 && l == b0) - result = armv7_read_simd_instr_vqshrn_vqshrun(raw, arm); + result = armv7_read_simd_instr_a8_vqshrn_vqshrun(raw, arm); else if (b == b1 && l == b0) - result = armv7_read_simd_instr_vqrshrn_vqrshrun(raw, arm); + result = armv7_read_simd_instr_a8_vqrshrn_vqrshrun(raw, arm); } else if (a == b1010 && b == b0 && l == b0) { - result = armv7_read_simd_instr_vshll(raw, arm); + result = armv7_read_simd_instr_a8_vshll(raw, arm); /* ??? */ if (result == NULL) - result = armv7_read_simd_instr_vmovl(raw, arm); + result = armv7_read_simd_instr_a8_vmovl(raw, arm); } else if ((a & b1110) == b1110 && l == b0) - result = armv7_read_simd_instr_vcvt_between_floating_point_and_fixed_point_advanced_simd(raw, arm); + result = armv7_read_simd_instr_a8_vcvt_between_floating_point_and_fixed_point_advanced_simd(raw, arm); return result; @@ -853,62 +853,62 @@ static GArchInstruction *process_armv7_simd_two_registers_miscellaneous(uint32_t if (a == b00) { if ((b & b11110) == b00000) - result = armv7_read_simd_instr_vrev16_vrev32_vrev64(raw, arm); + result = armv7_read_simd_instr_a8_vrev16_vrev32_vrev64(raw, arm); else if ((b & b11110) == b00010) - result = armv7_read_simd_instr_vrev16_vrev32_vrev64(raw, arm); + result = armv7_read_simd_instr_a8_vrev16_vrev32_vrev64(raw, arm); else if ((b & b11110) == b00100) - result = armv7_read_simd_instr_vrev16_vrev32_vrev64(raw, arm); + result = armv7_read_simd_instr_a8_vrev16_vrev32_vrev64(raw, arm); else if ((b & b11100) == b01000) - result = armv7_read_simd_instr_vpaddl(raw, arm); + result = armv7_read_simd_instr_a8_vpaddl(raw, arm); else if ((b & b11110) == b10000) - result = armv7_read_simd_instr_vcls(raw, arm); + result = armv7_read_simd_instr_a8_vcls(raw, arm); else if ((b & b11110) == b10010) - result = armv7_read_simd_instr_vclz(raw, arm); + result = armv7_read_simd_instr_a8_vclz(raw, arm); else if ((b & b11110) == b10100) - result = armv7_read_simd_instr_vcnt(raw, arm); + result = armv7_read_simd_instr_a8_vcnt(raw, arm); else if ((b & b11110) == b10110) - result = armv7_read_simd_instr_vmvn_register(raw, arm); + result = armv7_read_simd_instr_a8_vmvn_register(raw, arm); else if ((b & b11100) == b11000) - result = armv7_read_simd_instr_vpadal(raw, arm); + result = armv7_read_simd_instr_a8_vpadal(raw, arm); else if ((b & b11110) == b11100) - result = armv7_read_simd_instr_vqabs(raw, arm); + result = armv7_read_simd_instr_a8_vqabs(raw, arm); else if ((b & b11110) == b11110) - result = armv7_read_simd_instr_vqneg(raw, arm); + result = armv7_read_simd_instr_a8_vqneg(raw, arm); } else if (a == b01) { if ((b & b01110) == b00000) - result = armv7_read_simd_instr_vcgt_immediate_0(raw, arm); + result = armv7_read_simd_instr_a8_vcgt_immediate_0(raw, arm); else if ((b & b01110) == b00010) - result = armv7_read_simd_instr_vcge_immediate_0(raw, arm); + result = armv7_read_simd_instr_a8_vcge_immediate_0(raw, arm); else if ((b & b01110) == b00100) - result = armv7_read_simd_instr_vceq_immediate_0(raw, arm); + result = armv7_read_simd_instr_a8_vceq_immediate_0(raw, arm); else if ((b & b01110) == b00110) - result = armv7_read_simd_instr_vcle_immediate_0(raw, arm); + result = armv7_read_simd_instr_a8_vcle_immediate_0(raw, arm); else if ((b & b01110) == b01000) - result = armv7_read_simd_instr_vclt_immediate_0(raw, arm); + result = armv7_read_simd_instr_a8_vclt_immediate_0(raw, arm); else if ((b & b01110) == b01100) - result = armv7_read_simd_instr_vabs(raw, arm); + result = armv7_read_simd_instr_a8_vabs(raw, arm); else if ((b & b01110) == b01110) - result = armv7_read_simd_instr_vneg(raw, arm); + result = armv7_read_simd_instr_a8_vneg(raw, arm); } @@ -958,41 +958,41 @@ static GArchInstruction *process_armv7_simd_one_register_and_a_modified_immediat if (op == b0) { if ((cmode & b1001) == b0000) - result = armv7_read_simd_instr_vmov_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmov_immediate(raw, arm); else if ((cmode & b1001) == b0001) - result = armv7_read_simd_instr_vorr_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vorr_immediate(raw, arm); else if ((cmode & b1101) == b1000) - result = armv7_read_simd_instr_vmov_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmov_immediate(raw, arm); else if ((cmode & b1101) == b1001) - result = armv7_read_simd_instr_vorr_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vorr_immediate(raw, arm); else if ((cmode & b1100) == b1100) - result = armv7_read_simd_instr_vmov_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmov_immediate(raw, arm); } else/* if (op == b1)*/ { if ((cmode & b1001) == b0000) - result = armv7_read_simd_instr_vmvn_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmvn_immediate(raw, arm); else if ((cmode & b1001) == b0001) - result = armv7_read_simd_instr_vbic_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vbic_immediate(raw, arm); else if ((cmode & b1101) == b1000) - result = armv7_read_simd_instr_vmvn_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmvn_immediate(raw, arm); else if ((cmode & b1101) == b1001) - result = armv7_read_simd_instr_vbic_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vbic_immediate(raw, arm); else if ((cmode & b1110) == b1100) - result = armv7_read_simd_instr_vmvn_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmvn_immediate(raw, arm); else if (cmode == b1110) - result = armv7_read_simd_instr_vmov_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmov_immediate(raw, arm); else if (cmode == b1111) result = g_undef_instruction_new(IBS_UNDEFINED); @@ -1046,89 +1046,89 @@ GArchInstruction *process_armv7_simd_floating_point_data_processing_instructions if ((opc1 & b1011) == b0000) - result = armv7_read_simd_instr_vmla_vmls_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vmla_vmls_floating_point(raw, arm); else if ((opc1 & b1011) == b0001) - result = armv7_read_simd_instr_vnmla_vnmls_vnmul(raw, arm); + result = armv7_read_simd_instr_a8_vnmla_vnmls_vnmul(raw, arm); else if ((opc1 & b1011) == b0010) { if ((opc3 & b01) == b01) - result = armv7_read_simd_instr_vnmla_vnmls_vnmul(raw, arm); + result = armv7_read_simd_instr_a8_vnmla_vnmls_vnmul(raw, arm); else/* if ((opc3 & b01) == b00)*/ - result = armv7_read_simd_instr_vmul_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vmul_floating_point(raw, arm); } else if ((opc1 & b1011) == b0011) { if ((opc3 & b01) == b00) - result = armv7_read_simd_instr_vadd_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vadd_floating_point(raw, arm); else/* if ((opc3 & b01) == b01)*/ - result = armv7_read_simd_instr_vsub_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vsub_floating_point(raw, arm); } else if ((opc1 & b1011) == b1000) { if ((opc3 & b01) == b00) - result = armv7_read_simd_instr_vdiv(raw, arm); + result = armv7_read_simd_instr_a8_vdiv(raw, arm); } else if ((opc1 & b1011) == b1001) - result = armv7_read_simd_instr_vfnma_vfnms(raw, arm); + result = armv7_read_simd_instr_a8_vfnma_vfnms(raw, arm); else if ((opc1 & b1011) == b1010) - result = armv7_read_simd_instr_vfma_vfms(raw, arm); + result = armv7_read_simd_instr_a8_vfma_vfms(raw, arm); else if ((opc1 & b1011) == b1011) { if ((opc3 & b01) == b00) - result = armv7_read_simd_instr_vmov_immediate(raw, arm); + result = armv7_read_simd_instr_a8_vmov_immediate(raw, arm); else if (opc2 == b0000) { if (opc3 == b01) - result = armv7_read_simd_instr_vmov_register(raw, arm); + result = armv7_read_simd_instr_a8_vmov_register(raw, arm); else if (opc3 == b11) - result = armv7_read_simd_instr_vabs(raw, arm); + result = armv7_read_simd_instr_a8_vabs(raw, arm); } else if (opc2 == b0001) { if (opc3 == b01) - result = armv7_read_simd_instr_vneg(raw, arm); + result = armv7_read_simd_instr_a8_vneg(raw, arm); else if (opc3 == b11) - result = armv7_read_simd_instr_vsqrt(raw, arm); + result = armv7_read_simd_instr_a8_vsqrt(raw, arm); } else if ((opc2 & b1110) == b0010 && (opc3 & b01) == b01) - result = armv7_read_simd_instr_vcvtb_vcvtt(raw, arm); + result = armv7_read_simd_instr_a8_vcvtb_vcvtt(raw, arm); else if ((opc2 & b1110) == b0100 && (opc3 & b01) == b01) - result = armv7_read_simd_instr_vcmp_vcmpe(raw, arm); + result = armv7_read_simd_instr_a8_vcmp_vcmpe(raw, arm); else if (opc2 == b0111 && opc3 == b11) - result = armv7_read_simd_instr_vcvt_between_double_precision_and_single_precision(raw, arm); + result = armv7_read_simd_instr_a8_vcvt_between_double_precision_and_single_precision(raw, arm); else if (opc2 == b1000 && (opc3 & b01) == b01) - result = armv7_read_simd_instr_vcvt_vcvtr_between_floating_point_and_integer_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vcvt_vcvtr_between_floating_point_and_integer_floating_point(raw, arm); else if ((opc2 & b1110) == b1010 && (opc3 & b01) == b01) - result = armv7_read_simd_instr_vcvt_between_floating_point_and_fixed_point_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vcvt_between_floating_point_and_fixed_point_floating_point(raw, arm); else if ((opc2 & b1110) == b1100 && (opc3 & b01) == b01) - result = armv7_read_simd_instr_vcvt_vcvtr_between_floating_point_and_integer_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vcvt_vcvtr_between_floating_point_and_integer_floating_point(raw, arm); else if ((opc2 & b1110) == b1110 && (opc3 & b01) == b01) - result = armv7_read_simd_instr_vcvt_between_floating_point_and_fixed_point_floating_point(raw, arm); + result = armv7_read_simd_instr_a8_vcvt_between_floating_point_and_fixed_point_floating_point(raw, arm); } @@ -1179,42 +1179,42 @@ GArchInstruction *process_armv7_simd_extension_register_load_store_instructions( result = process_armv7_simd_64_bit_transfers_between_arm_core_and_extension_registers(raw, arm); else if ((opcode & b11011) == b01000) - result = armv7_read_simd_instr_vstm(raw, arm); + result = armv7_read_simd_instr_a8_vstm(raw, arm); else if ((opcode & b11011) == b01010) - result = armv7_read_simd_instr_vstm(raw, arm); + result = armv7_read_simd_instr_a8_vstm(raw, arm); else if ((opcode & b10011) == b10000) - result = armv7_read_simd_instr_vstr(raw, arm); + result = armv7_read_simd_instr_a8_vstr(raw, arm); else if ((opcode & b11011) == b10010) { if (rn != b1101) - result = armv7_read_simd_instr_vstm(raw, arm); + result = armv7_read_simd_instr_a8_vstm(raw, arm); else/* if (rn == b1101)*/ - result = armv7_read_simd_instr_vpush(raw, arm); + result = armv7_read_simd_instr_a8_vpush(raw, arm); } else if ((opcode & b11011) == b01001) - result = armv7_read_simd_instr_vldm(raw, arm); + result = armv7_read_simd_instr_a8_vldm(raw, arm); else if ((opcode & b11011) == b01011) { if (rn != 1101) - result = armv7_read_simd_instr_vldm(raw, arm); + result = armv7_read_simd_instr_a8_vldm(raw, arm); else/* if (rn == 1101)*/ - result = armv7_read_simd_instr_vpop(raw, arm); + result = armv7_read_simd_instr_a8_vpop(raw, arm); } else if ((opcode & b10011) == b10001) - result = armv7_read_simd_instr_vldr(raw, arm); + result = armv7_read_simd_instr_a8_vldr(raw, arm); else if ((opcode & b11011) == b10011) - result = armv7_read_simd_instr_vldm(raw, arm); + result = armv7_read_simd_instr_a8_vldm(raw, arm); return result; @@ -1266,53 +1266,53 @@ GArchInstruction *process_armv7_simd_advanced_simd_element_or_structure_load_sto if (a == b0) { if (b == b0010) - result = armv7_read_simd_instr_vst1_multiple_single_elements(raw, arm); + result = armv7_read_simd_instr_a8_vst1_multiple_single_elements(raw, arm); else if ((b & b1110) == b0110) - result = armv7_read_simd_instr_vst1_multiple_single_elements(raw, arm); + result = armv7_read_simd_instr_a8_vst1_multiple_single_elements(raw, arm); else if (b == b1010) - result = armv7_read_simd_instr_vst1_multiple_single_elements(raw, arm); + result = armv7_read_simd_instr_a8_vst1_multiple_single_elements(raw, arm); else if (b == b0011) - result = armv7_read_simd_instr_vst2_multiple_2_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vst2_multiple_2_element_structures(raw, arm); else if ((b & b1110) == b1000) - result = armv7_read_simd_instr_vst2_multiple_2_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vst2_multiple_2_element_structures(raw, arm); else if ((b & b1110) == b0100) - result = armv7_read_simd_instr_vst3_multiple_3_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vst3_multiple_3_element_structures(raw, arm); else if ((b & b1110) == b0000) - result = armv7_read_simd_instr_vst4_multiple_4_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vst4_multiple_4_element_structures(raw, arm); } else/* if (a == b1)*/ { if ((b & b1011) == b0000) - result = armv7_read_simd_instr_vst1_single_element_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst1_single_element_from_one_lane(raw, arm); else if (b == b1000) - result = armv7_read_simd_instr_vst1_single_element_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst1_single_element_from_one_lane(raw, arm); else if ((b & b1011) == b0001) - result = armv7_read_simd_instr_vst2_single_2_element_structure_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst2_single_2_element_structure_from_one_lane(raw, arm); else if (b == b1001) - result = armv7_read_simd_instr_vst2_single_2_element_structure_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst2_single_2_element_structure_from_one_lane(raw, arm); else if ((b & b1011) == b0010) - result = armv7_read_simd_instr_vst3_single_3_element_structure_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst3_single_3_element_structure_from_one_lane(raw, arm); else if (b == b1010) - result = armv7_read_simd_instr_vst3_single_3_element_structure_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst3_single_3_element_structure_from_one_lane(raw, arm); else if ((b & b1011) == b0011) - result = armv7_read_simd_instr_vst4_single_4_element_structure_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst4_single_4_element_structure_from_one_lane(raw, arm); else if (b == b1011) - result = armv7_read_simd_instr_vst4_single_4_element_structure_from_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vst4_single_4_element_structure_from_one_lane(raw, arm); } @@ -1323,65 +1323,65 @@ GArchInstruction *process_armv7_simd_advanced_simd_element_or_structure_load_sto if (a == b0) { if (b == b0010) - result = armv7_read_simd_instr_vld1_multiple_single_elements(raw, arm); + result = armv7_read_simd_instr_a8_vld1_multiple_single_elements(raw, arm); else if ((b & b1110) == b0110) - result = armv7_read_simd_instr_vld1_multiple_single_elements(raw, arm); + result = armv7_read_simd_instr_a8_vld1_multiple_single_elements(raw, arm); else if (b == b1010) - result = armv7_read_simd_instr_vld1_multiple_single_elements(raw, arm); + result = armv7_read_simd_instr_a8_vld1_multiple_single_elements(raw, arm); else if (b == b0011) - result = armv7_read_simd_instr_vld2_multiple_2_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vld2_multiple_2_element_structures(raw, arm); else if ((b & b1110) == b1000) - result = armv7_read_simd_instr_vld2_multiple_2_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vld2_multiple_2_element_structures(raw, arm); else if ((b & b1110) == b0100) - result = armv7_read_simd_instr_vld3_multiple_3_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vld3_multiple_3_element_structures(raw, arm); else if ((b & b1110) == b0000) - result = armv7_read_simd_instr_vld4_multiple_4_element_structures(raw, arm); + result = armv7_read_simd_instr_a8_vld4_multiple_4_element_structures(raw, arm); } else/* if (a == b1)*/ { if ((b & b1011) == b0000) - result = armv7_read_simd_instr_vld1_single_element_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld1_single_element_to_one_lane(raw, arm); else if (b == b1000) - result = armv7_read_simd_instr_vld1_single_element_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld1_single_element_to_one_lane(raw, arm); else if (b == b1100) - result = armv7_read_simd_instr_vld1_single_element_to_all_lanes(raw, arm); + result = armv7_read_simd_instr_a8_vld1_single_element_to_all_lanes(raw, arm); else if ((b & b1011) == b0001) - result = armv7_read_simd_instr_vld2_single_2_element_structure_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld2_single_2_element_structure_to_one_lane(raw, arm); else if (b == b1001) - result = armv7_read_simd_instr_vld2_single_2_element_structure_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld2_single_2_element_structure_to_one_lane(raw, arm); else if (b == b1101) - result = armv7_read_simd_instr_vld2_single_2_element_structure_to_all_lanes(raw, arm); + result = armv7_read_simd_instr_a8_vld2_single_2_element_structure_to_all_lanes(raw, arm); else if ((b & b1011) == b0010) - result = armv7_read_simd_instr_vld3_single_3_element_structure_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld3_single_3_element_structure_to_one_lane(raw, arm); else if (b == b1010) - result = armv7_read_simd_instr_vld3_single_3_element_structure_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld3_single_3_element_structure_to_one_lane(raw, arm); else if (b == b1110) - result = armv7_read_simd_instr_vld3_single_3_element_structure_to_all_lanes(raw, arm); + result = armv7_read_simd_instr_a8_vld3_single_3_element_structure_to_all_lanes(raw, arm); else if ((b & b1011) == b0011) - result = armv7_read_simd_instr_vld4_single_4_element_structure_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld4_single_4_element_structure_to_one_lane(raw, arm); else if (b == b1011) - result = armv7_read_simd_instr_vld4_single_4_element_structure_to_one_lane(raw, arm); + result = armv7_read_simd_instr_a8_vld4_single_4_element_structure_to_one_lane(raw, arm); else if (b == b1111) - result = armv7_read_simd_instr_vld4_single_4_element_structure_to_all_lanes(raw, arm); + result = armv7_read_simd_instr_a8_vld4_single_4_element_structure_to_all_lanes(raw, arm); } @@ -1439,14 +1439,14 @@ GArchInstruction *process_armv7_simd_8_16_and_32_bit_transfer_between_arm_core_a if (c == b0) { if (a == b000) - result = armv7_read_simd_instr_vmov_between_arm_core_register_and_single_precision_register(raw, arm); + result = armv7_read_simd_instr_a8_vmov_between_arm_core_register_and_single_precision_register(raw, arm); else if (a == b111) { - result = armv7_read_simd_instr_vmsr(raw, arm); + result = armv7_read_simd_instr_a8_vmsr(raw, arm); /* B9 ? */ if (result == NULL /* ! */) - result = armv7_read_simd_instr_vmsr_b9(raw, arm); + result = armv7_read_simd_instr_b9_vmsr(raw, arm); } @@ -1455,10 +1455,10 @@ GArchInstruction *process_armv7_simd_8_16_and_32_bit_transfer_between_arm_core_a else/* if (c == b1)*/ { if ((a & b100) == b000) - result = armv7_read_simd_instr_vmov_arm_core_register_to_scalar(raw, arm); + result = armv7_read_simd_instr_a8_vmov_arm_core_register_to_scalar(raw, arm); else if (/*(a & b100) == b000) && */(b & b10) == b00) - result = armv7_read_simd_instr_vdup_arm_core_register(raw, arm); + result = armv7_read_simd_instr_a8_vdup_arm_core_register(raw, arm); } @@ -1469,21 +1469,21 @@ GArchInstruction *process_armv7_simd_8_16_and_32_bit_transfer_between_arm_core_a if (c == b0) { if (a == b000) - result = armv7_read_simd_instr_vmov_between_arm_core_register_and_single_precision_register(raw, arm); + result = armv7_read_simd_instr_a8_vmov_between_arm_core_register_and_single_precision_register(raw, arm); else if (a == b111) { - result = armv7_read_simd_instr_vmrs(raw, arm); + result = armv7_read_simd_instr_a8_vmrs(raw, arm); /* B9 ? */ if (result == NULL /* ! */) - result = armv7_read_simd_instr_vmrs_b9(raw, arm); + result = armv7_read_simd_instr_b9_vmrs(raw, arm); } } else/* if (c == b1)*/ - result = armv7_read_simd_instr_vmov_scalar_to_arm_core_register(raw, arm); + result = armv7_read_simd_instr_a8_vmov_scalar_to_arm_core_register(raw, arm); } @@ -1531,10 +1531,10 @@ GArchInstruction *process_armv7_simd_64_bit_transfers_between_arm_core_and_exten op = (raw >> 4) & b1111; if (c == b0 && (op & b1101) == 0001) - result = armv7_read_simd_instr_vmov_between_two_arm_core_registers_and_two_single_precision_registers(raw, arm); + result = armv7_read_simd_instr_a8_vmov_between_two_arm_core_registers_and_two_single_precision_registers(raw, arm); else if (c == b1 && (op & b1101) == 0001) - result = armv7_read_simd_instr_vmov_between_two_arm_core_registers_and_a_doubleword_extension_register(raw, arm); + result = armv7_read_simd_instr_a8_vmov_between_two_arm_core_registers_and_a_doubleword_extension_register(raw, arm); return result; 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; } diff --git a/plugins/arm/v7/thumb_32.c b/plugins/arm/v7/thumb_32.c index 41e5f46..fe06465 100644 --- a/plugins/arm/v7/thumb_32.c +++ b/plugins/arm/v7/thumb_32.c @@ -244,77 +244,77 @@ static GArchInstruction *process_armv7_thumb_32_data_processing_modified_immedia case b0000: if (rds == b11111) - result = armv7_read_thumb_32_instr_tst_immediate(raw); + result = armv7_read_thumb_32_instr_a8_tst_immediate(raw); else - result = armv7_read_thumb_32_instr_and_immediate(raw); + result = armv7_read_thumb_32_instr_a8_and_immediate(raw); break; case b0001: - result = armv7_read_thumb_32_instr_bic_immediate(raw); + result = armv7_read_thumb_32_instr_a8_bic_immediate(raw); break; case b0010: if (rn == b1111) - result = armv7_read_thumb_32_instr_mov_immediate(raw); + result = armv7_read_thumb_32_instr_a8_mov_immediate(raw); else - result = armv7_read_thumb_32_instr_orr_immediate(raw); + result = armv7_read_thumb_32_instr_a8_orr_immediate(raw); break; case b0011: if (rn == b1111) - result = armv7_read_thumb_32_instr_mvn_immediate(raw); + result = armv7_read_thumb_32_instr_a8_mvn_immediate(raw); else - result = armv7_read_thumb_32_instr_orn_immediate(raw); + result = armv7_read_thumb_32_instr_a8_orn_immediate(raw); break; case b0100: if (rds == b11111) - result = armv7_read_thumb_32_instr_teq_immediate(raw); + result = armv7_read_thumb_32_instr_a8_teq_immediate(raw); else - result = armv7_read_thumb_32_instr_eor_immediate(raw); + result = armv7_read_thumb_32_instr_a8_eor_immediate(raw); break; case b1000: if (rds == b11111) - result = armv7_read_thumb_32_instr_cmn_immediate(raw); + result = armv7_read_thumb_32_instr_a8_cmn_immediate(raw); else - result = armv7_read_thumb_32_instr_add_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_add_immediate_thumb(raw); break; case b1010: - result = armv7_read_thumb_32_instr_adc_immediate(raw); + result = armv7_read_thumb_32_instr_a8_adc_immediate(raw); break; case b1011: - result = armv7_read_thumb_32_instr_sbc_immediate(raw); + result = armv7_read_thumb_32_instr_a8_sbc_immediate(raw); break; case b1101: if (rds == b11111) - result = armv7_read_thumb_32_instr_cmp_immediate(raw); + result = armv7_read_thumb_32_instr_a8_cmp_immediate(raw); else - result = armv7_read_thumb_32_instr_sub_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_sub_immediate_thumb(raw); break; case b1110: - result = armv7_read_thumb_32_instr_rsb_immediate(raw); + result = armv7_read_thumb_32_instr_a8_rsb_immediate(raw); break; } @@ -359,75 +359,75 @@ static GArchInstruction *process_armv7_thumb_32_data_processing_plain_binary_imm case b00000: if (rn == b1111) - result = armv7_read_thumb_32_instr_adr(raw); + result = armv7_read_thumb_32_instr_a8_adr(raw); else - result = armv7_read_thumb_32_instr_add_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_add_immediate_thumb(raw); break; case b00100: - result = armv7_read_thumb_32_instr_mov_immediate(raw); + result = armv7_read_thumb_32_instr_a8_mov_immediate(raw); break; case b01010: if (rn == b11111) - result = armv7_read_thumb_32_instr_adr(raw); + result = armv7_read_thumb_32_instr_a8_adr(raw); else - result = armv7_read_thumb_32_instr_sub_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_sub_immediate_thumb(raw); break; case b01100: - result = armv7_read_thumb_32_instr_movt(raw); + result = armv7_read_thumb_32_instr_a8_movt(raw); break; case b10000: - result = armv7_read_thumb_32_instr_ssat(raw); + result = armv7_read_thumb_32_instr_a8_ssat(raw); break; case b10010: if ((raw & 0x000070c0) != 0) - result = armv7_read_thumb_32_instr_ssat(raw); + result = armv7_read_thumb_32_instr_a8_ssat(raw); else - result = armv7_read_thumb_32_instr_ssat16(raw); + result = armv7_read_thumb_32_instr_a8_ssat16(raw); break; case b10100: - result = armv7_read_thumb_32_instr_sbfx(raw); + result = armv7_read_thumb_32_instr_a8_sbfx(raw); break; case b10110: if (rn == b11111) - result = armv7_read_thumb_32_instr_bfc(raw); + result = armv7_read_thumb_32_instr_a8_bfc(raw); else - result = armv7_read_thumb_32_instr_bfi(raw); + result = armv7_read_thumb_32_instr_a8_bfi(raw); break; case b11000: - result = armv7_read_thumb_32_instr_usat(raw); + result = armv7_read_thumb_32_instr_a8_usat(raw); break; case b11010: if ((raw & 0x000070c0) != 0) - result = armv7_read_thumb_32_instr_usat(raw); + result = armv7_read_thumb_32_instr_a8_usat(raw); else - result = armv7_read_thumb_32_instr_usat16(raw); + result = armv7_read_thumb_32_instr_a8_usat16(raw); break; case b11100: - result = armv7_read_thumb_32_instr_ubfx(raw); + result = armv7_read_thumb_32_instr_a8_ubfx(raw); break; } @@ -472,30 +472,30 @@ static GArchInstruction *process_armv7_thumb_32_branches_and_miscellaneous_contr imm8 = (raw >> 0) & b11111111; if (op1 == b000 && op == b1111110) - result = armv7_read_thumb_32_instr_hvc(raw); + result = armv7_read_thumb_32_instr_b9_hvc(raw); else if (op1 == b000 && op == b1111111) - result = armv7_read_thumb_32_instr_smc_previously_smi(raw); + result = armv7_read_thumb_32_instr_b9_smc_previously_smi(raw); else if ((op1 & b101) == b000) { if ((op & b0111000) != b0111000) - result = armv7_read_thumb_32_instr_b(raw); + result = armv7_read_thumb_32_instr_a8_b(raw); else if ((imm8 & b00100000) == b00100000 && (op & b1111110) == b0111000) - result = armv7_read_thumb_32_instr_msr_banked_register(raw); + result = armv7_read_thumb_32_instr_b9_msr_banked_register(raw); else if ((imm8 & b00100000) == b00000000 && op == b0111000 && (op2 & b0011) == b0000) - result = armv7_read_thumb_32_instr_msr_register(raw); + result = armv7_read_thumb_32_instr_a8_msr_register(raw); else if ((imm8 & b00100000) == b00000000 && op == b0111000 && (op2 & b0011) == b0001) - result = armv7_read_thumb_32_instr_b_msr_register(raw); + result = armv7_read_thumb_32_instr_b9_msr_register(raw); else if ((imm8 & b00100000) == b00000000 && op == b0111000 && (op2 & b0010) == b0010) - result = armv7_read_thumb_32_instr_b_msr_register(raw); + result = armv7_read_thumb_32_instr_b9_msr_register(raw); else if ((imm8 & b00100000) == b00000000 && op == b0111001) - result = armv7_read_thumb_32_instr_b_msr_register(raw); + result = armv7_read_thumb_32_instr_b9_msr_register(raw); else if (op == b0111010) result = process_armv7_thumb_32_change_processor_state_and_hints(raw); @@ -504,36 +504,36 @@ static GArchInstruction *process_armv7_thumb_32_branches_and_miscellaneous_contr result = process_armv7_thumb_32_miscellaneous_control_instructions(raw); else if (op == b0111100) - result = armv7_read_thumb_32_instr_bxj(raw); + result = armv7_read_thumb_32_instr_a8_bxj(raw); else if (imm8 == b00000000 && op == b0111101) - result = armv7_read_thumb_32_instr_eret(raw); + result = armv7_read_thumb_32_instr_b9_eret(raw); else if (imm8 != b00000000 && op == b0111101) - result = armv7_read_thumb_32_instr_subs_pc_lr_thumb(raw); + result = armv7_read_thumb_32_instr_b9_subs_pc_lr_thumb(raw); else if ((imm8 & b00100000) == b00100000 && (op & b1111110) == b0111110) - result = armv7_read_thumb_32_instr_mrs_banked_register(raw); + result = armv7_read_thumb_32_instr_b9_mrs_banked_register(raw); else if ((imm8 & b00100000) == b00000000 && op == b0111110) - result = armv7_read_thumb_32_instr_mrs(raw); + result = armv7_read_thumb_32_instr_a8_mrs(raw); else if ((imm8 & b00100000) == b00000000 && op == b0111111) - result = armv7_read_thumb_32_instr_b_mrs(raw); + result = armv7_read_thumb_32_instr_b9_mrs(raw); } else if ((op1 & b101) == b001) - result = armv7_read_thumb_32_instr_b(raw); + result = armv7_read_thumb_32_instr_a8_b(raw); else if (op1 == b010 && op == b1111111) - result = armv7_read_thumb_32_instr_udf(raw); + result = armv7_read_thumb_32_instr_a8_udf(raw); else if ((op1 & b101) == b100) - result = armv7_read_thumb_32_instr_bl_blx_immediate(raw); + result = armv7_read_thumb_32_instr_a8_bl_blx_immediate(raw); else if ((op1 & b101) == b101) - result = armv7_read_thumb_32_instr_bl_blx_immediate(raw); + result = armv7_read_thumb_32_instr_a8_bl_blx_immediate(raw); return result; @@ -572,27 +572,27 @@ static GArchInstruction *process_armv7_thumb_32_change_processor_state_and_hints op2 = (raw >> 0) & b11111111; if (op1 != b000) - result = armv7_read_thumb_32_instr_cps_thumb(raw); + result = armv7_read_thumb_32_instr_b9_cps_thumb(raw); else { if (op2 == b00000000) - result = armv7_read_thumb_32_instr_nop(raw); + result = armv7_read_thumb_32_instr_a8_nop(raw); else if (op2 == b00000001) - result = armv7_read_thumb_32_instr_yield(raw); + result = armv7_read_thumb_32_instr_a8_yield(raw); else if (op2 == b00000010) - result = armv7_read_thumb_32_instr_wfe(raw); + result = armv7_read_thumb_32_instr_a8_wfe(raw); else if (op2 == b00000011) - result = armv7_read_thumb_32_instr_wfi(raw); + result = armv7_read_thumb_32_instr_a8_wfi(raw); else if (op2 == b00000100) - result = armv7_read_thumb_32_instr_sev(raw); + result = armv7_read_thumb_32_instr_a8_sev(raw); else if ((op2 & b11110000) == b11110000) - result = armv7_read_thumb_32_instr_dbg(raw); + result = armv7_read_thumb_32_instr_a8_dbg(raw); } @@ -633,27 +633,27 @@ static GArchInstruction *process_armv7_thumb_32_miscellaneous_control_instructio switch (op) { case b0000: - result = armv7_read_thumb_32_instr_enterx_leavex(raw); + result = armv7_read_thumb_32_instr_a9_enterx_leavex(raw); break; case b0001: - result = armv7_read_thumb_32_instr_enterx_leavex(raw); + result = armv7_read_thumb_32_instr_a9_enterx_leavex(raw); break; case b0010: - result = armv7_read_thumb_32_instr_clrex(raw); + result = armv7_read_thumb_32_instr_a8_clrex(raw); break; case b0100: - result = armv7_read_thumb_32_instr_dsb(raw); + result = armv7_read_thumb_32_instr_a8_dsb(raw); break; case b0101: - result = armv7_read_thumb_32_instr_dmb(raw); + result = armv7_read_thumb_32_instr_a8_dmb(raw); break; case b0110: - result = armv7_read_thumb_32_instr_isb(raw); + result = armv7_read_thumb_32_instr_a8_isb(raw); break; } @@ -700,25 +700,25 @@ static GArchInstruction *process_armv7_thumb_32_load_store_multiple(uint32_t raw case b00: if (l == b0) - result = armv7_read_thumb_32_instr_srs_thumb(raw); + result = armv7_read_thumb_32_instr_b9_srs_thumb(raw); else - result = armv7_read_thumb_32_instr_rfe(raw); + result = armv7_read_thumb_32_instr_b9_rfe(raw); break; case b01: if (l == b0) - result = armv7_read_thumb_32_instr_stm_stmia_stmea(raw); + result = armv7_read_thumb_32_instr_a8_stm_stmia_stmea(raw); else { if (wrn == b11101) - result = armv7_read_thumb_32_instr_pop_thumb(raw); + result = armv7_read_thumb_32_instr_a8_pop_thumb(raw); else - result = armv7_read_thumb_32_instr_ldm_ldmia_ldmfd_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldm_ldmia_ldmfd_thumb(raw); } @@ -729,25 +729,25 @@ static GArchInstruction *process_armv7_thumb_32_load_store_multiple(uint32_t raw if (l == b0) { if (wrn == b11101) - result = armv7_read_thumb_32_instr_push(raw); + result = armv7_read_thumb_32_instr_a8_push(raw); else - result = armv7_read_thumb_32_instr_stmdb_stmfd(raw); + result = armv7_read_thumb_32_instr_a8_stmdb_stmfd(raw); } else - result = armv7_read_thumb_32_instr_ldmdb_ldmea(raw); + result = armv7_read_thumb_32_instr_a8_ldmdb_ldmea(raw); break; case b11: if (l == b0) - result = armv7_read_thumb_32_instr_srs_thumb(raw); + result = armv7_read_thumb_32_instr_b9_srs_thumb(raw); else - result = armv7_read_thumb_32_instr_rfe(raw); + result = armv7_read_thumb_32_instr_b9_rfe(raw); break; @@ -793,34 +793,34 @@ static GArchInstruction *process_armv7_thumb_32_load_store_dual_load_store_exclu op3 = (raw >> 4) & 0xf; if (op1 == b00 && op2 == b00) - result = armv7_read_thumb_32_instr_strex(raw); + result = armv7_read_thumb_32_instr_a8_strex(raw); else if (op1 == b00 && op2 == b01) - result = armv7_read_thumb_32_instr_ldrex(raw); + result = armv7_read_thumb_32_instr_a8_ldrex(raw); else if ((op1 & b10) == b00 && op2 == b10) - result = armv7_read_thumb_32_instr_strd_immediate(raw); + result = armv7_read_thumb_32_instr_a8_strd_immediate(raw); else if ((op1 & b10) == b10 && (op2 & b01) == b00) - result = armv7_read_thumb_32_instr_strd_immediate(raw); + result = armv7_read_thumb_32_instr_a8_strd_immediate(raw); else if ((op1 & b10) == b00 && op2 == b11) { if (rn != b1111) - result = armv7_read_thumb_32_instr_ldrd_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrd_immediate(raw); else/* if (rn == b1111)*/ - result = armv7_read_thumb_32_instr_ldrd_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldrd_literal(raw); } else if ((op1 & b10) == b10 && (op2 & b01) == b01) { if (rn != b1111) - result = armv7_read_thumb_32_instr_ldrd_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrd_immediate(raw); else/* if (rn == b1111)*/ - result = armv7_read_thumb_32_instr_ldrd_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldrd_literal(raw); } @@ -828,15 +828,15 @@ static GArchInstruction *process_armv7_thumb_32_load_store_dual_load_store_exclu switch (op3) { case b0100: - result = armv7_read_thumb_32_instr_strexb(raw); + result = armv7_read_thumb_32_instr_a8_strexb(raw); break; case b0101: - result = armv7_read_thumb_32_instr_strexh(raw); + result = armv7_read_thumb_32_instr_a8_strexh(raw); break; case b0111: - result = armv7_read_thumb_32_instr_strexd(raw); + result = armv7_read_thumb_32_instr_a8_strexd(raw); break; } @@ -845,23 +845,23 @@ static GArchInstruction *process_armv7_thumb_32_load_store_dual_load_store_exclu switch (op3) { case b0000: - result = armv7_read_thumb_32_instr_tbb_tbh(raw); + result = armv7_read_thumb_32_instr_a8_tbb_tbh(raw); break; case b0001: - result = armv7_read_thumb_32_instr_tbb_tbh(raw); + result = armv7_read_thumb_32_instr_a8_tbb_tbh(raw); break; case b0100: - result = armv7_read_thumb_32_instr_ldrexb(raw); + result = armv7_read_thumb_32_instr_a8_ldrexb(raw); break; case b0101: - result = armv7_read_thumb_32_instr_ldrexh(raw); + result = armv7_read_thumb_32_instr_a8_ldrexh(raw); break; case b0111: - result = armv7_read_thumb_32_instr_ldrexd(raw); + result = armv7_read_thumb_32_instr_a8_ldrexd(raw); break; } @@ -908,28 +908,28 @@ static GArchInstruction *process_armv7_thumb_32_load_word(uint32_t raw) case b00: if (op2 == b000000 && rn != b1111) - result = armv7_read_thumb_32_instr_ldr_register_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldr_register_thumb(raw); else if ((op2 & b100100) == b100100 && rn != b1111) - result = armv7_read_thumb_32_instr_ldr_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldr_immediate_thumb(raw); else if ((op2 & b111100) == b110000 && rn != b1111) - result = armv7_read_thumb_32_instr_ldr_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldr_immediate_thumb(raw); else if ((op2 & b111100) == b111000 && rn != b1111) - result = armv7_read_thumb_32_instr_ldrt(raw); + result = armv7_read_thumb_32_instr_a8_ldrt(raw); break; case b01: if (rn != b1111) - result = armv7_read_thumb_32_instr_ldr_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldr_immediate_thumb(raw); break; } if (result == NULL && (op1 & b10) == b00 && rn == b1111) - result = armv7_read_thumb_32_instr_ldr_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldr_literal(raw); return result; @@ -975,17 +975,17 @@ static GArchInstruction *process_armv7_thumb_32_load_halfword_memory_hints(uint3 if ((op1 & b10) == b00) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrh_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldrh_literal(raw); else/* if (rt == b1111)*/ - result = armv7_read_thumb_32_instr_pld_literal(raw); + result = armv7_read_thumb_32_instr_a8_pld_literal(raw); } else/* if ((op1 & b10) == b10)*/ { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrsh_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldrsh_literal(raw); else/* if (rt == b1111)*/ result = g_undef_instruction_new(IBS_NOP); @@ -999,48 +999,48 @@ static GArchInstruction *process_armv7_thumb_32_load_halfword_memory_hints(uint3 if (op1 == b00) { if ((op2 & b100100) == b100100) - result = armv7_read_thumb_32_instr_ldrh_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldrh_immediate_thumb(raw); else if ((op2 & b111100) == b110000 && rt != b1111) - result = armv7_read_thumb_32_instr_ldrh_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldrh_immediate_thumb(raw); else if (op2 == b000000 && rt != b1111) - result = armv7_read_thumb_32_instr_ldrh_register(raw); + result = armv7_read_thumb_32_instr_a8_ldrh_register(raw); else if ((op2 & b111100) == b111000) - result = armv7_read_thumb_32_instr_ldrht(raw); + result = armv7_read_thumb_32_instr_a8_ldrht(raw); else if (op2 == b000000 && rt == b1111) - result = armv7_read_thumb_32_instr_pld_pldw_register(raw); + result = armv7_read_thumb_32_instr_a8_pld_pldw_register(raw); else if ((op2 & b111100) == b110000 && rt == b1111) - result = armv7_read_thumb_32_instr_pld_pldw_immediate(raw); + result = armv7_read_thumb_32_instr_a8_pld_pldw_immediate(raw); } else if (op1 == b01) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrh_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldrh_immediate_thumb(raw); else/* if (rt == b1111)*/ - result = armv7_read_thumb_32_instr_pld_pldw_immediate(raw); + result = armv7_read_thumb_32_instr_a8_pld_pldw_immediate(raw); } else if (op1 == b10) { if ((op2 & b100100) == b100100) - result = armv7_read_thumb_32_instr_ldrsh_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrsh_immediate(raw); else if ((op2 & b111100) == b110000 && rt != b1111) - result = armv7_read_thumb_32_instr_ldrsh_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrsh_immediate(raw); else if (op2 == b000000 && rt != b1111) - result = armv7_read_thumb_32_instr_ldrsh_register(raw); + result = armv7_read_thumb_32_instr_a8_ldrsh_register(raw); else if ((op2 & b111100) == b111000) - result = armv7_read_thumb_32_instr_ldrsht(raw); + result = armv7_read_thumb_32_instr_a8_ldrsht(raw); else if (op2 == b000000 && rt == b1111) result = g_undef_instruction_new(IBS_NOP); @@ -1053,7 +1053,7 @@ static GArchInstruction *process_armv7_thumb_32_load_halfword_memory_hints(uint3 else if (op1 == b11) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrsh_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrsh_immediate(raw); else/* if (rt == b1111)*/ result = g_undef_instruction_new(IBS_NOP); @@ -1104,90 +1104,90 @@ static GArchInstruction *process_armv7_thumb_32_load_byte_memory_hints(uint32_t if (op1 == b00 && op2 == b000000 && rn != b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrb_register(raw); + result = armv7_read_thumb_32_instr_a8_ldrb_register(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pld_register(raw); + result = armv7_read_thumb_32_instr_a8_pld_register(raw); } else if ((op1 & b10) == b00 && rn == b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrb_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldrb_literal(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pld_literal(raw); + result = armv7_read_thumb_32_instr_a8_pld_literal(raw); } else if (op1 == b00 && (op2 & b100100) == b100100 && rn != b1111) - result = armv7_read_thumb_32_instr_ldrb_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldrb_immediate_thumb(raw); else if (op1 == b00 && (op2 & b111100) == b110000 && rn != b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrb_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldrb_immediate_thumb(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pld_immediate(raw); + result = armv7_read_thumb_32_instr_a8_pld_immediate(raw); } else if (op1 == b00 && (op2 & b111100) == b111000 && rn != b1111) - result = armv7_read_thumb_32_instr_ldrbt(raw); + result = armv7_read_thumb_32_instr_a8_ldrbt(raw); else if (op1 == b01 && rn != b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrb_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_ldrb_immediate_thumb(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pld_immediate(raw); + result = armv7_read_thumb_32_instr_a8_pld_immediate(raw); } if (op1 == b10 && op2 == b000000 && rn != b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrsb_register(raw); + result = armv7_read_thumb_32_instr_a8_ldrsb_register(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pli_register(raw); + result = armv7_read_thumb_32_instr_a8_pli_register(raw); } else if ((op1 & b10) == b10 && rn == b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrsb_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldrsb_literal(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pli_immediate_literal(raw); + result = armv7_read_thumb_32_instr_a8_pli_immediate_literal(raw); } else if (op1 == b10 && (op2 & b100100) == b100100 && rn != b1111) - result = armv7_read_thumb_32_instr_ldrsb_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrsb_immediate(raw); else if (op1 == b10 && (op2 & b111100) == b110000 && rn != b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrsb_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrsb_immediate(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pli_immediate_literal(raw); + result = armv7_read_thumb_32_instr_a8_pli_immediate_literal(raw); } else if (op1 == b10 && (op2 & b111100) == b111000 && rn != b1111) - result = armv7_read_thumb_32_instr_ldrsbt(raw); + result = armv7_read_thumb_32_instr_a8_ldrsbt(raw); else if (op1 == b11 && rn != b1111) { if (rt != b1111) - result = armv7_read_thumb_32_instr_ldrsb_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldrsb_immediate(raw); else /*if (rt == b1111) */ - result = armv7_read_thumb_32_instr_pli_immediate_literal(raw); + result = armv7_read_thumb_32_instr_a8_pli_immediate_literal(raw); } @@ -1231,61 +1231,61 @@ static GArchInstruction *process_armv7_thumb_32_store_single_data_item(uint32_t case b000: if (op2 == b000000) - result = armv7_read_thumb_32_instr_strb_register(raw); + result = armv7_read_thumb_32_instr_a8_strb_register(raw); else if ((op2 & b100100) == b100100) - result = armv7_read_thumb_32_instr_strb_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_strb_immediate_thumb(raw); else if ((op2 & b111100) == b110000) - result = armv7_read_thumb_32_instr_strb_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_strb_immediate_thumb(raw); else if ((op2 & b111100) == b111000) - result = armv7_read_thumb_32_instr_strbt(raw); + result = armv7_read_thumb_32_instr_a8_strbt(raw); break; case b001: if (op2 == b000000) - result = armv7_read_thumb_32_instr_strh_register(raw); + result = armv7_read_thumb_32_instr_a8_strh_register(raw); else if ((op2 & b100100) == b100100) - result = armv7_read_thumb_32_instr_strh_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_strh_immediate_thumb(raw); else if ((op2 & b111100) == b110000) - result = armv7_read_thumb_32_instr_strh_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_strh_immediate_thumb(raw); else if ((op2 & b111100) == b111000) - result = armv7_read_thumb_32_instr_strht(raw); + result = armv7_read_thumb_32_instr_a8_strht(raw); break; case b010: if (op2 == b000000) - result = armv7_read_thumb_32_instr_str_register(raw); + result = armv7_read_thumb_32_instr_a8_str_register(raw); else if ((op2 & b100100) == b100100) - result = armv7_read_thumb_32_instr_str_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_str_immediate_thumb(raw); else if ((op2 & b111100) == b110000) - result = armv7_read_thumb_32_instr_str_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_str_immediate_thumb(raw); else if ((op2 & b111100) == b111000) - result = armv7_read_thumb_32_instr_strt(raw); + result = armv7_read_thumb_32_instr_a8_strt(raw); break; case b100: - result = armv7_read_thumb_32_instr_strb_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_strb_immediate_thumb(raw); break; case b101: - result = armv7_read_thumb_32_instr_strh_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_strh_immediate_thumb(raw); break; case b110: - result = armv7_read_thumb_32_instr_str_immediate_thumb(raw); + result = armv7_read_thumb_32_instr_a8_str_immediate_thumb(raw); break; } @@ -1332,15 +1332,15 @@ static GArchInstruction *process_armv7_thumb_32_data_processing_shifted_register case b0000: if (rds == b11111) - result = armv7_read_thumb_32_instr_tst_register(raw); + result = armv7_read_thumb_32_instr_a8_tst_register(raw); else - result = armv7_read_thumb_32_instr_and_register(raw); + result = armv7_read_thumb_32_instr_a8_and_register(raw); break; case b0001: - result = armv7_read_thumb_32_instr_bic_register(raw); + result = armv7_read_thumb_32_instr_a8_bic_register(raw); break; case b0010: @@ -1349,64 +1349,64 @@ static GArchInstruction *process_armv7_thumb_32_data_processing_shifted_register result = process_armv7_thumb_32_move_register_and_immediate_shifts(raw); else - result = armv7_read_thumb_32_instr_orr_register(raw); + result = armv7_read_thumb_32_instr_a8_orr_register(raw); break; case b0011: if (rn == b11111) - result = armv7_read_thumb_32_instr_mvn_register(raw); + result = armv7_read_thumb_32_instr_a8_mvn_register(raw); else - result = armv7_read_thumb_32_instr_orn_register(raw); + result = armv7_read_thumb_32_instr_a8_orn_register(raw); break; case b0100: if (rds == b11111) - result = armv7_read_thumb_32_instr_teq_register(raw); + result = armv7_read_thumb_32_instr_a8_teq_register(raw); else - result = armv7_read_thumb_32_instr_eor_register(raw); + result = armv7_read_thumb_32_instr_a8_eor_register(raw); break; case b0110: - result = armv7_read_thumb_32_instr_pkh(raw); + result = armv7_read_thumb_32_instr_a8_pkh(raw); break; case b1000: if (rds == b11111) - result = armv7_read_thumb_32_instr_cmn_register(raw); + result = armv7_read_thumb_32_instr_a8_cmn_register(raw); else - result = armv7_read_thumb_32_instr_add_register_thumb(raw); + result = armv7_read_thumb_32_instr_a8_add_register_thumb(raw); break; case b1010: - result = armv7_read_thumb_32_instr_adc_register(raw); + result = armv7_read_thumb_32_instr_a8_adc_register(raw); break; case b1011: - result = armv7_read_thumb_32_instr_sbc_register(raw); + result = armv7_read_thumb_32_instr_a8_sbc_register(raw); break; case b1101: if (rds == b11111) - result = armv7_read_thumb_32_instr_cmp_register(raw); + result = armv7_read_thumb_32_instr_a8_cmp_register(raw); else - result = armv7_read_thumb_32_instr_sub_register_thumb(raw); + result = armv7_read_thumb_32_instr_a8_sub_register_thumb(raw); break; case b1110: - result = armv7_read_thumb_32_instr_rsb_register(raw); + result = armv7_read_thumb_32_instr_a8_rsb_register(raw); break; } @@ -1452,28 +1452,28 @@ static GArchInstruction *process_armv7_thumb_32_move_register_and_immediate_shif case b00: if (imm5 == b00000) - result = armv7_read_thumb_32_instr_mov_register_thumb(raw); + result = armv7_read_thumb_32_instr_a8_mov_register_thumb(raw); else/* if (imm5 != b00000)*/ - result = armv7_read_thumb_32_instr_lsl_immediate(raw); + result = armv7_read_thumb_32_instr_a8_lsl_immediate(raw); break; case b01: - result = armv7_read_thumb_32_instr_lsr_immediate(raw); + result = armv7_read_thumb_32_instr_a8_lsr_immediate(raw); break; case b10: - result = armv7_read_thumb_32_instr_asr_immediate(raw); + result = armv7_read_thumb_32_instr_a8_asr_immediate(raw); break; case b11: if (imm5 == b00000) - result = armv7_read_thumb_32_instr_rrx(raw); + result = armv7_read_thumb_32_instr_a8_rrx(raw); else/* if (imm5 != b00000)*/ - result = armv7_read_thumb_32_instr_ror_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ror_immediate(raw); break; @@ -1517,74 +1517,74 @@ static GArchInstruction *process_armv7_thumb_32_data_processing_register(uint32_ op2 = (raw >> 4) & b1111; if ((op1 & b1110) == b0000 && op2 == b0000) - result = armv7_read_thumb_32_instr_lsl_register(raw); + result = armv7_read_thumb_32_instr_a8_lsl_register(raw); else if ((op1 & b1110) == b0010 && op2 == b0000) - result = armv7_read_thumb_32_instr_lsr_register(raw); + result = armv7_read_thumb_32_instr_a8_lsr_register(raw); else if ((op1 & b1110) == b0100 && op2 == b0000) - result = armv7_read_thumb_32_instr_asr_register(raw); + result = armv7_read_thumb_32_instr_a8_asr_register(raw); else if ((op1 & b1110) == b0110 && op2 == b0000) - result = armv7_read_thumb_32_instr_ror_register(raw); + result = armv7_read_thumb_32_instr_a8_ror_register(raw); else if (op1 == b0000 && (op2 & b1000) == b1000) { if (rn == b1111) - result = armv7_read_thumb_32_instr_sxth(raw); + result = armv7_read_thumb_32_instr_a8_sxth(raw); else - result = armv7_read_thumb_32_instr_sxtah(raw); + result = armv7_read_thumb_32_instr_a8_sxtah(raw); } else if (op1 == b0001 && (op2 & b1000) == b1000) { if (rn == b1111) - result = armv7_read_thumb_32_instr_uxth(raw); + result = armv7_read_thumb_32_instr_a8_uxth(raw); else - result = armv7_read_thumb_32_instr_uxtah(raw); + result = armv7_read_thumb_32_instr_a8_uxtah(raw); } else if (op1 == b0010 && (op2 & b1000) == b1000) { if (rn == b1111) - result = armv7_read_thumb_32_instr_sxtb16(raw); + result = armv7_read_thumb_32_instr_a8_sxtb16(raw); else - result = armv7_read_thumb_32_instr_sxtab16(raw); + result = armv7_read_thumb_32_instr_a8_sxtab16(raw); } else if (op1 == b0011 && (op2 & b1000) == b1000) { if (rn == b1111) - result = armv7_read_thumb_32_instr_uxtb16(raw); + result = armv7_read_thumb_32_instr_a8_uxtb16(raw); else - result = armv7_read_thumb_32_instr_uxtab16(raw); + result = armv7_read_thumb_32_instr_a8_uxtab16(raw); } else if (op1 == b0100 && (op2 & b1000) == b1000) { if (rn == b1111) - result = armv7_read_thumb_32_instr_sxtb(raw); + result = armv7_read_thumb_32_instr_a8_sxtb(raw); else - result = armv7_read_thumb_32_instr_sxtab(raw); + result = armv7_read_thumb_32_instr_a8_sxtab(raw); } else if (op1 == b0101 && (op2 & b1000) == b1000) { if (rn == b1111) - result = armv7_read_thumb_32_instr_uxtb(raw); + result = armv7_read_thumb_32_instr_a8_uxtb(raw); else - result = armv7_read_thumb_32_instr_uxtab(raw); + result = armv7_read_thumb_32_instr_a8_uxtab(raw); } @@ -1638,27 +1638,27 @@ static GArchInstruction *process_armv7_thumb_32_parallel_addition_and_subtractio switch (op1) { case b001: - result = armv7_read_thumb_32_instr_sadd16(raw); + result = armv7_read_thumb_32_instr_a8_sadd16(raw); break; case b010: - result = armv7_read_thumb_32_instr_sasx(raw); + result = armv7_read_thumb_32_instr_a8_sasx(raw); break; case b110: - result = armv7_read_thumb_32_instr_ssax(raw); + result = armv7_read_thumb_32_instr_a8_ssax(raw); break; case b101: - result = armv7_read_thumb_32_instr_ssub16(raw); + result = armv7_read_thumb_32_instr_a8_ssub16(raw); break; case b000: - result = armv7_read_thumb_32_instr_sadd8(raw); + result = armv7_read_thumb_32_instr_a8_sadd8(raw); break; case b100: - result = armv7_read_thumb_32_instr_ssub8(raw); + result = armv7_read_thumb_32_instr_a8_ssub8(raw); break; } @@ -1668,27 +1668,27 @@ static GArchInstruction *process_armv7_thumb_32_parallel_addition_and_subtractio switch (op1) { case b001: - result = armv7_read_thumb_32_instr_sqadd16(raw); + result = armv7_read_thumb_32_instr_a8_sqadd16(raw); break; case b010: - result = armv7_read_thumb_32_instr_sqasx(raw); + result = armv7_read_thumb_32_instr_a8_sqasx(raw); break; case b110: - result = armv7_read_thumb_32_instr_sqsax(raw); + result = armv7_read_thumb_32_instr_a8_sqsax(raw); break; case b101: - result = armv7_read_thumb_32_instr_sqsub16(raw); + result = armv7_read_thumb_32_instr_a8_sqsub16(raw); break; case b000: - result = armv7_read_thumb_32_instr_sqadd8(raw); + result = armv7_read_thumb_32_instr_a8_sqadd8(raw); break; case b100: - result = armv7_read_thumb_32_instr_sqsub8(raw); + result = armv7_read_thumb_32_instr_a8_sqsub8(raw); break; } @@ -1698,27 +1698,27 @@ static GArchInstruction *process_armv7_thumb_32_parallel_addition_and_subtractio switch (op1) { case b001: - result = armv7_read_thumb_32_instr_shadd16(raw); + result = armv7_read_thumb_32_instr_a8_shadd16(raw); break; case b010: - result = armv7_read_thumb_32_instr_shasx(raw); + result = armv7_read_thumb_32_instr_a8_shasx(raw); break; case b110: - result = armv7_read_thumb_32_instr_shsax(raw); + result = armv7_read_thumb_32_instr_a8_shsax(raw); break; case b101: - result = armv7_read_thumb_32_instr_shsub16(raw); + result = armv7_read_thumb_32_instr_a8_shsub16(raw); break; case b000: - result = armv7_read_thumb_32_instr_shadd8(raw); + result = armv7_read_thumb_32_instr_a8_shadd8(raw); break; case b100: - result = armv7_read_thumb_32_instr_shsub8(raw); + result = armv7_read_thumb_32_instr_a8_shsub8(raw); break; } @@ -1767,27 +1767,27 @@ static GArchInstruction *process_armv7_thumb_32_parallel_addition_and_subtractio switch (op1) { case b001: - result = armv7_read_thumb_32_instr_uadd16(raw); + result = armv7_read_thumb_32_instr_a8_uadd16(raw); break; case b010: - result = armv7_read_thumb_32_instr_uasx(raw); + result = armv7_read_thumb_32_instr_a8_uasx(raw); break; case b110: - result = armv7_read_thumb_32_instr_usax(raw); + result = armv7_read_thumb_32_instr_a8_usax(raw); break; case b101: - result = armv7_read_thumb_32_instr_usub16(raw); + result = armv7_read_thumb_32_instr_a8_usub16(raw); break; case b000: - result = armv7_read_thumb_32_instr_uadd8(raw); + result = armv7_read_thumb_32_instr_a8_uadd8(raw); break; case b100: - result = armv7_read_thumb_32_instr_usub8(raw); + result = armv7_read_thumb_32_instr_a8_usub8(raw); break; } @@ -1797,27 +1797,27 @@ static GArchInstruction *process_armv7_thumb_32_parallel_addition_and_subtractio switch (op1) { case b001: - result = armv7_read_thumb_32_instr_uqadd16(raw); + result = armv7_read_thumb_32_instr_a8_uqadd16(raw); break; case b010: - result = armv7_read_thumb_32_instr_uqasx(raw); + result = armv7_read_thumb_32_instr_a8_uqasx(raw); break; case b110: - result = armv7_read_thumb_32_instr_uqsax(raw); + result = armv7_read_thumb_32_instr_a8_uqsax(raw); break; case b101: - result = armv7_read_thumb_32_instr_uqsub16(raw); + result = armv7_read_thumb_32_instr_a8_uqsub16(raw); break; case b000: - result = armv7_read_thumb_32_instr_uqadd8(raw); + result = armv7_read_thumb_32_instr_a8_uqadd8(raw); break; case b100: - result = armv7_read_thumb_32_instr_uqsub8(raw); + result = armv7_read_thumb_32_instr_a8_uqsub8(raw); break; } @@ -1827,27 +1827,27 @@ static GArchInstruction *process_armv7_thumb_32_parallel_addition_and_subtractio switch (op1) { case b001: - result = armv7_read_thumb_32_instr_uhadd16(raw); + result = armv7_read_thumb_32_instr_a8_uhadd16(raw); break; case b010: - result = armv7_read_thumb_32_instr_uhasx(raw); + result = armv7_read_thumb_32_instr_a8_uhasx(raw); break; case b110: - result = armv7_read_thumb_32_instr_uhsax(raw); + result = armv7_read_thumb_32_instr_a8_uhsax(raw); break; case b101: - result = armv7_read_thumb_32_instr_uhsub16(raw); + result = armv7_read_thumb_32_instr_a8_uhsub16(raw); break; case b000: - result = armv7_read_thumb_32_instr_uhadd8(raw); + result = armv7_read_thumb_32_instr_a8_uhadd8(raw); break; case b100: - result = armv7_read_thumb_32_instr_uhsub8(raw); + result = armv7_read_thumb_32_instr_a8_uhsub8(raw); break; } @@ -1896,19 +1896,19 @@ static GArchInstruction *process_armv7_thumb_32_miscellaneous_operations(uint32_ switch (op2) { case b00: - result = armv7_read_thumb_32_instr_qadd(raw); + result = armv7_read_thumb_32_instr_a8_qadd(raw); break; case b01: - result = armv7_read_thumb_32_instr_qdadd(raw); + result = armv7_read_thumb_32_instr_a8_qdadd(raw); break; case b10: - result = armv7_read_thumb_32_instr_qsub(raw); + result = armv7_read_thumb_32_instr_a8_qsub(raw); break; case b11: - result = armv7_read_thumb_32_instr_qdsub(raw); + result = armv7_read_thumb_32_instr_a8_qdsub(raw); break; } @@ -1918,19 +1918,19 @@ static GArchInstruction *process_armv7_thumb_32_miscellaneous_operations(uint32_ switch (op2) { case b00: - result = armv7_read_thumb_32_instr_rev(raw); + result = armv7_read_thumb_32_instr_a8_rev(raw); break; case b01: - result = armv7_read_thumb_32_instr_rev16(raw); + result = armv7_read_thumb_32_instr_a8_rev16(raw); break; case b10: - result = armv7_read_thumb_32_instr_rbit(raw); + result = armv7_read_thumb_32_instr_a8_rbit(raw); break; case b11: - result = armv7_read_thumb_32_instr_revsh(raw); + result = armv7_read_thumb_32_instr_a8_revsh(raw); break; } @@ -1938,12 +1938,12 @@ static GArchInstruction *process_armv7_thumb_32_miscellaneous_operations(uint32_ case b10: if (op2 == b00) - result = armv7_read_thumb_32_instr_sel(raw); + result = armv7_read_thumb_32_instr_a8_sel(raw); break; case b11: if (op2 == b00) - result = armv7_read_thumb_32_instr_clz(raw); + result = armv7_read_thumb_32_instr_a8_clz(raw); break; } @@ -1992,25 +1992,25 @@ static GArchInstruction *process_armv7_thumb_32_multiply_multiply_accumulate_and if (op2 == b00) { if (ra == b1111) - result = armv7_read_thumb_32_instr_mul(raw); + result = armv7_read_thumb_32_instr_a8_mul(raw); else - result = armv7_read_thumb_32_instr_mla(raw); + result = armv7_read_thumb_32_instr_a8_mla(raw); } else if (op2 == b01) - result = armv7_read_thumb_32_instr_mls(raw); + result = armv7_read_thumb_32_instr_a8_mls(raw); break; case b001: if (ra == b1111) - result = armv7_read_thumb_32_instr_smulbb_smulbt_smultb_smultt(raw); + result = armv7_read_thumb_32_instr_a8_smulbb_smulbt_smultb_smultt(raw); else - result = armv7_read_thumb_32_instr_smlabb_smlabt_smlatb_smlatt(raw); + result = armv7_read_thumb_32_instr_a8_smlabb_smlabt_smlatb_smlatt(raw); break; @@ -2018,10 +2018,10 @@ static GArchInstruction *process_armv7_thumb_32_multiply_multiply_accumulate_and if ((op2 & b10) == b00) { if (ra == b1111) - result = armv7_read_thumb_32_instr_smuad(raw); + result = armv7_read_thumb_32_instr_a8_smuad(raw); else - result = armv7_read_thumb_32_instr_smlad(raw); + result = armv7_read_thumb_32_instr_a8_smlad(raw); } break; @@ -2030,10 +2030,10 @@ static GArchInstruction *process_armv7_thumb_32_multiply_multiply_accumulate_and if ((op2 & b10) == b00) { if (ra == b1111) - result = armv7_read_thumb_32_instr_smulwb_smulwt(raw); + result = armv7_read_thumb_32_instr_a8_smulwb_smulwt(raw); else - result = armv7_read_thumb_32_instr_smlawb_smlawt(raw); + result = armv7_read_thumb_32_instr_a8_smlawb_smlawt(raw); } break; @@ -2042,10 +2042,10 @@ static GArchInstruction *process_armv7_thumb_32_multiply_multiply_accumulate_and if ((op2 & b10) == b00) { if (ra == b1111) - result = armv7_read_thumb_32_instr_smusd(raw); + result = armv7_read_thumb_32_instr_a8_smusd(raw); else - result = armv7_read_thumb_32_instr_smlsd(raw); + result = armv7_read_thumb_32_instr_a8_smlsd(raw); } break; @@ -2054,27 +2054,27 @@ static GArchInstruction *process_armv7_thumb_32_multiply_multiply_accumulate_and if ((op2 & b10) == b00) { if (ra == b1111) - result = armv7_read_thumb_32_instr_smmul(raw); + result = armv7_read_thumb_32_instr_a8_smmul(raw); else - result = armv7_read_thumb_32_instr_smmla(raw); + result = armv7_read_thumb_32_instr_a8_smmla(raw); } break; case b110: if ((op2 & b10) == b00) - result = armv7_read_thumb_32_instr_smmls(raw); + result = armv7_read_thumb_32_instr_a8_smmls(raw); break; case b111: if (op2 == b00) { if (ra == b1111) - result = armv7_read_thumb_32_instr_usad8(raw); + result = armv7_read_thumb_32_instr_a8_usad8(raw); else - result = armv7_read_thumb_32_instr_usada8(raw); + result = armv7_read_thumb_32_instr_a8_usada8(raw); } break; @@ -2120,49 +2120,49 @@ static GArchInstruction *process_armv7_thumb_32_long_multiply_long_multiply_accu { case b000: if (op2 == b0000) - result = armv7_read_thumb_32_instr_smull(raw); + result = armv7_read_thumb_32_instr_a8_smull(raw); break; case b001: if (op2 == b1111) - result = armv7_read_thumb_32_instr_sdiv(raw); + result = armv7_read_thumb_32_instr_a8_sdiv(raw); break; case b010: if (op2 == b0000) - result = armv7_read_thumb_32_instr_umull(raw); + result = armv7_read_thumb_32_instr_a8_umull(raw); break; case b011: if (op2 == b1111) - result = armv7_read_thumb_32_instr_udiv(raw); + result = armv7_read_thumb_32_instr_a8_udiv(raw); break; case b100: if (op2 == b0000) - result = armv7_read_thumb_32_instr_smlal(raw); + result = armv7_read_thumb_32_instr_a8_smlal(raw); else if ((op2 & b1100) == b1000) - result = armv7_read_thumb_32_instr_smlalbb_smlalbt_smlaltb_smlaltt(raw); + result = armv7_read_thumb_32_instr_a8_smlalbb_smlalbt_smlaltb_smlaltt(raw); else if ((op2 & b1110) == b1100) - result = armv7_read_thumb_32_instr_smlald(raw); + result = armv7_read_thumb_32_instr_a8_smlald(raw); break; case b101: if ((op2 & b1110) == b1100) - result = armv7_read_thumb_32_instr_smlsld(raw); + result = armv7_read_thumb_32_instr_a8_smlsld(raw); break; case b110: if (op2 == b0000) - result = armv7_read_thumb_32_instr_umlal(raw); + result = armv7_read_thumb_32_instr_a8_umlal(raw); else if (op2 == b0110) - result = armv7_read_thumb_32_instr_umaal(raw); + result = armv7_read_thumb_32_instr_a8_umaal(raw); break; @@ -2216,32 +2216,32 @@ static GArchInstruction *process_armv7_thumb_32_coprocessor_advanced_simd_and_fl else if ((coproc & b1110) != b1010) { if ((op1 & b100001) == b000000 && (op1 & b111010) != b000000) - result = armv7_read_thumb_32_instr_stc_stc2(raw); + result = armv7_read_thumb_32_instr_a8_stc_stc2(raw); else if ((op1 & b100001) == b000001 && (op1 & b111010) != b000000) { if (rn != b1111) - result = armv7_read_thumb_32_instr_ldc_ldc2_immediate(raw); + result = armv7_read_thumb_32_instr_a8_ldc_ldc2_immediate(raw); else/* if (rn == b1111)*/ - result = armv7_read_thumb_32_instr_ldc_ldc2_literal(raw); + result = armv7_read_thumb_32_instr_a8_ldc_ldc2_literal(raw); } else if (op1 == b000100) - result = armv7_read_thumb_32_instr_mcrr_mcrr2(raw); + result = armv7_read_thumb_32_instr_a8_mcrr_mcrr2(raw); else if (op1 == b000101) - result = armv7_read_thumb_32_instr_mrrc_mrrc2(raw); + result = armv7_read_thumb_32_instr_a8_mrrc_mrrc2(raw); else if ((op1 & b110000) == b100000 && op == b0) - result = armv7_read_thumb_32_instr_cdp_cdp2(raw); + result = armv7_read_thumb_32_instr_a8_cdp_cdp2(raw); else if ((op1 & b110001) == b100000 && op == b1) - result = armv7_read_thumb_32_instr_mcr_mcr2(raw); + result = armv7_read_thumb_32_instr_a8_mcr_mcr2(raw); else if ((op1 & b110001) == b100001 && op == b1) - result = armv7_read_thumb_32_instr_mrc_mrc2(raw); + result = armv7_read_thumb_32_instr_a8_mrc_mrc2(raw); } diff --git a/tools/d2c/coder.c b/tools/d2c/coder.c index 2e02e47..cd64d88 100644 --- a/tools/d2c/coder.c +++ b/tools/d2c/coder.c @@ -26,6 +26,7 @@ #include <assert.h> #include <fcntl.h> +#include <libgen.h> #include <malloc.h> #include <stdio.h> #include <string.h> @@ -99,7 +100,7 @@ static void init_coder_opcodes_file(int, const output_info *, const char *); static void init_coder_code_file(int, const char *); /* Centralise l'impression du nom de fonction de désassemblage. */ -static void write_read_function_name(int fd, const char *, const string_exch *, const char *); +static void write_read_function_name(const rented_coder *, const output_info *, int, const string_exch *); /* Génère ou complète un fichier contenant le code C principal. */ static bool output_coder_raw(const rented_coder *, const output_info *, const string_exch *, const encoding_spec *, int, int); @@ -523,6 +524,55 @@ void mark_coder_as_useless(rented_coder *coder) /****************************************************************************** * * +* Paramètres : coder = gestion par la machine en remplacement de l'humain. * +* info = précisions quant à la génération. * +* * +* Description : Crée la désignation principale d'une instruction. * +* * +* Retour : Identifiant à libérer après usage. * +* * +* Remarques : - * +* * +******************************************************************************/ + +char *build_coder_main_identifier(const rented_coder *coder, const output_info *info) +{ + char *result; /* Chaîne construite à renvoyer*/ + char *filename; /* Nom de fichier modifiable */ + char *sub; /* Compartimentage à insérer */ + char *name; /* Désignation à manipuler */ + + if (info->filename_reuse > 0) + { + filename = strdup(coder->input); + + sub = basename(filename); + + if (info->filename_reuse < strlen(sub)) + sub[info->filename_reuse] = '\0'; + + } + + name = get_coder_code_name(coder); + make_string_upper(name); + + if (info->filename_reuse > 0) + asprintf(&result, "%s_%s_%s", info->id_prefix, sub, name); + else + asprintf(&result, "%s_%s", info->id_prefix, name); + + free(name); + + if (info->filename_reuse > 0) + free(filename); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : coder = gestion par la machine en remplacement de l'humain. * * info = précisions quant à la génération. * * prefix = type d'encodage à répercuter sur le nom de fichier. * @@ -994,10 +1044,10 @@ bool output_coder_body(const rented_coder *coder, const output_info *info) /****************************************************************************** * * -* Paramètres : fd = flux ouvert en écriture. * -* arch = architecture en cours de traitement. * -* sub = encodage choisi comme sous-ensemble d'architecture. * -* name = désignation complète d'une instruction. * +* Paramètres : coder = gestion automatique de l'écriture de code. * +* info = précisions quant à la génération. * +* fd = flux ouvert en écriture. * +* enc = encodage choisi comme sous-ensemble d'architecture. * * * * Description : Centralise l'impression du nom de fonction de désassemblage. * * * @@ -1007,12 +1057,53 @@ bool output_coder_body(const rented_coder *coder, const output_info *info) * * ******************************************************************************/ -static void write_read_function_name(int fd, const char *arch, const string_exch *sub, const char *name) +static void write_read_function_name(const rented_coder *coder, const output_info *info, int fd, const string_exch *enc) { - if (sub->dest == NULL) - dprintf(fd, "%s_read_instr_%s", arch, name); + char *arch; /* Architecture à traiter */ + char *filename; /* Nom de fichier modifiable */ + char *sub; /* Compartimentage à insérer */ + char *name; /* Désignation à manipuler */ + + /* Préparations */ + + arch = strdup(info->arch_cn); + make_string_lower(arch); + + if (info->filename_reuse > 0) + { + filename = strdup(coder->input); + + sub = basename(filename); + + if (info->filename_reuse < strlen(sub)) + sub[info->filename_reuse] = '\0'; + + make_string_lower(sub); + + } + + name = get_coder_code_name(coder); + + /* Impressions */ + + if (enc->dest == NULL) + dprintf(fd, "%s_read_instr", arch); else - dprintf(fd, "%s_read_%s_instr_%s", arch, sub->dest, name); + dprintf(fd, "%s_read_%s_instr", arch, enc->dest); + + if (info->filename_reuse > 0) + dprintf(fd, "_%s", sub); + + dprintf(fd, "_%s", name); + + /* Sortie propre */ + + free(name); + + if (info->filename_reuse > 0) + free(filename); + + free(arch); } @@ -1038,18 +1129,15 @@ static bool output_coder_raw(const rented_coder *coder, const output_info *info, { bool result; /* Bilan à retourner */ char *arch; /* Architecture à traiter */ - char *name; /* Désignation à manipuler */ char *prefix; /* Préfixe employé en suffixe */ coding_bits *bits; /* Gestionnaire de bits */ unsigned int wide; /* Taille des mots */ size_t maxlen; /* Taille à compléter */ - char *fullname; /* Désignation complète */ + char *constant; /* Définition d'une constante */ arch = strdup(info->arch_cn); make_string_lower(arch); - name = get_coder_code_name(coder); - prefix = build_encoding_spec_prefix(encoding); bits = get_bits_in_encoding_spec(encoding); @@ -1062,7 +1150,7 @@ static bool output_coder_raw(const rented_coder *coder, const output_info *info, dprintf(hfd, "/* Décode une forme d'instruction de type '%s'. */\n", coder->ins); dprintf(hfd, "GArchInstruction *"); - write_read_function_name(hfd, arch, enc_name, name); + write_read_function_name(coder, info, hfd, enc_name); dprintf(hfd, "_%s", prefix); dprintf(hfd, "("); @@ -1101,7 +1189,7 @@ static bool output_coder_raw(const rented_coder *coder, const output_info *info, dprintf(cfd, "static "); dprintf(cfd, "GArchInstruction *"); - write_read_function_name(cfd, arch, enc_name, name); + write_read_function_name(coder, info, cfd, enc_name); dprintf(cfd, "_%s", prefix); dprintf(cfd, "("); @@ -1112,13 +1200,11 @@ static bool output_coder_raw(const rented_coder *coder, const output_info *info, dprintf(cfd, "{"); dprintf(cfd, "\n"); - make_string_upper(name); - - asprintf(&fullname, "%s_%s", info->id_prefix, name); + constant = build_coder_main_identifier(coder, info); - result = write_encoding_spec_raw_disass(encoding, cfd, arch, fullname, coder->pp); + result = write_encoding_spec_raw_disass(encoding, cfd, arch, constant, coder->pp); - free(fullname); + free(constant); dprintf(cfd, "}\n"); dprintf(cfd, "\n"); @@ -1127,8 +1213,6 @@ static bool output_coder_raw(const rented_coder *coder, const output_info *info, free(prefix); - free(name); - free(arch); return result; @@ -1155,8 +1239,6 @@ static bool output_coder_raw(const rented_coder *coder, const output_info *info, static bool output_coder_main_raw(const rented_coder *coder, const output_info *info, const string_exch *enc_name, int hfd, int cfd) { bool result; /* Bilan à retourner */ - char *arch; /* Architecture à traiter */ - char *name; /* Désignation à manipuler */ unsigned int wide; /* Taille des mots */ size_t maxlen; /* Taille à compléter */ bool first; /* Note un premier appel */ @@ -1165,11 +1247,6 @@ static bool output_coder_main_raw(const rented_coder *coder, const output_info * result = false; - arch = strdup(info->arch_cn); - make_string_lower(arch); - - name = get_coder_code_name(coder); - wide = get_bit_width_for_encoding_spec(coder, enc_name); /* Désassemblage : déclaration */ @@ -1177,7 +1254,7 @@ static bool output_coder_main_raw(const rented_coder *coder, const output_info * dprintf(hfd, "/* Décode une instruction de type '%s'. */\n", coder->ins); dprintf(hfd, "GArchInstruction *"); - write_read_function_name(hfd, arch, enc_name, name); + write_read_function_name(coder, info, hfd, enc_name); dprintf(hfd, "("); dprintf(hfd, "uint%u_t raw", wide); @@ -1210,7 +1287,7 @@ static bool output_coder_main_raw(const rented_coder *coder, const output_info * dprintf(cfd, "\n"); dprintf(cfd, "GArchInstruction *"); - write_read_function_name(cfd, arch, enc_name, name); + write_read_function_name(coder, info, cfd, enc_name); dprintf(cfd, "("); dprintf(cfd, "uint%u_t raw", wide); @@ -1237,7 +1314,7 @@ static bool output_coder_main_raw(const rented_coder *coder, const output_info * if (first) { dprintf(cfd, "\tresult = "); - write_read_function_name(cfd, arch, enc_name, name); + write_read_function_name(coder, info, cfd, enc_name); dprintf(cfd, "_%s(raw);\n", prefix); dprintf(cfd, "\n"); @@ -1250,7 +1327,7 @@ static bool output_coder_main_raw(const rented_coder *coder, const output_info * dprintf(cfd, "\tif (result == NULL)\n"); dprintf(cfd, "\t\tresult = "); - write_read_function_name(cfd, arch, enc_name, name); + write_read_function_name(coder, info, cfd, enc_name); dprintf(cfd, "_%s(raw);\n", prefix); dprintf(cfd, "\n"); @@ -1267,12 +1344,6 @@ static bool output_coder_main_raw(const rented_coder *coder, const output_info * dprintf(cfd, "}\n"); dprintf(cfd, "\n"); - /* Conclusion */ - - free(name); - - free(arch); - return result; } @@ -1299,21 +1370,18 @@ static bool output_coder_format(const rented_coder *coder, const output_info *in { bool result; /* Bilan à retourner */ char *arch; /* Architecture à traiter */ - char *name; /* Désignation à manipuler */ size_t maxlen; /* Taille à compléter */ - char *fullname; /* Désignation complète */ + char *constant; /* Définition d'une constante */ arch = strdup(info->arch_cn); make_string_lower(arch); - name = get_coder_code_name(coder); - /* Désassemblage : déclaration */ dprintf(hfd, "/* Décode une instruction de type '%s'. */\n", coder->ins); dprintf(hfd, "GArchInstruction *"); - write_read_function_name(hfd, arch, enc_name, name); + write_read_function_name(coder, info, hfd, enc_name); dprintf(hfd, "("); dprintf(hfd, "const GArchProcessor *, GProcContext *, const GBinContent *, "); @@ -1351,7 +1419,7 @@ static bool output_coder_format(const rented_coder *coder, const output_info *in dprintf(cfd, "\n"); dprintf(cfd, "GArchInstruction *"); - write_read_function_name(cfd, arch, enc_name, name); + write_read_function_name(coder, info, cfd, enc_name); dprintf(cfd, "("); dprintf(cfd, "const GArchProcessor *proc, GProcContext *ctx, const GBinContent *content, "); @@ -1362,21 +1430,17 @@ static bool output_coder_format(const rented_coder *coder, const output_info *in dprintf(cfd, "{"); dprintf(cfd, "\n"); - make_string_upper(name); - - asprintf(&fullname, "%s_%s", info->id_prefix, name); + constant = build_coder_main_identifier(coder, info); - result = write_encoding_spec_format_disass(encoding, cfd, arch, fullname, info->fmt_prefix); + result = write_encoding_spec_format_disass(encoding, cfd, arch, constant, info->fmt_prefix); - free(fullname); + free(constant); dprintf(cfd, "}\n"); dprintf(cfd, "\n"); /* Conclusion */ - free(name); - free(arch); return result; @@ -1482,11 +1546,12 @@ bool output_coder_identifier(const rented_coder *coder, const output_info *info) bool result; /* Bilan à retourner */ bool created; /* Note une création */ int fd; /* Flux ouvert en écriture */ + char *constant; /* Définition d'une constante */ char *name; /* Désignation à manipuler */ instr_id *id; /* Gestionnaire d'identifiant */ unsigned int iid; /* Identifiant unique attribué */ - char *constant; /* Définition d'une constante */ char *comment; /* Contenu du commentaire */ + char *aligned; /* Adaptation pour l'alignement*/ result = false; @@ -1503,12 +1568,7 @@ bool output_coder_identifier(const rented_coder *coder, const output_info *info) /* Constitution de la constante */ - name = get_coder_code_name(coder); - make_string_upper(name); - - asprintf(&constant, "%s_%s,", info->id_prefix, name); - - free(name); + constant = build_coder_main_identifier(coder, info); /* Définition du commentaire */ @@ -1523,7 +1583,11 @@ bool output_coder_identifier(const rented_coder *coder, const output_info *info) /* Impression de la ligne */ - dprintf(fd, " %-40s/* %-28s*/\n", constant, comment); + asprintf(&aligned, "%s,", constant); + + dprintf(fd, " %-40s/* %-28s*/\n", aligned, comment); + + free(aligned); free(constant); free(comment); @@ -1631,8 +1695,7 @@ bool output_coder_sub_identifier(const rented_coder *coder, const output_info *i bool result; /* Bilan à retourner */ bool created; /* Note une création */ int fd; /* Flux ouvert en écriture */ - char *name; /* Désignation à manipuler */ - char *fullname; /* Désignation complète */ + char *constant; /* Définition d'une constante */ size_t i; /* Boucle de parcours */ result = false; @@ -1650,21 +1713,14 @@ bool output_coder_sub_identifier(const rented_coder *coder, const output_info *i /* Impression des sous-identifiants */ - name = get_coder_code_name(coder); - make_string_upper(name); - - asprintf(&fullname, "%s_%s", info->id_prefix, name); - - free(name); + constant = build_coder_main_identifier(coder, info); result = true; for (i = 0; i < coder->specs_count && result; i++) - result = write_encoding_spec_subid(coder->specs[i], fd, fullname); - - free(fullname); + result = write_encoding_spec_subid(coder->specs[i], fd, constant); - result = true; + free(constant); ocsi_exit: @@ -1795,9 +1851,9 @@ bool output_coder_keyword(const rented_coder *coder, const output_info *info) bool result; /* Bilan à retourner */ bool created; /* Note une création */ int fd; /* Flux ouvert en écriture */ - char *name; /* Désignation à manipuler */ - char *fullname; /* Désignation complète */ + char *constant; /* Définition d'une constante */ size_t i; /* Boucle de parcours */ + char *name; /* Désignation à manipuler */ result = false; @@ -1822,12 +1878,7 @@ bool output_coder_keyword(const rented_coder *coder, const output_info *info) /* Lancement des impressions */ - name = get_coder_code_name(coder); - make_string_upper(name); - - asprintf(&fullname, "%s_%s", info->id_prefix, name); - - free(name); + constant = build_coder_main_identifier(coder, info); result = true; @@ -1840,7 +1891,7 @@ bool output_coder_keyword(const rented_coder *coder, const output_info *info) break; case IOT_RAW: - result = write_encoding_spec_keywords(coder->specs[i], fd, fullname); + result = write_encoding_spec_keywords(coder->specs[i], fd, constant); break; case IOT_FORMAT: @@ -1848,7 +1899,7 @@ bool output_coder_keyword(const rented_coder *coder, const output_info *info) /* Impression de la colonne */ - dprintf(fd, "\t[%s] = ", fullname); + dprintf(fd, "\t[%s] = ", constant); /* Impression du mot clef */ @@ -1862,7 +1913,7 @@ bool output_coder_keyword(const rented_coder *coder, const output_info *info) } - free(fullname); + free(constant); ock_exit: @@ -1995,8 +2046,7 @@ bool output_coder_hooks(const rented_coder *coder, const output_info *info) bool result; /* Bilan à retourner */ bool created; /* Note une création */ int fd; /* Flux ouvert en écriture */ - char *name; /* Désignation à manipuler */ - char *fullname; /* Désignation complète */ + char *constant; /* Définition d'une constante */ size_t i; /* Boucle de parcours */ result = false; @@ -2022,12 +2072,7 @@ bool output_coder_hooks(const rented_coder *coder, const output_info *info) /* Lancement des impressions */ - name = get_coder_code_name(coder); - make_string_upper(name); - - asprintf(&fullname, "%s_%s", info->id_prefix, name); - - free(name); + constant = build_coder_main_identifier(coder, info); result = true; @@ -2040,17 +2085,17 @@ bool output_coder_hooks(const rented_coder *coder, const output_info *info) break; case IOT_RAW: - result = write_encoding_spec_hooks(coder->specs[i], fd, fullname, true); + result = write_encoding_spec_hooks(coder->specs[i], fd, constant, true); break; case IOT_FORMAT: assert(i == 0); - result = write_encoding_spec_hooks(coder->specs[i], fd, fullname, false); + result = write_encoding_spec_hooks(coder->specs[i], fd, constant, false); break; } - free(fullname); + free(constant); och_exit: @@ -2163,6 +2208,7 @@ bool output_coder_description(const rented_coder *coder, const output_info *info bool result; /* Bilan à retourner */ bool created; /* Note une création */ int fd; /* Flux ouvert en écriture */ + char *constant; /* Définition d'une constante */ char *name; /* Désignation à manipuler */ result = false; @@ -2188,12 +2234,11 @@ bool output_coder_description(const rented_coder *coder, const output_info *info /* Impression de la colonne */ - name = get_coder_code_name(coder); - make_string_upper(name); + constant = build_coder_main_identifier(coder, info); - dprintf(fd, "\t[%s_%s] = ", info->id_prefix, name); + dprintf(fd, "\t[%s] = ", constant); - free(name); + free(constant); /* Impression du mot clef */ diff --git a/tools/d2c/coder.h b/tools/d2c/coder.h index 218ab92..143b969 100644 --- a/tools/d2c/coder.h +++ b/tools/d2c/coder.h @@ -117,9 +117,14 @@ typedef struct _output_info const char *id_prefix; /* Préfixe pour les constantes */ int id_len; /* Largeur des identifiants */ + size_t filename_reuse; /* Taille d'une extention */ + } output_info; +/* Crée la désignation principale d'une instruction. */ +char *build_coder_main_identifier(const rented_coder *, const output_info *); + /* Génère ou complète un fichier contenant le code C principal. */ bool output_coder_body(const rented_coder *, const output_info *); diff --git a/tools/d2c/d2c.c b/tools/d2c/d2c.c index 1d9b5b6..9cb2df4 100644 --- a/tools/d2c/d2c.c +++ b/tools/d2c/d2c.c @@ -89,6 +89,14 @@ static void show_usage(const char *argv0) printf("\n"); + printf("Raw specific options:\n"); + + printf("\n"); + + printf("\t--filename-reuse <length>\t\tSet the length of filename to include in identifiers (default = 0).\n"); + + printf("\n"); + printf("Format specific options:\n"); printf("\n"); @@ -133,21 +141,23 @@ int main(int argc, char **argv) static struct option long_options[] = { - { "help", no_argument, NULL, 'h' }, - { "exec", required_argument, NULL, 'x' }, - { "outdir", required_argument, NULL, 'o' }, - { "type", required_argument, NULL, 't' }, - { "arch", required_argument, NULL, 'a' }, - { "name", required_argument, NULL, 'n' }, - { "guard", required_argument, NULL, 'G' }, - { "encoding", required_argument, NULL, 'e' }, + { "help", no_argument, NULL, 'h' }, + { "exec", required_argument, NULL, 'x' }, + { "outdir", required_argument, NULL, 'o' }, + { "type", required_argument, NULL, 't' }, + { "arch", required_argument, NULL, 'a' }, + { "name", required_argument, NULL, 'n' }, + { "guard", required_argument, NULL, 'G' }, + { "encoding", required_argument, NULL, 'e' }, + + { "id-prefix", required_argument, NULL, 0x100 }, + { "id-expected", required_argument, NULL, 0x101 }, - { "id-prefix", required_argument, NULL, 0x100 }, - { "id-expected",required_argument, NULL, 0x101 }, + { "filename-reuse", required_argument, NULL, 0x200 }, - { "op-prefix", required_argument, NULL, 0x200 }, + { "op-prefix", required_argument, NULL, 0x300 }, - { NULL, 0, NULL, 0 } + { NULL, 0, NULL, 0 } }; @@ -163,7 +173,7 @@ int main(int argc, char **argv) while (!has_error) { - ret = getopt_long(argc, argv, "hx:o:t:a:n:e:G:", long_options, &index); + ret = getopt_long(argc, argv, "hx:o:t:a:n:G:e:", long_options, &index); if (ret == -1) break; switch (ret) @@ -244,6 +254,10 @@ int main(int argc, char **argv) break; case 0x200: + info.filename_reuse = strtoul(optarg, NULL, 10); + break; + + case 0x300: info.fmt_prefix = optarg; break; |