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