xref: /rk3399_ARM-atf/services/spd/trusty/trusty_helpers.S (revision f132b4a05b23916c1101add4bd6d973a99983719)
1948c090dSVarun Wadekar/*
2948c090dSVarun Wadekar * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3948c090dSVarun Wadekar *
4*82cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause
5948c090dSVarun Wadekar */
6948c090dSVarun Wadekar
7948c090dSVarun Wadekar#include <asm_macros.S>
8948c090dSVarun Wadekar
9948c090dSVarun Wadekar.macro push ra, rb, sp=sp
10948c090dSVarun Wadekar	stp \ra, \rb, [\sp,#-16]!
11948c090dSVarun Wadekar.endm
12948c090dSVarun Wadekar
13948c090dSVarun Wadekar.macro pop ra, rb, sp=sp
14948c090dSVarun Wadekar	ldp \ra, \rb, [\sp], #16
15948c090dSVarun Wadekar.endm
16948c090dSVarun Wadekar
17948c090dSVarun Wadekar	.global trusty_context_switch_helper
18948c090dSVarun Wadekarfunc trusty_context_switch_helper
19948c090dSVarun Wadekar	push	x8, xzr
20948c090dSVarun Wadekar	push	x19, x20
21948c090dSVarun Wadekar	push	x21, x22
22948c090dSVarun Wadekar	push	x23, x24
23948c090dSVarun Wadekar	push	x25, x26
24948c090dSVarun Wadekar	push	x27, x28
25948c090dSVarun Wadekar	push	x29, x30
26948c090dSVarun Wadekar
27948c090dSVarun Wadekar	mov	x9, sp
28948c090dSVarun Wadekar	ldr	x10, [x0]
29948c090dSVarun Wadekar	mov	sp, x10
30948c090dSVarun Wadekar	str	x9, [x0]
31948c090dSVarun Wadekar
32948c090dSVarun Wadekar	pop	x29, x30
33948c090dSVarun Wadekar	pop	x27, x28
34948c090dSVarun Wadekar	pop	x25, x26
35948c090dSVarun Wadekar	pop	x23, x24
36948c090dSVarun Wadekar	pop	x21, x22
37948c090dSVarun Wadekar	pop	x19, x20
38948c090dSVarun Wadekar	pop	x8, xzr
39dae374bfSAnthony Zhou
40dae374bfSAnthony Zhou        ldr     x2, [x1]
41dae374bfSAnthony Zhou        ldr     x3, [x1, #0x08]
42dae374bfSAnthony Zhou        ldr     x4, [x1, #0x10]
43dae374bfSAnthony Zhou        ldr     x5, [x1, #0x18]
44dae374bfSAnthony Zhou        ldr     x6, [x1, #0x20]
45dae374bfSAnthony Zhou        ldr     x7, [x1, #0x28]
46dae374bfSAnthony Zhou        ldr     x10, [x1, #0x30]
47dae374bfSAnthony Zhou        ldr     x11, [x1, #0x38]
48dae374bfSAnthony Zhou
49dae374bfSAnthony Zhou        stp     x2, x3, [x8]
50dae374bfSAnthony Zhou        stp     x4, x5, [x8, #16]
51dae374bfSAnthony Zhou        stp     x6, x7, [x8, #32]
52dae374bfSAnthony Zhou        stp     x10, x11, [x8, #48]
53948c090dSVarun Wadekar
54948c090dSVarun Wadekar	ret
55948c090dSVarun Wadekarendfunc trusty_context_switch_helper
56948c090dSVarun Wadekar
57948c090dSVarun Wadekar	.global trusty_init_context_stack
58948c090dSVarun Wadekarfunc trusty_init_context_stack
59948c090dSVarun Wadekar	push	x8, xzr, x1
60948c090dSVarun Wadekar	push	xzr, xzr, x1
61948c090dSVarun Wadekar	push	xzr, xzr, x1
62948c090dSVarun Wadekar	push	xzr, xzr, x1
63948c090dSVarun Wadekar	push	xzr, xzr, x1
64948c090dSVarun Wadekar	push	xzr, xzr, x1
65948c090dSVarun Wadekar	adr	x9, el3_exit
66948c090dSVarun Wadekar	push	xzr, x9, x1
67948c090dSVarun Wadekar	str	x1, [x0]
68948c090dSVarun Wadekar	ret
69948c090dSVarun Wadekarendfunc trusty_init_context_stack
70