diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_0f.c | 12 | ||||
| -rw-r--r-- | src/emu/x64run0f.c | 10 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 6b2d3fa5..2ef482eb 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -78,6 +78,18 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin *need_epilog = 0; *ok = 0; break; + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + INST_NAME("SMSW Ed"); + ed = xRAX+(nextop&7)+(rex.b<<3); + MOV32w(ed, (1<<0) | (1<<4)); // only PE and ET set... + break; default: DEFAULT; } else diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c index d0b5900f..e36376d5 100644 --- a/src/emu/x64run0f.c +++ b/src/emu/x64run0f.c @@ -95,6 +95,16 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) emit_signal(emu, SIGILL, (void*)R_RIP, 0); #endif break; + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: /* SMSW Ew */ + ED->word[0] = (1<<0) | (1<<4); // only PE and ET set... + break; default: return 0; } else |