Saving sparc registers before longjump (was: Re: [kaffe] Re: netbsd compilation fails)

Dalibor Topic robilad at
Sun Nov 23 11:14:02 PST 2003

Ciao Riccardo,

Riccardo wrote:
> In <3FBD0901.9050307 at> Dalibor Topic  wrote:
>>Riccardo wrote:
>>>My compilation of CVS on NetBSD/sparc fails with the following:
> <cut>
>>that's m68k-netbsd, right?
> sometimes it's me, but sometimes it's you.... read the first line and 
> compare it with your question ;)
> To be precise:
> netbsd 1.6.1, sparc 32 bit

Judging by the build log Riccardo sent me, there may be some problem 
with the exception frame register being clobbered in jni call.

../../../kaffe/kaffe/kaffevm/jni.c: In function `Kaffe_NewGlobalRef':
../../../kaffe/kaffe/kaffevm/jni.c:313: warning: variable `ef' might be 
clobbered by `longjmp' or `vfork'
../../../kaffe/kaffe/kaffevm/jni.c: In function `Kaffe_DefineClass':
../../../kaffe/kaffe/kaffevm/jni.c:341: warning: variable `ef' might be 
clobbered by `longjmp' or `vfork'
[snip ... as it goes on like this for any jni function]

ef is defined in config/sparc/jit.h:

register exceptionFrame* ef asm("%sp"); \

So I'm wondering if saving the register before the sepjump/longjump 
magic would do the trick. The only problem is that I don't know how to 
do it, as I haven't programmed GCC assembler yet (not sparc assembler in 
particular). Could someone who's speaks sparc/gcc assembler jump in and 
provide a patch or point me to relevant information on how to patch this?

dalibor topic

More information about the kaffe mailing list