sketchbook
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
jmp.h
Go to the documentation of this file.
1 #ifndef JMP_H
2 #define JMP_H
3 
4 /*
5  q_jmp_buf:
6  offset size description
7  0 2 frame pointer (r29:r28)
8  2 2 stack pointer (SPH:SPL)
9  4 1 status register (SREG)
10  5 2/3 return address (PC) (2 bytes used for <=128Kw flash)
11  7 = total size (AVR Tiny10 family always has 2 bytes PC)
12  */
13 
14 #if defined(__AVR_3_BYTE_PC__) && __AVR_3_BYTE_PC__
15 # define _QJB_LEN 8
16 #else
17 # define _QJB_LEN 7
18 #endif
19 typedef struct _q_jmp_buf { unsigned char _buf[_QJB_LEN]; } q_jmp_buf[1];
20 
21 /* Note that this version of setjmp/longjmp does not bother with
22  * passing a value. This is intentional.
23  */
24 extern void setjmp_q(q_jmp_buf _buf);
25 extern void longjmp_q(q_jmp_buf _buf) __attribute__((__noreturn__));
26 
27 #endif /* JMP_H */
void setjmp_q(q_jmp_buf _buf)
unsigned char _buf[_QJB_LEN]
Definition: jmp.h:19
char __v64qi __attribute__((__vector_size__(64)))
Definition: avx512bwintrin.h:33
void longjmp_q(q_jmp_buf _buf) __attribute__((__noreturn__))
#define _QJB_LEN
Definition: jmp.h:17
Definition: jmp.h:19
struct _q_jmp_buf q_jmp_buf[1]