aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-09-02 16:58:51 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-10-01 10:37:21 -0300
commit5e8cfc5d625e6dd000a0371d21d792836ea7951a (patch)
treee2a29bdaa9808becf58c6bcc1971ff657cf74c38 /sysdeps
parent49c3682ce18fc283433b759ea606bdc26df6b829 (diff)
downloadglibc-5e8cfc5d625e6dd000a0371d21d792836ea7951a.zip
glibc-5e8cfc5d625e6dd000a0371d21d792836ea7951a.tar.gz
glibc-5e8cfc5d625e6dd000a0371d21d792836ea7951a.tar.bz2
linux: sparc: Fix clone for LEON/sparcv8 (BZ 31394)
The sparc clone mitigation (faeaa3bc9f76030) added the use of flushw, which is not support by LEON/sparcv8. As discussed on the libc-alpha, 'ta 3' is a working alternative [1]. [1] https://sourceware.org/pipermail/libc-alpha/2024-August/158905.html Checked with a build for sparcv8-linux-gnu targetting leon. Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/clone.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
index c9cf9bb..c84244f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
@@ -29,7 +29,11 @@
ENTRY (__clone)
save %sp,-96,%sp
save %sp,-96,%sp
+#ifdef __sparcv9
flushw
+#else
+ ta 3
+#endif
restore
cfi_def_cfa_register(%fp)
cfi_window_save