[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-libc-dev] [bug #43828] wdt.h: Wrong inline assembler arguments
From: |
Sivanupandi, Pitchumani |
Subject: |
Re: [avr-libc-dev] [bug #43828] wdt.h: Wrong inline assembler arguments |
Date: |
Tue, 28 Apr 2015 10:53:24 +0000 |
Hi Johann,
> -----Original Message-----
> From: Pitchumani [mailto:address@hidden
> Sent: Wednesday, December 24, 2014 12:10 PM
> To: Sivanupandi, Pitchumani; Georg-Johann Lay; address@hidden
> Subject: [bug #43828] wdt.h: Wrong inline assembler arguments
...
> Below is the patch to fix this issue.
>
> diff --git a/avr-libc/include/avr/wdt.h b/avr-libc/include/avr/wdt.h index
> fc15885..3130e67 100644
> --- a/avr-libc/include/avr/wdt.h
> +++ b/avr-libc/include/avr/wdt.h
> @@ -148,25 +148,24 @@
> */
> #define wdt_enable(timeout) \
> do { \
> -uint8_t temp = 0; \
> +uint8_t temp; \
> __asm__ __volatile__ ( \
> "in __tmp_reg__, %[rampd]" "\n\t" \
> "out %[rampd], __zero_reg__" "\n\t" \
> "out %[ccp_reg], %[ioreg_cen_mask]" "\n\t" \
> "sts %[wdt_reg], %[wdt_enable_timeout]" "\n\t" \
> "1:lds %[tmp], %[wdt_status_reg]" "\n\t" \
> - "sbrc %[tmp], %[wdt_syncbusy_bit]" "\n\t" \
> + "sbrc %[tmp], %[wdt_syncbusy_bit]" "\n\t" \
> "rjmp 1b" "\n\t" \
> "out %[rampd], __tmp_reg__" "\n\t" \
> - : "=r" (temp) \
> + : [tmp] "=r" (temp) \
> : [rampd] "M" (_SFR_MEM_ADDR(RAMPD)), \
> [ccp_reg] "I" (_SFR_MEM_ADDR(CCP)), \
> [ioreg_cen_mask] "r" ((uint8_t)CCP_IOREG_gc), \
> [wdt_reg] "M" (_SFR_MEM_ADDR(WDT_CTRL)), \
> [wdt_enable_timeout] "r" ((uint8_t)(WDT_CEN_bm | WDT_ENABLE_bm |
> timeout)), \
> [wdt_status_reg] "M" (_SFR_MEM_ADDR(WDT_STATUS)), \
> - [wdt_syncbusy_bit] "I" (WDT_SYNCBUSY_bm), \
> - [tmp] "r" (temp) \
> + [wdt_syncbusy_bit] "I" (WDT_SYNCBUSY_bm) \
> : "r0" \
> ); \
> } while(0)
>
Is this change Ok?
Regards,
Pitchumani
- Re: [avr-libc-dev] [bug #43828] wdt.h: Wrong inline assembler arguments,
Sivanupandi, Pitchumani <=