| Index: src/ppc/disasm-ppc.cc
|
| diff --git a/src/ppc/disasm-ppc.cc b/src/ppc/disasm-ppc.cc
|
| index c0a02a8b9c55d2552626e7cf33f6cdef48b07610..1bffc9885ece3f2be6e7ed1bae1513520068de09 100644
|
| --- a/src/ppc/disasm-ppc.cc
|
| +++ b/src/ppc/disasm-ppc.cc
|
| @@ -82,6 +82,7 @@ class Decoder {
|
| void DecodeExt3(Instruction* instr);
|
| void DecodeExt4(Instruction* instr);
|
| void DecodeExt5(Instruction* instr);
|
| + void DecodeExt6(Instruction* instr);
|
|
|
| const disasm::NameConverter& converter_;
|
| Vector<char> out_buffer_;
|
| @@ -1073,6 +1074,28 @@ void Decoder::DecodeExt5(Instruction* instr) {
|
| Unknown(instr); // not used by V8
|
| }
|
|
|
| +void Decoder::DecodeExt6(Instruction* instr) {
|
| + switch (instr->Bits(10, 3) << 3) {
|
| +#define DECODE_XX3_INSTRUCTIONS(name, opcode_name, opcode_value) \
|
| + case opcode_name: { \
|
| + Format(instr, #name" 'Dt, 'Da, 'Db"); \
|
| + return; \
|
| + }
|
| + XX3_OPCODE_LIST(DECODE_XX3_INSTRUCTIONS)
|
| +#undef DECODE_XX3_INSTRUCTIONS
|
| + }
|
| + switch (instr->Bits(10, 2) << 2) {
|
| +#define DECODE_XX2_INSTRUCTIONS(name, opcode_name, opcode_value) \
|
| + case opcode_name: { \
|
| + Format(instr, #name" 'Dt, 'Db"); \
|
| + return; \
|
| + }
|
| + XX2_OPCODE_LIST(DECODE_XX2_INSTRUCTIONS)
|
| + }
|
| +#undef DECODE_XX3_INSTRUCTIONS
|
| + Unknown(instr); // not used by V8
|
| +}
|
| +
|
| #undef VERIFIY
|
|
|
| // Disassemble the instruction at *instr_ptr into the output buffer.
|
| @@ -1360,6 +1383,10 @@ int Decoder::InstructionDecode(byte* instr_ptr) {
|
| DecodeExt5(instr);
|
| break;
|
| }
|
| + case EXT6: {
|
| + DecodeExt6(instr);
|
| + break;
|
| + }
|
| #if V8_TARGET_ARCH_PPC64
|
| case LD: {
|
| switch (instr->Bits(1, 0)) {
|
|
|