ancient ARM cpus
Martin Husemann
martin at duskware.de
Sat Dec 12 08:40:01 UTC 2015
On Sun, Dec 06, 2015 at 01:03:43AM +0100, Torbjörn Granlund wrote:
> Martin Husemann <martin at duskware.de> writes:
>
> Maybe instead of the ifdef define a M4 macro like "ret(reg)" ?
>
> I implemented that idea. Please try this patch:
>
> https://gmplib.org/repo/gmp/raw-rev/8b7b76d0c0dc
Great, thanks for doing that (and sorry it took a while to test).
I used the gmp-6.1.99-20151210 snapshot.
I had to patch a minor oversight (see below), but then it works fine
on three different arm systems I tested (results also below).
The systems were:
/netbsd: ELF 32-bit MSB executable, ARM, EABI5 BE8 version 1 (SYSV), statically linked, for NetBSD 7.99.23, not stripped
hw.model = Cortex-A7 r0p4 (Cortex V7A core)
hw.machine_arch = earmv7hfeb
/netbsd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for NetBSD 7.99.23, not stripped
hw.model = Sheeva 88SV131 rev 1 (ARM9E-S V5TE core)
hw.machine_arch = earm
and finally the real test:
/netbsd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for NetBSD 7.99.23, not stripped
hw.model = SA-110 step S (SA-1 V4 core)
hw.machine_arch = earmv4
(this is a digital DNARD "shark")
Test results:
[~] martin at night-rest > egrep '^# .*(FAIL|ERROR|PASS)' /tmp/check.log
# PASS: 8
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
# PASS: 46
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
# PASS: 63
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
# PASS: 15
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
# PASS: 28
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
# PASS: 7
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
# PASS: 3
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
# PASS: 22
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
Thanks!
Martin
-------------- next part --------------
--- tests/arm32call.asm.orig 2015-12-10 06:20:01.000000000 +0100
+++ tests/arm32call.asm 2015-12-11 20:31:33.000000000 +0100
@@ -59,7 +59,7 @@ PROLOGUE(calling_conventions)
LEA( r12, calling_conventions_function)
ldr r12, [r12]
mov r14, pc
- bx r12
+ ret r12
LEA( r12, calling_conventions_values)
@@ -79,5 +79,5 @@ PROLOGUE(calling_conventions)
add r12, r12, #JUNK_PARAMS
ldm r12, {r1-r3}
- bx r14
+ ret r14
EPILOGUE()
More information about the gmp-bugs
mailing list