xref: /optee_os/lib/libutils/isoc/include/setjmp.h (revision 099918f6744c37ce693c38562f11466b19d573c9)
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
41c96d7091SSumit Garg  * One additional 32-bit value used in case ftrace
42c96d7091SSumit Garg  * is enabled to restore ftrace return stack.
430c81fcd6SJens Wiklander  */
44c96d7091SSumit Garg #define _JBLEN 24
452fa93c74SJens Wiklander #define _JBTYPE int
460c81fcd6SJens Wiklander #endif
470c81fcd6SJens Wiklander 
482fa93c74SJens Wiklander #if defined(ARM64)
490c81fcd6SJens Wiklander #define _JBLEN 22
500c81fcd6SJens Wiklander #define _JBTYPE long long
510c81fcd6SJens Wiklander #endif
520c81fcd6SJens Wiklander 
530c81fcd6SJens Wiklander #ifdef _JBLEN
540c81fcd6SJens Wiklander typedef	_JBTYPE jmp_buf[_JBLEN];
550c81fcd6SJens Wiklander #endif
560c81fcd6SJens Wiklander 
570c81fcd6SJens Wiklander void longjmp(jmp_buf env, int val);
580c81fcd6SJens Wiklander int setjmp(jmp_buf env);
590c81fcd6SJens Wiklander 
60*099918f6SSumit Garg #ifdef CFG_FTRACE_SUPPORT
619d6ac097SSumit Garg void ftrace_longjmp(unsigned int *ret_idx);
629d6ac097SSumit Garg void ftrace_setjmp(unsigned int *ret_idx);
639d6ac097SSumit Garg #endif
649d6ac097SSumit Garg 
650c81fcd6SJens Wiklander #endif /*__SETJMP_H*/
66