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