diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-07-16 10:17:14 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-07-16 10:17:14 +0200 |
| commit | 915f7cbd54e1574ca989689cf504c6ea07c859a4 (patch) | |
| tree | 739cb187d29c03a18fabcdae5f7ecf2198e2a192 /src | |
| parent | 0b3097cd0b15eedd3e33ae2331f32fc261ee1231 (diff) | |
| download | box64-915f7cbd54e1574ca989689cf504c6ea07c859a4.tar.gz box64-915f7cbd54e1574ca989689cf504c6ea07c859a4.zip | |
Fixed some of 16bits opcodes ([ARM64_DYNAREC] too)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64/dynarec_arm64_helper.c | 4 | ||||
| -rwxr-xr-x | src/emu/x64run_private.c | 10 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c index 34b2744d..13b58359 100755 --- a/src/dynarec/arm64/dynarec_arm64_helper.c +++ b/src/dynarec/arm64/dynarec_arm64_helper.c @@ -477,8 +477,8 @@ uintptr_t geted16(dynarec_arm_t* dyn, uintptr_t addr, int ninst, uint8_t nextop, int64_t offset = 0; int absmin = 0; if(s) absmin = -absmax; - if(!n && m==6) { - offset = F16; + if(!n && (m&7)==6) { + offset = F16S; MOVZw(ret, offset); } else { switch(n) { diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c index f80ea58e..b17b3e7f 100755 --- a/src/emu/x64run_private.c +++ b/src/emu/x64run_private.c @@ -1185,7 +1185,7 @@ reg64_t* GetEw16_32(x64emu_t *emu, uintptr_t* addr, uint8_t m, uint32_t base) case 7: base+= R_BX; break; } switch((m>>6)&3) { - case 0: if(m==6) base+= F16(addr); break; + case 0: if((m&7)==6) base= F16S(addr); break; case 1: base += F8S(addr); break; case 2: base += F16S(addr); break; // case 3 is C0..C7, already dealt with @@ -1538,7 +1538,7 @@ reg64_t* GetEw16(x64emu_t *emu, uintptr_t* addr, rex_t rex, uint8_t v) case 7: base = R_BX; break; } switch((m>>6)&3) { - case 0: if(m==6) base = F16(addr); break; + case 0: if((m&7)==6) base = F16S(addr); break; case 1: base += F8S(addr); break; case 2: base += F16S(addr); break; // case 3 is C0..C7, already dealt with @@ -1568,7 +1568,7 @@ reg64_t* TestEw16(x64test_t *test, uintptr_t* addr, rex_t rex, uint8_t v) case 7: base = R_BX; break; } switch((m>>6)&3) { - case 0: if(m==6) base = F16(addr); break; + case 0: if((m&7)==6) base = F16S(addr); break; case 1: base += F8S(addr); break; case 2: base += F16S(addr); break; // case 3 is C0..C7, already dealt with @@ -1600,7 +1600,7 @@ reg64_t* GetEw16off(x64emu_t *emu, uintptr_t* addr, rex_t rex, uint8_t v, uintpt case 7: base = R_BX; break; } switch((m>>6)&3) { - case 0: if(m==6) base = F16(addr); break; + case 0: if((m&7)==6) base = F16S(addr); break; case 1: base += F8S(addr); break; case 2: base += F16S(addr); break; // case 3 is C0..C7, already dealt with @@ -1630,7 +1630,7 @@ reg64_t* TestEw16off(x64test_t *test, uintptr_t* addr, rex_t rex, uint8_t v, uin case 7: base = R_BX; break; } switch((m>>6)&3) { - case 0: if(m==6) base = F16(addr); break; + case 0: if((m&7)==6) base = F16S(addr); break; case 1: base += F8S(addr); break; case 2: base += F16S(addr); break; // case 3 is C0..C7, already dealt with |