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
>