[PATCH] Add optimization flags for ARM926EJ-S

Jakub Vaněk linuxtardis at gmail.com
Mon Nov 12 22:57:47 UTC 2018


Hi,

This patch adds a new ARM ABI option for ARM926EJ-S. The reason is not
because of ABI breakage, but it is because of GCC -mcpu flags
specifically for this CPU. We think that this might increase
performance a little bit. However, we do not have numbers for this.
Alternatively, we may just stick to the arm-sflt ABI option.

This patch was successfully built with a few other independent patches
here: https://ci.adoptopenjdk.net/view/ev3dev/ ;
https://github.com/ev3dev-lang-java/openjdk-ev3
We haven't run full jtreg tests on the target platform yet, but Juan
Antonio Brena Moral invested his time into Adopt's openjdktests in
QEMU. Also, the JVM seems to run fine on the ARM board itself.

Regards,

Jakub Vanek (with credit to Juan Antonio)

# HG changeset patch
# User Jakub Vaněk <linuxtardis at gmail.com>
# Date 1542060149 -3600
#      Mon Nov 12 23:02:29 2018 +0100
# Node ID 82c5c630ee8f9237b533ba6414143d109dec0180
# Parent  a609d549992a4d094a514a6c0f5b79443192d8bf
Add optimization flags for ARM926EJ-S

diff --git a/make/autoconf/flags-other.m4 b/make/autoconf/flags-other.m4
--- a/make/autoconf/flags-other.m4
+++ b/make/autoconf/flags-other.m4
@@ -119,6 +119,10 @@
   # Misuse EXTRA_CFLAGS to mimic old behavior
   $2JVM_ASFLAGS="$JVM_BASIC_ASFLAGS ${$2EXTRA_CFLAGS}"

+  if test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm926ejs; then
+    $2JVM_ASFLAGS="$JVM_BASIC_ASFLAGS -mcpu=arm926ej-s"
+  fi
+
   AC_SUBST($2JVM_ASFLAGS)
 ])

diff --git a/make/autoconf/flags.m4 b/make/autoconf/flags.m4
--- a/make/autoconf/flags.m4
+++ b/make/autoconf/flags.m4
@@ -34,7 +34,7 @@
 AC_DEFUN([FLAGS_SETUP_ABI_PROFILE],
 [
   AC_ARG_WITH(abi-profile, [AS_HELP_STRING([--with-abi-profile],
-      [specify ABI profile for ARM builds
(arm-vfp-sflt,arm-vfp-hflt,arm-sflt,
armv5-vfp-sflt,armv6-vfp-hflt,aarch64) @<:@toolchain dependent@:>@
])])
+      [specify ABI profile for ARM builds
(arm-vfp-sflt,arm-vfp-hflt,arm-sflt,
arm926ejs,armv5-vfp-sflt,armv6-vfp-hflt,aarch64) @<:@toolchain
dependent@:>@ ])])

   if test "x$with_abi_profile" != x; then
     if test "x$OPENJDK_TARGET_CPU" != xarm && \
@@ -55,6 +55,9 @@
     elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-sflt; then
       ARM_FLOAT_TYPE=sflt
       ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'
+    elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm926ejs; then
+      ARM_FLOAT_TYPE=sflt
+      ARM_ARCH_TYPE_FLAGS='-mcpu=arm926ej-s -marm'
     elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv5-vfp-sflt; then
       ARM_FLOAT_TYPE=vfp-sflt
       ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'


More information about the hotspot-runtime-dev mailing list