JIT on Netwinder
Sergey Voitseh
kaffe@rufus.w3.org
Fri, 17 Nov 2000 15:05:15 +0200
Hi Godmar!
I've determine a problem with Illegal Instruction but have another one.
When I try to run java with simple helloworld class or javac with out parameters
I get as a result following:
> java Hello
kaffe:memory violation at pc = 0x02148840, lr=0x4009c008 (bad adresses =
0x00000001? code 3)
Internal error: caught an unexpected exception.
Please check your CLASSPATH and your installation.
java/lang/NullPointerException
at java.util.HashMap.bucket(HashMap.java:245)
at java.util.HashMap.put(HashMap.java:107)
at java.util.Hashtable.put(Hashtable.java:106)
at java.lang.System.initProperties(System.java:native)
at java.lang.System.<clinit>(System.java:47)
Aborted
It seems that it failed when calling InitThreads from initialiseKaffe.
The same results I had when configured and compiled with next parameters:
./configure --prefix=/usr/ --with-threads=unix-pthreads --with-engine=jit
./configure --prefix=/usr/ --with-threads=unix-jthreads --with-engine=jit
Best regards,
Sergey
kaffe@rufus.w3.org@rufus.w3.org on 13.11.2000 20:07:21
Please respond to kaffe@rufus.w3.org
Sent by: owner-kaffe@rufus.w3.org
To: kaffe@rufus.w3.org
cc:
Subject: Re: JIT on Netwinder
This could either be a problem with cache flushing (shouldn't be though)
or a problem with the compiler you're using.
You could try compiling with a different level of optimization
and you should doublecheck that the D-Cache is being flushed properly.
- Godmar
>
> kaffe@rufus.w3.org@rufus.w3.org on 08.11.2000 22:40:12
>
> Please respond to kaffe@rufus.w3.org
>
> Sent by: owner-kaffe@rufus.w3.org
>
>
> To: kaffe@rufus.w3.org
> cc:
>
> Subject: Re: JIT on Netwinder
>
>
>
> Hello Godmar
>
> I recompile libraries needed by kaffe with -fPIC but get the same error:
>
> Illegal instruction. Core dumped.
>
> I attempt to debug kaffe and determine that it fails in macros
sysdepCallMethod
> which calling from function callMethodA(...) at lines
> case 0:
> asm ("mov lr, pc\n
> mov pc, %3\n"
> : "=r" (r0), "=r" (r1), "=f" (f0)
> : "r" ((CALL)->function),
> "0" (r0), "1" (r1), "r" (r2), "r" (r3)
> : "ip", "rfp", "sl", "fp", "lr"
> );
> switch((CALL)->rettype)
> {
> case 'D':
> asm("stfd %1,%0" : "=m" ((CALL)->ret->d) : "f" (f0));
> break;
> case 'F':
> asm("stfs %1,%0" : "=m" ((CALL)->ret->f) : "f" (f0));
> break;
> case 'J':
> (&(CALL)->ret->i)[1] = r1;
> /* follow through */
> default:
> (CALL)->ret->i = r0;
> }
> break;
>
> Best Regards,
> Sergey Voitseh
>