From 3b71ba6090f3b69a3e8927e04b60889ffab47368 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 21 Dec 2024 12:31:25 +0100 Subject: [ARM64_DYNAREC] Improved DMB/DSB printer --- src/dynarec/arm64/arm64_printer.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/dynarec/arm64/arm64_printer.c b/src/dynarec/arm64/arm64_printer.c index b7f269fd..05bc35e7 100644 --- a/src/dynarec/arm64/arm64_printer.c +++ b/src/dynarec/arm64/arm64_printer.c @@ -1713,14 +1713,26 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr) return buff; } - // DMB ISH + // DMB if(isMask(opcode, "11010101000000110011nnnn10111111", &a)) { - snprintf(buff, sizeof(buff), "DMB %s", (Rn==0b1011)?"ISH":"???"); + const char* barrier[] = { + "???", "???", "???", "???", // 0-3 + "???", "???", "???", "???", // 4-7 + "???", "ISHLD", "ISHST", "ISH", // 8-11 + "???", "LD", "ST", "SY" // 12-15 + }; + snprintf(buff, sizeof(buff), "DMB %s", barrier[Rn]); return buff; } - // DSB ISH/ISHST + // DSB if(isMask(opcode, "11010101000000110011nnnn10011111", &a)) { - snprintf(buff, sizeof(buff), "DSB %s", (Rn==0b1011)?"ISH":((Rn==0b1010)?"ISHST":"???")); + const char* barrier[] = { + "???", "???", "???", "???", // 0-3 + "???", "???", "???", "???", // 4-7 + "???", "ISHLD", "ISHST", "ISH", // 8-11 + "???", "LD", "ST", "SY" // 12-15 + }; + snprintf(buff, sizeof(buff), "DSB %s", barrier[Rn]); return buff; } -- cgit 1.4.1