[8u] RFR: Initial backport of AArch32 platform support from OpenJDK 9 to OpenJDK 8u

Nikolay Gorshkov nikolay at azulsystems.com
Wed Dec 23 23:42:10 UTC 2015


Hi All,

At Azul Systems, we are working actively on OpenJDK 8u based version
of AArch32 port. Here I'd like to propose the initial set of
changesets that introduces "aarch32" platform in OpenJDK 8u,
brings aarch32-specific files from OpenJDK 9 based version,
and adapts them so that:
- "zero" JVM variant for "aarch32" platform becomes buildable;
- "core" JVM variant (includes template interpreter only,
   without C1/C2) for "aarch32" platform becomes buildable.

The changesets are based on the current version of
http://hg.openjdk.java.net/aarch32-port/jdk8u/
forest. aarch32-specific files are taken from the snapshot of
https://bitbucket.org/joe-j/
repositories that was taken on Oct 15, 2015. The only changeset
it does not include is
https://bitbucket.org/joe-j/aarch32-hotspot/commits/851abcc09ceed800bd8b897e00c4ec9e652c7a80

This set of changesets does not make the template interpreter
functional (HelloWorld still crashes with it). The next portion
of fixes will deal with this.

Here are the proposed 11 changesets.

http://cr.openjdk.java.net/~nikgor/aarch32-port/8078628/jdk8u/webrev.00/
8078628: linux-zero does not build without precompiled header
We found it useful in the very beginning to try "zero" version.
This backport from JDK 9 was required to make it buildable.

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.01.hotspot.00/
Part 1: Copied AArch32 platform dependent sources from OpenJDK 9 based port
After this step all files in "cpu/aarch32" and "os_cpu/linux_aarch32"
are identical to what is in OpenJDK 9 based version.

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.02.hotspot.00/
Part 2: Added AArch32 specific include directives to shared code

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.03.hotspot.00/
Part 3: Introduced "core" JVM build target for AArch32 platform

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.04.hotspot.00/
Part 4: Introduced "aarch32" architecture into build scripts

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.05.root.00/
Part 5: Introduced "aarch32" architecture into build scripts

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.06.root.00/
Part 6: Added cross-compilation scripts for Raspberry Pi

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.07.hotspot.00/
Part 7: Fixed compilation errors except those related to SA; in particular,
reverted aarch32-specific code for 8026049, 8048721, 8059606, 8071805,
8076492, 8079507; corrected fix for 8077615
This was the most time-consuming step. Needed to carefully track
the relevant OpenJDK 9 specific fixes and back out their platform-dependent
parts.

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.08.hotspot.00/
Part 8: Disabled building libsaproc.so for aarch32

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.09.jdk.00/
Part 9: Fixed compilation and packaging errors

http://cr.openjdk.java.net/~nikgor/aarch32-port/0/jdk8u/webrev.10.hotspot.00/
Part 10: Fixed linking errors (reverted aarch32-specific code for 8003426,
8004128, 8041794)

I'm looking for your comments!

Thanks,
Nikolay


More information about the aarch32-port-dev mailing list