summaryrefslogtreecommitdiff
path: root/services/std_svc/sdei/sdei_dispatch.S
blob: a7a4a40f73922588b19dce7ee735c7159d127c86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
 * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <asm_macros.S>

	.globl	begin_sdei_synchronous_dispatch

/*
 * void begin_sdei_synchronous_dispatch(struct jmpbuf *buffer);
 *
 * Begin SDEI dispatch synchronously by setting up a jump point, and exiting
 * EL3. This jump point is jumped to by the dispatcher after the event is
 * completed by the client.
 */
func begin_sdei_synchronous_dispatch
	stp	x30, xzr, [sp, #-16]!
	bl	setjmp
	cbz	x0, 1f
	ldp	x30, xzr, [sp], #16
	ret
1:
	b	el3_exit
endfunc begin_sdei_synchronous_dispatch