[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.
Regards,
Kevin K.
More information about the kaffe
mailing list