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