When debugging our system using XMD, I receive strange values from the registers. It seems the instruction is not being seen and the value of the registers is unintelligible. Why does this happen?
To read each register, XMD has to "stuff" one instruction for each register to move its value into a debug register (DBDR) which can be read from the host by XMD. If the instructions are not executed, the DBDR might be invalid, which can result in the wrong behavior of the same values for all registers.
Through the PowerPC JTAG port, using the JTAG "scanIR" operation, you can write an instruction into a "register" called the JISB (JTAG Instruction Stuff Buffer). Once the JISB register is written to, PowerPC will execute the instruction. For reading registers, usually an instruction such as "add DBDR, R0, <reg>" is "stuffed," and the reg value is moved into the DBDR, which can be read from the host via JTAG.
There is a DBSR to check the status of whether or not the "instruction stuff" succeeded; this is not checked after every operation, only on first connection, etc. The above problem is caused by a failure of the "instruction stuff." This failure occurs if the PPC is suspended or unable to register instructions.