1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /*
- * Private macros for accessing __jmp_buf contents. kvx version.
- * This file is subject to the terms and conditions of the LGPL V2.1
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 2019 Kalray Inc.
- */
- #include <bits/wordsize.h>
- #if __WORDSIZE == 64
- /* We only need to save callee-saved registers plus stackpointer */
- # define JB_R12 0 /* stack pointer */
- # define JB_R14 1 /* frame pointer */
- # define JB_R18 2
- # define JB_R19 3
- # define JB_R20 4
- # define JB_R21 5
- # define JB_R22 6
- # define JB_R23 7
- # define JB_R24 8
- # define JB_R25 9
- # define JB_R26 10
- # define JB_R27 11
- # define JB_R28 12
- # define JB_R29 13
- # define JB_R30 14
- # define JB_R31 15
- #ifndef __ASSEMBLER__
- #include <setjmp.h>
- #include <stdint.h>
- #include <sysdep.h>
- static inline uintptr_t __attribute__ ((unused))
- _jmpbuf_sp (__jmp_buf jmpbuf)
- {
- uintptr_t sp = jmpbuf[0].regs[JB_R12];
- return sp;
- }
- #endif
- #else
- #error unsupported 32 bit wordsize
- #endif
|