/* * Copyright (c) 2021, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include .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