diff options
| author | Galen Williamson <galen@vector35.com> | 2025-06-30 16:15:40 -0400 |
|---|---|---|
| committer | Galen Williamson <galen@vector35.com> | 2025-06-30 18:06:53 -0400 |
| commit | bf5007b8dcfcee6978fe32a5e61dfadb17a3ba41 (patch) | |
| tree | 51c9a3903de517ebe95106796bf391dd8f0338b7 /arch | |
| parent | 77f007b2cc0a01d2135da53f4071fe2024e42da2 (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.cpp | 9 | ||||
| -rw-r--r-- | arch/powerpc/disassembler.h | 2 |
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); |
