]> git.pld-linux.org Git - packages/crossavr-libc.git/blobdiff - 300-avr-libc-bug15254.patch
- synchronized patches with official AVR toolchain 3.4.1.830
[packages/crossavr-libc.git] / 300-avr-libc-bug15254.patch
diff --git a/300-avr-libc-bug15254.patch b/300-avr-libc-bug15254.patch
new file mode 100644 (file)
index 0000000..86cffca
--- /dev/null
@@ -0,0 +1,53 @@
+diff -Naurp include/avr/power.h include/avr/power.h
+--- include/avr/power.h        2011-12-29 14:21:50.000000000 +0530
++++ include/avr/power.h        2012-02-06 11:09:16.000000000 +0530
+@@ -1393,10 +1393,6 @@ do{ \
+ || defined(__AVR_ATmega3290__) \
+ || defined(__AVR_ATmega3290A__) \
+ || defined(__AVR_ATmega32C1__) \
+-|| defined(__AVR_ATmega32HVB__) \
+-|| defined(__AVR_ATmega32HVBREVB__) \
+-|| defined(__AVR_ATmega16HVB__) \
+-|| defined(__AVR_ATmega16HVBREVB__) \
+ || defined(__AVR_ATmega32M1__) \
+ || defined(__AVR_ATmega32U2__) \
+ || defined(__AVR_ATmega32U4__) \
+@@ -1512,6 +1508,38 @@ Gets and returns the clock prescaler reg
+ */
+ #define clock_prescale_get()  (clock_div_t)(CLKPR & (uint8_t)((1<<CLKPS0)|(1<<CLKPS1)|(1<<CLKPS2)|(1<<CLKPS3)))
++#elif defined(__AVR_ATmega16HVB__) \
++|| defined(__AVR_ATmega16HVBREVB__) \
++|| defined(__AVR_ATmega32HVB__) \
++|| defined(__AVR_ATmega32HVBREVB__)
++
++typedef enum
++{
++    clock_div_1 = 0,
++    clock_div_2 = 1,
++    clock_div_4 = 2,
++    clock_div_8 = 3
++} clock_div_t;
++
++static __inline__ void clock_prescale_set(clock_div_t) __attribute__((__always_inline__));
++
++void clock_prescale_set(clock_div_t __x)
++{
++    uint8_t __tmp = _BV(CLKPCE);
++    __asm__ __volatile__ (
++        "in __tmp_reg__,__SREG__" "\n\t"
++        "cli" "\n\t"
++        "sts %1, %0" "\n\t"
++        "sts %1, %2" "\n\t"
++        "out __SREG__, __tmp_reg__"
++        : /* no outputs */
++        : "d" (__tmp),
++          "M" (_SFR_MEM_ADDR(CLKPR)),
++          "d" (__x)
++        : "r0");
++}
++
++#define clock_prescale_get()  (clock_div_t)(CLKPR & (uint8_t)((1<<CLKPS0)|(1<<CLKPS1)))
+ #elif defined(__AVR_ATtiny24__) \
+ || defined(__AVR_ATtiny24A__) \
This page took 0.178307 seconds and 4 git commands to generate.