summaryrefslogtreecommitdiff
path: root/arch/arm/lib/bootm-optee.S
blob: 9d1a77b563d89aa11436713f9125b04a4c72646c (plain)
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
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 *  Copyright (C) 2025 Marek Vasut
 */
#include <config.h>
#include <linux/linkage.h>

ENTRY(boot_jump_linux_via_optee)
	mov	r4, r3
	mov	lr, r0
	mov	r3, #0
	mov	r0, #0

	/*
	 * Special TZC handling on this platform, the last
	 * 'str' has to be immediately before 'bx' and can
	 * not be interleaved with any return from function
	 * call, if it is then the system hangs.
	 */
#if defined(CONFIG_STM32MP13X) && !defined(CONFIG_TFABOOT)
	ldr	r6, =STM32_TZC_BASE + 0x114 + (0x20 * 2)
	mov	r7, #0x0
	str	r7, [r6]
	ldr	r6, =STM32_TZC_BASE + 0x110 + (0x20 * 1)
	mov	r7, #0x1
	str	r7, [r6]
#endif

	bx	r4
ENDPROC(boot_jump_linux_via_optee)