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

Edward Nevill edward.nevill at gmail.com
Wed Dec 30 13:10:52 UTC 2015


Hi Nikolay,

Thanks for this. I have pushed to the jdk8u tree.

I have made some changes.

Your changes were based on Joseph Joyces tree @ https://bitbucket.org/joe-j/ I have rebased them on the aarch32 jdk9 tree. The effective changes here were

- Reinstating the copyright notices
- Removing C1/C2 specific files which were not needed to build the template interpreter
- Adding support for AArch64 in /proc/cpuinfo in vm_version_aarch32.cpp
  (the reason for this is to allow building in a 32 bit chroot on an aarch64 system, when running in a 32 bit chroot, /proc/cpuinfo still says AArch64. We need to find a better solution than parsing /proc/cpuinfo, using getauxv)

I also made some other changes

- allow building with precompiled headers (your changeset seemed to only build without). Basically this involved adding aarch32 to the DEBUG_FLAGS, FASTDEBUG_FLAGS and OPT_FLAGS to stop it trying to build -gstabs.
- add -Wno-unused-parameter to CCXXFLAGS in toolchain.m4 (my gcc 4.9.1 seems to need this)
- change the value of X_AARCH32 to 10 from 9 (X_AARCH64 is set to 9 in the aarch64 port so this would cause a clash if ever the sources were merged)

I also removed all the tabs and trailing spaces from your changes. Files containing tabs and trailing spaces cannot be checked in. Please enable jcheck, as this will check for this and other infelicities which are not permitted (see: http://openjdk.java.net/projects/code-tools/jcheck)

I was able to build successfully on a Chromebook (armv7l) and the image seems to run with some minimal testing (Java Dhrystone)

Here are the figures I get for JDK8 Zero, JDK8 Template Int, and JDK7 ARM MicroJIT for Java Dhrystone on the Chromebook

JDK8 Zero: 48167 dhrystone/sec
JDK8 Temp Int: 60139 dhrystone/sec
JDK7 MicroJIT: 416840 dhrystone/sec

I have put a copy of the image at

http://people.linaro.org/~edward.nevill/images/jdk8-temp-int.tgz

Thanks again for doing this. Its great to see this project being pushed foward,

All the best,
Ed.


On Thu, 2015-12-24 at 02:42 +0300, Nikolay Gorshkov wrote:
> 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