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