xref: /rk3399_ARM-atf/plat/marvell/armada/a8k/common/ble/ble_mem.S (revision 3dbbbca29e3c42a6f9976878f27e1f1fd75b5c8e)
1/*
2 * Copyright (C) 2018 Marvell International Ltd.
3 *
4 * SPDX-License-Identifier:     BSD-3-Clause
5 * https://spdx.org/licenses
6 */
7
8#include <asm_macros.S>
9#include <marvell_def.h>
10#include <platform_def.h>
11
12#define PTE_NON_EXEC_OFF	54	/* XN - eXecute Never bit offset - see VMSAv8-64 */
13
14	.globl marvell_ble_prepare_exit
15
16func marvell_ble_prepare_exit
17	/*
18	 * Read the page table base and set the first page to be executable.
19	 * This is required for jumping to DRAM for further execution.
20	 */
21	mrs	x0, ttbr0_el3
22	ldr     x1, [x0]
23	mov	x2, #1
24	bic	x1, x1, x2, lsl #PTE_NON_EXEC_OFF
25	str	x1, [x0]
26	tlbi	alle3
27	dsb	sy
28	isb
29	ret
30endfunc marvell_ble_prepare_exit
31