[PATCH] Upgrade arm-sflt minimum architecture to ARMv5TE

David Holmes david.holmes at oracle.com
Mon Nov 26 07:36:26 UTC 2018


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 <linuxtardis at gmail.com>
> # 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'
> 


More information about the build-dev mailing list