| Index: src/arm/disasm-arm.cc
|
| ===================================================================
|
| --- src/arm/disasm-arm.cc (revision 13713)
|
| +++ src/arm/disasm-arm.cc (working copy)
|
| @@ -557,9 +557,14 @@
|
| return 4;
|
| }
|
| case 'p': { // 'pu: P and U bits for load and store instructions
|
| - ASSERT(STRING_STARTS_WITH(format, "pu"));
|
| - PrintPU(instr);
|
| - return 2;
|
| + if (STRING_STARTS_WITH(format, "pu")) {
|
| + PrintPU(instr);
|
| + return 2;
|
| + } else {
|
| + ASSERT(STRING_STARTS_WITH(format, "preload"));
|
| + Print("pld");
|
| + return 7;
|
| + }
|
| }
|
| case 'r': {
|
| return FormatRegister(instr, format);
|
| @@ -956,11 +961,19 @@
|
| break;
|
| }
|
| case db_x: {
|
| - Format(instr, "'memop'cond'b 'rd, ['rn, #-'off12]'w");
|
| + if (instr->ConditionField() == kSpecialCondition) {
|
| + Format(instr, "'preload ['rn, #-'off12]");
|
| + } else {
|
| + Format(instr, "'memop'cond'b 'rd, ['rn, #-'off12]'w");
|
| + }
|
| break;
|
| }
|
| case ib_x: {
|
| - Format(instr, "'memop'cond'b 'rd, ['rn, #+'off12]'w");
|
| + if (instr->ConditionField() == kSpecialCondition) {
|
| + Format(instr, "'preload ['rn, #+'off12]");
|
| + } else {
|
| + Format(instr, "'memop'cond'b 'rd, ['rn, #+'off12]'w");
|
| + }
|
| break;
|
| }
|
| default: {
|
| @@ -1004,7 +1017,11 @@
|
| }
|
| }
|
| }
|
| - Format(instr, "'memop'cond'b 'rd, ['rn, -'shift_rm]'w");
|
| + if (instr->ConditionField() == kSpecialCondition) {
|
| + Format(instr, "'preload ['rn, -'shift_rm]");
|
| + } else {
|
| + Format(instr, "'memop'cond'b 'rd, ['rn, -'shift_rm]'w");
|
| + }
|
| break;
|
| }
|
| case ib_x: {
|
| @@ -1033,6 +1050,8 @@
|
| } else {
|
| UNREACHABLE();
|
| }
|
| + } else if (instr->ConditionField() == kSpecialCondition) {
|
| + Format(instr, "'preload ['rn, +'shift_rm]");
|
| } else {
|
| Format(instr, "'memop'cond'b 'rd, ['rn, +'shift_rm]'w");
|
| }
|
| @@ -1431,7 +1450,7 @@
|
| out_buffer_pos_ += OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
| "%08x ",
|
| instr->InstructionBits());
|
| - if (instr->ConditionField() == kSpecialCondition) {
|
| + if (instr->ConditionField() == kSpecialCondition && !instr->IsPld()) {
|
| Unknown(instr);
|
| return Instruction::kInstrSize;
|
| }
|
|
|