[kaffe] MIPS Port Update

Kevin D. Kissell kevink at mips.com
Sun Jul 14 04:44:26 PDT 2002

I haven't gone looking at the remaining regression test
failures on the Playstation 2, but I've made some progress
on the "normal" mipsel platform.  The bulk of the failures
I was seeing, which were providing misleading diagnostics,
turned out to be due to bogus SIGFPEs coming out of
the kernel floating point emulator, due to some downrev
trap-handler-to-math-emulator linkage code in my kernel.
That having been fixed, I still have 29 of 115 tests failing,
most but not all of which hve the same cause: an assert
of !intsDisabled() in kaffe/kaffevm/exception.c.  I'm trying
to trace that one down.  I suspect something has changed
in the signal handling of MIPS Linux 2.4.x versus the 2.2.x
on the PS2, but that's just a theory for the moment.  If any
of you have seen this error in other contexts, I'd appreciate
hearing about it.

One other remark:  There is an inline assembler macro
for COMPARE_AND_EXCHANGE defined in 
config/mips/common.h if HAVE_MIPSII_INSTRUCTIONS
is defined, and which contains a ".set mips2" directive.
However, the definition contains the conditional move
instruction "movn", which is a MIPS IV instruction, not
a MIPSII instruction, and which will cause an assember
failure if the .set mips2 directive is preserved.  Since the
CPU I'm using, a MIPS 5Kc, is a MIPS32/MIPS64
processor that implements movn, my fix was to simply
change the ".set mips2" to ".set mips4".  But I think the
macro should be recoded to only use MIPS II instructions,
so that it will run on older MIPS/Linux platforms like
DECstations and SGI Indys.  I'll recode it as part of 
any MIPS patch I propose.


            Kevin K.

More information about the kaffe mailing list