mirror of
git://sourceware.org/git/glibc.git
synced 2025-02-17 13:00:43 +08:00
aarch64: Add setcontext support for SME
For the ZA lazy saving scheme to work, setcontext has to call __libc_arm_za_disable. Also fixes swapcontext which uses setcontext internally. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
a7373e457f
commit
9d30e5cf96
@ -49,6 +49,25 @@ ENTRY (__setcontext)
|
||||
cbz x0, 1f
|
||||
b C_SYMBOL_NAME (__syscall_error)
|
||||
1:
|
||||
/* Disable ZA of SME. */
|
||||
#if HAVE_AARCH64_PAC_RET
|
||||
PACIASP
|
||||
cfi_window_save
|
||||
#endif
|
||||
stp x29, x30, [sp, -16]!
|
||||
cfi_adjust_cfa_offset (16)
|
||||
cfi_rel_offset (x29, 0)
|
||||
cfi_rel_offset (x30, 8)
|
||||
mov x29, sp
|
||||
bl __libc_arm_za_disable
|
||||
ldp x29, x30, [sp], 16
|
||||
cfi_adjust_cfa_offset (-16)
|
||||
cfi_restore (x29)
|
||||
cfi_restore (x30)
|
||||
#if HAVE_AARCH64_PAC_RET
|
||||
AUTIASP
|
||||
cfi_window_save
|
||||
#endif
|
||||
/* Restore the general purpose registers. */
|
||||
mov x0, x9
|
||||
cfi_def_cfa (x0, 0)
|
||||
|
Loading…
Reference in New Issue
Block a user