--- /dev/null
+diff -Naurp include/avr/wdt.h include/avr/wdt.h
+--- include/avr/wdt.h 2012-11-03 00:46:16.083399618 +0530
++++ include/avr/wdt.h 2012-11-03 01:02:09.340126553 +0530
+@@ -107,8 +107,10 @@
+
+ #if defined(WDTCSR)
+ # define _WD_CONTROL_REG WDTCSR
+-#else
++#elif defined(WDTCR)
+ # define _WD_CONTROL_REG WDTCR
++#else
++# define _WD_CONTROL_REG WDT
+ #endif
+
+ #if defined(WDTOE)
+@@ -355,8 +357,137 @@ __asm__ __volatile__ ( \
+ : "r0" \
+ )
+
++#elif defined(__AVR_ATtiny1634__) \
++|| defined(__AVR_ATtiny828__)
++
++#define wdt_enable(value) \
++__asm__ __volatile__ ( \
++ "in __tmp_reg__,__SREG__" "\n\t" \
++ "cli" "\n\t" \
++ "wdr" "\n\t" \
++ "sts %[CCPADDRESS],%[SIGNATURE]" "\n\t" \
++ "sts %[WDTREG],%[WDVALUE]" "\n\t" \
++ "out __SREG__,__tmp_reg__" "\n\t" \
++ : /* no outputs */ \
++ : [CCPADDRESS] "M" (_SFR_MEM_ADDR(CCP)), \
++ [SIGNATURE] "r" ((uint8_t)0xD8), \
++ [WDTREG] "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
++ [WDVALUE] "r" ((uint8_t)((value & 0x08 ? _WD_PS3_MASK : 0x00) \
++ | _BV(WDE) | value)) \
++ : "r0" \
++)
++
++#define wdt_disable() \
++do { \
++uint8_t temp_wd; \
++__asm__ __volatile__ ( \
++ "in __tmp_reg__,__SREG__" "\n\t" \
++ "cli" "\n\t" \
++ "wdr" "\n\t" \
++ "out %[CCPADDRESS],%[SIGNATURE]" "\n\t" \
++ "in %[TEMP_WD],%[WDTREG]" "\n\t" \
++ "cbr %[TEMP_WD],%[WDVALUE]" "\n\t" \
++ "out %[WDTREG],%[TEMP_WD]" "\n\t" \
++ "out __SREG__,__tmp_reg__" "\n\t" \
++ : /*no output */ \
++ : [CCPADDRESS] "I" (_SFR_IO_ADDR(CCP)), \
++ [SIGNATURE] "r" ((uint8_t)0xD8), \
++ [WDTREG] "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
++ [TEMP_WD] "d" (temp_wd), \
++ [WDVALUE] "I" (1 << WDE) \
++ : "r0" \
++); \
++}while(0)
++
++#elif defined(__AVR_ATtiny4__) \
++|| defined(__AVR_ATtiny5__) \
++|| defined(__AVR_ATtiny9__) \
++|| defined(__AVR_ATtiny10__) \
++|| defined(__AVR_ATtiny20__) \
++|| defined(__AVR_ATtiny40__)
++
++#define wdt_enable(value) \
++__asm__ __volatile__ ( \
++ "in __tmp_reg__,__SREG__" "\n\t" \
++ "cli" "\n\t" \
++ "wdr" "\n\t" \
++ "out %[CCPADDRESS],%[SIGNATURE]" "\n\t" \
++ "out %[WDTREG],%[WDVALUE]" "\n\t" \
++ "out __SREG__,__tmp_reg__" "\n\t" \
++ : /* no outputs */ \
++ : [CCPADDRESS] "I" (_SFR_IO_ADDR(CCP)), \
++ [SIGNATURE] "r" ((uint8_t)0xD8), \
++ [WDTREG] "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
++ [WDVALUE] "r" ((uint8_t)((value & 0x08 ? _WD_PS3_MASK : 0x00) \
++ | _BV(WDE) | value)) \
++ : "r16" \
++)
++
++#define wdt_disable() \
++do { \
++uint8_t temp_wd; \
++__asm__ __volatile__ ( \
++ "in __tmp_reg__,__SREG__" "\n\t" \
++ "cli" "\n\t" \
++ "wdr" "\n\t" \
++ "out %[CCPADDRESS],%[SIGNATURE]" "\n\t" \
++ "in %[TEMP_WD],%[WDTREG]" "\n\t" \
++ "cbr %[TEMP_WD],%[WDVALUE]" "\n\t" \
++ "out %[WDTREG],%[TEMP_WD]" "\n\t" \
++ "out __SREG__,__tmp_reg__" "\n\t" \
++ : /*no output */ \
++ : [CCPADDRESS] "I" (_SFR_IO_ADDR(CCP)), \
++ [SIGNATURE] "r" ((uint8_t)0xD8), \
++ [WDTREG] "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
++ [TEMP_WD] "d" (temp_wd), \
++ [WDVALUE] "I" (1 << WDE) \
++ : "r16" \
++); \
++}while(0)
++
++#elif defined(__AVR_ATxmega32X1__) \
++||defined(__AVR_ATxmega64A1__)
++
++#define wdt_enable(value) \
++__asm__ __volatile__ ( \
++ "in __tmp_reg__,__SREG__" "\n\t" \
++ "cli" "\n\t" \
++ "wdr" "\n\t" \
++ "sts %[CCPADDRESS],%[SIGNATURE]" "\n\t" \
++ "sts %[WDTREG],%[WDVALUE]" "\n\t" \
++ "out __SREG__,__tmp_reg__" "\n\t" \
++ : /* no outputs */ \
++ : [CCPADDRESS] "M" (_SFR_MEM_ADDR(CCP)), \
++ [SIGNATURE] "r" ((uint8_t)0xD8), \
++ [WDTREG] "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
++ [WDVALUE] "r" ((uint8_t)((_BV(WDT_ENABLE_bp)) | (_BV(WDT_CEN_bp)) | \
++ (value << WDT_PER_gp))) \
++ : "r0" \
++)
++
++#define wdt_disable() \
++__asm__ __volatile__ ( \
++ "in __tmp_reg__,__SREG__" "\n\t" \
++ "cli" "\n\t" \
++ "wdr" "\n\t" \
++ "sts %[CCPADDRESS],%[SIGNATURE]" "\n\t" \
++ "sts %[WDTREG],%[WDVALUE]" "\n\t" \
++ "out __SREG__,__tmp_reg__" "\n\t" \
++ : /* no outputs */ \
++ : [CCPADDRESS] "M" (_SFR_MEM_ADDR(CCP)), \
++ [SIGNATURE] "r" ((uint8_t)0xD8), \
++ [WDTREG] "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
++ [WDVALUE] "r" ((uint8_t)((_BV(WDT_CEN_bp)))) \
++ : "r0" \
++)
+
+-
++/**
++Undefining explicitly so that it produces an error.
++ */
++#elif defined(__AVR_AT90C8534__) \
++|| defined(__AVR_M3000__)
++ #undef wdt_enable
++ #undef wdt_disale
+ #else
+
+ /* Use OUT instruction. */