You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.3 KiB
70 lines
1.3 KiB
/*
|
|
* Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <asm_macros.S>
|
|
|
|
.macro push ra, rb, sp=sp
|
|
stp \ra, \rb, [\sp,#-16]!
|
|
.endm
|
|
|
|
.macro pop ra, rb, sp=sp
|
|
ldp \ra, \rb, [\sp], #16
|
|
.endm
|
|
|
|
.global trusty_context_switch_helper
|
|
func trusty_context_switch_helper
|
|
push x8, xzr
|
|
push x19, x20
|
|
push x21, x22
|
|
push x23, x24
|
|
push x25, x26
|
|
push x27, x28
|
|
push x29, x30
|
|
|
|
mov x9, sp
|
|
ldr x10, [x0]
|
|
mov sp, x10
|
|
str x9, [x0]
|
|
|
|
pop x29, x30
|
|
pop x27, x28
|
|
pop x25, x26
|
|
pop x23, x24
|
|
pop x21, x22
|
|
pop x19, x20
|
|
pop x8, xzr
|
|
|
|
ldr x2, [x1]
|
|
ldr x3, [x1, #0x08]
|
|
ldr x4, [x1, #0x10]
|
|
ldr x5, [x1, #0x18]
|
|
ldr x6, [x1, #0x20]
|
|
ldr x7, [x1, #0x28]
|
|
ldr x10, [x1, #0x30]
|
|
ldr x11, [x1, #0x38]
|
|
|
|
stp x2, x3, [x8]
|
|
stp x4, x5, [x8, #16]
|
|
stp x6, x7, [x8, #32]
|
|
stp x10, x11, [x8, #48]
|
|
|
|
ret
|
|
endfunc trusty_context_switch_helper
|
|
|
|
.global trusty_init_context_stack
|
|
func trusty_init_context_stack
|
|
push x8, xzr, x1
|
|
push xzr, xzr, x1
|
|
push xzr, xzr, x1
|
|
push xzr, xzr, x1
|
|
push xzr, xzr, x1
|
|
push xzr, xzr, x1
|
|
adr x9, el3_exit
|
|
push xzr, x9, x1
|
|
str x1, [x0]
|
|
ret
|
|
endfunc trusty_init_context_stack
|