8058c8316f
The A64 translator uses a hand-written decoder for everything except SVE or SME. It's fairly well structured, but it's becoming obvious that it's still more painful to add instructions to than the A32 translator, because putting a new instruction into the right place in a hand-written decoder is much harder than adding new instruction patterns to a decodetree file. As the first step in conversion to decodetree, create the skeleton of the decodetree decoder; where it does not handle instructions we will fall back to the legacy decoder (which will be for everything at the moment, since there are no patterns in a64.decode). Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20230512144106.3608981-3-peter.maydell@linaro.org
54 lines
1.7 KiB
Meson
54 lines
1.7 KiB
Meson
gen = [
|
|
decodetree.process('sve.decode', extra_args: '--decode=disas_sve'),
|
|
decodetree.process('sme.decode', extra_args: '--decode=disas_sme'),
|
|
decodetree.process('sme-fa64.decode', extra_args: '--static-decode=disas_sme_fa64'),
|
|
decodetree.process('neon-shared.decode', extra_args: '--decode=disas_neon_shared'),
|
|
decodetree.process('neon-dp.decode', extra_args: '--decode=disas_neon_dp'),
|
|
decodetree.process('neon-ls.decode', extra_args: '--decode=disas_neon_ls'),
|
|
decodetree.process('vfp.decode', extra_args: '--decode=disas_vfp'),
|
|
decodetree.process('vfp-uncond.decode', extra_args: '--decode=disas_vfp_uncond'),
|
|
decodetree.process('m-nocp.decode', extra_args: '--decode=disas_m_nocp'),
|
|
decodetree.process('mve.decode', extra_args: '--decode=disas_mve'),
|
|
decodetree.process('a32.decode', extra_args: '--static-decode=disas_a32'),
|
|
decodetree.process('a32-uncond.decode', extra_args: '--static-decode=disas_a32_uncond'),
|
|
decodetree.process('t32.decode', extra_args: '--static-decode=disas_t32'),
|
|
decodetree.process('t16.decode', extra_args: ['-w', '16', '--static-decode=disas_t16']),
|
|
decodetree.process('a64.decode', extra_args: ['--static-decode=disas_a64']),
|
|
]
|
|
|
|
arm_ss.add(gen)
|
|
|
|
arm_ss.add(files(
|
|
'cpu32.c',
|
|
'translate.c',
|
|
'translate-m-nocp.c',
|
|
'translate-mve.c',
|
|
'translate-neon.c',
|
|
'translate-vfp.c',
|
|
'crypto_helper.c',
|
|
'hflags.c',
|
|
'iwmmxt_helper.c',
|
|
'm_helper.c',
|
|
'mve_helper.c',
|
|
'neon_helper.c',
|
|
'op_helper.c',
|
|
'tlb_helper.c',
|
|
'vec_helper.c',
|
|
))
|
|
|
|
arm_ss.add(when: 'TARGET_AARCH64', if_true: files(
|
|
'cpu64.c',
|
|
'translate-a64.c',
|
|
'translate-sve.c',
|
|
'translate-sme.c',
|
|
'helper-a64.c',
|
|
'mte_helper.c',
|
|
'pauth_helper.c',
|
|
'sme_helper.c',
|
|
'sve_helper.c',
|
|
))
|
|
|
|
arm_softmmu_ss.add(files(
|
|
'psci.c',
|
|
))
|