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 37*f88850d4SJerome Forissier #include <compiler.h> 38*f88850d4SJerome Forissier 392fa93c74SJens Wiklander #if defined(ARM32) 400c81fcd6SJens Wiklander /* 410c81fcd6SJens Wiklander * All callee preserved registers: 420c81fcd6SJens Wiklander * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7 43c96d7091SSumit Garg * One additional 32-bit value used in case ftrace 44c96d7091SSumit Garg * is enabled to restore ftrace return stack. 450c81fcd6SJens Wiklander */ 46c96d7091SSumit Garg #define _JBLEN 24 472fa93c74SJens Wiklander #define _JBTYPE int 480c81fcd6SJens Wiklander #endif 490c81fcd6SJens Wiklander 502fa93c74SJens Wiklander #if defined(ARM64) 510c81fcd6SJens Wiklander #define _JBLEN 22 520c81fcd6SJens Wiklander #define _JBTYPE long long 530c81fcd6SJens Wiklander #endif 540c81fcd6SJens Wiklander 550c81fcd6SJens Wiklander #ifdef _JBLEN 560c81fcd6SJens Wiklander typedef _JBTYPE jmp_buf[_JBLEN]; 570c81fcd6SJens Wiklander #endif 580c81fcd6SJens Wiklander 59*f88850d4SJerome Forissier void __noreturn longjmp(jmp_buf env, int val); 600c81fcd6SJens Wiklander int setjmp(jmp_buf env); 610c81fcd6SJens Wiklander 62099918f6SSumit Garg #ifdef CFG_FTRACE_SUPPORT 639d6ac097SSumit Garg void ftrace_longjmp(unsigned int *ret_idx); 649d6ac097SSumit Garg void ftrace_setjmp(unsigned int *ret_idx); 659d6ac097SSumit Garg #endif 669d6ac097SSumit Garg 670c81fcd6SJens Wiklander #endif /*__SETJMP_H*/ 68