From acc2f2e3d542ec67c0c23b973a24370c40a7787a Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 1 Feb 2024 18:58:01 +0100 Subject: [32BITS] Added 67 64 89 opcode ([ARM64_DYNAREC] too) --- src/dynarec/arm64/dynarec_arm64_6764_32.c | 13 +++++++++++++ src/emu/x64run6764_32.c | 7 +++++++ 2 files changed, 20 insertions(+) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_6764_32.c b/src/dynarec/arm64/dynarec_arm64_6764_32.c index c62b239a..27691e74 100644 --- a/src/dynarec/arm64/dynarec_arm64_6764_32.c +++ b/src/dynarec/arm64/dynarec_arm64_6764_32.c @@ -61,6 +61,19 @@ uintptr_t dynarec64_6764_32(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, in switch(opcode) { + case 0x89: + INST_NAME("MOV Seg:Ed, Gd"); + nextop=F8; + GETGD; + if(MODREG) { // reg <= reg + MOVxw_REG(xRAX+(nextop&7)+(rex.b<<3), gd); + } else { // mem <= reg + grab_segdata(dyn, addr, ninst, x4, seg); + addr = geted16(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, NULL, 0, 0, 0); + STRw_REG(gd, ed, x4); + } + break; + case 0xA1: INST_NAME("MOV EAX, Seg:[Od]"); i32 = F16; diff --git a/src/emu/x64run6764_32.c b/src/emu/x64run6764_32.c index 5ac96a47..832a970f 100644 --- a/src/emu/x64run6764_32.c +++ b/src/emu/x64run6764_32.c @@ -54,6 +54,13 @@ uintptr_t Run6764_32(x64emu_t *emu, rex_t rex, int rep, int seg, uintptr_t addr) switch(opcode) { + case 0x89: /* MOV FS:Ew, Gw */ + nextop = F8; + GETEW_OFFS_16(tlsdata); + GETGW; + EW->word[0] = GW->word[0]; + break; + case 0x8B: /* MOV Gw, FS:Ew */ nextop = F8; GETEW_OFFS_16(tlsdata); -- cgit 1.4.1