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