1*91f16700Schasinglulu/* 2*91f16700Schasinglulu * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu#include <asm_macros.S> 8*91f16700Schasinglulu 9*91f16700Schasinglulu.macro push ra, rb, sp=sp 10*91f16700Schasinglulu stp \ra, \rb, [\sp,#-16]! 11*91f16700Schasinglulu.endm 12*91f16700Schasinglulu 13*91f16700Schasinglulu.macro pop ra, rb, sp=sp 14*91f16700Schasinglulu ldp \ra, \rb, [\sp], #16 15*91f16700Schasinglulu.endm 16*91f16700Schasinglulu 17*91f16700Schasinglulu .global trusty_context_switch_helper 18*91f16700Schasinglulufunc trusty_context_switch_helper 19*91f16700Schasinglulu push x8, xzr 20*91f16700Schasinglulu push x19, x20 21*91f16700Schasinglulu push x21, x22 22*91f16700Schasinglulu push x23, x24 23*91f16700Schasinglulu push x25, x26 24*91f16700Schasinglulu push x27, x28 25*91f16700Schasinglulu push x29, x30 26*91f16700Schasinglulu 27*91f16700Schasinglulu mov x9, sp 28*91f16700Schasinglulu ldr x10, [x0] 29*91f16700Schasinglulu mov sp, x10 30*91f16700Schasinglulu str x9, [x0] 31*91f16700Schasinglulu 32*91f16700Schasinglulu pop x29, x30 33*91f16700Schasinglulu pop x27, x28 34*91f16700Schasinglulu pop x25, x26 35*91f16700Schasinglulu pop x23, x24 36*91f16700Schasinglulu pop x21, x22 37*91f16700Schasinglulu pop x19, x20 38*91f16700Schasinglulu pop x8, xzr 39*91f16700Schasinglulu 40*91f16700Schasinglulu ldr x2, [x1] 41*91f16700Schasinglulu ldr x3, [x1, #0x08] 42*91f16700Schasinglulu ldr x4, [x1, #0x10] 43*91f16700Schasinglulu ldr x5, [x1, #0x18] 44*91f16700Schasinglulu ldr x6, [x1, #0x20] 45*91f16700Schasinglulu ldr x7, [x1, #0x28] 46*91f16700Schasinglulu ldr x10, [x1, #0x30] 47*91f16700Schasinglulu ldr x11, [x1, #0x38] 48*91f16700Schasinglulu 49*91f16700Schasinglulu stp x2, x3, [x8] 50*91f16700Schasinglulu stp x4, x5, [x8, #16] 51*91f16700Schasinglulu stp x6, x7, [x8, #32] 52*91f16700Schasinglulu stp x10, x11, [x8, #48] 53*91f16700Schasinglulu 54*91f16700Schasinglulu ret 55*91f16700Schasingluluendfunc trusty_context_switch_helper 56*91f16700Schasinglulu 57*91f16700Schasinglulu .global trusty_init_context_stack 58*91f16700Schasinglulufunc trusty_init_context_stack 59*91f16700Schasinglulu push x8, xzr, x1 60*91f16700Schasinglulu push xzr, xzr, x1 61*91f16700Schasinglulu push xzr, xzr, x1 62*91f16700Schasinglulu push xzr, xzr, x1 63*91f16700Schasinglulu push xzr, xzr, x1 64*91f16700Schasinglulu push xzr, xzr, x1 65*91f16700Schasinglulu adr x9, el3_exit 66*91f16700Schasinglulu push xzr, x9, x1 67*91f16700Schasinglulu str x1, [x0] 68*91f16700Schasinglulu ret 69*91f16700Schasingluluendfunc trusty_init_context_stack 70