xref: /optee_os/lib/libutils/isoc/include/setjmp.h (revision 9d6ac0978c21afae871e675ed95c825cd7c8ec91)
11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-3-Clause */
20c81fcd6SJens Wiklander /*
30c81fcd6SJens Wiklander  * Copyright (c) 1994-2009  Red Hat, Inc.
40c81fcd6SJens Wiklander  * Copyright (c) 2016, Linaro Limited
50c81fcd6SJens Wiklander  * All rights reserved.
60c81fcd6SJens Wiklander  *
70c81fcd6SJens Wiklander  * Redistribution and use in source and binary forms, with or without
80c81fcd6SJens Wiklander  * modification, are permitted provided that the following conditions are met:
90c81fcd6SJens Wiklander  *
100c81fcd6SJens Wiklander  * 1. Redistributions of source code must retain the above copyright notice,
110c81fcd6SJens Wiklander  * this list of conditions and the following disclaimer.
120c81fcd6SJens Wiklander  *
130c81fcd6SJens Wiklander  * 2. Redistributions in binary form must reproduce the above copyright notice,
140c81fcd6SJens Wiklander  * this list of conditions and the following disclaimer in the documentation
150c81fcd6SJens Wiklander  * and/or other materials provided with the distribution.
160c81fcd6SJens Wiklander  *
170c81fcd6SJens Wiklander  * 3. Neither the name of the copyright holder nor the names of its
180c81fcd6SJens Wiklander  * contributors may be used to endorse or promote products derived from this
190c81fcd6SJens Wiklander  * software without specific prior written permission.
200c81fcd6SJens Wiklander  *
210c81fcd6SJens Wiklander  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
220c81fcd6SJens Wiklander  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
230c81fcd6SJens Wiklander  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
240c81fcd6SJens Wiklander  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
250c81fcd6SJens Wiklander  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
260c81fcd6SJens Wiklander  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
270c81fcd6SJens Wiklander  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
280c81fcd6SJens Wiklander  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
290c81fcd6SJens Wiklander  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
300c81fcd6SJens Wiklander  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
310c81fcd6SJens Wiklander  * POSSIBILITY OF SUCH DAMAGE.
320c81fcd6SJens Wiklander  */
330c81fcd6SJens Wiklander 
340c81fcd6SJens Wiklander #ifndef __SETJMP_H
350c81fcd6SJens Wiklander #define __SETJMP_H
360c81fcd6SJens Wiklander 
372fa93c74SJens Wiklander #if defined(ARM32)
380c81fcd6SJens Wiklander /*
390c81fcd6SJens Wiklander  * All callee preserved registers:
400c81fcd6SJens Wiklander  * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7
410c81fcd6SJens Wiklander  */
420c81fcd6SJens Wiklander #define _JBLEN 23
432fa93c74SJens Wiklander #define _JBTYPE int
440c81fcd6SJens Wiklander #endif
450c81fcd6SJens Wiklander 
462fa93c74SJens Wiklander #if defined(ARM64)
470c81fcd6SJens Wiklander #define _JBLEN 22
480c81fcd6SJens Wiklander #define _JBTYPE long long
490c81fcd6SJens Wiklander #endif
500c81fcd6SJens Wiklander 
510c81fcd6SJens Wiklander #ifdef _JBLEN
520c81fcd6SJens Wiklander typedef	_JBTYPE jmp_buf[_JBLEN];
530c81fcd6SJens Wiklander #endif
540c81fcd6SJens Wiklander 
550c81fcd6SJens Wiklander void longjmp(jmp_buf env, int val);
560c81fcd6SJens Wiklander int setjmp(jmp_buf env);
570c81fcd6SJens Wiklander 
58*9d6ac097SSumit Garg #ifdef CFG_TA_FTRACE_SUPPORT
59*9d6ac097SSumit Garg void ftrace_longjmp(unsigned int *ret_idx);
60*9d6ac097SSumit Garg void ftrace_setjmp(unsigned int *ret_idx);
61*9d6ac097SSumit Garg #endif
62*9d6ac097SSumit Garg 
630c81fcd6SJens Wiklander #endif /*__SETJMP_H*/
64