On 27/11/13 02:07, Richard Earnshaw wrote:
> On 23/11/13 01:54, Kugan wrote:
[snip]
>> +2013-11-22 Kugan Vivekanandarajah <[email protected]>
>> +
>> + * libgcc/config/arm/pbapi-lib.h (HAVE_NO_HW_DIVIDE): Define for
>
> It's bpabi-lib.h
Thanks for the review.
>> + __ARM_ARCH_7_A__.
>> +
>>
>>
>
> No, this will:
> 1) Do the wrong thing for Cortex-a7, A12 and A15 (which all have HW
> divide, and currently define __ARM_ARCH_7_A__).
> 2) Do the wrong thing for v7-M and v7-R devices, which have Thumb HW
> division instructions.
> 3) Do the wrong thing for all pre-v7 devices, which don't have HW division.
>
> I think the correct solution is to test !defined(__ARM_ARCH_EXT_IDIV__)
I understand it now and updated the code as attached.
+2013-11-27 Kugan Vivekanandarajah <[email protected]>
+
+ * config/arm/bpapi-lib.h (TARGET_HAS_NO_HW_DIVIDE): Define for
+ architectures that does not have hardware divide instruction.
+ i.e. architectures that does not define __ARM_ARCH_EXT_IDIV__.
+
Is this OK for trunk now?
Thanks,
Kugan
diff --git a/libgcc/config/arm/bpabi-lib.h b/libgcc/config/arm/bpabi-lib.h
index e0e46a6..7c6b489 100644
--- a/libgcc/config/arm/bpabi-lib.h
+++ b/libgcc/config/arm/bpabi-lib.h
@@ -75,3 +75,7 @@
helper functions - not everything in libgcc - in the interests of
maintaining backward compatibility. */
#define LIBGCC2_FIXEDBIT_GNU_PREFIX
+
+#if (!defined(__ARM_ARCH_EXT_IDIV__))
+# define TARGET_HAS_NO_HW_DIVIDE
+#endif