On Fri, Aug 02, 2002 at 11:32:18AM +0200, Carsten Langgaard wrote:
> > > After looking at the generated assembly I discovered the handlers don't
> > > fit in 128 bytes. They didn't crash since I have modules disabled for
> > > now, so the vmalloc path didn't get hit and the user path happened to fit,
> > > but it was pure luck. The path got hit before I fixed a bug in gas though
> > > -- that's the explanation of the false cache error exceptions I used to
> > > observe.
> >
> > Ouch. It was a known problem but we simply ignored it for a while as that
> > handler just overwrites the cache error handler which normally should be
> > used extremly rarely, if at all. The problem is somewhat itching by now
> > as we're supporting the SB1 core which in it's revision one may throw
> > spurious cache errors, so the handler is actually used ...
> >
>
> Maybe it's time for some intelligent check for the size of these exception
> routine.
Easy trick at compile time which will just inflate the object code a little
bit:
.align 5
LEAF(except_vec1_r4k)
[...]
END(except_vec1_r4k)
.org except_vec1_r4k + 0x80
This will result in an assembler error if the body of the except_vec1_r4k
function is bigger than 0x80.
Ralf
|