Hi, Currently GCC is happy to use LDRD to perform a 64bit load on ARMv7-R, as shown by the testcase on this patch. However, LDRD is only atomic when LPAE extensions is available, which they are not for ARMv7-R. This commit solve the issue by introducing a new feature bit to distinguish LPAE extensions instead of deducing it from div instruction availability. ChangeLog entries are as follow: *** gcc/ChangeLog *** 2017-03-22 Thomas Preud'homme PR target/80082 * config/arm/arm-protos.h (FL_LPAE): Define macro. (FL_FOR_ARCH7VE): Add FL_LPAE. (arm_arch_lpae): Declare extern. * config/arm/arm.c (arm_arch_lpae): Declare. (arm_option_override): Define arm_arch_lpae. * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of arm_arch_lpae. *** gcc/testsuite/ChangeLog *** 2017-03-22 Thomas Preud'homme PR target/80082 * gcc.target/arm/atomic_loaddi_10.c: New testcase. * gcc.target/arm/atomic_loaddi_11.c: Likewise. Is this ok for gcc-5-branch? Best regards, Thomas On 06/04/17 14:05, Ramana Radhakrishnan wrote: > On Mon, Mar 27, 2017 at 12:15 PM, Thomas Preudhomme > wrote: >> Hi, >> >> Currently GCC is happy to use LDRD to perform a 64bit load on ARMv7-R, >> as shown by the testcase on this patch. However, LDRD is only atomic >> when LPAE extensions is available, which they are not for ARMv7-R. This >> commit solve the issue by introducing a new feature bit to distinguish >> LPAE extensions instead of deducing it from div instruction >> availability. > > > Ok but with the testsuite fix that I just approved, please also fix > in gcc-5 branch. > > Thanks, > Ramana > >> >> ChangeLog entries are as follow: >> >> *** gcc/ChangeLog *** >> >> 2017-03-22 Thomas Preud'homme >> >> PR target/80082 >> * config/arm/arm-protos.h (FL_LPAE): Define macro. >> (FL_FOR_ARCH7VE): Add FL_LPAE. >> (arm_arch_lpae): Declare extern. >> * config/arm/arm.c (arm_arch_lpae): Declare. >> (arm_option_override): Define arm_arch_lpae. >> * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of >> arm_arch_lpae. >> >> *** gcc/testsuite/ChangeLog *** >> >> 2017-03-22 Thomas Preud'homme >> >> PR target/80082 >> * gcc.target/arm/atomic_loaddi_10.c: New testcase. >> * gcc.target/arm/atomic_loaddi_11.c: Likewise. >> >> >> Testing: bootstrapped for -march=armv7ve and testsuite shows no regression. >> >> Is this ok for gcc-6-branch? >> >> Best regards, >> >> Thomas