aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2022-07-29 08:00:06 +0100
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2022-10-27 14:46:46 +0100
commitd549598009b8f9b795b8d6359f0b2b27418221e3 (patch)
tree875a582b4b23020f900185386f0ae3111d695dbb /sysdeps/unix/sysv/linux
parent81a40a16b0e0fdc73046c116ebe31163315aabe9 (diff)
downloadglibc-d549598009b8f9b795b8d6359f0b2b27418221e3.tar
glibc-d549598009b8f9b795b8d6359f0b2b27418221e3.tar.gz
glibc-d549598009b8f9b795b8d6359f0b2b27418221e3.tar.bz2
glibc-d549598009b8f9b795b8d6359f0b2b27418221e3.zip
aarch64: Fix the extension header write in getcontext and swapcontext
The extension header is two 32bit words and in the last header both should be 0. There is plenty space in the __reserved area, but it's better not to write more than we mean to.
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/getcontext.S4
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/swapcontext.S4
2 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/aarch64/getcontext.S b/sysdeps/unix/sysv/linux/aarch64/getcontext.S
index 15fbd2d1a0..3109cbd99a 100644
--- a/sysdeps/unix/sysv/linux/aarch64/getcontext.S
+++ b/sysdeps/unix/sysv/linux/aarch64/getcontext.S
@@ -86,8 +86,8 @@ ENTRY(__getcontext)
/* Write the termination context extension header. */
add x2, x2, #FPSIMD_CONTEXT_SIZE
- str xzr, [x2, #oHEAD + oMAGIC]
- str xzr, [x2, #oHEAD + oSIZE]
+ str wzr, [x2, #oHEAD + oMAGIC]
+ str wzr, [x2, #oHEAD + oSIZE]
/* Grab the signal mask */
/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
diff --git a/sysdeps/unix/sysv/linux/aarch64/swapcontext.S b/sysdeps/unix/sysv/linux/aarch64/swapcontext.S
index 1ee2e40272..e3ec9da35d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/aarch64/swapcontext.S
@@ -75,8 +75,8 @@ ENTRY(__swapcontext)
/* Write the termination context extension header. */
add x2, x2, #FPSIMD_CONTEXT_SIZE
- str xzr, [x2, #oHEAD + oMAGIC]
- str xzr, [x2, #oHEAD + oSIZE]
+ str wzr, [x2, #oHEAD + oMAGIC]
+ str wzr, [x2, #oHEAD + oSIZE]
/* Preserve ucp. */
mov x21, x1