changeset 52893:99c48295ec8e

8214465: Upgrade arm-sflt minimum architecture to ARMv5TE for assembler Reviewed-by: erikj, dholmes Contributed-by: Jakub Vanek <linuxtardis@gmail.com>
author dholmes
date Thu, 29 Nov 2018 00:51:58 -0500
parents 7b9f61b7fd94
children b2e14d91a50c
files make/autoconf/flags.m4
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/make/autoconf/flags.m4	Thu Nov 29 00:49:27 2018 -0500
+++ b/make/autoconf/flags.m4	Thu Nov 29 00:51:58 2018 -0500
@@ -46,6 +46,11 @@
     AC_MSG_CHECKING([for ABI profle])
     AC_MSG_RESULT([$OPENJDK_TARGET_ABI_PROFILE])
 
+    # --- Arm-sflt CFLAGS and ASFLAGS ---
+    # Armv5te is required for assembler, because pld insn used in arm32 hotspot is only in v5E and above.
+    # However, there is also a GCC bug which generates unaligned strd/ldrd instructions on armv5te:
+    # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82445, and it was fixed only quite recently.
+    # The resulting compromise is to enable v5TE for assembler and let GCC generate code for v5T.
     if test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-vfp-sflt; then
       ARM_FLOAT_TYPE=vfp-sflt
       ARM_ARCH_TYPE_FLAGS='-march=armv7-a -mthumb'
@@ -57,11 +62,11 @@
     elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-sflt; then
       ARM_FLOAT_TYPE=sflt
       ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'
-      ARM_ARCH_TYPE_ASFLAGS='-march=armv5t'
+      ARM_ARCH_TYPE_ASFLAGS='-march=armv5te'
     elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv5-vfp-sflt; then
       ARM_FLOAT_TYPE=vfp-sflt
       ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'
-      ARM_ARCH_TYPE_ASFLAGS='-march=armv5t'
+      ARM_ARCH_TYPE_ASFLAGS='-march=armv5te'
     elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv6-vfp-hflt; then
       ARM_FLOAT_TYPE=vfp-hflt
       ARM_ARCH_TYPE_FLAGS='-march=armv6 -marm'