blob: f7991fddbdd88407113b11b02b01273b5b72edec [file] [log] [blame]
Jeenu Viswambharan2de81532018-02-16 11:54:24 +00001/*
Antonio Nino Diaz4586d1c2019-02-08 13:10:45 +00002 * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
Jeenu Viswambharan2de81532018-02-16 11:54:24 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +00007#ifndef SETJMP_H
8#define SETJMP_H
Jeenu Viswambharan2de81532018-02-16 11:54:24 +00009
10#define JMP_CTX_X19 0x0
11#define JMP_CTX_X21 0x10
12#define JMP_CTX_X23 0x20
13#define JMP_CTX_X25 0x30
14#define JMP_CTX_X27 0x40
15#define JMP_CTX_X29 0x50
16#define JMP_CTX_SP 0x60
Antonio Nino Diaz4586d1c2019-02-08 13:10:45 +000017#define JMP_CTX_END 0x70 /* Aligned to 16 bytes */
Jeenu Viswambharan2de81532018-02-16 11:54:24 +000018
19#define JMP_SIZE (JMP_CTX_END >> 3)
20
21#ifndef __ASSEMBLY__
22
Antonio Nino Diaz4586d1c2019-02-08 13:10:45 +000023#include <cdefs.h>
Jeenu Viswambharan2de81532018-02-16 11:54:24 +000024#include <stdint.h>
25
26/* Jump buffer hosting x18 - x30 and sp_el0 registers */
Antonio Nino Diaz4586d1c2019-02-08 13:10:45 +000027typedef uint64_t jmp_buf[JMP_SIZE] __aligned(16);
Jeenu Viswambharan2de81532018-02-16 11:54:24 +000028
Antonio Nino Diaz4586d1c2019-02-08 13:10:45 +000029int setjmp(jmp_buf env);
30__dead2 void longjmp(jmp_buf env, int val);
Jeenu Viswambharan2de81532018-02-16 11:54:24 +000031
32#endif /* __ASSEMBLY__ */
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000033#endif /* SETJMP_H */