summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorGalen Williamson <galen@vector35.com>2025-06-30 16:15:40 -0400
committerGalen Williamson <galen@vector35.com>2025-06-30 18:06:53 -0400
commitbf5007b8dcfcee6978fe32a5e61dfadb17a3ba41 (patch)
tree51c9a3903de517ebe95106796bf391dd8f0338b7 /arch
parent77f007b2cc0a01d2135da53f4071fe2024e42da2 (diff)
[powerpc] Adjust default decoding modes in disassembler.cpp to improve coverage of instruction table in assembler.cpp
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/disassembler.cpp9
-rw-r--r--arch/powerpc/disassembler.h2
2 files changed, 7 insertions, 4 deletions
diff --git a/arch/powerpc/disassembler.cpp b/arch/powerpc/disassembler.cpp
index df444fe8..0b513d70 100644
--- a/arch/powerpc/disassembler.cpp
+++ b/arch/powerpc/disassembler.cpp
@@ -139,7 +139,7 @@ bool PushOperandTokens(string& result, const Operand* op)
return true;
}
-int disassemble(uint8_t *data, uint32_t addr, string& result)
+int disassemble(uint8_t *data, uint32_t addr, string& result, uint32_t decodeFlags)
{
int rc = -1;
@@ -148,7 +148,10 @@ int disassemble(uint8_t *data, uint32_t addr, string& result)
Instruction instruction;
const char* mnemonic = NULL;
size_t len = 4;
- uint32_t decodeFlags = DECODE_FLAGS_PPC64;
+ if (decodeFlags == 0)
+ // TODO: There are no QPX instructions currently supported by the decoder, so leave that disabled for now.
+ // decodeFlags = DECODE_FLAGS_PPC64 | DECODE_FLAGS_ALTIVEC | DECODE_FLAGS_VSX | DECODE_FLAGS_QPX | DECODE_FLAGS_PS;
+ decodeFlags = DECODE_FLAGS_PPC64 | DECODE_FLAGS_ALTIVEC | DECODE_FLAGS_VSX | DECODE_FLAGS_PS;
//MYLOG("%s()\n", __func__);
size_t instructionLength = GetInstructionLength(data, len, decodeFlags);
@@ -159,7 +162,7 @@ int disassemble(uint8_t *data, uint32_t addr, string& result)
}
len = instructionLength;
- if (!FillInstruction(&instruction, data, instructionLength, addr))
+ if (!FillInstruction(&instruction, data, instructionLength, addr, 0, decodeFlags))
{
MYLOG("ERROR: FillInstruction()\n");
return -1;
diff --git a/arch/powerpc/disassembler.h b/arch/powerpc/disassembler.h
index bb764433..14db652f 100644
--- a/arch/powerpc/disassembler.h
+++ b/arch/powerpc/disassembler.h
@@ -2,4 +2,4 @@
#include <string>
using namespace std;
-int disassemble(uint8_t *data, uint32_t addr, string& result);
+int disassemble(uint8_t *data, uint32_t addr, string& result, uint32_t decodeFlags = 0);