1*948c090dSVarun Wadekar/* 2*948c090dSVarun Wadekar * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3*948c090dSVarun Wadekar * 4*948c090dSVarun Wadekar * Redistribution and use in source and binary forms, with or without 5*948c090dSVarun Wadekar * modification, are permitted provided that the following conditions are met: 6*948c090dSVarun Wadekar * 7*948c090dSVarun Wadekar * Redistributions of source code must retain the above copyright notice, this 8*948c090dSVarun Wadekar * list of conditions and the following disclaimer. 9*948c090dSVarun Wadekar * 10*948c090dSVarun Wadekar * Redistributions in binary form must reproduce the above copyright notice, 11*948c090dSVarun Wadekar * this list of conditions and the following disclaimer in the documentation 12*948c090dSVarun Wadekar * and/or other materials provided with the distribution. 13*948c090dSVarun Wadekar * 14*948c090dSVarun Wadekar * Neither the name of ARM nor the names of its contributors may be used 15*948c090dSVarun Wadekar * to endorse or promote products derived from this software without specific 16*948c090dSVarun Wadekar * prior written permission. 17*948c090dSVarun Wadekar * 18*948c090dSVarun Wadekar * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19*948c090dSVarun Wadekar * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20*948c090dSVarun Wadekar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21*948c090dSVarun Wadekar * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 22*948c090dSVarun Wadekar * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23*948c090dSVarun Wadekar * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24*948c090dSVarun Wadekar * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25*948c090dSVarun Wadekar * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26*948c090dSVarun Wadekar * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27*948c090dSVarun Wadekar * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28*948c090dSVarun Wadekar * POSSIBILITY OF SUCH DAMAGE. 29*948c090dSVarun Wadekar */ 30*948c090dSVarun Wadekar 31*948c090dSVarun Wadekar#include <asm_macros.S> 32*948c090dSVarun Wadekar 33*948c090dSVarun Wadekar.macro push ra, rb, sp=sp 34*948c090dSVarun Wadekar stp \ra, \rb, [\sp,#-16]! 35*948c090dSVarun Wadekar.endm 36*948c090dSVarun Wadekar 37*948c090dSVarun Wadekar.macro pop ra, rb, sp=sp 38*948c090dSVarun Wadekar ldp \ra, \rb, [\sp], #16 39*948c090dSVarun Wadekar.endm 40*948c090dSVarun Wadekar 41*948c090dSVarun Wadekar .global trusty_context_switch_helper 42*948c090dSVarun Wadekarfunc trusty_context_switch_helper 43*948c090dSVarun Wadekar push x8, xzr 44*948c090dSVarun Wadekar push x19, x20 45*948c090dSVarun Wadekar push x21, x22 46*948c090dSVarun Wadekar push x23, x24 47*948c090dSVarun Wadekar push x25, x26 48*948c090dSVarun Wadekar push x27, x28 49*948c090dSVarun Wadekar push x29, x30 50*948c090dSVarun Wadekar 51*948c090dSVarun Wadekar mov x9, sp 52*948c090dSVarun Wadekar ldr x10, [x0] 53*948c090dSVarun Wadekar mov sp, x10 54*948c090dSVarun Wadekar str x9, [x0] 55*948c090dSVarun Wadekar 56*948c090dSVarun Wadekar pop x29, x30 57*948c090dSVarun Wadekar pop x27, x28 58*948c090dSVarun Wadekar pop x25, x26 59*948c090dSVarun Wadekar pop x23, x24 60*948c090dSVarun Wadekar pop x21, x22 61*948c090dSVarun Wadekar pop x19, x20 62*948c090dSVarun Wadekar pop x8, xzr 63*948c090dSVarun Wadekar stp x1, x2, [x8] 64*948c090dSVarun Wadekar stp x3, x4, [x8, #16] 65*948c090dSVarun Wadekar 66*948c090dSVarun Wadekar ret 67*948c090dSVarun Wadekarendfunc trusty_context_switch_helper 68*948c090dSVarun Wadekar 69*948c090dSVarun Wadekar .global trusty_init_context_stack 70*948c090dSVarun Wadekarfunc trusty_init_context_stack 71*948c090dSVarun Wadekar push x8, xzr, x1 72*948c090dSVarun Wadekar push xzr, xzr, x1 73*948c090dSVarun Wadekar push xzr, xzr, x1 74*948c090dSVarun Wadekar push xzr, xzr, x1 75*948c090dSVarun Wadekar push xzr, xzr, x1 76*948c090dSVarun Wadekar push xzr, xzr, x1 77*948c090dSVarun Wadekar adr x9, el3_exit 78*948c090dSVarun Wadekar push xzr, x9, x1 79*948c090dSVarun Wadekar str x1, [x0] 80*948c090dSVarun Wadekar ret 81*948c090dSVarun Wadekarendfunc trusty_init_context_stack 82