Index: Makefile.am =================================================================== RCS file: /sources/avr-libc/avr-libc/Makefile.am,v retrieving revision 1.20 diff -u -r1.20 Makefile.am --- Makefile.am 4 Jan 2008 04:15:19 -0000 1.20 +++ Makefile.am 18 Dec 2008 20:45:59 -0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2004,2005 Theodore A. Roth +# Copyright (c) 2004, 2005, 2008 Theodore A. Roth # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -41,8 +41,8 @@ DISTCHECK_CONFIGURE_FLAGS=--host=avr -SUBDIRS = common include crt1 libc libm avr doc scripts -DIST_SUBDIRS = common include crt1 libc libm avr doc scripts devtools +SUBDIRS = common include crt1 libc libdevice libm avr doc scripts +DIST_SUBDIRS = common include crt1 libc libdevice libm avr doc scripts devtools dist-hook: cp avr-libc.spec $(distdir)/avr-libc.spec Index: configure.ac =================================================================== RCS file: /sources/avr-libc/avr-libc/configure.ac,v retrieving revision 1.70 diff -u -r1.70 configure.ac --- configure.ac 24 Nov 2008 17:12:25 -0000 1.70 +++ configure.ac 18 Dec 2008 20:45:59 -0000 @@ -123,7 +123,7 @@ AC_NO_EXECUTABLES dnl We don't want the gzip distribution tarball anymore. -AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip]) +AM_INIT_AUTOMAKE([1.8 dist-bzip2 no-dist-gzip]) # We don't want touse the cflags from the environment since we need control # of this when we're building the libs. @@ -688,6 +688,11 @@ libc/stdio/Makefile libc/stdlib/Makefile libc/string/Makefile + libdevice/Makefile + libdevice/none/Makefile + libdevice/eeprom_1d/Makefile + libdevice/eeprom_20/Makefile + libdevice/eeprom_xmega/Makefile libm/Makefile libm/fplib/Makefile scripts/Makefile Index: devtools/Device.am =================================================================== RCS file: /sources/avr-libc/avr-libc/devtools/Device.am,v retrieving revision 1.2 diff -u -r1.2 Device.am --- devtools/Device.am 20 Aug 2008 16:07:29 -0000 1.2 +++ devtools/Device.am 18 Dec 2008 20:45:59 -0000 @@ -30,39 +30,53 @@ AVR_TARGET = <> AVR_TARGET_CRT = <> +AVR_TARGET_LIB = <>.a AVR_TARGET_DEFS = <> AVR_TARGET_CFLAGS = <> AVR_TARGET_ASFLAGS = <> +#AVR_EEROM_DIR = <> AVR_INSTALL_DIR = <> -VPATH = $(top_srcdir)/crt1 +VPATH = $(top_srcdir)/crt1:$(top_srcdir)/libdevice/<> if HAS_<> AM_CPPFLAGS = -I$(top_srcdir)/common -I$(top_srcdir)/include -I$(top_builddir)/include -AVRLIB_CFLAGS = -gstabs -Wall -W -Wstrict-prototypes -mmcu=$(AVR_TARGET) $(AVR_TARGET_DEFS) $(AVR_TARGET_CFLAGS) +AVRLIB_CFLAGS = -g -Wall -W -Wstrict-prototypes -mmcu=$(AVR_TARGET) $(AVR_TARGET_DEFS) $(AVR_TARGET_CFLAGS) AVRLIB_ASFLAGS = -x assembler-with-cpp -Wa,-gstabs -mmcu=$(AVR_TARGET) $(AVR_TARGET_DEFS) $(AVR_TARGET_ASFLAGS) AM_CFLAGS = $(AVRLIB_CFLAGS) AM_CCASFLAGS = $(AM_CPPFLAGS) $(AVRLIB_ASFLAGS) - __install_dir = $(prefix)/avr/lib/$(AVR_INSTALL_DIR) avrdir = $(__install_dir) avrlibdir = $(__install_dir) noinst_LIBRARIES = libcrt.a -nodist_libcrt_a_SOURCES = gcrt1.S avr_DATA = $(AVR_TARGET_CRT) +nodist_libcrt_a_SOURCES = gcrt1.S + $(AVR_TARGET_CRT): gcrt1.o rm -f $@ ln $< $@ || cp $< $@ +avr_LIBRARIES = $(AVR_TARGET_LIB) + +include $(top_srcdir)/libdevice/<>/Rules.am + +nodist_<>_a_SOURCES = \ + $(eeprom_a_c_sources) \ + $(eeprom_a_asm_sources) + +<>_a_LIBADD = + +<>_a_DEPENDENCIES = + else echo all distdir install installdirs clean distclean uninstall check: Index: devtools/gen-avr-lib-tree.sh =================================================================== RCS file: /sources/avr-libc/avr-libc/devtools/gen-avr-lib-tree.sh,v retrieving revision 1.54 diff -u -r1.54 gen-avr-lib-tree.sh --- devtools/gen-avr-lib-tree.sh 24 Nov 2008 17:12:25 -0000 1.54 +++ devtools/gen-avr-lib-tree.sh 18 Dec 2008 20:45:59 -0000 @@ -49,178 +49,178 @@ ASFLAGS_SPEED="-DOPTIMIZE_SPEED" AVR12_DEV_INFO="\ -at90s1200:crts1200.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny11:crttn11.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny12:crttn12.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny13:crttn13.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny15:crttn15.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny2313:crttn2313.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny28:crttn28.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s2313:crts2313.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s2323:crts2323.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s2333:crts2333.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s2343:crts2343.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s4433:crts4433.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s4414:crts4414.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s4434:crts4434.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s8515:crts8515.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90s8535:crts8535.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90c8534:crtc8534.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny22:crttn22.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny26:crttn26.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at86rf401:crt86401.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny25:crttn25.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny45:crttn45.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny85:crttn85.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny24:crttn24.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny44:crttn44.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny84:crttn84.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny261:crttn261.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny461:crttn461.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny861:crttn861.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +at90s1200:crts1200.o:libs1200:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +attiny11:crttn11.o:libtn11:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +attiny12:crttn12.o:libtn12:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +attiny13:crttn13.o:libtn13:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny15:crttn15.o:libtn15:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +attiny2313:crttn2313.o:libtn2313:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny28:crttn28.o:libtn28:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +at90s2313:crts2313.o:libs2313:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s2323:crts2323.o:libs2323:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s2333:crts2333.o:libs2333:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s2343:crts2343.o:libs2343:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s4433:crts4433.o:libs4433:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s4414:crts4414.o:libs4414:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s4434:crts4434.o:libs4434:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s8515:crts8515.o:libs8515:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90s8535:crts8535.o:libs8535:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90c8534:crtc8534.o:libc8534:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny22:crttn22.o:libtn22:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny26:crttn26.o:libtn26:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at86rf401:crt86401.o:lib86401:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +attiny25:crttn25.o:libtn25:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny45:crttn45.o:libtn45:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny85:crttn85.o:libtn85:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny24:crttn24.o:libtn24:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny44:crttn44.o:libtn44:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny84:crttn84.o:libtn84:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny261:crttn261.o:libtn261:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny461:crttn461.o:libtn461:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny861:crttn861.o:libtn861:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20\ " AVR25_DEV_INFO="\ -at86rf401:crt86401.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny13:crttn13.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny13a:crttn13a.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny2313:crttn2313.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny24:crttn24.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny25:crttn25.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny261:crttn261.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny44:crttn44.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny45:crttn45.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny461:crttn461.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny84:crttn84.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny85:crttn85.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny861:crttn861.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny43u:crttn43u.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny48:crttn48.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny88:crttn88.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +at86rf401:crt86401.o:lib86401:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +attiny13:crttn13.o:libtn13:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny13a:crttn13a.o:libtn13a:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny2313:crttn2313.o:libtn2313:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny24:crttn24.o:libtn24:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny25:crttn25.o:libtn25:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny261:crttn261.o:libtn261:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny44:crttn44.o:libtn44:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny45:crttn45.o:libtn45:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny461:crttn461.o:libtn461:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny84:crttn84.o:libtn84:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny85:crttn85.o:libtn85:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny861:crttn861.o:libtn861:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny43u:crttn43u.o:libtn43u:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny48:crttn48.o:libtn48:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny88:crttn88.o:libtn88:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20\ " AVR3_DEV_INFO="\ -atmega103:crtm103.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at43usb320:crt43320.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at43usb355:crt43355.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at76c711:crt76711.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb82:crtusb82.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb162:crtusb162.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atmega103:crtm103.o:libm103:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at43usb320:crt43320.o:lib43320:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +at43usb355:crt43355.o:lib43355:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +at76c711:crt76711.o:lib76711:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none;\ +at90usb82:crtusb82.o:libusb82:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb162:crtusb162.o:libsb162:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20\ " AVR31_DEV_INFO="\ -atmega103:crtm103.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at43usb320:crt43320.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atmega103:crtm103.o:libm103:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at43usb320:crt43320.o:lib43320:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none\ " AVR35_DEV_INFO="\ -at90usb82:crtusb82.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb162:crtusb162.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -attiny167:crttn167.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +at90usb82:crtusb82.o:libusb82:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb162:crtusb162.o:libusb162:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +attiny167:crttn167.o:libtn167:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20\ " AVR4_DEV_INFO="\ -atmega48:crtm48.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega48p:crtm48p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega8:crtm8.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega88:crtm88.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega88p:crtm88p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega8515:crtm8515.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega8535:crtm8535.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega8hva:crtm8hva.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90pwm1:crt90pwm1.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90pwm2:crt90pwm2.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90pwm2b:crt90pwm2b.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90pwm3:crt90pwm3.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90pwm3b:crt90pwm3b.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atmega48:crtm48.o:libm48:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega48p:crtm48p.o:libm48p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega8:crtm8.o:libm8:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega88:crtm88.o:libm88:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega88p:crtm88p.o:libm88p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega8515:crtm8515.o:libm8515:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega8535:crtm8535.o:libm8535:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega8hva:crtm8hva.o:libm8hva:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90pwm1:crt90pwm1.o:lib90pwm1:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90pwm2:crt90pwm2.o:lib90pwm2:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90pwm2b:crt90pwm2b.o:lib90pwm2b:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90pwm3:crt90pwm3.o:lib90pwm3:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90pwm3b:crt90pwm3b.o:lib90pwm3b:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20\ " AVR5_DEV_INFO="\ -atmega16:crtm16.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega161:crtm161.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega162:crtm162.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega163:crtm163.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega164p:crtm164p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega165:crtm165.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega165p:crtm165p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega168:crtm168.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega168p:crtm168p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega169:crtm169.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega169p:crtm169p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega16hva:crtm16hva.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega32:crtm32.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega323:crtm323.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega324p:crtm324p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega325:crtm325.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega325p:crtm325p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega3250:crtm3250.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega3250p:crtm3250p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega328p:crtm328p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega329:crtm329.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega329p:crtm329p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega3290:crtm3290.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega3290p:crtm3290p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega32hvb:crtm32hvb.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega406:crtm406.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega64:crtm64.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega640:crtm640.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega644:crtm644.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega644p:crtm644p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega645:crtm645.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega6450:crtm6450.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega649:crtm649.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega6490:crtm6490.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega128:crtm128.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega1280:crtm1280.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega1281:crtm1281.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega1284p:crtm1284p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90can32:crtcan32.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90can64:crtcan64.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90can128:crtcan128.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90pwm216:crt90pwm216.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90pwm316:crt90pwm316.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega32c1:crtm32c1.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega32m1:crtm32m1.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega32u4:crtm32u4.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega32u6:crtm32u6.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb646:crtusb646.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb647:crtusb647.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb1286:crtusb1286.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb1287:crtusb1287.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at94k:crtat94k.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atmega16:crtm16.o:libm16:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega161:crtm161.o:libm161:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega162:crtm162.o:libm162:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega163:crtm163.o:libm163:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega164p:crtm164p.o:libm164p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega165:crtm165.o:libm165:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega165p:crtm165p.o:libm165p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega168:crtm168.o:libm168:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega168p:crtm168p.o:libm168p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega169:crtm169.o:libm169:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega169p:crtm169p.o:libm169p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega16hva:crtm16hva.o:libm16hva:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega32:crtm32.o:libm32:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega323:crtm323.o:libm323:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega324p:crtm324p.o:libm324p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega325:crtm325.o:libm325:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega325p:crtm325p.o:libm325p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega3250:crtm3250.o:libm3250:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega3250p:crtm3250p.o:libm3250p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega328p:crtm328p.o:libm328p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega329:crtm329.o:libm329:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega329p:crtm329p.o:libm329p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega3290:crtm3290.o:libm3290:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega3290p:crtm3290p.o:libm3290p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega32hvb:crtm32hvb.o:libm32hvb:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega406:crtm406.o:libm406:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega64:crtm64.o:libm64:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega640:crtm640.o:libm640:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega644:crtm644.o:libm644:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega644p:crtm644p.o:libm644p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega645:crtm645.o:libm645:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega6450:crtm6450.o:libm6450:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega649:crtm649.o:libm649:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega6490:crtm6490.o:libm6490:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega128:crtm128.o:libm128:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega1280:crtm1280.o:libm1280:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega1281:crtm1281.o:libm1281:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega1284p:crtm1284p.o:libm1284p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90can32:crtcan32.o:libcan32:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90can64:crtcan64.o:libcan64:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90can128:crtcan128.o:libcan128:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90pwm216:crt90pwm216.o:lib90pwm216:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90pwm316:crt90pwm316.o:lib90pwm316:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega32c1:crtm32c1.o:libm32c1:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega32m1:crtm32m1.o:libm32m1:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega32u4:crtm32u4.o:libm32u4:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega32u6:crtm32u6.o:libm32u6:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb646:crtusb646.o:libusb646:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb647:crtusb647.o:libusb647:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb1286:crtusb1286.o:libusb1286:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb1287:crtusb1287.o:libusb1287:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at94k:crtat94k.o:libat94k:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:none\ " AVR51_DEV_INFO="\ -atmega128:crtm128.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega1280:crtm1280.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega1281:crtm1281.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega1284p:crtm1284p.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90can128:crtcan128.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb1286:crtusb1286.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -at90usb1287:crtusb1287.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atmega128:crtm128.o:libm128:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega1280:crtm1280.o:libm1280:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega1281:crtm1281.o:libm1281:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega1284p:crtm1284p.o:libm1284p:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90can128:crtcan128.o:libcan128:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb1286:crtusb1286.o:libusb1286:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +at90usb1287:crtusb1287.o:libusb1287:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20\ " AVR6_DEV_INFO="\ -atmega2560:crtm2560.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atmega2561:crtm2561.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atmega2560:crtm2560.o:libm2560:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20;\ +atmega2561:crtm2561.o:libm2561:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_20\ " AVRXMEGA4_DEV_INFO="\ -atxmega64a3:crtx64a3.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atxmega64a3:crtx64a3.o:libx64a3:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_xmega\ " AVRXMEGA5_DEV_INFO="\ -atxmega64a1:crtx64a1.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atxmega64a1:crtx64a1.o:libx64a1:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_xmega\ " AVRXMEGA6_DEV_INFO="\ -atxmega128a3:crtx128a3.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atxmega256a3:crtx256a3.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS};\ -atxmega256a3b:crtx256a3b.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atxmega128a3:crtx128a3.o:libx128a3:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_xmega;\ +atxmega256a3:crtx256a3.o:libx256a3:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_xmega;\ +atxmega256a3b:crtx256a3b.o:libx256a3b:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_xmega\ " AVRXMEGA7_DEV_INFO="\ -atxmega128a1:crtx128a1.o:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}\ +atxmega128a1:crtx128a1.o:libx128a1:${DEV_DEFS}:${CFLAGS_SPACE}:${DEV_ASFLAGS}:eeprom_xmega\ " LIB_DEFS="-D__COMPILING_AVR_LIBC__" @@ -297,10 +297,12 @@ do dev=$(echo $dev_crt | cut -d ':' -f 1) crt=$(echo $dev_crt | cut -d ':' -f 2) - crt_defs=$(echo $dev_crt | cut -d ':' -f 3) - crt_cflags=$(echo $dev_crt | cut -d ':' -f 4) - crt_asflags=$(echo $dev_crt | cut -d ':' -f 5) - + libdevice=$(echo $dev_crt | cut -d ':' -f 3) + crt_defs=$(echo $dev_crt | cut -d ':' -f 4) + crt_cflags=$(echo $dev_crt | cut -d ':' -f 5) + crt_asflags=$(echo $dev_crt | cut -d ':' -f 6) + eeprom_dir=$(echo $dev_crt | cut -d ':' -f 7) + echo " avr/lib/$arh/$dev" test -d $dev || mkdir $dev @@ -309,9 +311,11 @@ sed -e "s/<>/$dev/g" \ -e "s/<>/$crt/g" \ + -e "s/<>/$libdevice/g" \ -e "s/<>/$crt_defs/g" \ -e "s/<>/$crt_cflags/g" \ -e "s/<>/$crt_asflags/g" \ + -e "s/<>/$eeprom_dir/g" \ -e "s/<>/$install_dir/g" $dev/Makefile.am \ > $dev/tempfile && mv -f $dev/tempfile $dev/Makefile.am Index: include/avr/eeprom.h =================================================================== RCS file: /sources/avr-libc/avr-libc/include/avr/eeprom.h,v retrieving revision 1.30 diff -u -r1.30 eeprom.h --- include/avr/eeprom.h 13 Dec 2008 04:19:35 -0000 1.30 +++ include/avr/eeprom.h 18 Dec 2008 20:45:59 -0000 @@ -103,71 +103,6 @@ .eeprom section. */ #define EEMEM __attribute__((section(".eeprom"))) - -/* Register definitions */ - -/* Check for aliases. */ -#if !defined(EEWE) && defined(EEPE) -# define EEWE EEPE -#endif - -#if !defined(EEMWE) && defined(EEMPE) -# define EEMWE EEMPE -#endif - -#if !defined(EECR) && defined(DEECR) -/* AT86RF401 */ -# define EECR DEECR -# define EEAR DEEAR -# define EEARL DEEAR -# define EEDR DEEDR -# define EERE EER -# define EEWE EEL -# define EEMWE EEU -#endif - - -#if !defined(EECR) || !defined(EEDR) || !defined(EEARL) - -# if !defined(__EEPROM_REG_LOCATIONS__) \ - && !defined(EEPROM_REG_LOCATIONS_OVERRIDE) - /* 6-byte string denoting where to find the EEPROM registers in memory - space. Adresses denoted in hex syntax with uppercase letters. Used - by the EEPROM subroutines. - First two letters: EECR address. - Second two letters: EEDR address. - Last two letters: EEAR address. - */ -# error "Unknown EEPROM register(s) location." -# endif - -/* If needed, override the locations defined in the IO headers. */ -# ifdef EEPROM_REG_LOCATIONS_OVERRIDE -# undef __EEPROM_REG_LOCATIONS__ -# define __EEPROM_REG_LOCATIONS__ EEPROM_REG_LOCATIONS_OVERRIDE -# endif - -# define CONCAT1(a, b) CONCAT2(a, b) -# define CONCAT2(a, b) a ## b -# define HEXNR CONCAT1(0x, __EEPROM_REG_LOCATIONS__) - -# undef EECR -# define EECR _SFR_IO8((HEXNR >> 16) & 0xFF) - -# undef EEDR -# define EEDR _SFR_IO8((HEXNR >> 8) & 0xFF) - -# undef EEAR -# define EEAR _SFR_IO8(HEXNR & 0xFF) - -# undef EEARH - -# undef EEARL -# define EEARL EEAR - -#endif - - /** \def eeprom_is_ready \ingroup avr_eeprom \returns 1 if EEPROM is ready for a new read/write operation, 0 if not. @@ -192,32 +127,8 @@ /** \ingroup avr_eeprom Read one byte from EEPROM address \a __p. */ -__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p) -{ - do {} while (!eeprom_is_ready ()); -#if E2END <= 0xFF - EEARL = (size_t)__p; -#else - EEAR = (size_t)__p; -#endif - /* Use inline assembly below as some AVRs have problems with accessing - EECR with STS instructions. For example, see errata for ATmega64. - The code below also assumes that EECR and EEDR are in the I/O space. - */ - uint8_t __result; - __asm__ __volatile__ - ( - "/* START EEPROM READ CRITICAL SECTION */ \n\t" - "sbi %1, %2 \n\t" - "in %0, %3 \n\t" - "/* END EEPROM READ CRITICAL SECTION */ \n\t" - : "=r" (__result) - : "i" (_SFR_IO_ADDR(EECR)), - "i" (EERE), - "i" (_SFR_IO_ADDR(EEDR)) - ); - return __result; -} +extern uint8_t eeprom_read_byte (const uint8_t *__p); + /** \ingroup avr_eeprom Read one 16-bit word (little endian) from EEPROM address \a __p. @@ -295,39 +206,7 @@ /** \ingroup avr_eeprom Write a byte \a __value to EEPROM address \a __p. */ -static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value) -{ - do {} while (!eeprom_is_ready ()); - -#if defined(EEPM0) && defined(EEPM1) - EECR = 0; /* Set programming mode: erase and write. */ -#elif defined(EEPM0) || defined(EEPM1) -# warning "Unknown EECR register, eeprom_write_byte() has become outdated." -#endif - -#if E2END <= 0xFF - EEARL = (size_t)__p; -#else - EEAR = (size_t)__p; -#endif - EEDR = __value; - - __asm__ __volatile__ ( - "/* START EEPROM WRITE CRITICAL SECTION */\n\t" - "in r0, %[__sreg] \n\t" - "cli \n\t" - "sbi %[__eecr], %[__eemwe] \n\t" - "sbi %[__eecr], %[__eewe] \n\t" - "out %[__sreg], r0 \n\t" - "/* END EEPROM WRITE CRITICAL SECTION */" - : - : [__eecr] "i" (_SFR_IO_ADDR(EECR)), - [__sreg] "i" (_SFR_IO_ADDR(SREG)), - [__eemwe] "i" (EEMWE), - [__eewe] "i" (EEWE) - : "r0" - ); -} +extern void eeprom_write_byte (uint8_t *__p, uint8_t __value); /** \ingroup avr_eeprom Write a word \a __value to EEPROM address \a __p.