ble_mem.S 663 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * 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