ARM: Fill out the printReg function.

This commit is contained in:
Gabe Black
2009-06-26 22:01:34 -07:00
parent 7b5386d390
commit 38d8bc64ba
2 changed files with 31 additions and 4 deletions

View File

@@ -219,10 +219,29 @@ void
ArmStaticInst::printReg(std::ostream &os, int reg) const
{
if (reg < FP_Base_DepTag) {
ccprintf(os, "r%d", reg);
}
else {
switch (reg) {
case PCReg:
ccprintf(os, "pc");
break;
case StackPointerReg:
ccprintf(os, "sp");
break;
case FramePointerReg:
ccprintf(os, "fp");
break;
case ReturnAddressReg:
ccprintf(os, "lr");
break;
default:
ccprintf(os, "r%d", reg);
break;
}
} else if (reg < Ctrl_Base_DepTag) {
ccprintf(os, "f%d", reg - FP_Base_DepTag);
} else {
reg -= Ctrl_Base_DepTag;
assert(reg < NUM_MISCREGS);
ccprintf(os, "%s", ArmISA::miscRegName[reg]);
}
}

View File

@@ -55,12 +55,20 @@ namespace ArmISA
enum MiscRegIndex {
MISCREG_CPSR = 0,
MISCREG_SPSR,
MISCREG_SPSR_FIQ,
MISCREG_SPSR_IRQ,
MISCREG_SPSR_SVC,
MISCREG_SPSR_UND,
MISCREG_SPSR_ABT,
MISCREG_FPSR
MISCREG_FPSR,
NUM_MISCREGS
};
const char * const miscRegName[NUM_MISCREGS] = {
"cpsr",
"spsr", "spsr_fiq", "spsr_irq", "spsr_svc", "spsr_und", "spsr_abt",
"fpsr"
};
BitUnion32(CPSR)