[kaffe] patch for kaffe1.0.7jit3 code runing on MIPS

Casey Marshall csm at gnu.org
Wed Jul 7 10:55:00 PDT 2004

>>>>> "Dalibor" == Dalibor Topic <robilad at kaffe.org> writes:

Dalibor> Yoshiharu Oba wrote:
>> Hi Dalibor I appreciate your advice very much. Now I'm writing a
>> changelog and remake a new patch, It's also included.

Dalibor> Thanks a lot! I'll go through it, and see what needs to be
Dalibor> applied to the CVS head. It's great that you got JIT & JIT3
Dalibor> to work. I'd like to get your changes in, and then look at
Dalibor> Casey's patches for JIT & JIT3 from this spring.

One thing I was not able to fix in JIT3 was the stack unwinder, which
is a particularly bad piece of code. The real problem was that GCC
would reorder instructions in the prologue, so the unwinder was not
able to find where the function stored $ra. I haven't tried a more
recent GCC (I was using 3.1), but I think using `-fno-reorder-insns2'
fixes this particular problem.

Also, I really don't much like that unwinder in general. It makes too
many assumptions about the way the stack looks, which may not be true
in general. GCC's unwinder makes a bit more sense, since it uses
debugging info it will typically be consistent.

>>>>> "Yoshiharu" == Yoshiharu Oba <ooba at gk.avkk.yamaha.co.jp> writes:

Yoshiharu> http://www.kk.iij4u.or.jp/~obajus/libffi-1.20-mips-ps2linux.patch

I'm not sure this is correct. According to the ABI rules, you cannot
pass an argument in a floating-point register if you have passed an
argument in an integer register. You pass double arguments in
registers a0 and a1, then a float in f14. That is, unless the ABI is
different for the PlayStation, in which case changing the O32 ABI code
like this is incorrect as well. You would need to define a new FFI ABI

I would have thought that an assembler for your platform would know
about your lack of double support, and would assemble things like
`l.d' into two `l.s' instructions.

Casey Marshall || csm at gnu.org

More information about the kaffe mailing list