31 lines
663 B
ArmAsm
31 lines
663 B
ArmAsm
/*
|
|
* Copyright (C) 2018 Marvell International Ltd.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
* https://spdx.org/licenses
|
|
*/
|
|
|
|
#include <asm_macros.S>
|
|
#include <marvell_def.h>
|
|
#include <platform_def.h>
|
|
|
|
#define PTE_NON_EXEC_OFF 54 /* XN - eXecute Never bit offset - see VMSAv8-64 */
|
|
|
|
.globl marvell_ble_prepare_exit
|
|
|
|
func marvell_ble_prepare_exit
|
|
/*
|
|
* Read the page table base and set the first page to be executable.
|
|
* This is required for jumping to DRAM for further execution.
|
|
*/
|
|
mrs x0, ttbr0_el3
|
|
ldr x1, [x0]
|
|
mov x2, #1
|
|
bic x1, x1, x2, lsl #PTE_NON_EXEC_OFF
|
|
str x1, [x0]
|
|
tlbi alle3
|
|
dsb sy
|
|
isb
|
|
ret
|
|
endfunc marvell_ble_prepare_exit
|