/* * Copyright (C) 2018 Marvell International Ltd. * * SPDX-License-Identifier: BSD-3-Clause * https://spdx.org/licenses */ #include #include #include #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