diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-12-02 11:04:35 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-12-02 11:04:35 (GMT) |
commit | 2c988d3ec52cc4c949a35aca7ef335dac773df92 (patch) | |
tree | fe650d2fc8ddceb606abdf0d2e14e5ef6596be82 /plugins/arm/v7/opdefs/Makefile.am | |
parent | 23abef53590bf3dd6f88ff4dbe81e306abfa4386 (diff) |
Created a plugin for the ARM support.
Diffstat (limited to 'plugins/arm/v7/opdefs/Makefile.am')
-rw-r--r-- | plugins/arm/v7/opdefs/Makefile.am | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/plugins/arm/v7/opdefs/Makefile.am b/plugins/arm/v7/opdefs/Makefile.am new file mode 100644 index 0000000..3f69a3f --- /dev/null +++ b/plugins/arm/v7/opdefs/Makefile.am @@ -0,0 +1,302 @@ + +include ../../../../tools/d2c/d2c.mk + + +D2C_BIN = ../../../../tools/d2c/d2c +GEN_BIN = ../../../../tools/d2c/d2c_genmakefile.sh + +D2C_TYPE = raw + +D2C_OUTDIR = $(PWD)/.. + +D2C_ARCH = armv7 +D2C_HEADER = _ARCH_ARM_V7 + +D2C_ENCODINGS = \ + -e A=arm_ \ + -e t=thumb_16_ \ + -e T=thumb_32_ + +D2C_MACROS = \ + -M SetFlags=g_armv7_instruction_define_setflags \ + -M Condition=g_arm_instruction_set_cond \ + -M "ExpandImmC32=g_imm_operand_new_from_value(MDS_32_BITS_UNSIGNED, " \ + -M SignExtend=sign_extend_armv7_imm \ + -M SetInsFlag=g_arch_instruction_set_flag \ + -M StoreCondition=g_arm_instruction_set_cond \ + -M ExtendKeyword=g_arm_instruction_extend_keyword + +D2C_OPERANDS = \ + -n BarrierLimitation \ + -n BitDiff \ + -n IncWidth \ + -n DecodeImmShift \ + -n MakeMemoryAccess \ + -n Register \ + -n RegisterShift \ + -n UInt \ + -n ZeroExtend + +FIXED_C_INCLUDES = \ + \n\#include <arch/link.h> \ + \n\#include <common/bconst.h> \ + \n \ + \n\#include \"../helpers.h\" \ + \n\#include \"../instruction.h\" \ + \n\#include \"../fetch.h\" \ + \n\#include \"../link.h\" \ + \n\#include \"../post.h\" \ + \n\#include \"../../instruction.h\" \ + \n\#include \"../../link.h\" \ + \n\n + +FIXED_H_INCLUDES = \ + \n\#include <stdint.h> \ + \n \ + \n\#include <arch/instruction.h> \ + \n\n + + +# 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 +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 \ + 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 \ + 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 \ + 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 \ + smlad_A88177.d \ + smlal_A88178.d \ + smlald_A88180.d \ + smlsd_A88182.d \ + smlsld_A88183.d \ + smmla_A88184.d \ + smmls_A88185.d \ + smmul_A88186.d \ + smuad_A88187.d \ + smull_A88189.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_A88225.d \ + svc_A88228.d \ + swp_A88229.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 \ + wfi_A88425.d \ + yield_A88426.d + +# subs_B9320.d + +# make dist procède répertoire par répertoire. Or le répertoire opcodes utilise +# le contenu du répertoire opdefs. Il faut donc générer les fichiers nécessaires +# au répertoire opcodes. Et comme on ne peut pas compléter la règle dist, on +# ajoute à la distribution les cibles marquant la génération. (1/2) + +EXTRA_DIST = $(ARMV7_DEFS) $(ARMV7_DEFS:.d=.g) + +# Après coup, on supprime les fichiers inutiles de la distribution/ (2/2) + +dist-hook: + cd $(distdir) && rm $(ARMV7_DEFS:.d=.g) + +all: $(ARMV7_DEFS:.d=.g) fmk.done d2c_final_rules + +fmk.done: $(ARMV7_DEFS) + $(GEN_BIN) ../opcodes/ ../opdefs/.gen ../../../../tools/d2c/globalgen.mk arm thumb_32 thumb_16 + touch $@ + +clean: + rm -rf $(ARMV7_DEFS:.d=.g) .gen fmk.done |