fix sigsetjmp on arm (needs asm)
authorRich Felker <dalias@aerifal.cx>
Tue, 3 Jul 2012 02:49:25 +0000 (22:49 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 3 Jul 2012 02:49:25 +0000 (22:49 -0400)
no idea why gcc refuses to compile the C code to use a tail call, but
it's best to use asm anyway so we don't have to rely on the quality of
the compiler's optimizations for correct code.

src/signal/arm/sigsetjmp.s [new file with mode: 0644]

diff --git a/src/signal/arm/sigsetjmp.s b/src/signal/arm/sigsetjmp.s
new file mode 100644 (file)
index 0000000..acb0301
--- /dev/null
@@ -0,0 +1,13 @@
+.global sigsetjmp
+.type sigsetjmp,%function
+sigsetjmp:
+       str a2,[a1,#256]
+       tst a2,a2
+       beq setjmp
+       push {a1,lr}
+       add a3,a1,#260
+       mov a2,#0
+       mov a1,#2
+       bl sigprocmask
+       pop {a1,lr}
+       b setjmp