]> git.pld-linux.org Git - packages/crossavr-libc.git/blame - 505-avr-libc-avrtc-519.patch
- cleanup, use arch*dir macros, release 5 (x32 rebuild)
[packages/crossavr-libc.git] / 505-avr-libc-avrtc-519.patch
CommitLineData
9fe267c2
PZ
1diff -Naurp include/setjmp.h include/setjmp.h
2--- include/setjmp.h 2011-12-29 14:21:50.000000000 +0530
3+++ include/setjmp.h 2012-06-15 11:53:57.000000000 +0530
4@@ -40,17 +40,20 @@ extern "C" {
5 /*
6 jmp_buf:
7 offset size description
8- 0 16 call-saved registers (r2-r17)
9- 16 2 frame pointer (r29:r28)
10- 18 2 stack pointer (SPH:SPL)
11- 20 1 status register (SREG)
12- 21 2/3 return address (PC) (2 bytes used for <=128Kw flash)
13- 23/24 = total size
14+ 0 16/4 call-saved registers (r2-r17)
15+ (AVR tiny10 family has only 4 call saved registers (r18-r21))
16+ 16/4 2 frame pointer (r29:r28)
17+ 18/6 2 stack pointer (SPH:SPL)
18+ 20/8 1 status register (SREG)
19+ 21/9 2/3 return address (PC) (2 bytes used for <=128Kw flash)
20+ 23/24/11 = total size (AVR Tiny10 family always has 2 bytes PC)
21 */
22
23 #if !defined(__DOXYGEN__)
24
25-#if defined(__AVR_3_BYTE_PC__) && __AVR_3_BYTE_PC__
26+#if defined(__AVR_TINY__)
27+# define _JBLEN 11
28+#elif defined(__AVR_3_BYTE_PC__) && __AVR_3_BYTE_PC__
29 # define _JBLEN 24
30 #else
31 # define _JBLEN 23
32diff -Naurp libc/stdlib/setjmp.S libc/stdlib/setjmp.S
33--- libc/stdlib/setjmp.S 2011-12-29 14:21:54.000000000 +0530
34+++ libc/stdlib/setjmp.S 2012-06-15 11:51:32.000000000 +0530
35@@ -29,8 +29,6 @@
36 /* $Id: setjmp.S 2191 2010-11-05 13:45:57Z arcanum $ */
37
38
39-#if !defined(__AVR_TINY__)
40-
41
42 /*
43 setjmp.S
44@@ -42,12 +40,13 @@
45 /*
46 jmp_buf:
47 offset size description
48- 0 16 call-saved registers (r2-r17)
49- 16 2 frame pointer (r29:r28)
50- 18 2 stack pointer (SPH:SPL)
51- 20 1 status register (SREG)
52- 21 2/3 return address (PC) (2 bytes used for <=128Kw flash)
53- 23/24 = total size
54+ 0 16/4 call-saved registers (r2-r17)
55+ (AVR tiny10 family has only 4 call saved registers (r18-r21))
56+ 16/4 2 frame pointer (r29:r28)
57+ 18/6 2 stack pointer (SPH:SPL)
58+ 20/8 1 status register (SREG)
59+ 21/9 2/3 return address (PC) (2 bytes used for <=128Kw flash)
60+ 23/24/11 = total size (AVR tiny10 family always has 2 bytes PC)
61 All multibytes are stored as little-endian.
62
63 int setjmp(jmp_buf __jmpb);
64@@ -82,7 +81,11 @@
65 _U(setjmp):
66 X_movw XL, jmpb_lo
67 ; save call-saved registers and frame pointer
68+#if !defined(__AVR_TINY__)
69 .irp .L_regno, 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,28,29
70+#else
71+ .irp .L_regno, 18,19,20,21,28,29
72+#endif
73 st X+, r\.L_regno
74 .endr
75 ; get return address
76@@ -129,7 +132,11 @@ _U(longjmp):
77 cpc ret_hi, __zero_reg__
78 adc ret_lo, __zero_reg__
79 ; restore call-saved registers and frame pointer
80+#if !defined(__AVR_TINY__)
81 .irp .L_regno, 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,28,29
82+#else
83+ .irp .L_regno, 18,19,20,21,28,29
84+#endif
85 ld r\.L_regno, X+
86 .endr
87 ; restore stack pointer (SP value before the setjmp() call) and SREG
88@@ -169,5 +176,3 @@ _U(longjmp):
89 .size _U(longjmp), . - _U(longjmp)
90
91 #endif /* !__DOXYGEN__ */
92-
93-#endif /* !defined(__AVR_TINY__) */
This page took 0.062249 seconds and 4 git commands to generate.