preliminary NetBSD/arm32 port
gback at cs.utah.edu
Thu Jun 4 20:11:45 PDT 1998
I spend another day with the DEC Sharks and ported Kaffe to the
NetBSD1.3/arm32 running on it. It should be in tonight's snap shot.
Currently, it builds static libraries (I don't know how to build dynamic
libs on these boxes) and works only with preemption disabled.
That is, GCTest fails when preemption is enabled--which is why I would call
that port preliminary. Also, ExecTest seems to be losing a SIGCHLD once
in a while. All the other regression tests work, however.
Note that the config.frag in config/arm32/netbsd1/config.frag will set the
threading system to unix-internal, the old system, overriding the
--with-threads cmdline option. If you want to play with the preemptive
jthread system, edit this file before reconfiguring.
Different from what I had predicted, porting it did not only involve writing
the sysdepCallMethod macro. (Although that took a great deal of time,
especially if don't have any documentation and have to look at numerous
samples of gcc output to find out what the calling conventions are...--
I was inspired by Oliva Alexandre's sysdepCallMethod macro for the sparc.)
Getting floating point arithmetic to work was a pain in the butt. The
reason is that the arm32 software floating point libraries use a big-endian
word order for doubles. Everything else on this machine is little-endian.
Kaffe assumed at various places that the word order in a long long and a
double is identical. For instance, this was assumed when reading from the
constant pool of a .class file or when converting to and from the IEEE-754
bit format, which is done in java.lang.Double.longBitsToDouble() & co.
I also wrote some testcases (look for TestNative.*) that should help
other porters debugging the sysdepCallMethod macro for their architectures.
More information about the kaffe