summaryrefslogtreecommitdiff
path: root/arch/armv7/thumb2_disasm/arch_thumb2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/armv7/thumb2_disasm/arch_thumb2.cpp')
-rw-r--r--arch/armv7/thumb2_disasm/arch_thumb2.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/arch/armv7/thumb2_disasm/arch_thumb2.cpp b/arch/armv7/thumb2_disasm/arch_thumb2.cpp
index f27a86f7..1c38fc2c 100644
--- a/arch/armv7/thumb2_disasm/arch_thumb2.cpp
+++ b/arch/armv7/thumb2_disasm/arch_thumb2.cpp
@@ -1702,6 +1702,65 @@ public:
/*************************************************************************/
+ virtual std::vector<uint32_t> GetSystemRegisters() override
+ {
+ return vector<uint32_t>{
+ // Special registers (and global)
+ REGS_APSR,
+ REGS_APSR_G,
+ REGS_APSR_NZCVQ,
+ REGS_APSR_NZCVQG,
+ REGS_CPSR,
+ REGS_CPSR_C,
+ REGS_CPSR_X,
+ REGS_CPSR_XC,
+ REGS_CPSR_S,
+ REGS_CPSR_SC,
+ REGS_CPSR_SX,
+ REGS_CPSR_SXC,
+ REGS_CPSR_F,
+ REGS_CPSR_FC,
+ REGS_CPSR_FX,
+ REGS_CPSR_FXC,
+ REGS_CPSR_FS,
+ REGS_CPSR_FSC,
+ REGS_CPSR_FSX,
+ REGS_CPSR_FSXC,
+ REGS_SPSR,
+ REGS_SPSR_C,
+ REGS_SPSR_X,
+ REGS_SPSR_XC,
+ REGS_SPSR_S,
+ REGS_SPSR_SC,
+ REGS_SPSR_SX,
+ REGS_SPSR_SXC,
+ REGS_SPSR_F,
+ REGS_SPSR_FC,
+ REGS_SPSR_FX,
+ REGS_SPSR_FXC,
+ REGS_SPSR_FS,
+ REGS_SPSR_FSC,
+ REGS_SPSR_FSX,
+ REGS_SPSR_FSXC,
+ REGS_APSR_NZCV,
+ REGS_FPSID, // 0
+ REGS_FPSCR, // 1
+ REGS_MVFR2, // 5
+ REGS_MVFR1, // 6
+ REGS_MVFR0, // 7
+ REGS_FPEXC, // 8
+ REGS_FPINST, // 9
+ REGS_FPINST2, //10
+ REGS_MSP,
+ REGS_PSP,
+
+ // these are M-profile only (special)
+ REGS_PRIMASK,
+ REGS_BASEPRI,
+ REGS_FAULTMASK,
+ REGS_CONTROL,
+ };
+ }
};
ArmCommonArchitecture* InitThumb2Architecture(const char* name, BNEndianness endian)