From aead503f0290eef0e56de76ff4001477f0e8d812 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Mon, 20 May 2024 18:04:31 +0800 Subject: [INTERPRETER] Fixed CMPXCHG16B opcode for la64 (#1506) it's not the best we can do, but it fixes things. Will came up something better with scq extension later. --- src/emu/x64runf0.c | 2 +- src/include/box64context.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/emu/x64runf0.c b/src/emu/x64runf0.c index 70d945ec..ce7145fc 100644 --- a/src/emu/x64runf0.c +++ b/src/emu/x64runf0.c @@ -745,7 +745,7 @@ uintptr_t RunF0(x64emu_t *emu, rex_t rex, uintptr_t addr) GETGD; #if defined(DYNAREC) && !defined(TEST_INTERPRETER) if (rex.w) { -#if defined(__riscv) +#if defined(__riscv) || defined(__loongarch64) while (native_lock_xchg_d(&emu->context->mutex_16b, 1)); // lock tmp64u = ((uint64_t*)ED)[0]; tmp64u2 = ((uint64_t*)ED)[1]; diff --git a/src/include/box64context.h b/src/include/box64context.h index 19c45f90..b8706729 100644 --- a/src/include/box64context.h +++ b/src/include/box64context.h @@ -165,7 +165,7 @@ typedef struct box64context_s { rbtree* db_sizes; int trace_dynarec; pthread_mutex_t mutex_lock; // this is for the Test interpreter - #ifdef __riscv + #if defined(__riscv) || defined(__loongarch64) uint32_t mutex_16b; #endif #endif -- cgit 1.4.1