]> git.pld-linux.org Git - packages/crossavr-libc.git/blob - 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
1 diff -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
32 diff -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.055793 seconds and 3 git commands to generate.