60 lines
1.4 KiB
ArmAsm
60 lines
1.4 KiB
ArmAsm
/*
|
|
* Copyright (c) 2021, Arm Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <arch.h>
|
|
#include <asm_macros.S>
|
|
#include <lib/el3_runtime/cpu_data.h>
|
|
|
|
.global pauth_init_enable_el2
|
|
.global pauth_disable_el2
|
|
|
|
/* -------------------------------------------------------------
|
|
* File contains EL2 versions of EL3 funcs in:
|
|
* .../lib/extensions/pauth/pauth_helpers.S
|
|
* -------------------------------------------------------------
|
|
*/
|
|
|
|
/* -------------------------------------------------------------
|
|
* Program APIAKey_EL1 and enable pointer authentication in EL2
|
|
* -------------------------------------------------------------
|
|
*/
|
|
func pauth_init_enable_el2
|
|
stp x29, x30, [sp, #-16]!
|
|
|
|
/* Initialize platform key */
|
|
bl plat_init_apkey
|
|
|
|
/* Program instruction key A used by the Trusted Firmware */
|
|
msr APIAKeyLo_EL1, x0
|
|
msr APIAKeyHi_EL1, x1
|
|
|
|
/* Enable pointer authentication */
|
|
mrs x0, sctlr_el2
|
|
orr x0, x0, #SCTLR_EnIA_BIT
|
|
|
|
#if ENABLE_BTI
|
|
/* Enable PAC branch type compatibility */
|
|
bic x0, x0, #SCTLR_BT_BIT
|
|
#endif
|
|
msr sctlr_el2, x0
|
|
isb
|
|
|
|
ldp x29, x30, [sp], #16
|
|
ret
|
|
endfunc pauth_init_enable_el2
|
|
|
|
/* -------------------------------------------------------------
|
|
* Disable pointer authentication in EL2
|
|
* -------------------------------------------------------------
|
|
*/
|
|
func pauth_disable_el2
|
|
mrs x0, sctlr_el2
|
|
bic x0, x0, #SCTLR_EnIA_BIT
|
|
msr sctlr_el2, x0
|
|
isb
|
|
ret
|
|
endfunc pauth_disable_el2
|