diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-02-10 13:10:33 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-02-10 13:10:33 +0100 |
| commit | ad55cfde7f61395618991543694b35183f9c6ad7 (patch) | |
| tree | 8da5cc8ddaf634825bbcbda3aa1cdbcf9cf90a46 /src | |
| parent | 44e77de620fc9fe4f1b16d5c2b0d539268254e4d (diff) | |
| download | box64-ad55cfde7f61395618991543694b35183f9c6ad7.tar.gz box64-ad55cfde7f61395618991543694b35183f9c6ad7.zip | |
Added 0F 01 E0..E7 opcodes ([ARM64_DYNAREC] too)
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 |