]> git.pld-linux.org Git - packages/crossavr-libc.git/blobdiff - 304-avr-libc-avrtc-608.patch
- synchronized patches with official AVR toolchain 3.4.1.830
[packages/crossavr-libc.git] / 304-avr-libc-avrtc-608.patch
diff --git a/304-avr-libc-avrtc-608.patch b/304-avr-libc-avrtc-608.patch
new file mode 100644 (file)
index 0000000..654e6e5
--- /dev/null
@@ -0,0 +1,68 @@
+diff -Naurp libc/misc/eerd_block.S libc/misc/eerd_block.S
+--- libc/misc/eerd_block.S     2011-12-29 14:21:55.000000000 +0530
++++ libc/misc/eerd_block.S     2012-10-16 15:55:45.000000000 +0530
+@@ -62,6 +62,7 @@ ENTRY eeprom_read_block
+ #if  __AVR_XMEGA__    /* -------------------------------------------- */
++#if   defined (NVM_EEMAPEN_bm)
+   ; Load base address of NVM.
+       ldi     ZL, lo8(NVM_BASE)
+       ldi     ZH, hi8(NVM_BASE)
+@@ -75,6 +76,7 @@ ENTRY eeprom_read_block
+       ldd     XL, Z + NVM_CTRLB - NVM_BASE
+       ori     XL, NVM_EEMAPEN_bm
+       std     Z + NVM_CTRLB - NVM_BASE, XL
++#endif
+   ; Correct EEPROM address to read from data space.
+       subi    eepr_lo, lo8(-MAPPED_EEPROM_START)
+diff -Naurp libc/misc/eerd_byte.S libc/misc/eerd_byte.S
+--- libc/misc/eerd_byte.S      2011-12-29 14:21:55.000000000 +0530
++++ libc/misc/eerd_byte.S      2012-10-16 15:55:45.000000000 +0530
+@@ -55,6 +55,7 @@ ENTRY        eeprom_read_byte
+ ENTRY eeprom_mapen
++#if   defined (NVM_EEMAPEN_bm)
+   ; Load base address of NVM.
+       ldi     ZL, lo8(NVM_BASE)
+       ldi     ZH, hi8(NVM_BASE)
+@@ -68,6 +69,7 @@ ENTRY        eeprom_mapen
+       ldd     r19, Z + NVM_CTRLB - NVM_BASE
+       ori     r19, NVM_EEMAPEN_bm
+       std     Z + NVM_CTRLB - NVM_BASE, r19
++#endif
+   ; Load Z with correct EEPROM address to read from data space.
+       movw    ZL, addr_lo
+diff -Naurp libc/misc/eewr_byte.S libc/misc/eewr_byte.S
+--- libc/misc/eewr_byte.S      2011-12-29 14:21:55.000000000 +0530
++++ libc/misc/eewr_byte.S      2012-10-16 16:27:09.000000000 +0530
+@@ -70,6 +70,7 @@ ENTRY        eeprom_write_r18
+       sbrc    r19, NVM_NVMBUSY_bp
+       rjmp    1b
++#if     defined (NVM_EEMAPEN_bm)
+   ; Disable EEPROM mapping into data space.
+       ldd     r19, Z + NVM_CTRLB - NVM_BASE
+       andi    r19, ~NVM_EEMAPEN_bm
+@@ -103,10 +104,18 @@ ENTRY    eeprom_write_r18
+   ; Issue EEPROM Buffer Load command.
+ 3:    ldi     r19, NVM_CMD_LOAD_EEPROM_BUFFER_gc
+       std     Z + NVM_CMD - NVM_BASE, r19
++#endif
+       std     Z + NVM_ADDR0 - NVM_BASE, addr_lo
+       std     Z + NVM_ADDR1 - NVM_BASE, addr_hi
+       std     Z + NVM_ADDR2 - NVM_BASE, __zero_reg__
++#if     defined (NVM_EEMAPEN_bm)
+       std     Z + NVM_DATA0 - NVM_BASE, r18
++#else
++      movw    XL, addr_lo
++      subi    XL, lo8(-MAPPED_EEPROM_START)
++      sbci    XH, hi8(-MAPPED_EEPROM_START)
++      st      X, r18
++#endif
+   ; Issue EEPROM Erase & Write command.
+       ldi     r18, NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc
This page took 0.102692 seconds and 4 git commands to generate.