From 646dd718f5f6cb8390b0507bb1d407707feb9603 Mon Sep 17 00:00:00 2001 From: Leslie Zhai Date: Mon, 2 Dec 2024 18:07:45 +0800 Subject: [LA64_DYNAREC] Added INSB, INSD, OUTSB and OUTSD opcodes (#2100) --- src/dynarec/la64/dynarec_la64_00.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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); \ -- cgit 1.4.1