summaryrefslogtreecommitdiff
path: root/src/signal/sh/sigsetjmp.s
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-04-27 20:03:28 -0400
committerRich Felker <dalias@aerifal.cx>2015-04-27 20:03:28 -0400
commit85d12e02858545f8942a9c5c9f0eddc2da75edce (patch)
treee3aba314f8bb4b752553d843c3829463ce40efee /src/signal/sh/sigsetjmp.s
parent82acacceaa1bdcb9fb5ec8cece8a73bbf7a561b9 (diff)
downloadmusl-85d12e02858545f8942a9c5c9f0eddc2da75edce.tar.gz
fix sh jmp_buf size to match ABI
while the sh port is still experimental and subject to ABI instability, this is not actually an application/libc boundary ABI change. it only affects third-party APIs where jmp_buf is used in a shared structure at the ABI boundary, because nothing anywhere near the end of the jmp_buf object (which includes the oversized sigset_t) is accessed by libc. both glibc and uclibc have 15-slot jmp_buf for sh. presumably the smaller version was used in musl because the slots for fpu status register and thread pointer register (gbr) were incorrect and must not be restored by longjmp, but the size should have been preserved, as it's generally treated as a libc-agnostic ABI property for the arch, and having extra slots free in case we ever need them for something is useful anyway.
Diffstat (limited to 'src/signal/sh/sigsetjmp.s')
-rw-r--r--src/signal/sh/sigsetjmp.s4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/signal/sh/sigsetjmp.s b/src/signal/sh/sigsetjmp.s
index 16256e5f..1e2270be 100644
--- a/src/signal/sh/sigsetjmp.s
+++ b/src/signal/sh/sigsetjmp.s
@@ -8,7 +8,7 @@ __sigsetjmp:
bt 9f
mov r4, r6
- add #52, r6
+ add #60, r6
sts pr, r0
mov.l r0, @r6
mov.l r8, @(4+8,r6)
@@ -20,7 +20,7 @@ __sigsetjmp:
mov r0, r5
mov r8, r4
mov r4, r6
- add #52, r6
+ add #60, r6
mov.l @r6, r0
lds r0, pr