diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/arm/interpreter/armemu.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/core/arm/interpreter/armemu.cpp b/src/core/arm/interpreter/armemu.cpp index a62658b7c..71cae3db0 100644 --- a/src/core/arm/interpreter/armemu.cpp +++ b/src/core/arm/interpreter/armemu.cpp | |||
| @@ -6076,10 +6076,10 @@ L_stm_s_takeabort: | |||
| 6076 | ror = 24; | 6076 | ror = 24; |
| 6077 | break; | 6077 | break; |
| 6078 | 6078 | ||
| 6079 | case 0xf3: | 6079 | case 0xf3: // REV |
| 6080 | DEST = ((RHS & 0xFF) << 24) | ((RHS & 0xFF00)) << 8 | ((RHS & 0xFF0000) >> 8) | ((RHS & 0xFF000000) >> 24); | 6080 | DEST = ((RHS & 0xFF) << 24) | ((RHS & 0xFF00)) << 8 | ((RHS & 0xFF0000) >> 8) | ((RHS & 0xFF000000) >> 24); |
| 6081 | return 1; | 6081 | return 1; |
| 6082 | case 0xfb: | 6082 | case 0xfb: // REV16 |
| 6083 | DEST = ((RHS & 0xFF) << 8) | ((RHS & 0xFF00)) >> 8 | ((RHS & 0xFF0000) << 8) | ((RHS & 0xFF000000) >> 8); | 6083 | DEST = ((RHS & 0xFF) << 8) | ((RHS & 0xFF00)) >> 8 | ((RHS & 0xFF0000) << 8) | ((RHS & 0xFF000000) >> 8); |
| 6084 | return 1; | 6084 | return 1; |
| 6085 | default: | 6085 | default: |
| @@ -6206,9 +6206,13 @@ L_stm_s_takeabort: | |||
| 6206 | ror = 24; | 6206 | ror = 24; |
| 6207 | break; | 6207 | break; |
| 6208 | 6208 | ||
| 6209 | case 0xfb: | 6209 | case 0xfb: // REVSH |
| 6210 | printf("Unhandled v6 insn: revsh\n"); | 6210 | { |
| 6211 | return 0; | 6211 | DEST = ((RHS & 0xFF) << 8) | ((RHS & 0xFF00) >> 8); |
| 6212 | if (DEST & 0x8000) | ||
| 6213 | DEST |= 0xffff0000; | ||
| 6214 | return 1; | ||
| 6215 | } | ||
| 6212 | default: | 6216 | default: |
| 6213 | break; | 6217 | break; |
| 6214 | } | 6218 | } |