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