]> git.pld-linux.org Git - packages/crossavr-libc.git/blob - 300-avr-libc-bug15254.patch
- cleanup, use arch*dir macros, release 5 (x32 rebuild)
[packages/crossavr-libc.git] / 300-avr-libc-bug15254.patch
1 diff -Naurp include/avr/power.h include/avr/power.h
2 --- include/avr/power.h 2011-12-29 14:21:50.000000000 +0530
3 +++ include/avr/power.h 2012-02-06 11:09:16.000000000 +0530
4 @@ -1393,10 +1393,6 @@ do{ \
5  || defined(__AVR_ATmega3290__) \
6  || defined(__AVR_ATmega3290A__) \
7  || defined(__AVR_ATmega32C1__) \
8 -|| defined(__AVR_ATmega32HVB__) \
9 -|| defined(__AVR_ATmega32HVBREVB__) \
10 -|| defined(__AVR_ATmega16HVB__) \
11 -|| defined(__AVR_ATmega16HVBREVB__) \
12  || defined(__AVR_ATmega32M1__) \
13  || defined(__AVR_ATmega32U2__) \
14  || defined(__AVR_ATmega32U4__) \
15 @@ -1512,6 +1508,38 @@ Gets and returns the clock prescaler reg
16  */
17  #define clock_prescale_get()  (clock_div_t)(CLKPR & (uint8_t)((1<<CLKPS0)|(1<<CLKPS1)|(1<<CLKPS2)|(1<<CLKPS3)))
18  
19 +#elif defined(__AVR_ATmega16HVB__) \
20 +|| defined(__AVR_ATmega16HVBREVB__) \
21 +|| defined(__AVR_ATmega32HVB__) \
22 +|| defined(__AVR_ATmega32HVBREVB__)
23 +
24 +typedef enum
25 +{
26 +    clock_div_1 = 0,
27 +    clock_div_2 = 1,
28 +    clock_div_4 = 2,
29 +    clock_div_8 = 3
30 +} clock_div_t;
31 +
32 +static __inline__ void clock_prescale_set(clock_div_t) __attribute__((__always_inline__));
33 +
34 +void clock_prescale_set(clock_div_t __x)
35 +{
36 +    uint8_t __tmp = _BV(CLKPCE);
37 +    __asm__ __volatile__ (
38 +        "in __tmp_reg__,__SREG__" "\n\t"
39 +        "cli" "\n\t"
40 +        "sts %1, %0" "\n\t"
41 +        "sts %1, %2" "\n\t"
42 +        "out __SREG__, __tmp_reg__"
43 +        : /* no outputs */
44 +        : "d" (__tmp),
45 +          "M" (_SFR_MEM_ADDR(CLKPR)),
46 +          "d" (__x)
47 +        : "r0");
48 +}
49 +
50 +#define clock_prescale_get()  (clock_div_t)(CLKPR & (uint8_t)((1<<CLKPS0)|(1<<CLKPS1)))
51  
52  #elif defined(__AVR_ATtiny24__) \
53  || defined(__AVR_ATtiny24A__) \
This page took 0.07005 seconds and 3 git commands to generate.