4xx critical exceptions
Matt Porter
porter at cox.net
Thu Dec 5 11:11:53 EST 2002
On Wed, Dec 04, 2002 at 03:00:47PM -0800, Brian Kuschak wrote:
<snip>
> The COMMON_PROLOG in head_4xx.S uses SPRG0,1 to
> temporarily save r20, r21 for scratch use. Problem is
> this prologue is used for both critical and
> non-critical interrupts. As I understand it, MSR[EE]
> is cleared for external interrupts, but MSR[CE] is
> not. If a critical interrupt occurs while handling a
> non-critical interrupt, the SPRG0,1 can be overwritten
> while handling the critical interrupt.
>
> I'm guessing we don't have any unused SPRGx registers
> to use here. I was thinking about temporarily
> disabling CE until saving SPRG0,1, but that can't be
> done without using at least one register, and none of
> them are saved at that point.
>
> Any ideas?
The linuxppc-2.5 tree has a (partial) implementation of critical
exceptions. The method used is to save the registers into a
region preallocated in head_*.S.
> P.S. BTW, is bk://ppc.bkbits.net/linuxppc_2_5 the
> right place for the latest 2.5 code?
That's a dead tree. You want bk://ppc.bkbits.net/linuxppc-2.5
Regards,
--
Matt Porter
porter at cox.net
This is Linux Country. On a quiet night, you can hear Windows reboot.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list