xref: /rk3399_ARM-atf/services/std_svc/sdei/sdei_dispatch.S (revision cdb6ac94ecb3c4caa784cd4d7580cf6252146196)
1*cdb6ac94SJeenu Viswambharan/*
2*cdb6ac94SJeenu Viswambharan * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3*cdb6ac94SJeenu Viswambharan *
4*cdb6ac94SJeenu Viswambharan * SPDX-License-Identifier: BSD-3-Clause
5*cdb6ac94SJeenu Viswambharan */
6*cdb6ac94SJeenu Viswambharan
7*cdb6ac94SJeenu Viswambharan#include <asm_macros.S>
8*cdb6ac94SJeenu Viswambharan
9*cdb6ac94SJeenu Viswambharan	.globl	begin_sdei_synchronous_dispatch
10*cdb6ac94SJeenu Viswambharan
11*cdb6ac94SJeenu Viswambharan/*
12*cdb6ac94SJeenu Viswambharan * void begin_sdei_synchronous_dispatch(struct jmpbuf *buffer);
13*cdb6ac94SJeenu Viswambharan *
14*cdb6ac94SJeenu Viswambharan * Begin SDEI dispatch synchronously by setting up a jump point, and exiting
15*cdb6ac94SJeenu Viswambharan * EL3. This jump point is jumped to by the dispatcher after the event is
16*cdb6ac94SJeenu Viswambharan * completed by the client.
17*cdb6ac94SJeenu Viswambharan */
18*cdb6ac94SJeenu Viswambharanfunc begin_sdei_synchronous_dispatch
19*cdb6ac94SJeenu Viswambharan	stp	x30, xzr, [sp, #-16]!
20*cdb6ac94SJeenu Viswambharan	bl	setjmp
21*cdb6ac94SJeenu Viswambharan	cbz	x0, 1f
22*cdb6ac94SJeenu Viswambharan	ldp	x30, xzr, [sp], #16
23*cdb6ac94SJeenu Viswambharan	ret
24*cdb6ac94SJeenu Viswambharan1:
25*cdb6ac94SJeenu Viswambharan	b	el3_exit
26*cdb6ac94SJeenu Viswambharanendfunc begin_sdei_synchronous_dispatch
27