suggestions on handling additional exception levels on ppc32
Kumar Gala
galak at kernel.crashing.org
Tue Apr 29 01:40:56 EST 2008
I'm looking at fixing an issue parts that have multiple exception
levels (e300, 40x, booke).
One of the issues is the transfer_to_handler patch in entry_32.S
doesn't use the proper save/restore registers to transfer to C code.
The following bit of code is what I'm having issues with:
.globl transfer_to_handler_cont
transfer_to_handler_cont:
3:
mflr r9
lwz r11,0(r9) /* virtual address of handler
*/
lwz r9,4(r9) /* where to go when done */
mtspr SPRN_SRR0,r11
mtspr SPRN_SRR1,r10
mtlr r9
SYNC
RFI /* jump to handler, enable
MMU */
A few possibilities:
* introduce an additional function pointer as part of
EXC_XFER_TEMPLATE() to specifies the type of handler (normal, crit,
dbg, mcheck)
* use the traps field low order bits to determine normal, crit, dbg,
mcheck at run time.
* duplicate the code paths for each exception level
suggestions?
- k
More information about the Linuxppc-dev
mailing list