xref: /optee_os/lib/libutee/arch/arm/utee_syscalls_a64.S (revision 9d7dd4194b5a3e47509ce1cd19824095e620ef51)
11bb92983SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */
2f74a4a2bSJens Wiklander/*
3f74a4a2bSJens Wiklander * Copyright (c) 2015, Linaro Limited
4f74a4a2bSJens Wiklander */
5f74a4a2bSJens Wiklander
6f74a4a2bSJens Wiklander#include <tee_syscall_numbers.h>
7a0fdab65SJens Wiklander#include <asm.S>
8f74a4a2bSJens Wiklander
9f74a4a2bSJens Wiklander        .section .text
10f74a4a2bSJens Wiklander
11f74a4a2bSJens Wiklander        .macro UTEE_SYSCALL name, scn, num_args
12a0fdab65SJens Wiklander	FUNC \name , :
13f74a4a2bSJens Wiklander
14f74a4a2bSJens Wiklander	.if \num_args > TEE_SVC_MAX_ARGS || \num_args > 8
15f74a4a2bSJens Wiklander	.error "Too many arguments for syscall"
16f74a4a2bSJens Wiklander	.endif
170f8adafeSJerome Forissier#if defined(CFG_SYSCALL_WRAPPERS_MCOUNT) && !defined(__LDELF__)
18f93627d9SSumit Garg	.if \scn != TEE_SCN_RETURN
19f93627d9SSumit Garg	stp	x29, x30, [sp, #-80]!
20f93627d9SSumit Garg	mov	x29, sp
21f93627d9SSumit Garg	stp	x0, x1, [sp, #16]
22f93627d9SSumit Garg	stp	x2, x3, [sp, #32]
23f93627d9SSumit Garg	stp	x4, x5, [sp, #48]
24f93627d9SSumit Garg	stp	x6, x7, [sp, #64]
25f93627d9SSumit Garg	mov	x0, x30
26f93627d9SSumit Garg	bl	_mcount
27f93627d9SSumit Garg	ldp	x0, x1, [sp, #16]
28f93627d9SSumit Garg	ldp	x2, x3, [sp, #32]
29f93627d9SSumit Garg	ldp	x4, x5, [sp, #48]
30f93627d9SSumit Garg	ldp	x6, x7, [sp, #64]
31f93627d9SSumit Garg	ldp	x29, x30, [sp], #80
32f93627d9SSumit Garg	.endif
33f93627d9SSumit Garg#endif
34f74a4a2bSJens Wiklander        mov     x8, #(\scn)
35f74a4a2bSJens Wiklander        svc #0
36f74a4a2bSJens Wiklander        ret
37a0fdab65SJens Wiklander        END_FUNC \name
38f74a4a2bSJens Wiklander        .endm
39f74a4a2bSJens Wiklander
402c028fdeSJerome Forissier	FUNC _utee_panic, :
410e1c6e8eSJerome Forissier	stp	x29, x30, [sp, #-16]!
420e1c6e8eSJerome Forissier	mov	x1, sp
430e1c6e8eSJerome Forissier	bl	__utee_panic
440e1c6e8eSJerome Forissier	/* Not reached */
452c028fdeSJerome Forissier	END_FUNC _utee_panic
460e1c6e8eSJerome Forissier
47*9d7dd419Sliushiwei#include <utee_syscalls_asm.S>
48f74a4a2bSJens Wiklander
49181f8492SRuchika GuptaBTI(emit_aarch64_feature_1_and     GNU_PROPERTY_AARCH64_FEATURE_1_BTI)
50