Q: Register usage in mpc860 ports

Jim Chapman jim.chapman at iname.com
Sat May 22 01:35:03 EST 1999

I am porting LinuxPPC to a custom embedded mpc860 board. I am starting
with the mbx port and using home-built egcs-1.1.2 tools on  a Linux
host, using the instructions in

There seem to be register usage conflicts in the MMU TLB handlers. The
code tries to use location 0 (according to the comment) to store a
couple of register values, e.g. in arch/ppc/kernel/head.S

 mtspr M_TW, r20 /* Save a couple of working registers */
 mfcr r20
 stw r20, 0(r0)
 stw r21, 4(r0)

However, I am finding that r0 isn't zero when the MMU exceptions are
taken. Instead, it points to somewhere in the text or data segment. I
hacked the code to save r20 & r21 to a specific memory location and that
fixed that particular problem.

Has anyone else seen this sort of thing when doing a custom port?
Perhaps this is being caused by an init problem since the MBX comments
suggest that E-PPCbug is used to download and init that card but I don't
use EPPCbug? What registers are reserved by the kernel in the MBX port,
apart from r2? What mpc860 register setup should be done in head.S
before going to C?



[[ This message was sent via the linuxppc-dev mailing list.  Replies are ]]
[[ not  forced  back  to the list, so be sure to Cc linuxppc-dev if your ]]
[[ reply is of general interest. Please check http://lists.linuxppc.org/ ]]
[[ and http://www.linuxppc.org/ for useful information before posting.   ]]

More information about the Linuxppc-dev mailing list