blob: 921de90ee5c017ee1e29e1c1323b4928a34cbee9 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2015, Linaro Limited
*/
#include <tee_syscall_numbers.h>
#include <asm.S>
.section .text
.macro UTEE_SYSCALL name, scn, num_args
FUNC \name , :
.if \num_args > TEE_SVC_MAX_ARGS || \num_args > 8
.error "Too many arguments for syscall"
.endif
#if defined(CFG_SYSCALL_WRAPPERS_MCOUNT) && !defined(__LDELF__)
.if \scn != TEE_SCN_RETURN
stp x29, x30, [sp, #-80]!
mov x29, sp
stp x0, x1, [sp, #16]
stp x2, x3, [sp, #32]
stp x4, x5, [sp, #48]
stp x6, x7, [sp, #64]
mov x0, x30
bl _mcount
ldp x0, x1, [sp, #16]
ldp x2, x3, [sp, #32]
ldp x4, x5, [sp, #48]
ldp x6, x7, [sp, #64]
ldp x29, x30, [sp], #80
.endif
#endif
mov x8, #(\scn)
svc #0
ret
END_FUNC \name
.endm
FUNC utee_panic, :
stp x29, x30, [sp, #-16]!
mov x1, sp
bl __utee_panic
/* Not reached */
END_FUNC utee_panic
#include "utee_syscalls_asm.S"