about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-06-07 10:08:06 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-06-07 10:08:06 +0200
commitd5b286c050833acec49dba33ad6b92b4196f1b45 (patch)
tree813786a2caa24a2581f7a5b8e62ef35505a87542 /src
parent1f23848e2590916aa54d902903328efeadf60106 (diff)
downloadbox64-d5b286c050833acec49dba33ad6b92b4196f1b45.tar.gz
box64-d5b286c050833acec49dba33ad6b92b4196f1b45.zip
Added 66 F0 81 opcodes
Diffstat (limited to 'src')
-rw-r--r--src/emu/modrm.h1
-rw-r--r--src/emu/x64run66f0.c7
2 files changed, 5 insertions, 3 deletions
diff --git a/src/emu/modrm.h b/src/emu/modrm.h
index 7f5c77ce..75df27e7 100644
--- a/src/emu/modrm.h
+++ b/src/emu/modrm.h
@@ -1,6 +1,7 @@
 #define F8      *(uint8_t*)(R_RIP++)

 #define F8S     *(int8_t*)(R_RIP++)

 #define F16     *(uint16_t*)(R_RIP+=2, R_RIP-2)

+#define F16S    *(int16_t*)(R_RIP+=2, R_RIP-2)

 #define F32     *(uint32_t*)(R_RIP+=4, R_RIP-4)

 #define F32S    *(int32_t*)(R_RIP+=4, R_RIP-4)

 #define F32S64  (uint64_t)(int64_t)F32S

diff --git a/src/emu/x64run66f0.c b/src/emu/x64run66f0.c
index 50f159f8..305b450b 100644
--- a/src/emu/x64run66f0.c
+++ b/src/emu/x64run66f0.c
@@ -42,10 +42,11 @@ int Run66F0(x64emu_t *emu, rex_t rex)
 
     switch(opcode) {
 
-        case 0x83:              /* GRP Ed,Ib */
+        case 0x81:              /* GRP Ew,Iw */
+        case 0x83:              /* GRP Ew,Ib */
             nextop = F8;
-            GETED(1);
-            tmp64s = F8S;
+            GETED((opcode==0x83)?1:2);
+            tmp64s = (opcode==0x83)?(F8S):(F16S);
             tmp64u = (uint64_t)tmp64s;
 #ifdef DYNAREC
             if(rex.w) {