diff options
| author | Leslie Zhai <zhaixiang@loongson.cn> | 2024-12-02 18:07:45 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-02 11:07:45 +0100 |
| commit | 646dd718f5f6cb8390b0507bb1d407707feb9603 (patch) | |
| tree | 1956dd11203a2aa108821a114c35cf2f5bc12720 | |
| parent | 83ed8ebb22da6d77f8f15af43bf316bd14e93ed3 (diff) | |
| download | box64-646dd718f5f6cb8390b0507bb1d407707feb9603.tar.gz box64-646dd718f5f6cb8390b0507bb1d407707feb9603.zip | |
[LA64_DYNAREC] Added INSB, INSD, OUTSB and OUTSD opcodes (#2100)
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_00.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_00.c b/src/dynarec/la64/dynarec_la64_00.c index ab786d7b..f571e4e9 100644 --- a/src/dynarec/la64/dynarec_la64_00.c +++ b/src/dynarec/la64/dynarec_la64_00.c @@ -662,6 +662,30 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni ZEROUP(gd); } break; + case 0x6C: + case 0x6D: + INST_NAME(opcode == 0x6C ? "INSB" : "INSD"); + SETFLAGS(X_ALL, SF_SET_NODF); // Hack to set flags in "don't care" state + GETIP(ip); + STORE_XEMU_CALL(); + CALL(native_priv, -1); + LOAD_XEMU_CALL(); + jump_to_epilog(dyn, 0, xRIP, ninst); + *need_epilog = 0; + *ok = 0; + break; + case 0x6E: + case 0x6F: + INST_NAME(opcode == 0x6C ? "OUTSB" : "OUTSD"); + SETFLAGS(X_ALL, SF_SET_NODF); // Hack to set flags in "don't care" state + GETIP(ip); + STORE_XEMU_CALL(); + CALL(native_priv, -1); + LOAD_XEMU_CALL(); + jump_to_epilog(dyn, 0, xRIP, ninst); + *need_epilog = 0; + *ok = 0; + break; #define GO(GETFLAGS, NO, YES, F, I) \ READFLAGS(F); \ |