/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (C) 2020 Google, Inc. */ #include .macro push ra, rb stp \ra, \rb, [sp,#-16]! .endm .macro pop ra, rb ldp \ra, \rb, [sp], #16 .endm lr .req x30 SYM_FUNC_START(trusty_smc8) /* * Save x8 (return value ptr) and lr. The SMC calling convention says el3 * does not need to preserve x8. The normal ABI does not require either x8 * or lr to be preserved. */ push x8, lr smc #0 pop x8, lr /* Copy 8-register smc return value to struct smc_ret8 return value */ stp x0, x1, [x8], #16 stp x2, x3, [x8], #16 stp x4, x5, [x8], #16 stp x6, x7, [x8], #16 ret SYM_FUNC_END(trusty_smc8)