xref: /rk3399_ARM-atf/services/spd/trusty/trusty_helpers.S (revision dae374bfae8c5bdf01b9739085b08b30d6ce9aea)
1948c090dSVarun Wadekar/*
2948c090dSVarun Wadekar * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3948c090dSVarun Wadekar *
4948c090dSVarun Wadekar * Redistribution and use in source and binary forms, with or without
5948c090dSVarun Wadekar * modification, are permitted provided that the following conditions are met:
6948c090dSVarun Wadekar *
7948c090dSVarun Wadekar * Redistributions of source code must retain the above copyright notice, this
8948c090dSVarun Wadekar * list of conditions and the following disclaimer.
9948c090dSVarun Wadekar *
10948c090dSVarun Wadekar * Redistributions in binary form must reproduce the above copyright notice,
11948c090dSVarun Wadekar * this list of conditions and the following disclaimer in the documentation
12948c090dSVarun Wadekar * and/or other materials provided with the distribution.
13948c090dSVarun Wadekar *
14948c090dSVarun Wadekar * Neither the name of ARM nor the names of its contributors may be used
15948c090dSVarun Wadekar * to endorse or promote products derived from this software without specific
16948c090dSVarun Wadekar * prior written permission.
17948c090dSVarun Wadekar *
18948c090dSVarun Wadekar * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19948c090dSVarun Wadekar * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20948c090dSVarun Wadekar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21948c090dSVarun Wadekar * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
22948c090dSVarun Wadekar * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23948c090dSVarun Wadekar * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24948c090dSVarun Wadekar * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25948c090dSVarun Wadekar * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26948c090dSVarun Wadekar * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27948c090dSVarun Wadekar * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28948c090dSVarun Wadekar * POSSIBILITY OF SUCH DAMAGE.
29948c090dSVarun Wadekar */
30948c090dSVarun Wadekar
31948c090dSVarun Wadekar#include <asm_macros.S>
32948c090dSVarun Wadekar
33948c090dSVarun Wadekar.macro push ra, rb, sp=sp
34948c090dSVarun Wadekar	stp \ra, \rb, [\sp,#-16]!
35948c090dSVarun Wadekar.endm
36948c090dSVarun Wadekar
37948c090dSVarun Wadekar.macro pop ra, rb, sp=sp
38948c090dSVarun Wadekar	ldp \ra, \rb, [\sp], #16
39948c090dSVarun Wadekar.endm
40948c090dSVarun Wadekar
41948c090dSVarun Wadekar	.global trusty_context_switch_helper
42948c090dSVarun Wadekarfunc trusty_context_switch_helper
43948c090dSVarun Wadekar	push	x8, xzr
44948c090dSVarun Wadekar	push	x19, x20
45948c090dSVarun Wadekar	push	x21, x22
46948c090dSVarun Wadekar	push	x23, x24
47948c090dSVarun Wadekar	push	x25, x26
48948c090dSVarun Wadekar	push	x27, x28
49948c090dSVarun Wadekar	push	x29, x30
50948c090dSVarun Wadekar
51948c090dSVarun Wadekar	mov	x9, sp
52948c090dSVarun Wadekar	ldr	x10, [x0]
53948c090dSVarun Wadekar	mov	sp, x10
54948c090dSVarun Wadekar	str	x9, [x0]
55948c090dSVarun Wadekar
56948c090dSVarun Wadekar	pop	x29, x30
57948c090dSVarun Wadekar	pop	x27, x28
58948c090dSVarun Wadekar	pop	x25, x26
59948c090dSVarun Wadekar	pop	x23, x24
60948c090dSVarun Wadekar	pop	x21, x22
61948c090dSVarun Wadekar	pop	x19, x20
62948c090dSVarun Wadekar	pop	x8, xzr
63*dae374bfSAnthony Zhou
64*dae374bfSAnthony Zhou        ldr     x2, [x1]
65*dae374bfSAnthony Zhou        ldr     x3, [x1, #0x08]
66*dae374bfSAnthony Zhou        ldr     x4, [x1, #0x10]
67*dae374bfSAnthony Zhou        ldr     x5, [x1, #0x18]
68*dae374bfSAnthony Zhou        ldr     x6, [x1, #0x20]
69*dae374bfSAnthony Zhou        ldr     x7, [x1, #0x28]
70*dae374bfSAnthony Zhou        ldr     x10, [x1, #0x30]
71*dae374bfSAnthony Zhou        ldr     x11, [x1, #0x38]
72*dae374bfSAnthony Zhou
73*dae374bfSAnthony Zhou        stp     x2, x3, [x8]
74*dae374bfSAnthony Zhou        stp     x4, x5, [x8, #16]
75*dae374bfSAnthony Zhou        stp     x6, x7, [x8, #32]
76*dae374bfSAnthony Zhou        stp     x10, x11, [x8, #48]
77948c090dSVarun Wadekar
78948c090dSVarun Wadekar	ret
79948c090dSVarun Wadekarendfunc trusty_context_switch_helper
80948c090dSVarun Wadekar
81948c090dSVarun Wadekar	.global trusty_init_context_stack
82948c090dSVarun Wadekarfunc trusty_init_context_stack
83948c090dSVarun Wadekar	push	x8, xzr, x1
84948c090dSVarun Wadekar	push	xzr, xzr, x1
85948c090dSVarun Wadekar	push	xzr, xzr, x1
86948c090dSVarun Wadekar	push	xzr, xzr, x1
87948c090dSVarun Wadekar	push	xzr, xzr, x1
88948c090dSVarun Wadekar	push	xzr, xzr, x1
89948c090dSVarun Wadekar	adr	x9, el3_exit
90948c090dSVarun Wadekar	push	xzr, x9, x1
91948c090dSVarun Wadekar	str	x1, [x0]
92948c090dSVarun Wadekar	ret
93948c090dSVarun Wadekarendfunc trusty_init_context_stack
94