Browse Source

arm_dyncom_thumb: Fix encoding of BKPT's immediate

Lioncash 11 years ago
parent
commit
c00781a908
1 changed files with 4 additions and 1 deletions
  1. 4 1
      src/core/arm/dyncom/arm_dyncom_thumb.cpp

+ 4 - 1
src/core/arm/dyncom/arm_dyncom_thumb.cpp

@@ -275,7 +275,10 @@ tdstate thumb_translate(u32 addr, u32 instr, u32* ainstr, u32* inst_size) {
                    : 0xE28DDF00)            // ADD
                 |(tinstr & 0x007F);         // off7
         } else if ((tinstr & 0x0F00) == 0x0e00) {
-            *ainstr = 0xEF000000 | 0x180000; // base | BKPT mask
+            // BKPT
+            *ainstr = 0xEF000000              // base
+                | BITS(tinstr, 0, 3)          // imm4 field;
+                | (BITS(tinstr, 4, 7) << 8);  // beginning 4 bits of imm12
         } else if ((tinstr & 0x0F00) == 0x0200) {
             static const ARMword subset[4] = {
                 0xE6BF0070, // SXTH