Hi Jakub,

On 26/11/2018 1:53 am, Jakub Vaněk wrote:
Hi,

This patch raises the minimum architectural level for ARM CPUs to
ARMv5TE. It is done through changing the -march flag in the current
CPU-specific CFLAGS and ASFLAGS.

This patch depends on "Append assembler flags on ARM targets" patch for
ASFLAGS handling.

Reason for this change: assembler code in linux_arm_32.s uses PLD
instructions. ARM ISA manual mentions this: "This instruction is
available in E variants of ARM architecture v5 and above." (thanks to
David Holmes for noticing this).

FYI I did a bit of digging and we tried to make this change back in 2010 and ran into problems:

"It appears that gcc assumes that if you choose the armv5te architecture option, it can use the "E" instruction extensions which provide 64 bit load and stores to 4 byte aligned addresses. I tried two different compiler versions 4.1.2 and 4.2.3 and they both had the same problem. The <hardware> does support ldrd/strd but they do not support 4 byte aligned operations. The addresses must be 8 byte aligned."

How things stand today I can not say.

Cheers,
David

This patch was successfully built here:
https://ci.adoptopenjdk.net/view/ev3dev/job/openjdk12_build_ev3_linux/21/

Thanks,
Jakub Vanek

# HG changeset patch
# User Jakub Vaněk <[email protected]>
# Date 1543065765 -3600
#      Sat Nov 24 14:22:45 2018 +0100
# Node ID 1876e24fad75579f76e3106121e61f7951b03fc8
# Parent  c5ff4e346842d9025e8abdde0cf8c7d33dfd8d82
Upgrade arm-sflt minimum architecture to ARMv5TE

diff --git a/make/autoconf/flags.m4 b/make/autoconf/flags.m4
--- a/make/autoconf/flags.m4
+++ b/make/autoconf/flags.m4
@@ -56,12 +56,12 @@
        ARM_ARCH_TYPE_ASFLAGS='-march=armv7-a -mthumb'
      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_FLAGS='-march=armv5te -marm'
+      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_FLAGS='-march=armv5te -marm'
+      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'

Reply via email to