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
|
cbz x0, 1f
|
||||||
b C_SYMBOL_NAME (__syscall_error)
|
b C_SYMBOL_NAME (__syscall_error)
|
||||||
1:
|
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. */
|
/* Restore the general purpose registers. */
|
||||||
mov x0, x9
|
mov x0, x9
|
||||||
cfi_def_cfa (x0, 0)
|
cfi_def_cfa (x0, 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user