Re: [patch] MIPS64 R4k general exception handler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Mon, Aug 26, 2002 at 02:42:00PM +0200, Maciej W. Rozycki wrote:

>  Similarly to the refill handlers, the R4k (VCEI/VCED) general exception
> handler no longer fits in 128 bytes.  I decided the simplest effective
> solution is to remove the special case and use only a single generic
> handler and only install pointers for VCEI and VCED in the exception
> vector table.  Here is a patch.
> 
>  There is a small update to the VCEI and VCED handlers included as well --
> a dmfc0 is required to properly fetch BadVAddr. 
> 
>  While fiddling with trap_init() I decided to rearrange it a bit more
> consistently with the MIPS version.  Specifically vectors unspecific to
> any particular processor are now installed outside the switch statement.
> 
>  OK to apply?

This is wrong.  While handling a VCE exception the caches are in an
inconsistent state and you may not do any load or store operation.  Also
under some circumstances we handle an enormous number of VCE exceptions
so every cycle shows up in performance.  The general exception handler
having outgrown it's 128 bytes was no problem anyway.  At 0x80000200
we have another slot for CPUs that have a dedicated interrupt vector.
The only CPUs with VCE exceptions are the R4000/R4400 SC and MC versions
and none of those has a dedicated interrupt vector so growing into
that slot is no problem at all.

Something to doublecheck though - right now we only reserve two instructions
at 0x80000200 and I think that's not enough ...

  Ralf


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux