All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 01/12] arch: kill avr32
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-14  6:37   ` Thomas Petazzoni
  2015-02-13 22:34 ` [Buildroot] [PATCH 02/12] configs: get rid of avr32 defconfigs Yann E. MORIN
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

avr32 was slated for removal in 2015.02. Make it so!

This patch only definitively hides the symbol. When all references
to it are eradicated (to come in followup patches), we'll eventually
kill the symbol altogether.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 .defconfig     |  1 -
 arch/Config.in | 30 +++++++++++++++---------------
 2 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/.defconfig b/.defconfig
index 77ab11a..585be55 100644
--- a/.defconfig
+++ b/.defconfig
@@ -6,7 +6,6 @@ BR2_HAVE_DOT_CONFIG=y
 # BR2_alpha is not set
 # BR2_arm is not set
 # BR2_armeb is not set
-# BR2_avr32 is not set
 # BR2_cris is not set
 # BR2_ia64 is not set
 BR2_i386=y
diff --git a/arch/Config.in b/arch/Config.in
index 890e7e2..6c8f328 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -53,21 +53,6 @@ config BR2_aarch64
 	  http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php
 	  http://en.wikipedia.org/wiki/ARM
 
-config BR2_avr32
-	bool "AVR32"
-	select BR2_SOFT_FLOAT
-	# This architecture is obsolete and complicated to maintain to
-	# do the lack of upstream support in the major toolchain
-	# components. If you're interested by AVR32, contact the
-	# Buildroot community. Otherwise, its support will be removed
-	# by the 2015.02 release.
-	depends on BR2_DEPRECATED_SINCE_2014_08
-	help
-	  The AVR32 is a 32-bit RISC microprocessor architecture designed by
-	  Atmel.
-	  http://www.atmel.com/
-	  http://en.wikipedia.org/wiki/Avr32
-
 config BR2_bfin
 	bool "Blackfin"
 	help
@@ -209,6 +194,21 @@ config BR2_xtensa
 
 endchoice
 
+config BR2_avr32
+	bool
+	select BR2_SOFT_FLOAT
+	# This architecture is obsolete and complicated to maintain to
+	# do the lack of upstream support in the major toolchain
+	# components. If you're interested by AVR32, contact the
+	# Buildroot community. Otherwise, its support will be removed
+	# by the 2015.02 release.
+	depends on BR2_DEPRECATED_SINCE_2014_08
+	help
+	  The AVR32 is a 32-bit RISC microprocessor architecture designed by
+	  Atmel.
+	  http://www.atmel.com/
+	  http://en.wikipedia.org/wiki/Avr32
+
 # The following string values are defined by the individual
 # Config.in.$ARCH files
 config BR2_ARCH
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 02/12] configs: get rid of avr32 defconfigs
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 01/12] arch: kill avr32 Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 03/12] packages: all salute the passing of avr32 Yann E. MORIN
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 configs/atngw100_defconfig  | 35 -----------------------------------
 configs/atstk100x_defconfig | 26 --------------------------
 2 files changed, 61 deletions(-)
 delete mode 100644 configs/atngw100_defconfig
 delete mode 100644 configs/atstk100x_defconfig

diff --git a/configs/atngw100_defconfig b/configs/atngw100_defconfig
deleted file mode 100644
index d410f5b..0000000
--- a/configs/atngw100_defconfig
+++ /dev/null
@@ -1,35 +0,0 @@
-# AVR32 is deprecated
-BR2_DEPRECATED=y
-
-# Architecture
-BR2_avr32=y
-
-# Lock down kernel headers version, to match the kernel version used
-# below.
-BR2_KERNEL_HEADERS_VERSION=y
-BR2_DEFAULT_KERNEL_VERSION="3.9.11"
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_9=y
-
-# Filesystems
-BR2_TARGET_ROOTFS_JFFS2=y
-BR2_TARGET_ROOTFS_JFFS2_FLASH_128=y
-BR2_TARGET_ROOTFS_JFFS2_PAGESIZE=0x1000
-BR2_TARGET_ROOTFS_JFFS2_EBSIZE=0x20000
-BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y
-BR2_TARGET_ROOTFS_JFFS2_BE=y
-BR2_TARGET_ROOTFS_TAR=y
-BR2_TARGET_ROOTFS_TAR_NONE=y
-
-# Bootloader
-BR2_TARGET_UBOOT=y
-BR2_TARGET_UBOOT_BOARDNAME="atngw100"
-BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2010.09"
-
-# Kernel. Locked to 3.9.x, because 3.10.x fails to build with
-# relocation truncated to fit: R_AVR32_16N_PCREL against symbol
-# `_ctype'
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.9.11"
-BR2_LINUX_KERNEL_DEFCONFIG="atngw100"
diff --git a/configs/atstk100x_defconfig b/configs/atstk100x_defconfig
deleted file mode 100644
index 0e17e36..0000000
--- a/configs/atstk100x_defconfig
+++ /dev/null
@@ -1,26 +0,0 @@
-# AVR32 is deprecated
-BR2_DEPRECATED=y
-
-# Architecture
-BR2_avr32=y
-
-# Lock to same version as kernel
-BR2_KERNEL_HEADERS_VERSION=y
-BR2_DEFAULT_KERNEL_VERSION="3.9.11"
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_9=y
-
-# U-Boot
-BR2_TARGET_UBOOT=y
-BR2_TARGET_UBOOT_BOARDNAME="atstk1002"
-BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2010.09"
-
-# Kernel
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.9.11"
-BR2_LINUX_KERNEL_USE_DEFCONFIG=y
-BR2_LINUX_KERNEL_DEFCONFIG="atstk1002"
-
-# Filesystem
-BR2_TARGET_ROOTFS_TAR=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 03/12] packages: all salute the passing of avr32
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 01/12] arch: kill avr32 Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 02/12] configs: get rid of avr32 defconfigs Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 04/12] linux: get rid of avr32 specifics Yann E. MORIN
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/aiccu/Config.in                            |    5 -
 package/alsa-lib/0001-avr32-bad-inline.patch       |   91 -
 package/alsa-lib/alsa-lib.mk                       |    4 -
 package/avrdude/Config.in                          |    2 -
 package/bdwgc/Config.in                            |    2 +-
 package/blktrace/Config.in                         |    2 +-
 package/bluez5_utils/Config.in                     |    1 -
 package/bluez_utils/Config.in                      |    3 +-
 package/btrfs-progs/Config.in                      |    2 -
 package/collectd/Config.in                         |    1 -
 package/connman/Config.in                          |    3 +-
 package/cwiid/Config.in                            |    2 -
 package/dovecot/Config.in                          |    2 -
 package/dropwatch/dropwatch.mk                     |    4 +-
 .../dvb-apps/0002-Fix-compiler-warning-flags.patch |   25 -
 package/e2fsprogs/Config.in                        |    2 +-
 package/ecryptfs-utils/Config.in                   |    4 +-
 package/efl/expedite/Config.in                     |    2 -
 package/efl/libecore/Config.in                     |    2 -
 package/efl/libedbus/Config.in                     |    2 -
 package/efl/libedje/Config.in                      |    2 -
 package/efl/libelementary/Config.in                |    2 -
 package/efl/libethumb/Config.in                    |    2 -
 package/efl/libevas/Config.in                      |    2 -
 package/elfutils/Config.in                         |    4 -
 package/enlightenment/Config.in                    |    2 -
 package/fbv/0001-arch.patch.avr32                  |   48 -
 package/gadgetfs-test/Config.in                    |    2 +-
 package/gpsd/Config.in                             |    3 -
 package/gstreamer/gstreamer/gstreamer.mk           |    2 +-
 package/gstreamer1/gst1-libav/Config.in            |    1 -
 package/gstreamer1/gst1-plugins-bad/Config.in      |    1 -
 package/gstreamer1/gstreamer1/gstreamer1.mk        |    2 +-
 package/iputils/Config.in                          |    1 -
 package/keyutils/Config.in                         |    2 +-
 package/libaio/0002-avr32-support.patch            |  122 -
 package/libaio/Config.in                           |    2 +-
 package/libcap-ng/Config.in                        |    1 -
 package/libcec/0001-no-psabi-warning.patch         |   22 -
 package/libev/Config.in                            |    2 +-
 package/libmad/0002-optimization.patch.avr32       | 2922 --------------------
 package/libmad/Config.in                           |    1 -
 package/libmicrohttpd/libmicrohttpd.mk             |    5 -
 package/libsecret/Config.in                        |    3 -
 ...tack-direction-for-the-AVR32-architecture.patch |   33 -
 package/libusb/libusb.mk                           |    4 -
 package/lua-ev/Config.in                           |    2 +-
 package/lxc/Config.in                              |    2 -
 package/mpd/Config.in                              |    6 +-
 package/mtr/Config.in                              |    1 -
 package/mysql/Config.in                            |    1 -
 package/network-manager/Config.in                  |    2 -
 package/ofono/Config.in                            |    2 -
 package/opencv/Config.in                           |    1 -
 package/openobex/Config.in                         |    3 +-
 package/openpgm/Config.in                          |    2 -
 package/oprofile/oprofile.mk                       |    5 -
 package/php/Config.ext                             |    4 -
 package/pinentry/Config.in                         |    2 -
 package/poco/Config.in                             |    5 +-
 .../012-support-library-path-old-compilers.patch   |   54 -
 .../011-support-library-path-old-compilers.patch   |   54 -
 package/qemu/qemu.mk                               |    1 -
 package/qt/Config.in                               |    2 -
 package/qt/qt.mk                                   |    2 -
 package/qt5/Config.in                              |    2 -
 package/qt5/qt5base/Config.in                      |    1 -
 package/qt5/qt5connectivity/Config.in              |    3 +-
 package/radvd/Config.in                            |    2 -
 package/samba/Config.in                            |    2 -
 package/samba4/Config.in                           |    1 -
 package/sconeserver/Config.in                      |    4 +-
 package/snowball-init/Config.in                    |    3 +-
 package/squid/Config.in                            |    1 -
 package/trace-cmd/Config.in                        |    1 -
 package/tvheadend/Config.in                        |    6 -
 package/uboot-tools/uboot-tools.mk                 |    4 +-
 package/udisks/Config.in                           |    3 -
 package/ussp-push/Config.in                        |    3 +-
 package/util-linux/Config.in                       |    2 -
 package/wayland/Config.in                          |    2 -
 package/weston/Config.in                           |    2 -
 package/wpa_supplicant/Config.in                   |    1 -
 package/x11r7/xserver_xorg-server/Config.in        |    4 -
 package/zeromq/Config.in                           |    1 -
 package/zmqpp/Config.in                            |    2 -
 86 files changed, 27 insertions(+), 3528 deletions(-)
 delete mode 100644 package/alsa-lib/0001-avr32-bad-inline.patch
 delete mode 100644 package/dvb-apps/0002-Fix-compiler-warning-flags.patch
 delete mode 100644 package/fbv/0001-arch.patch.avr32
 delete mode 100644 package/libaio/0002-avr32-support.patch
 delete mode 100644 package/libcec/0001-no-psabi-warning.patch
 delete mode 100644 package/libmad/0002-optimization.patch.avr32
 delete mode 100644 package/libsigsegv/0001-Add-stack-direction-for-the-AVR32-architecture.patch
 delete mode 100644 package/python/012-support-library-path-old-compilers.patch
 delete mode 100644 package/python3/011-support-library-path-old-compilers.patch

diff --git a/package/aiccu/Config.in b/package/aiccu/Config.in
index ce5cea6..df184fa 100644
--- a/package/aiccu/Config.in
+++ b/package/aiccu/Config.in
@@ -6,10 +6,6 @@ config BR2_PACKAGE_AICCU
 	depends on BR2_USE_MMU # fork()
 	# Uses dn_skipname(), only available since 0.9.33
 	depends on !BR2_UCLIBC_VERSION_0_9_31
-	# AVR32 only has uClibc 0.9.31, so there's no way it can build
-	# due to the lack of dn_skipname(), even with external
-	# toolchains.
-	depends on !BR2_avr32
 	# Triggers the _gp link issue
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405
@@ -31,6 +27,5 @@ config BR2_PACKAGE_AICCU
 comment "aiccu needs a toolchain w/ IPv6, wchar, threads"
 	depends on BR2_USE_MMU
 	depends on !(BR2_INET_IPV6 && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS)
-	depends on !BR2_avr32
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405
diff --git a/package/alsa-lib/0001-avr32-bad-inline.patch b/package/alsa-lib/0001-avr32-bad-inline.patch
deleted file mode 100644
index 568ba40..0000000
--- a/package/alsa-lib/0001-avr32-bad-inline.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h alsa-lib-1.0.18/src/pcm/pcm_local.h
---- alsa-lib-1.0.18-0rig//src/pcm/pcm_local.h	2009-01-31 11:02:12.000000000 +0100
-+++ alsa-lib-1.0.18/src/pcm/pcm_local.h	2009-01-31 11:03:24.000000000 +0100
-@@ -611,6 +611,13 @@
- 			   snd_pcm_hw_param_t var);
- int _snd_pcm_hw_param_set(snd_pcm_hw_params_t *params,
- 			  snd_pcm_hw_param_t var, unsigned int val, int dir);
-+
-+#if	defined(AVR32_INLINE_BUG)
-+int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
-+						snd_pcm_format_t val);
-+int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params,
-+				     snd_pcm_subformat_t val);
-+#else
- static inline int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
- 						snd_pcm_format_t val)
- {
-@@ -624,7 +631,7 @@
- 	return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT,
- 				     (unsigned long) val, 0);
- }
--
-+#endif
- int _snd_pcm_hw_param_set_min(snd_pcm_hw_params_t *params,
- 			      snd_pcm_hw_param_t var, unsigned int val, int dir);
- int _snd_pcm_hw_param_set_max(snd_pcm_hw_params_t *params,
-diff -urN alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c alsa-lib-1.0.18/src/pcm/pcm_route.c
---- alsa-lib-1.0.18-0rig//src/pcm/pcm_route.c	2009-01-31 11:02:12.000000000 +0100
-+++ alsa-lib-1.0.18/src/pcm/pcm_route.c	2009-01-31 11:03:18.000000000 +0100
-@@ -26,6 +26,7 @@
-  *
-  */
-   
-+
- #include <byteswap.h>
- #include <math.h>
- #include "pcm_local.h"
-@@ -106,6 +107,23 @@
- 
- #endif /* DOC_HIDDEN */
- 
-+
-+#if	defined(AVR32_INLINE_BUG)
-+int _snd_pcm_hw_params_set_format(snd_pcm_hw_params_t *params,
-+						snd_pcm_format_t val)
-+{
-+	return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_FORMAT,
-+				     (unsigned long) val, 0);
-+}
-+
-+int _snd_pcm_hw_params_set_subformat(snd_pcm_hw_params_t *params,
-+				     snd_pcm_subformat_t val)
-+{
-+	return _snd_pcm_hw_param_set(params, SND_PCM_HW_PARAM_SUBFORMAT,
-+				     (unsigned long) val, 0);
-+}
-+#endif
-+
- static void snd_pcm_route_convert1_zero(const snd_pcm_channel_area_t *dst_area,
- 					snd_pcm_uframes_t dst_offset,
- 					const snd_pcm_channel_area_t *src_areas ATTRIBUTE_UNUSED,
-@@ -483,6 +501,8 @@
- 				  snd_pcm_uframes_t frames,
- 				  snd_pcm_route_params_t *params)
- {
-+#if	defined(AVR32_INLINE_BUG)
-+#endif
- 	unsigned int dst_channel;
- 	snd_pcm_route_ttable_dst_t *dstp;
- 	const snd_pcm_channel_area_t *dst_area;
-@@ -551,8 +571,20 @@
- 	_snd_pcm_hw_param_set_mask(sparams, SND_PCM_HW_PARAM_ACCESS,
- 				   &saccess_mask);
- 	if (route->sformat != SND_PCM_FORMAT_UNKNOWN) {
-+#if	defined(AVR32_INLINE_BUG)
-+/* Start of  of problem */
-+#endif
- 		_snd_pcm_hw_params_set_format(sparams, route->sformat);
- 		_snd_pcm_hw_params_set_subformat(sparams, SND_PCM_SUBFORMAT_STD);
-+#if	0
-+		_snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_FORMAT,
-+				     (unsigned long) route->sformat, 0);
-+		_snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_SUBFORMAT,
-+				     (unsigned long) SND_PCM_SUBFORMAT_STD, 0);
-+#endif
-+#if	defined(AVR32_INLINE_BUG)
-+/* End of problem */
-+#endif
- 	}
- 	if (route->schannels >= 0) {
- 		_snd_pcm_hw_param_set(sparams, SND_PCM_HW_PARAM_CHANNELS,
diff --git a/package/alsa-lib/alsa-lib.mk b/package/alsa-lib/alsa-lib.mk
index 16d184e..c67258f 100644
--- a/package/alsa-lib/alsa-lib.mk
+++ b/package/alsa-lib/alsa-lib.mk
@@ -50,10 +50,6 @@ ifneq ($(BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS),y)
 ALSA_LIB_CONF_OPTS += --disable-old-symbols
 endif
 
-ifeq ($(BR2_avr32),y)
-ALSA_LIB_CFLAGS += -DAVR32_INLINE_BUG
-endif
-
 ifeq ($(BR2_PACKAGE_ALSA_LIB_PYTHON),y)
 ALSA_LIB_CONF_OPTS += \
 	--with-pythonlibs=-lpython$(PYTHON_VERSION_MAJOR) \
diff --git a/package/avrdude/Config.in b/package/avrdude/Config.in
index f090ac6..1433d2b 100644
--- a/package/avrdude/Config.in
+++ b/package/avrdude/Config.in
@@ -8,7 +8,6 @@ config BR2_PACKAGE_AVRDUDE
 	depends on BR2_LARGEFILE # elfutils
 	depends on BR2_USE_WCHAR # elfutils
 	depends on !BR2_STATIC_LIBS # elfutils
-	depends on !BR2_avr32 # elfutils
 	depends on !BR2_bfin # elfutils
 	help
 	  avrdude is a programmer for Atmel AVR microcontrollers
@@ -18,5 +17,4 @@ config BR2_PACKAGE_AVRDUDE
 
 comment "avrdude needs a toolchain w/ threads, largefile, wchar, dynamic library"
 	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_LARGEFILE || !BR2_USE_WCHAR || BR2_STATIC_LIBS
-	depends on !BR2_avr32
 	depends on !BR2_bfin
diff --git a/package/bdwgc/Config.in b/package/bdwgc/Config.in
index ec83fa3..da302e0 100644
--- a/package/bdwgc/Config.in
+++ b/package/bdwgc/Config.in
@@ -1,7 +1,7 @@
 config BR2_PACKAGE_BDWGC_ARCH_SUPPORTS
 	bool
 	default y
-	depends on BR2_arm || BR2_armeb || BR2_avr32 || BR2_i386 \
+	depends on BR2_arm || BR2_armeb || BR2_i386 \
 		|| BR2_mips || BR2_mipsel || BR2_powerpc || BR2_sh \
 		|| BR2_sparc || BR2_x86_64
 
diff --git a/package/blktrace/Config.in b/package/blktrace/Config.in
index e68ae13..09c95eb 100644
--- a/package/blktrace/Config.in
+++ b/package/blktrace/Config.in
@@ -4,7 +4,7 @@ config BR2_PACKAGE_BLKTRACE
 	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL
 	# Because of libaio arch depends
 	depends on \
-		BR2_arm   || BR2_armeb || BR2_avr32  || BR2_i386    || \
+		BR2_arm   || BR2_armeb || BR2_i386   || \
 		BR2_m68k  || BR2_mips  || BR2_mipsel || BR2_powerpc || \
 		BR2_sparc || BR2_x86_64
 	select BR2_PACKAGE_LIBAIO
diff --git a/package/bluez5_utils/Config.in b/package/bluez5_utils/Config.in
index a7cd55e..8841649 100644
--- a/package/bluez5_utils/Config.in
+++ b/package/bluez5_utils/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_BLUEZ5_UTILS
 	bool "bluez-utils 5.x"
-	depends on !BR2_avr32
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
 	depends on BR2_USE_MMU # dbus
diff --git a/package/bluez_utils/Config.in b/package/bluez_utils/Config.in
index c4760b2..34defd3 100644
--- a/package/bluez_utils/Config.in
+++ b/package/bluez_utils/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_BLUEZ_UTILS
 	bool "bluez-utils"
-	depends on !BR2_avr32
 	depends on !BR2_STATIC_LIBS
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2
@@ -47,5 +46,5 @@ config BR2_PACKAGE_BLUEZ_UTILS_GATT
 endif
 
 comment "bluez-utils needs a toolchain w/ wchar, threads, dynamic library"
-	depends on !BR2_avr32 && BR2_USE_MMU
+	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
diff --git a/package/btrfs-progs/Config.in b/package/btrfs-progs/Config.in
index a8d407b..dcd2ec5 100644
--- a/package/btrfs-progs/Config.in
+++ b/package/btrfs-progs/Config.in
@@ -4,7 +4,6 @@ config BR2_PACKAGE_BTRFS_PROGS
 	depends on BR2_USE_WCHAR # util-linux
 	depends on BR2_USE_MMU # util-linux
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32 # toolchain issues
 	select BR2_PACKAGE_ACL
 	select BR2_PACKAGE_ATTR
 	select BR2_PACKAGE_E2FSPROGS
@@ -20,6 +19,5 @@ config BR2_PACKAGE_BTRFS_PROGS
 
 comment "btrfs-progs needs a toolchain w/ largefile, wchar, threads"
 	depends on BR2_USE_MMU
-	depends on !BR2_avr32
 	depends on !BR2_LARGEFILE || !BR2_USE_WCHAR || \
 		!BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/collectd/Config.in b/package/collectd/Config.in
index c12dd5b..64f7d58 100644
--- a/package/collectd/Config.in
+++ b/package/collectd/Config.in
@@ -251,7 +251,6 @@ config BR2_PACKAGE_COLLECTD_MYSQL
 	depends on BR2_INSTALL_LIBSTDCPP # mysql
 	depends on BR2_USE_MMU # mysql
 	depends on BR2_TOOLCHAIN_HAS_THREADS # mysql
-	depends on !BR2_avr32 # mysql
 	select BR2_PACKAGE_MYSQL
 	help
 	  Connects to a MySQL database and issues a "show status" command.
diff --git a/package/connman/Config.in b/package/connman/Config.in
index f071627..39a8ed4 100644
--- a/package/connman/Config.in
+++ b/package/connman/Config.in
@@ -3,7 +3,6 @@ config BR2_PACKAGE_CONNMAN
 	select BR2_PACKAGE_DBUS
 	select BR2_PACKAGE_LIBGLIB2
 	select BR2_PACKAGE_IPTABLES
-	depends on !BR2_avr32 # no inotify_init1
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_INET_IPV6
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
@@ -66,5 +65,5 @@ config BR2_PACKAGE_CONNMAN_CLIENT
 endif # BR2_PACKAGE_CONNMAN
 
 comment "connman needs a toolchain w/ IPv6, wchar, threads, resolver, dynamic library"
-	depends on BR2_USE_MMU && !BR2_avr32
+	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_INET_IPV6 || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
diff --git a/package/cwiid/Config.in b/package/cwiid/Config.in
index 0859dac..1b64f0a 100644
--- a/package/cwiid/Config.in
+++ b/package/cwiid/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_CWIID
 	bool "cwiid"
-	depends on !BR2_avr32 # bluez_utils
 	depends on !BR2_STATIC_LIBS # bluez_utils
 	depends on BR2_USE_WCHAR # bluez_utils -> libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # bluez_utils -> dbus, alsa-lib, libglib2
@@ -27,5 +26,4 @@ endif
 
 comment "cwiid needs a toolchain w/ dynamic lib, threads, wchar"
 	depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32
 	depends on !BR2_USE_MMU
diff --git a/package/dovecot/Config.in b/package/dovecot/Config.in
index aa4c221..fedc4d9 100644
--- a/package/dovecot/Config.in
+++ b/package/dovecot/Config.in
@@ -24,13 +24,11 @@ config BR2_PACKAGE_DOVECOT_MYSQL
 	select BR2_PACKAGE_MYSQL
 	depends on BR2_INSTALL_LIBSTDCPP # mysql
 	depends on BR2_TOOLCHAIN_HAS_THREADS # mysql
-	depends on !BR2_avr32 # mysql
 	help
 	  Enable MySQL support.
 
 comment "mysql support needs a toolchain w/ C++, threads"
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32
 
 config BR2_PACKAGE_DOVECOT_OPENSSL
 	bool "openssl support"
diff --git a/package/dropwatch/dropwatch.mk b/package/dropwatch/dropwatch.mk
index 9c05845..3565927 100644
--- a/package/dropwatch/dropwatch.mk
+++ b/package/dropwatch/dropwatch.mk
@@ -13,10 +13,8 @@ DROPWATCH_LICENSE_FILES = COPYING
 
 # libbfd may be linked to libintl
 # Ugly... but LDFLAGS are hardcoded anyway
-#
-# Also: always need to add -liberty to hardcoded LDFLAGS for avr32
 DROPWATCH_LDFLAGS = \
-	$(TARGET_LDFLAGS) -lbfd -liberty -lreadline -lnl-3 -lnl-genl-3 \
+	$(TARGET_LDFLAGS) -lbfd -lreadline -lnl-3 -lnl-genl-3 \
 		-lpthread -lncurses -lm
 
 ifeq ($(BR2_NEEDS_GETTEXT_IF_LOCALE),y)
diff --git a/package/dvb-apps/0002-Fix-compiler-warning-flags.patch b/package/dvb-apps/0002-Fix-compiler-warning-flags.patch
deleted file mode 100644
index 9da0408..0000000
--- a/package/dvb-apps/0002-Fix-compiler-warning-flags.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-When building for avr32, the build fails as follows.
-
-  cc1: error: unrecognized command line option "-Wno-packed-bitfield-compat"
-
-An example of an autobuild failure arising from this is the following.
-
-  http://autobuild.buildroot.net/results/92e/92e472004812a3616f62d766a9ea07a997a66e89/
-
-Clearly, not all toolchains provide a gcc that understands
-the -Wno-packed-bitfield-compat flag; remove usage of this flag.
-
-Signed-off-by: Simon Dawson <spdawson@gmail.com>
-
-diff -Nurp a/util/scan/Makefile b/util/scan/Makefile
---- a/util/scan/Makefile	2013-11-24 17:04:10.000000000 +0000
-+++ b/util/scan/Makefile	2013-12-13 09:37:11.967975173 +0000
-@@ -14,7 +14,7 @@ inst_bin = $(binaries)
- 
- removing = atsc_psip_section.c atsc_psip_section.h
- 
--CPPFLAGS += -Wno-packed-bitfield-compat -D__KERNEL_STRICT_NAMES
-+CPPFLAGS += -D__KERNEL_STRICT_NAMES
- 
- .PHONY: all
- 
diff --git a/package/e2fsprogs/Config.in b/package/e2fsprogs/Config.in
index 05fa4e3..d9c03a8 100644
--- a/package/e2fsprogs/Config.in
+++ b/package/e2fsprogs/Config.in
@@ -50,7 +50,7 @@ config BR2_PACKAGE_E2FSPROGS_E2UNDO
 
 config BR2_PACKAGE_E2FSPROGS_E4DEFRAG
 	bool "e4defrag"
-	depends on !BR2_avr32 && !BR2_nios2 # fallocate not implemented
+	depends on !BR2_nios2 # fallocate not implemented
 	depends on !BR2_TOOLCHAIN_USES_UCLIBC # sync_file_range not impl
 
 comment "e4defrag needs an (e)glibc or musl toolchain"
diff --git a/package/ecryptfs-utils/Config.in b/package/ecryptfs-utils/Config.in
index 845717b..bd7b586 100644
--- a/package/ecryptfs-utils/Config.in
+++ b/package/ecryptfs-utils/Config.in
@@ -9,7 +9,7 @@ config BR2_PACKAGE_ECRYPTFS_UTILS
 	select BR2_PACKAGE_GETENT
 	depends on BR2_USE_WCHAR # gettext
 	depends on BR2_USE_MMU # keyutils
-	depends on !BR2_avr32 && !BR2_microblaze # keyutils
+	depends on !BR2_microblaze # keyutils
 	depends on BR2_LARGEFILE # libnss
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libnss -> libnspr
 	depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnss -> libnspr
@@ -31,7 +31,7 @@ config BR2_PACKAGE_ECRYPTFS_UTILS
 	  http://ecryptfs.org
 
 comment "ecryptfs-utils needs a toolchain w/ largefile, threads, wchar, dynamic library"
-	depends on !BR2_avr32 && !BR2_microblaze
+	depends on !BR2_microblaze
 	depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT
 	depends on BR2_USE_MMU
 	depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
diff --git a/package/efl/expedite/Config.in b/package/efl/expedite/Config.in
index 96db266..ddbf020 100644
--- a/package/efl/expedite/Config.in
+++ b/package/efl/expedite/Config.in
@@ -5,7 +5,6 @@ config BR2_PACKAGE_EXPEDITE
 	select BR2_PACKAGE_LIBEET
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libevas
-	depends on !BR2_avr32 # libevas
 	help
 	  Expedite is the official Evas benchmark tool. It can test different
 	  engines, such as X11, XRender, OpenGL (also ES variant), SDL,
@@ -15,4 +14,3 @@ config BR2_PACKAGE_EXPEDITE
 comment "expedite needs a toolchain w/ C++, threads"
 	depends on !BR2_INSTALL_LIBSTDCPP
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32
diff --git a/package/efl/libecore/Config.in b/package/efl/libecore/Config.in
index 3db036c..a9408dc 100644
--- a/package/efl/libecore/Config.in
+++ b/package/efl/libecore/Config.in
@@ -39,10 +39,8 @@ config BR2_PACKAGE_LIBECORE_EVAS
 	bool "libecore Evas support"
 	select BR2_PACKAGE_LIBEVAS
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32 # libevas
 
 comment "evas support needs a toolchain w/ threads"
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32 # libevas
 
 endif # BR2_PACKAGE_LIBECORE
diff --git a/package/efl/libedbus/Config.in b/package/efl/libedbus/Config.in
index b35e46a..7e862d3 100644
--- a/package/efl/libedbus/Config.in
+++ b/package/efl/libedbus/Config.in
@@ -16,7 +16,6 @@ if BR2_PACKAGE_LIBEDBUS
 
 config BR2_PACKAGE_LIBEDBUS_BLUEZ
 	bool "bluez support"
-	depends on !BR2_avr32 # bluez_utils
 	depends on !BR2_STATIC_LIBS # bluez_utils
 	depends on BR2_USE_WCHAR # bluez_utils -> glib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # bluez_utils -> glib2
@@ -25,7 +24,6 @@ config BR2_PACKAGE_LIBEDBUS_BLUEZ
 	  Bluetooth support.
 
 comment "bluez support needs a toolchain w/ wchar, threads, dynamic library"
-	depends on !BR2_avr32
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
 
 config BR2_PACKAGE_LIBEDBUS_CONNMAN
diff --git a/package/efl/libedje/Config.in b/package/efl/libedje/Config.in
index 503919c..b163508 100644
--- a/package/efl/libedje/Config.in
+++ b/package/efl/libedje/Config.in
@@ -1,5 +1,4 @@
 comment "libedje needs a toolchain w/ threads"
-	depends on !BR2_avr32
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
 
 config BR2_PACKAGE_LIBEDJE
@@ -11,7 +10,6 @@ config BR2_PACKAGE_LIBEDJE
 	select BR2_PACKAGE_LIBEMBRYO
 	select BR2_PACKAGE_LIBEVAS
 	select BR2_PACKAGE_LUA
-	depends on !BR2_avr32 # libevas
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libevas
 	help
 	  A graphical layout and animation library for animated
diff --git a/package/efl/libelementary/Config.in b/package/efl/libelementary/Config.in
index 91740af..c193ef1 100644
--- a/package/efl/libelementary/Config.in
+++ b/package/efl/libelementary/Config.in
@@ -1,5 +1,4 @@
 comment "libelementary needs a toolchain w/ threads"
-	depends on !BR2_avr32
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
 
 config BR2_PACKAGE_LIBELEMENTARY
@@ -8,7 +7,6 @@ config BR2_PACKAGE_LIBELEMENTARY
 	select BR2_PACKAGE_LIBEVAS
 	select BR2_PACKAGE_LIBECORE
 	select BR2_PACKAGE_LIBEDJE
-	depends on !BR2_avr32 # libevas
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libevas
 	help
 	  Elementary is a widget toolkit and EFL wrapper and convenience
diff --git a/package/efl/libethumb/Config.in b/package/efl/libethumb/Config.in
index 64574a0..3e9cbde 100644
--- a/package/efl/libethumb/Config.in
+++ b/package/efl/libethumb/Config.in
@@ -1,5 +1,4 @@
 comment "libethumb needs a toolchain w/ threads"
-	depends on !BR2_avr32
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
 
 config BR2_PACKAGE_LIBETHUMB
@@ -9,7 +8,6 @@ config BR2_PACKAGE_LIBETHUMB
 	select BR2_PACKAGE_LIBECORE
 	select BR2_PACKAGE_LIBECORE_EVAS
 	select BR2_PACKAGE_LIBEDJE
-	depends on !BR2_avr32 # libevas
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libevas
 	help
 	  Ethumb is a library for generating thumbnail images of documents.
diff --git a/package/efl/libevas/Config.in b/package/efl/libevas/Config.in
index febc115..1fefe3b 100644
--- a/package/efl/libevas/Config.in
+++ b/package/efl/libevas/Config.in
@@ -1,10 +1,8 @@
 comment "libevas needs a toolchain w/ threads"
-	depends on !BR2_avr32
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
 
 config BR2_PACKAGE_LIBEVAS
 	bool "libevas"
-	depends on !BR2_avr32 # no epoll_create1 or inotify_init1
 	# libevas should normally build without threads, but due to a
 	# build issue when the async preloader is disabled, which is
 	# needed when no threads are available, we don't allow evas to
diff --git a/package/elfutils/Config.in b/package/elfutils/Config.in
index 9f72098..cb9a658 100644
--- a/package/elfutils/Config.in
+++ b/package/elfutils/Config.in
@@ -1,5 +1,4 @@
 comment "elfutils needs a toolchain w/ largefile, wchar, dynamic library"
-	depends on !BR2_avr32
 	depends on !BR2_bfin
 	depends on !BR2_LARGEFILE || !BR2_USE_WCHAR || BR2_STATIC_LIBS
 
@@ -10,9 +9,6 @@ config BR2_PACKAGE_ELFUTILS
 	depends on BR2_LARGEFILE
 	depends on BR2_USE_WCHAR
 	depends on !BR2_STATIC_LIBS
-	# canonicalize_file_name() not available on uClibc 0.9.31, used
-	# only for AVR32
-	depends on !BR2_avr32
 	# build issue caused by the _ prefix used on blackfin for
 	# assembly symbols
 	depends on !BR2_bfin
diff --git a/package/enlightenment/Config.in b/package/enlightenment/Config.in
index 37e9e75..58f8f39 100644
--- a/package/enlightenment/Config.in
+++ b/package/enlightenment/Config.in
@@ -26,7 +26,6 @@ config BR2_PACKAGE_ENLIGHTENMENT
 	# libedbus -> dbus, efl libraries
 	depends on BR2_USE_MMU
 	depends on BR2_PACKAGE_XORG7
-	depends on !BR2_avr32 # libevas
 	# libevas-generic-loaders-svg -> librsvg -> pango -> cairo
 	depends on BR2_ARCH_HAS_ATOMICS
 	help
@@ -42,4 +41,3 @@ comment "enlightenment needs a toolchain w/ wchar, C++, threads"
 	depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP
 	depends on BR2_ARCH_HAS_ATOMICS
-	depends on !BR2_avr32
diff --git a/package/fbv/0001-arch.patch.avr32 b/package/fbv/0001-arch.patch.avr32
deleted file mode 100644
index f57bbac..0000000
--- a/package/fbv/0001-arch.patch.avr32
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -ur fbv-1.0b/fb_display.c fbv-1.0b-avr32/fb_display.c
---- fbv-1.0b/fb_display.c	2004-09-07 14:09:43.000000000 +0200
-+++ fbv-1.0b-avr32/fb_display.c	2006-05-04 13:30:25.000000000 +0200
-@@ -276,9 +276,6 @@
- 	    for(i = 0; i < yc; i++, fbptr += scr_xs * cpp, imptr += pic_xs * cpp)
- 			memcpy(fbptr, imptr, xc * cpp);
- 		
--	if(cpp == 1)
--	    set8map(fh, &map_back);
--	
- 	munmap(fb, scr_xs * scr_ys * cpp);
- }
- 
-@@ -293,17 +290,17 @@
- inline static unsigned short make15color(unsigned char r, unsigned char g, unsigned char b)
- {
-     return (
--	(((r >> 3) & 31) << 10) |
-+	(((r >> 3) & 31)) |
- 	(((g >> 3) & 31) << 5)  |
--	 ((b >> 3) & 31)        );
-+	 ((b >> 3) & 31) << 10);
- }
- 
- inline static unsigned short make16color(unsigned char r, unsigned char g, unsigned char b)
- {
-     return (
--	(((r >> 3) & 31) << 11) |
--	(((g >> 2) & 63) << 5)  |
--	 ((b >> 3) & 31)        );
-+	(((r >> 3) & 31))      |
-+	(((g >> 3) & 31) << 5) |
-+	 ((b >> 3) & 31) << 10);
- }
- 
- void* convertRGB2FB(int fh, unsigned char *rgbbuff, unsigned long count, int bpp, int *cpp)
-@@ -342,9 +339,9 @@
- 	    *cpp = 4;
- 	    i_fbbuff = (unsigned int *) malloc(count * sizeof(unsigned int));
- 	    for(i = 0; i < count ; i++)
--		i_fbbuff[i] = ((rgbbuff[i*3] << 16) & 0xFF0000) |
-+		i_fbbuff[i] = ((rgbbuff[i*3+2] << 16) & 0xFF0000) |
- 			    ((rgbbuff[i*3+1] << 8) & 0xFF00) |
--			    (rgbbuff[i*3+2] & 0xFF);
-+			    (rgbbuff[i*3] & 0xFF);
- 	    fbbuff = (void *) i_fbbuff;
- 	    break;
- 	default:
diff --git a/package/gadgetfs-test/Config.in b/package/gadgetfs-test/Config.in
index 9afb0a2..38358f2 100644
--- a/package/gadgetfs-test/Config.in
+++ b/package/gadgetfs-test/Config.in
@@ -11,7 +11,7 @@ config BR2_PACKAGE_GADGETFS_TEST_USE_AIO
 	select BR2_PACKAGE_LIBAIO
 	# libaio is available only on few architectures
 	depends on \
-		BR2_arm   || BR2_armeb || BR2_avr32  || BR2_i386    || \
+		BR2_arm   || BR2_armeb || BR2_i386   || \
 		BR2_m68k  || BR2_mips  || BR2_mipsel || BR2_powerpc || \
 		BR2_sparc || BR2_x86_64
 	help
diff --git a/package/gpsd/Config.in b/package/gpsd/Config.in
index 6623900..fac8756 100644
--- a/package/gpsd/Config.in
+++ b/package/gpsd/Config.in
@@ -174,9 +174,6 @@ config BR2_PACKAGE_GPSD_NMEA2000
 	bool "NMEA2000"
 	select BR2_PACKAGE_GPSD_NAVCOM
 	select BR2_PACKAGE_GPSD_AIVDM
-	# uClibc 0.9.31, used on AVR32, does not have the necessary
-	# CAN definitions.
-	depends on !BR2_avr32
 	help
 	  NMEA2000/CAN support
 
diff --git a/package/gstreamer/gstreamer/gstreamer.mk b/package/gstreamer/gstreamer/gstreamer.mk
index 62c4935..1dbd66f 100644
--- a/package/gstreamer/gstreamer/gstreamer.mk
+++ b/package/gstreamer/gstreamer/gstreamer.mk
@@ -12,7 +12,7 @@ GSTREAMER_INSTALL_STAGING = YES
 # Checking if unaligned memory access works correctly cannot be done when cross
 # compiling. For the following architectures there is no information available
 # in the configure script.
-ifeq ($(BR2_arc)$(BR2_avr32)$(BR2_xtensa)$(BR2_microblaze),y)
+ifeq ($(BR2_arc)$(BR2_xtensa)$(BR2_microblaze),y)
 GSTREAMER_CONF_ENV = as_cv_unaligned_access=no
 endif
 ifeq ($(BR2_aarch64),y)
diff --git a/package/gstreamer1/gst1-libav/Config.in b/package/gstreamer1/gst1-libav/Config.in
index 2ab786e..4f9c2b8 100644
--- a/package/gstreamer1/gst1-libav/Config.in
+++ b/package/gstreamer1/gst1-libav/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_GST1_LIBAV
 	bool "gst1-libav"
-	depends on !BR2_avr32 # binary too large, relocations don't fit
 	select BR2_PACKAGE_GST1_PLUGINS_BASE
 	help
 	  GStreamer plugin (formerly gst-ffmpeg).
diff --git a/package/gstreamer1/gst1-plugins-bad/Config.in b/package/gstreamer1/gst1-plugins-bad/Config.in
index 75a0ca1..5cadc42 100644
--- a/package/gstreamer1/gst1-plugins-bad/Config.in
+++ b/package/gstreamer1/gst1-plugins-bad/Config.in
@@ -371,7 +371,6 @@ config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB
 
 config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WAYLAND
 	bool "wayland"
-	depends on !BR2_avr32 # wayland
 	depends on !BR2_STATIC_LIBS # wayland
 	depends on BR2_TOOLCHAIN_HAS_THREADS # wayland
 	select BR2_PACKAGE_WAYLAND
diff --git a/package/gstreamer1/gstreamer1/gstreamer1.mk b/package/gstreamer1/gstreamer1/gstreamer1.mk
index a8b9fda..7840284 100644
--- a/package/gstreamer1/gstreamer1/gstreamer1.mk
+++ b/package/gstreamer1/gstreamer1/gstreamer1.mk
@@ -14,7 +14,7 @@ GSTREAMER1_LICENSE = LGPLv2+ LGPLv2.1+
 # Checking if unaligned memory access works correctly cannot be done when cross
 # compiling. For the following architectures there is no information available
 # in the configure script.
-ifeq ($(BR2_arc)$(BR2_avr32)$(BR2_xtensa)$(BR2_microblaze),y)
+ifeq ($(BR2_arc)$(BR2_xtensa)$(BR2_microblaze),y)
 GSTREAMER1_CONF_ENV = as_cv_unaligned_access=no
 endif
 ifeq ($(BR2_aarch64),y)
diff --git a/package/iputils/Config.in b/package/iputils/Config.in
index e9221ad..ac1218f 100644
--- a/package/iputils/Config.in
+++ b/package/iputils/Config.in
@@ -3,7 +3,6 @@ config BR2_PACKAGE_IPUTILS
 	select BR2_PACKAGE_OPENSSL if BR2_INET_IPV6
 	depends on BR2_USE_MMU # fork()
 	# requires dn_comp (only available in since uclibc 0.9.33)
-	depends on !BR2_avr32
 	depends on !BR2_UCLIBC_VERSION_0_9_31
 	help
 	  This package is set of small useful utilities for Linux networking.
diff --git a/package/keyutils/Config.in b/package/keyutils/Config.in
index bae8568..fcb075f 100644
--- a/package/keyutils/Config.in
+++ b/package/keyutils/Config.in
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_KEYUTILS
 	bool "keyutils"
-	depends on !BR2_avr32 && !BR2_microblaze
+	depends on !BR2_microblaze
 	depends on BR2_USE_MMU # fork()
 	help
 	  These tools are used to control the key management system
diff --git a/package/libaio/0002-avr32-support.patch b/package/libaio/0002-avr32-support.patch
deleted file mode 100644
index 57bb1f3..0000000
--- a/package/libaio/0002-avr32-support.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-Add AVR32 support to libaio
-
-Taken from OpenWRT repository.
-
---- a/src/libaio.h
-+++ b/src/libaio.h
-@@ -107,6 +107,10 @@ typedef enum io_iocb_cmd {
- #  else
- #    error "neither mipseb nor mipsel?"
- #  endif
-+#elif defined(__avr32__) /* big endian, 32 bits */
-+#define PADDED(x, y)	unsigned y; x
-+#define PADDEDptr(x, y)	unsigned y; x
-+#define PADDEDul(x, y)	unsigned y; unsigned long x;
- #else
- #error	endian?
- #endif
---- /dev/null
-+++ b/src/syscall-avr32.h
-@@ -0,0 +1,91 @@
-+/*
-+ * Copyright (C) 2007 Atmel Corporation
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#define __NR_io_setup		197
-+#define __NR_io_destroy		198
-+#define __NR_io_getevents	199
-+#define __NR_io_submit		200
-+#define __NR_io_cancel		201
-+
-+#define io_syscall1(type,fname,sname,type1,arg1)			\
-+type fname(type1 arg1)							\
-+{									\
-+	register long __r12 __asm__("r12") = (long)arg1;		\
-+	register long __res_r12 __asm__("r12");				\
-+	register long __scno __asm__("r8") = __NR_##sname;		\
-+	__asm__ __volatile__("scall"					\
-+			     : "=r"(__res_r12)				\
-+			     : "0"(__r12), "r"(__scno)			\
-+			     : "memory");				\
-+	return (type) __res_r12;					\
-+}
-+
-+#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2)		\
-+type fname(type1 arg1, type2 arg2)					\
-+{									\
-+	register long __r12 __asm__("r12") = (long)arg1;		\
-+	register long __r11 __asm__("r11") = (long)arg2;		\
-+	register long __res_r12 __asm__("r12");				\
-+	register long __scno __asm__("r8") = __NR_##sname;		\
-+	__asm__ __volatile__("scall"					\
-+			     : "=r"(__res_r12)				\
-+			     : "0"(__r12), "r"(__r11), "r"(__scno)	\
-+			     : "memory");				\
-+	return (type) __res_r12;					\
-+}
-+
-+#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3)	\
-+type fname(type1 arg1, type2 arg2, type3 arg3)				\
-+{									\
-+	register long __r12 __asm__("r12") = (long)arg1;		\
-+	register long __r11 __asm__("r11") = (long)arg2;		\
-+	register long __r10 __asm__("r10") = (long)arg3;		\
-+	register long __res_r12 __asm__("r12");				\
-+	register long __scno __asm__("r8") = __NR_##sname;		\
-+	__asm__ __volatile__("scall"					\
-+			     : "=r"(__res_r12)				\
-+			     : "0"(__r12), "r"(__r11), "r"(__r10),	\
-+			       "r"(__scno)				\
-+			     : "memory");				\
-+	return (type) __res_r12;					\
-+}
-+
-+#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
-+type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4)		\
-+{									\
-+	register long __r12 __asm__("r12") = (long)arg1;		\
-+	register long __r11 __asm__("r11") = (long)arg2;		\
-+	register long __r10 __asm__("r10") = (long)arg3;		\
-+	register long __r9 __asm__("r9") = (long)arg4;			\
-+	register long __res_r12 __asm__("r12");				\
-+	register long __scno __asm__("r8") = __NR_##sname;		\
-+	__asm__ __volatile__("scall"					\
-+			     : "=r"(__res_r12)				\
-+			     : "0"(__r12), "r"(__r11), "r"(__r10),	\
-+			       "r"(__r9), "r"(__scno)			\
-+			     : "memory");				\
-+	return (type) __res_r12;					\
-+}
-+
-+#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
-+type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5)	\
-+{									\
-+	register long __r12 __asm__("r12") = (long)arg1;		\
-+	register long __r11 __asm__("r11") = (long)arg2;		\
-+	register long __r10 __asm__("r10") = (long)arg3;		\
-+	register long __r9 __asm__("r9") = (long)arg4;			\
-+	register long __r5 __asm__("r5") = (long)arg5;			\
-+	register long __res_r12 __asm__("r12");				\
-+	register long __scno __asm__("r8") = __NR_##sname;		\
-+	__asm__ __volatile__("scall"					\
-+			     : "=r"(__res_r12)				\
-+			     : "0"(__r12), "r"(__r11), "r"(__r10),	\
-+			       "r"(__r9), "r"(__r5), "r"(__scno)	\
-+			     : "memory");				\
-+	return (type) __res_r12;					\
-+}
---- a/src/syscall.h
-+++ b/src/syscall.h
-@@ -32,6 +32,8 @@
- #include "syscall-parisc.h"
- #elif defined(__mips__)
- #include "syscall-mips.h"
-+#elif defined(__avr32__)
-+#include "syscall-avr32.h"
- #else
- #error "add syscall-arch.h"
- #endif
diff --git a/package/libaio/Config.in b/package/libaio/Config.in
index 833009a..622fd55 100644
--- a/package/libaio/Config.in
+++ b/package/libaio/Config.in
@@ -1,7 +1,7 @@
 config BR2_PACKAGE_LIBAIO
 	bool "libaio"
 	depends on \
-		BR2_arm   || BR2_armeb || BR2_avr32  || BR2_i386    || \
+		BR2_arm   || BR2_armeb || BR2_i386   || \
 		BR2_m68k  || BR2_mips  || BR2_mipsel || BR2_powerpc || \
 		BR2_sparc || BR2_x86_64
 	help
diff --git a/package/libcap-ng/Config.in b/package/libcap-ng/Config.in
index da5b447..d1663cd 100644
--- a/package/libcap-ng/Config.in
+++ b/package/libcap-ng/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_LIBCAP_NG
 	bool "libcap-ng"
-	depends on !BR2_avr32 # lacks TLS
 	help
 	  The libcap-ng library is intended to make programming with
 	  posix capabilities much easier than the traditional libcap
diff --git a/package/libcec/0001-no-psabi-warning.patch b/package/libcec/0001-no-psabi-warning.patch
deleted file mode 100644
index bd6557e..0000000
--- a/package/libcec/0001-no-psabi-warning.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Do not use -Wno-psabi warning, not available on old g++
-
-AVR32 uses a very old g++ version, which does not implement the
--Wno-psabi warning flag. This patch simply removes this warning flag
-from the libcec build. It can be dropped if only gcc 4.5+ versions are
-supported in Buildroot.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
-Index: b/configure.ac
-===================================================================
---- a/configure.ac
-+++ b/configure.ac
-@@ -130,7 +130,7 @@
- use_udev="no"
- use_adapter_detection="yes"
- use_lockdev="no"
--SUPPRESS_MANGLING_WARNINGS=" -Wno-psabi"
-+SUPPRESS_MANGLING_WARNINGS=""
- case "${host}" in
-   *-*-linux*)
-     ## search for udev if pkg-config was found
diff --git a/package/libev/Config.in b/package/libev/Config.in
index 3d10cd7..db8d263 100644
--- a/package/libev/Config.in
+++ b/package/libev/Config.in
@@ -1,7 +1,7 @@
 config BR2_PACKAGE_LIBEV
 	bool "libev"
 	# needs memory fences
-	depends on !(BR2_avr32 || BR2_bfin)
+	depends on !BR2_bfin
 	help
 	  Userspace library for handling asynchronous notifications
 
diff --git a/package/libmad/0002-optimization.patch.avr32 b/package/libmad/0002-optimization.patch.avr32
deleted file mode 100644
index b74eea3..0000000
--- a/package/libmad/0002-optimization.patch.avr32
+++ /dev/null
@@ -1,2922 +0,0 @@
-diff --git a/bit.c b/bit.c
-index c2bfb24..262ce3a 100644
---- a/bit.c
-+++ b/bit.c
-@@ -25,12 +25,6 @@
- 
- # include "global.h"
- 
--# ifdef HAVE_LIMITS_H
--#  include <limits.h>
--# else
--#  define CHAR_BIT  8
--# endif
--
- # include "bit.h"
- 
- /*
-@@ -81,6 +75,8 @@ unsigned short const crc_table[256] = {
- 
- # define CRC_POLY  0x8005
- 
-+#ifndef FPM_AVR32
-+
- /*
-  * NAME:	bit->init()
-  * DESCRIPTION:	initialize bit pointer struct
-@@ -190,6 +186,8 @@ void mad_bit_write(struct mad_bitptr *bitptr, unsigned int len,
- }
- # endif
- 
-+#endif
-+
- /*
-  * NAME:	bit->crc()
-  * DESCRIPTION:	compute CRC-check word
-diff --git a/bit.h b/bit.h
-index 5a51570..70f550a 100644
---- a/bit.h
-+++ b/bit.h
-@@ -22,6 +22,92 @@
- # ifndef LIBMAD_BIT_H
- # define LIBMAD_BIT_H
- 
-+# ifdef HAVE_LIMITS_H
-+#  include <limits.h>
-+# else
-+#  define CHAR_BIT  8
-+# endif
-+
-+#ifdef FPM_AVR32
-+
-+struct mad_bitptr {
-+  unsigned char const *byte;
-+  unsigned int read_bytes;
-+};
-+
-+/*
-+ * NAME:	bit->init()
-+ * DESCRIPTION:	initialize bit pointer struct
-+ */
-+static void mad_bit_init(struct mad_bitptr *bitptr, unsigned char const *byte)
-+{
-+  bitptr->byte  = byte;
-+  bitptr->read_bytes  = 0;
-+}
-+
-+/*
-+ * NAME:	bit->length()
-+ * DESCRIPTION:	return number of bits between start and end points
-+ */
-+static unsigned int mad_bit_length(struct mad_bitptr const *begin,
-+			    struct mad_bitptr const *end)
-+{
-+  return (end->read_bytes - begin->read_bytes) +
-+    8 * (end->byte - begin->byte);
-+}
-+
-+/*
-+ * NAME:	bit->nextbyte()
-+ * DESCRIPTION:	return pointer to next unprocessed byte
-+ */
-+static unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *bitptr)
-+{
-+  return bitptr->byte + ((bitptr->read_bytes + 0x7) >> 3);
-+}
-+
-+/*
-+ * NAME:	bit->skip()
-+ * DESCRIPTION:	advance bit pointer
-+ */
-+static void mad_bit_skip(struct mad_bitptr *bitptr, unsigned int len)
-+{
-+  bitptr->read_bytes += len;
-+  bitptr->byte += (bitptr->read_bytes >> 3);
-+  bitptr->read_bytes &=  0x7;
-+}
-+
-+/*
-+ * NAME:	bit->read()
-+ * DESCRIPTION:	read an arbitrary number of bits and return their UIMSBF value
-+ */
-+static unsigned long mad_bit_read(struct mad_bitptr *bitptr, unsigned int len)
-+{
-+  register unsigned long value;
-+
-+  if (!len)
-+    return 0;
-+
-+  value = *(unsigned int *)bitptr->byte;
-+
-+  value <<= bitptr->read_bytes;
-+  value >>= (32 - len);
-+
-+  bitptr->read_bytes += len;
-+  bitptr->byte += (bitptr->read_bytes >> 3);
-+  bitptr->read_bytes &=  0x7;
-+
-+  return value;
-+}
-+
-+# define mad_bit_finish(bitptr)		/* nothing */
-+
-+static unsigned long  mad_bit_bitsleft(struct mad_bitptr *bitptr)
-+{
-+  return (8 - (bitptr)->read_bytes);
-+}
-+
-+#else /* #ifdef FPM_AVR32 */
-+
- struct mad_bitptr {
-   unsigned char const *byte;
-   unsigned short cache;
-@@ -42,6 +128,8 @@ void mad_bit_skip(struct mad_bitptr *, unsigned int);
- unsigned long mad_bit_read(struct mad_bitptr *, unsigned int);
- void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long);
- 
-+#endif
-+
- unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short);
- 
- # endif
-diff --git a/configure.ac b/configure.ac
-index 9b79399..063cb9b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -274,13 +274,14 @@ fi
- AC_MSG_CHECKING(for architecture-specific fixed-point math routines)
- AC_ARG_ENABLE(fpm, AC_HELP_STRING([--enable-fpm=ARCH],
- 		   [use ARCH-specific fixed-point math routines
--		    (one of: intel, arm, mips, sparc, ppc, 64bit, default)]),
-+		    (one of: intel, arm, avr32, mips, sparc, ppc, 64bit, default)]),
- [
-     case "$enableval" in
- 	yes)                             ;;
- 	no|default|approx) FPM="DEFAULT" ;;
- 	intel|i?86)        FPM="INTEL"   ;;
- 	arm)               FPM="ARM"     ;;
-+	avr32)             FPM="AVR32"   ;;
- 	mips)              FPM="MIPS"    ;;
- 	sparc)             FPM="SPARC"   ;;
- 	ppc|powerpc)       FPM="PPC"     ;;
-@@ -298,6 +299,7 @@ then
-     case "$host" in
- 	i?86-*)     FPM="INTEL"  ;;
- 	arm*-*)     FPM="ARM"    ;;
-+	avr32*-*)   FPM="AVR32"  ;;
- 	mips*-*)    FPM="MIPS"   ;;
- 	sparc*-*)   FPM="SPARC"  ;;
- 	powerpc*-*) FPM="PPC"    ;;
-@@ -343,6 +345,11 @@ then
- 	    ASO="$ASO -DASO_IMDCT"
- 	    ASO_OBJS="imdct_l_arm.lo"
- 	    ;;
-+	avr32*-*)
-+	    ASO="$ASO -DASO_INTERLEAVE2"
-+	    ASO="$ASO -DASO_ZEROCHECK"
-+	    ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo"
-+	    ;;
- 	mips*-*)
- 	    ASO="$ASO -DASO_INTERLEAVE2"
- 	    ASO="$ASO -DASO_ZEROCHECK"
-diff --git a/configure b/configure
-index ee421cc..7a9f0c8 100755
---- a/configure
-+++ b/configure
-@@ -1048,7 +1048,7 @@ Optional Features:
-   --enable-speed          optimize for speed over accuracy
-   --enable-accuracy       optimize for accuracy over speed
-   --enable-fpm=ARCH       use ARCH-specific fixed-point math routines (one of:
--                          intel, arm, mips, sparc, ppc, 64bit, default)
-+                          intel, arm, avr32, mips, sparc, ppc, 64bit, default)
-   --enable-sso            use subband synthesis optimization
-   --disable-aso           disable architecture-specific optimizations
-   --enable-strict-iso     use strict ISO/IEC interpretations
-@@ -21477,6 +21477,7 @@ if test "${enable_fpm+set}" = set; then
- 	no|default|approx) FPM="DEFAULT" ;;
- 	intel|i?86)        FPM="INTEL"   ;;
- 	arm)               FPM="ARM"     ;;
-+	avr32)             FPM="AVR32"   ;;
- 	mips)              FPM="MIPS"    ;;
- 	sparc)             FPM="SPARC"   ;;
- 	ppc|powerpc)       FPM="PPC"     ;;
-@@ -21498,6 +21499,7 @@ then
-     case "$host" in
- 	i?86-*)     FPM="INTEL"  ;;
- 	arm*-*)     FPM="ARM"    ;;
-+	avr32*-*)   FPM="AVR32"  ;;
- 	mips*-*)    FPM="MIPS"   ;;
- 	sparc*-*)   FPM="SPARC"  ;;
- 	powerpc*-*) FPM="PPC"    ;;
-@@ -21554,6 +21556,11 @@ then
- 	    ASO="$ASO -DASO_IMDCT"
- 	    ASO_OBJS="imdct_l_arm.lo"
- 	    ;;
-+	avr32*-*)
-+	    ASO="$ASO -DASO_INTERLEAVE2"
-+	    ASO="$ASO -DASO_ZEROCHECK"
-+	    ASO_OBJS="dct32_avr32.lo synth_avr32.lo imdct_avr32.lo"
-+	    ;;
- 	mips*-*)
- 	    ASO="$ASO -DASO_INTERLEAVE2"
- 	    ASO="$ASO -DASO_ZEROCHECK"
-diff --git a/dct32_avr32.S b/dct32_avr32.S
-new file mode 100644
-index 0000000..7513340
---- /dev/null
-+++ b/dct32_avr32.S
-@@ -0,0 +1,780 @@
-+/*
-+   Optimized 32-point Discrete Cosine Transform (DCT)
-+   Copyright 2003-2006 Atmel Corporation.
-+
-+   Written by Ronny Pedersen, Atmel Norway
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program; if not, write to the Free Software
-+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+
-+#define	SHIFT	12
-+#define MAD_F_SCALEBITS 28
-+#define SLOTS 8
-+
-+#define MAD_F(x)	((x + (1 << 15)) >> 16)
-+
-+#  define costab1	MAD_F(0x7fd8878e)
-+#  define costab2	MAD_F(0x7f62368f)
-+#  define costab3	MAD_F(0x7e9d55fc)
-+#  define costab4	MAD_F(0x7d8a5f40)
-+#  define costab5	MAD_F(0x7c29fbee)
-+#  define costab6	MAD_F(0x7a7d055b)
-+#  define costab7	MAD_F(0x78848414)
-+#  define costab8	MAD_F(0x7641af3d)
-+#  define costab9	MAD_F(0x73b5ebd1)
-+#  define costab10	MAD_F(0x70e2cbc6)
-+#  define costab11	MAD_F(0x6dca0d14)
-+#  define costab12	MAD_F(0x6a6d98a4)
-+#  define costab13	MAD_F(0x66cf8120)
-+#  define costab14	MAD_F(0x62f201ac)
-+#  define costab15	MAD_F(0x5ed77c8a)
-+#  define costab16	MAD_F(0x5a82799a)
-+#  define costab17	MAD_F(0x55f5a4d2)
-+#  define costab18	MAD_F(0x5133cc94)
-+#  define costab19	MAD_F(0x4c3fdff4)
-+#  define costab20	MAD_F(0x471cece7)
-+#  define costab21	MAD_F(0x41ce1e65)
-+#  define costab22	MAD_F(0x3c56ba70)
-+#  define costab23	MAD_F(0x36ba2014)
-+#  define costab24	MAD_F(0x30fbc54d)
-+#  define costab25	MAD_F(0x2b1f34eb)
-+#  define costab26	MAD_F(0x25280c5e)
-+#  define costab27	MAD_F(0x1f19f97b)
-+#  define costab28	MAD_F(0x18f8b83c)
-+#  define costab29	MAD_F(0x12c8106f)
-+#  define costab30	MAD_F(0x0c8bd35e)
-+#  define costab31	MAD_F(0x0647d97c)
-+
-+
-+	.macro	butterfly2_in out1, out2, out3, out4, in, idx_in1, idx_in2, idx_in3, idx_in4, coeff1, coeff2, tmplo, tmphi
-+	mov	\tmplo, \coeff1
-+	ld.w	\out1, \in[\idx_in1 * 4]
-+	ld.w	\out2, \in[\idx_in2 * 4]
-+	ld.w	\out3, \in[\idx_in3 * 4]
-+	ld.w	\out4, \in[\idx_in4 * 4]
-+	sub	\tmphi, \out1, \out2
-+	add	\out1, \out2
-+	mulsatrndwh.w	\out2, \tmphi, \tmplo:b
-+
-+	sub	\tmphi, \out3, \out4
-+	mov	\tmplo, \coeff2
-+	add	\out3, \out4
-+	mulsatrndwh.w	\out4, \tmphi, \tmplo:b
-+	.endm
-+
-+	.macro	butterfly2	in1, in2, in3, in4, coeff1, tmplo, tmphi, tmp
-+	mov	\tmp, \coeff1
-+	sub	\tmphi, \in1, \in2
-+	add	\in1, \in2
-+	mulsatrndwh.w	\in2, \tmphi, \tmp:b
-+
-+	sub	\tmphi, \in3, \in4
-+	add	\in3, \in4
-+	mulsatrndwh.w	\in4, \tmphi, \tmp:b
-+	.endm
-+
-+	.macro	butterfly4	in1, in2, in3, in4, in5, in6, in7, in8, coeff1, tmplo, tmphi, tmp
-+	mov	\tmp, \coeff1
-+	sub	\tmphi, \in1, \in2
-+	add	\in1, \in2
-+	mulsatrndwh.w	\in2, \tmphi, \tmp:b
-+
-+	sub	\tmphi, \in3, \in4
-+	add	\in3, \in4
-+	mulsatrndwh.w	\in4, \tmphi, \tmp:b
-+
-+	sub	\tmphi, \in5, \in6
-+	add	\in5, \in6
-+	mulsatrndwh.w	\in6, \tmphi, \tmp:b
-+
-+	sub	\tmphi, \in7, \in8
-+	add	\in7, \in8
-+	mulsatrndwh.w	\in8, \tmphi, \tmp:b
-+	.endm
-+
-+	.macro	scale	reg
-+	.endm
-+
-+/*void dct32(	mad_fixed_t const in[32], unsigned int slot,
-+		mad_fixed_t lo[16][8], mad_fixed_t hi[16][8]) */
-+
-+	.global	dct32_avr32
-+dct32_avr32:
-+	stm	--sp, r0-r7, r9-r11, lr
-+
-+	sub	sp, 32*4
-+
-+/*	t0   = in[0]  + in[31];  t16  = MUL(in[0]  - in[31], costab1);
-+	t1   = in[15] + in[16];  t17  = MUL(in[15] - in[16], costab31); */
-+	butterfly2_in	r4/*t0*/, r5/*t16*/, r6/*t1*/, r7/*t17*/, r12, 0, 31, 15, 16, costab1, costab31, r10, r11
-+
-+/*	t41  = t16 + t17;
-+	t59  = MUL(t16 - t17, costab2);
-+	t33  =	 t0  + t1;
-+	t50  = MUL(t0  - t1,  costab2);*/
-+	butterfly2	r5/*t41*/, r7/*t59*/, r4/*t33*/, r6/*t50*/, costab2, r10, r11, lr
-+
-+/*	t2   = in[7]  + in[24];  t18  = MUL(in[7]  - in[24], costab15);
-+	t3   = in[8]  + in[23];  t19  = MUL(in[8]  - in[23], costab17); */
-+	butterfly2_in	r0/*t2*/, r1/*t18*/, r2/*t3*/, r3/*t19*/, r12, 7, 24, 8, 23, costab15, costab17, r10, r11
-+
-+/*	t42  = t18 + t19;
-+	t60  = MUL(t18 - t19, costab30);
-+	t34  = t2  + t3;
-+	t51  = MUL(t2  - t3,  costab30); */
-+	butterfly2	r1/*t42*/, r3/*t60*/, r0/*t34*/, r2/*t51*/, costab30, r10, r11, lr
-+
-+/*	t73  = t41 + t42;  t94  = MUL(t41 - t42, costab4);
-+	t83  = t59 + t60;  t106 = MUL(t59 - t60, costab4); */
-+
-+
-+/*	t69  = t33 + t34;  t89  = MUL(t33 - t34, costab4);
-+	t78  = t50 + t51;  t100 = MUL(t50 - t51, costab4); */
-+	butterfly4	r5/*t73*/, r1/*t94*/, r7/*t83*/, r3/*t106*/,r4/*t69*/, r0/*t89*/, r6/*t78*/, r2/*t100*/, costab4, r10, r11, lr
-+
-+/*	Store away the computed butterflies:
-+	sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89 */
-+	stm	sp, r0-r7
-+
-+
-+/*	t4   = in[3]  + in[28];  t20  = MUL(in[3]  - in[28], costab7);
-+	t5   = in[12] + in[19];  t21  = MUL(in[12] - in[19], costab25); */
-+	butterfly2_in	r4/*t4*/, r5/*t20*/, r6/*t5*/, r7/*t21*/, r12, 3, 28, 12, 19, costab7, costab25, r10, r11
-+
-+/*	t43  = t20 + t21;
-+	t61  = MUL(t20 - t21, costab14);
-+	t35  = t4  + t5;
-+	t52  = MUL(t4  - t5,  costab14); */
-+	butterfly2	r5/*t43*/, r7/*t61*/, r4/*t35*/, r6/*t52*/, costab14, r10, r11, lr
-+
-+/*	t6   = in[4]  + in[27];  t22  = MUL(in[4]  - in[27], costab9);
-+	t7   = in[11] + in[20];  t23  = MUL(in[11] - in[20], costab23); */
-+	butterfly2_in	r0/*t6*/, r1/*t22*/, r2/*t7*/, r3/*t23*/, r12, 4, 27, 11, 20, costab9, costab23, r10, r11
-+
-+/*	t44  = t22 + t23;
-+	t62  = MUL(t22 - t23, costab18);
-+	t36  = t6  + t7;
-+	t53  = MUL(t6  - t7,  costab18); */
-+	butterfly2	r1/*t44*/, r3/*t62*/, r0/*t36*/, r2/*t53*/, costab18, r10, r11, lr
-+
-+/*	t74  = t43 + t44;  t95  = MUL(t43 - t44, costab28);
-+	t84  = t61 + t62;  t107 = MUL(t61 - t62, costab28); */
-+
-+/*	t70  = t35 + t36;  t90  = MUL(t35 - t36, costab28);
-+	t79  = t52 + t53;  t101 = MUL(t52 - t53, costab28); */
-+	butterfly4	r5/*t74*/, r1/*t95*/, r7/*t84*/, r3/*t107*/, r4/*t70*/, r0/*t90*/, r6/*t79*/, r2/*t101*/, costab28, r10, r11, lr
-+
-+/*	Store away the computed butterflies:
-+	sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90 */
-+	sub	r10, sp, -8*4
-+	stm	r10, r0-r7
-+
-+
-+/*	t8   = in[1]  + in[30];  t24  = MUL(in[1]  - in[30], costab3);
-+	t9   = in[14] + in[17];  t25  = MUL(in[14] - in[17], costab29); */
-+	butterfly2_in	r4/*t8*/, r5/*t24*/, r6/*t9*/, r7/*t25*/, r12, 1, 30, 14, 17, costab3, costab29, r10, r11
-+
-+
-+/*	t45  = t24 + t25;
-+	t63  = MUL(t24 - t25, costab6);
-+	t37  = t8  + t9;
-+	t54  = MUL(t8  - t9,  costab6); */
-+	butterfly2	r5/*t45*/, r7/*t63*/, r4/*t37*/, r6/*t54*/, costab6, r10, r11, lr
-+
-+/*	t10  = in[6]  + in[25];  t26  = MUL(in[6]  - in[25], costab13);
-+	t11  = in[9]  + in[22];  t27  = MUL(in[9]  - in[22], costab19); */
-+	butterfly2_in	r0/*t10*/, r1/*t26*/, r2/*t11*/, r3/*t27*/, r12, 6, 25, 9, 22, costab13, costab19, r10, r11
-+
-+/*	t46  = t26 + t27;
-+	t64  = MUL(t26 - t27, costab26);
-+	t38  = t10 + t11;
-+	t55  = MUL(t10 - t11, costab26); */
-+	butterfly2	r1/*t46*/, r3/*t64*/, r0/*t38*/, r2/*t55*/, costab26, r10, r11, lr
-+
-+/*	t75  = t45 + t46;  t96  = MUL(t45 - t46, costab12);
-+	t85  = t63 + t64;  t108 = MUL(t63 - t64, costab12); */
-+
-+/*	t71  = t37 + t38;  t91  = MUL(t37 - t38, costab12);
-+	t80  = t54 + t55;  t102 = MUL(t54 - t55, costab12); */
-+	butterfly4	r5/*t75*/, r1/*t96*/, r7/*t85*/, r3/*t108*/, r4/*t71*/, r0/*t91*/, r6/*t80*/, r2/*t102*/, costab12, r10, r11, lr
-+
-+/*	Store away the computed butterflies:
-+	sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91 */
-+	sub	r10, sp, -16*4
-+	stm	r10, r0-r7
-+
-+/*	t12  = in[2]  + in[29];  t28  = MUL(in[2]  - in[29], costab5);
-+	t13  = in[13] + in[18];  t29  = MUL(in[13] - in[18], costab27); */
-+	butterfly2_in	r4/*t12*/, r5/*t28*/, r6/*t13*/, r7/*t29*/, r12, 2, 29, 13, 18, costab5, costab27, r10, r11
-+
-+/*	t47  = t28 + t29;
-+	t65  = MUL(t28 - t29, costab10);
-+	t39  = t12 + t13;
-+	t56  = MUL(t12 - t13, costab10); */
-+	butterfly2	r5/*t47*/, r7/*t65*/, r4/*t39*/, r6/*t56*/, costab10, r10, r11, lr
-+
-+/*	t14  = in[5]  + in[26];  t30  = MUL(in[5]  - in[26], costab11);
-+	t15  = in[10] + in[21];  t31  = MUL(in[10] - in[21], costab21);*/
-+	butterfly2_in	r0/*t14*/, r1/*t30*/, r2/*t15*/, r3/*t31*/, r12, 5, 26, 10, 21, costab11, costab21, r10, r11
-+
-+/*	t48  = t30 + t31;
-+	t66  = MUL(t30 - t31, costab22);
-+	t40  = t14 + t15;
-+	t57  = MUL(t14 - t15, costab22);*/
-+	butterfly2	r1/*t48*/, r3/*t66*/, r0/*t40*/, r2/*t57*/, costab22, r10, r11, lr
-+
-+/*	t76  = t47 + t48;  t97  = MUL(t47 - t48, costab20);
-+	t86  = t65 + t66;  t109 = MUL(t65 - t66, costab20);*/
-+
-+/*	t72  = t39 + t40;  t92  = MUL(t39 - t40, costab20);
-+	t81  = t56 + t57;  t103 = MUL(t56 - t57, costab20);*/
-+	butterfly4	r5/*t76*/, r1/*t97*/, r7/*t86*/, r3/*t109*/,r4/*t72*/, r0/*t92*/, r6/*t81*/, r2/*t103*/, costab20, r10, r11, lr
-+
-+/*	Store away the computed butterflies:
-+	sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 */
-+	sub	r10, sp, -24*4
-+	stm	r10, r0-r7
-+
-+/*      We now have the following on the stack:
-+
-+	sp[0-7] = t83, t78, t73, t69, t106, t100, t94, t89
-+	sp[8-15] = t84, t79, t74, t70, t107, t101, t95, t90
-+	sp[16-23] = t85, t80, t75, t71, t108, t102, t96, t91
-+	sp[24-31] = t86, t81, t76, t72, t109, t103, t97, t92 	*/
-+
-+/*	Load 	{r0...r7} = { t72, t76, t71, t75, t70, t74, t69, t73 } */
-+	ld.d	r6, sp[2*4]
-+	ld.d	r4, sp[10*4]
-+	ld.d	r2, sp[18*4]
-+	ld.d	r0, sp[26*4]
-+
-+
-+/*	t113 = t69  + t70;
-+	t141 = MUL(t69 - t70, costab8);
-+
-+	t115 = t73  + t74;
-+	t144 = MUL(t73 - t74, costab8); */
-+	butterfly2	r6/*t113*/, r4/*t141*/, r7/*t115*/, r5/*t144*/, costab8, r10, r11, lr
-+
-+/*	t114 = t71  + t72;
-+	t142 = MUL(t71 - t72, costab24);
-+
-+	t116 = t75  + t76;
-+	t145 = MUL(t75 - t76, costab24); */
-+	butterfly2	r2/*t114*/, r0/*t142*/, r3/*t116*/, r1/*t145*/, costab24, r10, r11, lr
-+
-+
-+/*
-+	t191 = t113 + t114;
-+	t192 = MUL(t113 - t114, costab16)
-+
-+	t32  = t115 + t116;
-+	t177 = MUL(t115 - t116, costab16) ;
-+
-+	t143 = t141 + t142;
-+	t190 = MUL(t141 - t142, costab16) ;
-+
-+	t146 = t144 + t145;
-+	t184 = MUL(t144 - t145, costab16) ; */
-+	butterfly4	r6/*t191*/, r2/*t192*/, r7/*t32*/, r3/*t177*/, r4/*t143*/, r0/*190*/, r5/*t146*/, r1/*t184*/, costab16, r10, r11, lr
-+
-+/*	Store away the computed butterflies:
-+	sp[2-3] = t32, t191
-+	sp[10-11] = t146, t143
-+	sp[18-19] = t177, t192
-+	sp[26-27] = t184, t190 */
-+	st.d	sp[2*4] , r6
-+	st.d	sp[10*4], r4
-+	st.d	sp[18*4], r2
-+	st.d	sp[26*4], r0
-+
-+/*	Load 	{r0...r7} = { t81, t86, t80, t85, t79, t84, t78, t83 } */
-+	ld.d	r6, sp[0*4]
-+	ld.d	r4, sp[8*4]
-+	ld.d	r2, sp[16*4]
-+	ld.d	r0, sp[24*4]
-+
-+
-+/*	t118 = t78  + t79;
-+	t148 = MUL(t78 - t79, costab8);
-+
-+	t121 = t83  + t84;
-+	t152 = MUL(t83 - t84, costab8); */
-+	butterfly2	r6/*t118*/, r4/*t148*/, r7/*t121*/, r5/*t152*/, costab8, r10, r11, lr
-+
-+/*	t119 = t80  + t81;
-+	t149 = MUL(t80 - t81, costab24);
-+
-+	t122 = t85  + t86;
-+	t153 = MUL(t85 - t86, costab24); */
-+	butterfly2	r2/*t119*/, r0/*t149*/, r3/*t122*/, r1/*t153*/, costab24, r10, r11, lr
-+
-+
-+
-+/*	t58  = t118 + t119;
-+	t178 = MUL(t118 - t119, costab16) ;
-+
-+	t67  = t121 + t122;
-+	t179 = MUL(t121 - t122, costab16) ;
-+
-+	t150 = t148 + t149;
-+	t185 = MUL(t148 - t149, costab16) ;
-+
-+	t154 = t152 + t153;
-+	t186 = MUL(t152 - t153, costab16) ; */
-+	butterfly4	r6/*t58*/, r2/*t178*/, r7/*t67*/, r3/*t179*/, r4/*t150*/, r0/*185*/, r5/*t154*/, r1/*t186*/, costab16, r10, r11, lr
-+
-+/*	Store away the computed butterflies:
-+	sp[0-1] = t67, t58
-+	sp[8-9] = t154, t150
-+	sp[16-17] = t179, t178
-+	sp[24-25] = t186, t185 */
-+	st.d	sp[0*4] , r6
-+	st.d	sp[8*4], r4
-+	st.d	sp[16*4], r2
-+	st.d	sp[24*4], r0
-+
-+/*	Load 	{r0...r7} = { t92, t97, t91, t96, t90, t95, t89, t94 } */
-+	ld.d	r6, sp[6*4]
-+	ld.d	r4, sp[14*4]
-+	ld.d	r2, sp[22*4]
-+	ld.d	r0, sp[30*4]
-+
-+
-+/*	t125 = t89  + t90;
-+	t157 = MUL(t89 - t90, costab8);
-+
-+	t128 = t94  + t95;
-+	t161 = MUL(t94 - t95, costab8); */
-+	butterfly2	r6/*t125*/, r4/*t157*/, r7/*t128*/, r5/*t161*/, costab8, r10, r11, lr
-+
-+/*	t126 = t91  + t92;
-+	t158 = MUL(t91 - t92, costab24);
-+
-+	t129 = t96  + t97;
-+	t162 = MUL(t96 - t97, costab24); */
-+	butterfly2	r2/*t126*/, r0/*t158*/, r3/*t129*/, r1/*t162*/, costab24, r10, r11, lr
-+
-+
-+/*
-+	t93  = t125 + t126;
-+	t180 = MUL(t125 - t126, costab16) ;
-+
-+	t98  = t128 + t129;
-+	t181 = MUL(t128 - t129, costab16) ;
-+
-+	t159 = t157 + t158;
-+	t187 = MUL(t157 - t158, costab16) ;
-+
-+	t163 = t161 + t162;
-+	t188 = MUL(t161 - t162, costab16) ; */
-+	butterfly4	r6/*t93*/, r2/*t180*/, r7/*t98*/, r3/*t181*/, r4/*t159*/, r0/*187*/, r5/*t163*/, r1/*t188*/, costab16, r10, r11, lr
-+
-+
-+/*	Store away the computed butterflies:
-+	sp[6-7] = t98, t93
-+	sp[14-15] = t163, t159
-+	sp[22-23] = t181, t180
-+	sp[30-31] = t188, t187 */
-+	st.d	sp[6*4] , r6
-+	st.d	sp[14*4], r4
-+	st.d	sp[22*4], r2
-+	st.d	sp[30*4], r0
-+
-+/*	Load 	{r0...r7} = { t103, t109, t102, t108, t101, t107, t100, t106 } */
-+	ld.d	r6, sp[4*4]
-+	ld.d	r4, sp[12*4]
-+	ld.d	r2, sp[20*4]
-+	ld.d	r0, sp[28*4]
-+
-+
-+
-+/*	t132 = t100 + t101;
-+	t166 = MUL(t100 - t101, costab8);
-+
-+	t136 = t106 + t107;
-+	t171 = MUL(t106 - t107, costab8); */
-+	butterfly2	r6/*t132*/, r4/*t166*/, r7/*t136*/, r5/*t171*/, costab8, r10, r11, lr
-+
-+/*	t133 = t102 + t103;
-+	t167 = MUL(t102 - t103, costab24);
-+
-+	t137 = t108 + t109;
-+	t172 = MUL(t108 - t109, costab24);*/
-+	butterfly2	r2/*t133*/, r0/*t167*/, r3/*t137*/, r1/*t172*/, costab24, r10, r11, lr
-+
-+
-+/*	t104 = t132 + t133;
-+	t182 = MUL(t132 - t133, costab16) ;
-+
-+	t110 = t136 + t137;
-+	t183 = MUL(t136 - t137, costab16) ;
-+
-+	t168 = t166 + t167;
-+	t189 = MUL(t166 - t167, costab16) ;
-+
-+	t173 = t171 + t172;
-+	t208 = MUL(t171 - t172, costab16) ; */
-+	butterfly4	r6/*t104*/, r2/*t182*/, r7/*t110*/, r3/*t183*/, r4/*t168*/, r0/*189*/, r5/*t173*/, r1/*t208*/, costab16, r10, r11, lr
-+
-+/*	Store away the computed butterflies:
-+	sp[4-5] = t110, t104
-+	sp[12-13] = t173, t168
-+	sp[20-21] = t183, t182
-+	sp[28-29] = t208, t189 */
-+	st.d	sp[4*4] , r6
-+	st.d	sp[12*4], r4
-+	st.d	sp[20*4], r2
-+	st.d	sp[28*4], r0
-+
-+/*	Now we have the following stack
-+
-+	sp[0-7]   = t67,  t58 , t32,  t191, t110, t104, t98,  t93
-+	sp[8-15]  = t154, t150,	t146, t143, t173, t168,	t163, t159
-+	sp[16-23] = t179, t178,	t177, t192, t183, t182,	t181, t180
-+	sp[24-31] = t186, t185, t184, t190, t208, t189,	t188, t187
-+*/
-+
-+	/* Get slot, lo and hi from stack */
-+	lddsp	lr, sp[32*4 + 4] /*slot*/
-+	lddsp	r12, sp[32*4 + 8] /*lo*/
-+	lddsp	r11, sp[32*4 + 12] /*hi*/
-+
-+	add	r12, r12, lr << 2
-+	add	r11, r11, lr << 2
-+
-+
-+/*	t49  = -(t67 * 2) + t32;
-+	 hi[14][slot] = SHIFT(t32);
-+	t87  = -(t110 * 2) + t67;
-+	t138 = -(t173 * 2) + t110;
-+	t203 = -(t208 * 2) + t173; */
-+
-+	lddsp	r0/*t67*/, sp[0]
-+	lddsp	r1/*t32*/, sp[2*4]
-+	lddsp	r2/*t110*/, sp[4*4]
-+	lddsp	r3/*t173*/, sp[12*4]
-+	lddsp	r5/*t208*/, sp[28*4]
-+
-+	sub	r4/*t49*/, r1, r0 << 1
-+	scale	r1
-+	sub	r0/*t87*/, r0, r2 << 1
-+	st.w	r11[14*SLOTS*4], r1
-+	sub	r2/*t138*/, r2, r3 << 1
-+	sub	r1/*t203*/, r3, r5 << 1
-+
-+/*      Live:	r0 = t87, r1= t203, r2= t138, r4 = t49
-+	Free:	r3, r5, r6, r7, r8, r9, r10, lr  */
-+
-+/*	t68  = (t98 * 2) + t49;
-+	hi[12][slot] = SHIFT(-t49);
-+	t130 = -(t163 * 2) + t98;
-+	t201 = -(t188 * 2) + t163;
-+	t200 = -(t186 * 2) + t154;
-+	t111 = (t154 * 2) + t87;
-+	t77  = -(-(t87 * 2) - t68);
-+	t88  = (t146 * 2) + t77;
-+	t199 = -(t184 * 2) + t146;
-+	hi[ 8][slot] = SHIFT(-t77);
-+	hi[10][slot] = SHIFT(t68);*/
-+	lddsp	r3/*t98*/, sp[6*4]
-+	lddsp	r5/*t163*/, sp[14*4]
-+	lddsp	r6/*t188*/, sp[30*4]
-+	lddsp	r10/*t186*/, sp[24*4]
-+
-+	add	r7/*t68*/, r4, r3 << 1
-+	neg	r4
-+	scale	r4
-+	lddsp	r9/*t154*/, sp[8*4]
-+	sub	r3/*t130*/, r3, r5 << 1
-+	st.w	r11[12*SLOTS*4], r4
-+	sub	r8/*t201*/, r5, r6 << 1
-+	sub	r4/*t200*/, r9, r10 << 1
-+	lddsp	lr/*t146*/, sp[10*4]
-+	lddsp	r6/*t184*/, sp[26*4]
-+	add	r10/*t111*/, r0, r9 << 1
-+	add	r5/*t77*/,r7, r0 << 1
-+	add	r0/*t88*/, r5, lr << 1
-+	sub	r6/*t199*/, lr, r6 << 1
-+	neg	r5
-+	scale	r5
-+	scale	r7
-+	st.w	r11[8*SLOTS*4], r5
-+	st.w	r11[10*SLOTS*4], r7
-+
-+/*      Live:	r0 = t88, r1= t203, r2= t138, r3 = t130, r4 = t200,
-+		r6 = 199, r8 = t201, r10 = t111
-+	Free:	r5, r7, r9, lr    */
-+
-+
-+/*
-+	t123 = -(-(t138 * 2) - t111);
-+	t174 = (t183 * 2) + t138;
-+	t99  = -(t111 * 2) + t88;
-+	hi[ 6][slot] = SHIFT(t88); */
-+	lddsp	r5/*t183*/, sp[20*4]
-+
-+	add	r7/*t123*/, r10, r2 << 1
-+	sub	r10/*t99*/, r0, r10 << 1
-+	scale	r0
-+	add	r2/*t174*/, r2, r5 << 1
-+	st.w	r11[6*SLOTS*4], r0
-+
-+/*      Live:	r1 = t203, r2 = t174, r3 = t130, r4 = t200,
-+		r6 = t199, r7 = t123, r8 = t201, r10 = t99
-+	Free:	r0, r5, r9, lr    */
-+
-+/*	t112 = -(t130 * 2) + t99;
-+	t164 = (t181 * 2) + t130;
-+	hi[ 4][slot] = SHIFT(-t99); */
-+	lddsp	r0/*t181*/, sp[22*4]
-+
-+	sub	r5/*t112*/, r10, r3 << 1
-+	neg	r10
-+	scale	r10
-+	add	r3/*164*/, r3, r0 << 1
-+	st.w	r11[4*SLOTS*4], r10
-+
-+/*      Live:	r1 = t203, r2 = t174, r3 = t164, r4 = t200,
-+		r5 = t112, r6 = t199, r7 = t123, r8 = t201
-+	Free:	r0, r9, r10, lr    */
-+
-+
-+/*	t117 = -(-(t123 * 2) - t112);
-+	t139 = (t179 * 2) + t123;
-+	hi[ 2][slot] = SHIFT(t112); */
-+	lddsp	r0/*t179*/, sp[16*4]
-+
-+	add	r9/*t117*/, r5, r7 << 1
-+	scale	r5
-+	add	r7/*t139*/, r7, r0 << 1
-+	st.w	r11[2*SLOTS*4], r5
-+
-+/*      Live:	r1 = t203, r2 = t174, r3 = t164, r4 = t200,
-+		r6 = t199, r7 = t139, r8 = t201, r9 = t117
-+	Free:	r0, r5, r10, lr    */
-+
-+/*	t155 = -(t174 * 2) + t139;
-+	t204 = -(-(t203 * 2) - t174);
-+	t124 = (t177 * 2) + t117;
-+	hi[ 0][slot] = SHIFT(-t117);
-+	t131 = -(t139 * 2) + t124;
-+	lo[ 1][slot] = SHIFT(t124);*/
-+	lddsp	r0/*t177*/, sp[18*4]
-+
-+	sub	r5/*t155*/, r7, r2 << 1
-+	add	r2/*t204*/, r2, r1 << 1
-+	add	r0/*t124*/, r9, r0 << 1
-+	neg	r9
-+	scale	r9
-+	sub	r7/*t131*/, r0, r7 << 1
-+	scale	r0
-+	st.w	r11[0*SLOTS*4], r9
-+	st.w	r12[1*SLOTS*4], r0
-+
-+/*      Live:	r2 = t204, r3 = t164, r4 = t200,
-+		r5 = t155, r6 = t199, r7 = t131, r8 = t201
-+	Free:	r0, r1, r9, r10, lr    */
-+
-+/*	t140 = (t164 * 2) + t131;
-+	lo[ 3][slot] = SHIFT(-t131);
-+	t202 = -(-(t201 * 2) - t164);  */
-+	add	r0/*t140*/, r7, r3 << 1
-+	neg	r7
-+	scale	r7
-+	add	r3/*t202*/, r3, r8 << 1
-+	st.w	r12[3*SLOTS*4], r7
-+
-+/*      Live:	r0 = t140, r2 = t204, r3 = t202, r4 = t200,
-+		r5 = t155, r6 = t199
-+	Free:	r1, r7, r8, r9, r10, lr    */
-+
-+
-+/*	t147 = -(-(t155 * 2) - t140);
-+	lo[ 5][slot] = SHIFT(t140);
-+	t175 = -(t200 * 2) + t155;
-+	t156 = -(t199 * 2) + t147;
-+	lo[ 7][slot] = SHIFT(-t147); */
-+	add	r1/*t147*/, r0, r5 << 1
-+	scale	r0
-+	sub	r5/*t175*/, r5, r4 << 1
-+	sub	r4/*156*/, r1, r6 << 1
-+	neg	r1
-+	scale	r1
-+	st.w	r12[5*SLOTS*4], r0
-+	st.w	r12[7*SLOTS*4], r1
-+
-+/*      Live:	r2 = t204, r3 = t202,
-+		r4 = t156, r5 = t175
-+	Free:	r0, r1, r6, r7, r8, r9, r10, lr    */
-+
-+
-+/*	t205 = -(-(t204 * 2) - t175);
-+	t165 = -(t175 * 2) + t156;
-+	lo[ 9][slot] = SHIFT(t156);
-+	t176 = -(t202 * 2) + t165;
-+	lo[11][slot] = SHIFT(-t165);
-+	t206 = -(-(t205 * 2) - t176);
-+	lo[15][slot] = SHIFT(-t206)
-+	lo[13][slot] = SHIFT(t176) */
-+	add	r0/*t205*/, r5, r2 << 1
-+	sub	r1/*t165*/, r4, r5 << 1
-+	scale	r4
-+	sub	r3/*t176*/, r1, r3 << 1
-+	st.w	r12[9*SLOTS*4], r4
-+	neg	r1
-+	scale	r1
-+	add	r6/*t206*/, r3, r0 << 1
-+	neg	r6
-+	scale	r6
-+	scale	r3
-+	st.w	r12[11*SLOTS*4], r1
-+	st.w	r12[15*SLOTS*4], r6
-+	st.w	r12[13*SLOTS*4], r3
-+
-+/*	t193 = -((t190 * 2) - t143)
-+	hi[ 7][slot] = SHIFT(t143);
-+	lo[ 8][slot] = SHIFT(-t193);
-+	t82  = -(t104 * 2) + t58;
-+	hi[13][slot] = SHIFT(t58);
-+	t134 = -(t168 * 2) + t104;
-+	t196 = -(t189 * 2) + t168; */
-+
-+	lddsp	r0/*t190*/, sp[27*4]
-+	lddsp	r1/*t143*/, sp[11*4]
-+	lddsp	r2/*t104*/, sp[5*4]
-+	lddsp	r3/*t58*/, sp[1*4]
-+	lddsp	r4/*t168*/, sp[13*4]
-+	lddsp	r5/*t189*/, sp[29*4]
-+	sub	r0/*t193*/, r1, r0 << 1
-+	neg	r0
-+	scale	r1
-+	scale	r0
-+	st.w	r11[7*SLOTS*4], r1
-+	st.w	r12[8*SLOTS*4], r0
-+	sub	r0/*t82*/, r3, r2 << 1
-+	scale	r3
-+	sub	r2/*t134*/, r2, r4 << 1
-+	sub	r4/*t196*/, r4, r5 << 1
-+	st.w	r11[13*SLOTS*4], r3
-+
-+/*      Live:	r0 = t82, r2 = t134,
-+		r4 = t196
-+	Free:	r1, r3, r5, r6, r7, r8, r9, r10, lr    */
-+
-+
-+
-+/*
-+
-+	t207 = -(t185 * 2) + t150;
-+	t105 = (t150 * 2) + t82;
-+	hi[ 9][slot] = SHIFT(-t82);
-+	t120 = -(-(t134 * 2) - t105);
-+	hi[ 5][slot] = SHIFT(t105);
-+	t169 = (t182 * 2) + t134;
-+
-+	t135 = (t178 * 2) + t120;
-+	hi[ 1][slot] = SHIFT(-t120);
-+	t197 = -(-(t196 * 2) - t169);
-+	t151 = -(t169 * 2) + t135;
-+	lo[ 2][slot] = SHIFT(t135); */
-+	lddsp	r1/*t185*/, sp[25*4]
-+	lddsp	r3/*t150*/, sp[9*4]
-+	lddsp	r5/*t182*/, sp[21*4]
-+	lddsp	r8/*t178*/, sp[17*4]
-+
-+	sub	r6/*t207*/, r3, r1 << 1
-+	add	r3/*t105*/, r0, r3 << 1
-+	neg	r0
-+	scale	r0
-+	add	r7/*t120*/, r3, r2 << 1
-+	scale	r3
-+	st.w	r11[9*SLOTS*4], r0
-+	st.w	r11[5*SLOTS*4], r3
-+	add	r2/*t169*/, r2, r5 << 1
-+	add	r8/*t135*/, r7, r8 << 1
-+	neg	r7
-+	scale	r7
-+	add	r4/*t197*/, r2, r4 << 1
-+	sub	r2/*t151*/, r8, r2 << 1
-+	scale	r8
-+	st.w	r11[1*SLOTS*4], r7
-+	st.w	r12[2*SLOTS*4], r8
-+
-+/*      Live:	r2 = t151, r4 = t197, r6 = t207
-+
-+	Free:	r0, r1, r3, r5, r7, r8, r9, r10, lr    */
-+
-+
-+
-+/*	t170 = -(t207 * 2) + t151;
-+	lo[ 6][slot] = SHIFT(-t151);
-+
-+	t198 = -(-(t197 * 2) - t170);
-+	lo[10][slot] = SHIFT(t170);
-+	lo[14][slot] = SHIFT(-t198);
-+
-+	t127 = -(t159 * 2) + t93;
-+	hi[11][slot] = SHIFT(t93);
-+	t194 = -(t187 * 2) + t159;   */
-+	lddsp	r0/*t159*/, sp[15*4]
-+	lddsp	r1/*t93*/, sp[7*4]
-+	lddsp	r3/*t187*/, sp[31*4]
-+	sub	r5/*t170*/, r2, r6 << 1
-+	neg	r2
-+	scale	r2
-+	add	r4/*t198*/,r5, r4 << 1
-+	neg	r4
-+	scale	r5
-+	scale	r4
-+	st.w	r12[6*SLOTS*4], r2
-+	st.w	r12[10*SLOTS*4], r5
-+	st.w	r12[14*SLOTS*4], r4
-+	sub	r7/*t127*/, r1, r0 << 1
-+	scale	r1
-+	sub	r0/*t194*/, r0, r3 << 1
-+	st.w	r11[11*SLOTS*4], r1
-+
-+
-+/*      Live:	r0 = t194, r7 = t127
-+	Free:	r1, r2, r3, r4, r6, r5, r8, r9, r10, lr    */
-+
-+/*	t160 = (t180 * 2) + t127;
-+	hi[ 3][slot] = SHIFT(-t127);
-+	t195 = -(-(t194 * 2) - t160);
-+	lo[ 4][slot] = SHIFT(t160);
-+	lo[12][slot] = SHIFT(-t195);
-+
-+	hi[15][slot] = SHIFT(t191);
-+	lo[ 0][slot] = SHIFT(t192); */
-+	lddsp	r1/*t180*/, sp[23*4]
-+	lddsp	r2/*t191*/, sp[3*4]
-+	lddsp	r3/*t192*/, sp[19*4]
-+	add	r4/*t160*/, r7, r1 << 1
-+	neg	r7
-+	scale	r7
-+	add	r6/*t195*/, r4, r0 << 1
-+	scale	r4
-+	neg	r6
-+	scale	r6
-+	st.w	r11[3*SLOTS*4], r7
-+	st.w	r12[4*SLOTS*4], r4
-+	st.w	r12[12*SLOTS*4], r6
-+	scale	r2
-+	scale	r3
-+	st.w	r11[15*SLOTS*4], r2
-+	st.w	r12[0*SLOTS*4], r3
-+
-+	sub	sp, -32*4
-+	ldm	sp++,r0-r7, r9-r11, pc
-diff --git a/fixed.h b/fixed.h
-index 4b58abf..0a1350a 100644
---- a/fixed.h
-+++ b/fixed.h
-@@ -237,6 +237,46 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
- #   define MAD_F_SCALEBITS  MAD_F_FRACBITS
- #  endif
- 
-+/* --- AVR32 ----------------------------------------------------------------- */
-+
-+# elif defined(FPM_AVR32)
-+
-+typedef   signed short mad_coeff_t;
-+
-+struct DWstruct {int high, low;};
-+
-+typedef union {
-+  struct DWstruct s;
-+  long long ll;
-+} DWunion;
-+
-+#  define MAD_F_MLX(hi, lo, x, y)  \
-+  { register DWunion __res; \
-+    __res.ll = (long long)x * (long long)y; \
-+    /*    asm ("muls.d\t%0, %1, %2" : "=r" (__res.ll) : "r" (x), "r" (y));*/ \
-+    hi = __res.s.high; \
-+    lo = __res.s.low; }
-+
-+#  define MAD_F_MLA(hi, lo, x, y)  \
-+  { register DWunion __res; \
-+    __res.s.high = hi; \
-+    __res.s.low = lo; \
-+    __res.ll += (long long)x * (long long)y; \
-+/*  asm ("macs.d\t%0, %1, %2" : "+r" (__res.ll) : "r" (x), "r" (y));*/ \
-+    hi = __res.s.high; \
-+    lo = __res.s.low; }
-+
-+
-+#  define MAD_F_MLN(hi, lo)  \
-+    asm ("neg	%0\n"  \
-+	 "acr	%1\n"  \
-+         "neg   %1"    \
-+	 : "+r" (lo), "+r" (hi) \
-+	 :: "cc")
-+
-+
-+#  define MAD_F_SCALEBITS  MAD_F_FRACBITS
-+
- /* --- ARM ----------------------------------------------------------------- */
- 
- # elif defined(FPM_ARM)
-@@ -433,6 +473,8 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
-  *
-  * Pre-rounding is required to stay within the limits of compliance.
-  */
-+typedef   signed int mad_coeff_t;
-+
- #  if defined(OPT_SPEED)
- #   define mad_f_mul(x, y)	(((x) >> 12) * ((y) >> 16))
- #  else
-diff --git a/imdct_avr32.S b/imdct_avr32.S
-new file mode 100644
-index 0000000..d0ee6b4
---- /dev/null
-+++ b/imdct_avr32.S
-@@ -0,0 +1,789 @@
-+/*
-+   Optimized 36-point Inverse Modified Cosine Transform (IMDCT)
-+   Copyright 2003-2006 Atmel Corporation.
-+
-+   Written by Ronny Pedersen, Atmel Norway
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program; if not, write to the Free Software
-+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+
-+#define MAD_F(x) ((x + (1 << 13)) >> 14)
-+
-+	.public	imdct36_avr32
-+
-+/*
-+	void imdct36(mad_fixed_t const x[18], mad_fixed_t y[36])
-+	{
-+	mad_fixed_t tmp[18];
-+	int i;
-+*/
-+/* DCT-IV */
-+imdct36_avr32:
-+	pushm	r0-r7,r11,lr
-+	sub	sp, 4*18
-+/*
-+	{
-+	mad_fixed_t tmp2[18];
-+	int i;
-+
-+	/* scale[i] = 2 * cos(PI * (2 * i + 1) / (4 * 18)) */
-+/*
-+	static mad_fixed_t const scale[18] = {
-+	MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120),
-+	MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b),
-+	MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4),
-+	MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3),
-+	MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5),
-+	MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c)
-+	};
-+*/
-+
-+  /* scaling */
-+
-+/*
-+	for (i = 0; i < 18; i += 3) {
-+		tmp2[i + 0] = mad_f_mul(x[i + 0], scale[i + 0]);
-+		tmp2[i + 1] = mad_f_mul(x[i + 1], scale[i + 1]);
-+		tmp2[i + 2] = mad_f_mul(x[i + 2], scale[i + 2]);
-+	  }
-+*/
-+	/* even input butterfly */
-+
-+/*
-+	for (i = 0; i < 9; i += 3) {
-+		tmp3[i + 0] = tmp2[i + 0] + tmp2[18 - (i + 0) - 1];
-+		tmp3[i + 1] = tmp2[i + 1] + tmp2[18 - (i + 1) - 1];
-+		tmp3[i + 2] = tmp2[i + 2] + tmp2[18 - (i + 2) - 1];
-+	  }
-+	for (i = 0; i < 9; i += 3) {
-+		tmp4[i + 0] = tmp2[i + 0] - tmp2[18 - (i + 0) - 1];
-+		tmp4[i + 1] = tmp2[i + 1] - tmp2[18 - (i + 1) - 1];
-+		tmp4[i + 2] = tmp2[i + 2] - tmp2[18 - (i + 2) - 1];
-+	  }
-+*/
-+
-+	ld.d	r8, r12[0]				/*r8 = x[1], r9 = x[0]*/
-+	ld.d	r0, pc[scale_dctIV - .]			/*r0 = {scale[2], scale[3]}, r1 = { scale[0], scale[1] }*/
-+	ld.d	r2, r12[2*4]				/*r2 = x[3], r3 = x[2]*/
-+	ld.d	r4, pc[scale_dctIV - . + 14*2]		/*r4 = {scale[16], scale[17]}, r5 = { scale[14], scale[15] }*/
-+	mulsatrndwh.w	r9/*tmp2[0]*/, r9, r1:t		/*tmp2[0] = mad_f_mul(x[0], scale[0]) */
-+	ld.d	r6, r12[16*4]				/*r6 = x[17], r7 = x[16]*/
-+	mulsatrndwh.w	r8/*tmp2[1]*/, r8, r1:b		/*tmp2[1] = mad_f_mul(x[1], scale[1]) */
-+	mulsatrndwh.w	r3/*tmp2[2]*/, r3, r0:t		/*tmp2[2] = mad_f_mul(x[2], scale[2]) */
-+	mulsatrndwh.w	r2/*tmp2[3]*/, r2, r0:b		/*tmp2[3] = mad_f_mul(x[3], scale[3]) */
-+	ld.d	r0, r12[14*4]				/*r0 = x[15], r1 = x[14]*/
-+	mulsatrndwh.w	r7/*tmp2[16]*/, r7, r4:t	/*tmp2[16] = mad_f_mul(x[16], scale[16]) */
-+	mulsatrndwh.w	r6/*tmp2[17]*/, r6, r4:b	/*tmp2[17] = mad_f_mul(x[17], scale[17]) */
-+	mulsatrndwh.w	r1/*tmp2[14]*/, r1, r5:t	/*tmp2[14] = mad_f_mul(x[14], scale[14]) */
-+	mulsatrndwh.w	r0/*tmp2[15]*/, r0, r5:b	/*tmp2[15] = mad_f_mul(x[15], scale[15]) */
-+
-+	ld.d	r4, r12[4*4]				/*r4 = x[5], r5 = x[4]*/
-+
-+	sub		lr/*tmp4[0]*/, r9, r6
-+	add		r6/*tmp3[0]*/, r9, r6
-+	sub		r10/*tmp4[1]*/, r8, r7
-+	add		r7/*tmp3[1]*/, r8, r7
-+	sub		r9/*tmp4[2]*/, r3, r0
-+	add		r0/*tmp3[2]*/, r3, r0
-+	sub		r8/*tmp4[3]*/, r2, r1
-+	add		r1/*tmp3[3]*/, r2, r1
-+
-+	ld.d	r2, pc[scale_dctIV - . + 4*2]		/*r2 = {scale[6], scale[7]}, r3 = { scale[4], scale[5] }*/
-+
-+	stm		--sp, r8-r10, lr		/*sp[0] = tmp4[0],sp[1] = tmp4[1],
-+							  sp[2] = tmp4[2],sp[3] = tmp4[3] */
-+
-+	/* Registers used:	r0 = tmp3[2], r1 = tmp3[3], r6 = tmp3[0], r7 = tmp3[1], r12 = x
-+	   Free	registers:	r2-r5, r8-r11, lr
-+	*/
-+	ld.d	r8, r12[6*4]				/*r8 = x[7], r9 = x[6]*/
-+	ld.d	r10, pc[scale_dctIV - . + 10*2]		/*r10 = {scale[12], scale[13]}, r11 = { scale[10], scale[11] }*/
-+	mulsatrndwh.w	r5/*tmp2[4]*/, r5, r3:t		/*tmp2[4] = mad_f_mul(x[4], scale[4]) */
-+	mulsatrndwh.w	r4/*tmp2[5]*/, r4, r3:b		/*tmp2[5] = mad_f_mul(x[5], scale[5]) */
-+	mulsatrndwh.w	r9/*tmp2[6]*/, r9, r2:t		/*tmp2[6] = mad_f_mul(x[6], scale[6]) */
-+	mulsatrndwh.w	r8/*tmp2[7]*/, r8, r2:b		/*tmp2[7] = mad_f_mul(x[7], scale[7]) */
-+
-+	ld.d	r2, r12[12*4]				/*r2 = x[13], r3 = x[12]*/
-+	ld.w	lr, r12[11*4]				/*lr = x[11] */
-+	mulsatrndwh.w	r3/*tmp2[12]*/, r3, r10:t	/*tmp2[12] = mad_f_mul(x[12], scale[12]) */
-+	mulsatrndwh.w	r2/*tmp2[13]*/, r2, r10:b	/*tmp2[13] = mad_f_mul(x[13], scale[13]) */
-+	ld.w	r10, r12[10*4]				/*r10 = x[10] */
-+	mulsatrndwh.w	lr/*tmp2[11]*/, lr, r11:b	/*tmp2[11] = mad_f_mul(x[11], scale[11]) */
-+	mulsatrndwh.w	r10/*tmp2[10]*/, r10, r11:t	/*tmp2[10] = mad_f_mul(x[10], scale[10]) */
-+
-+	sub	r11/*tmp4[4]*/, r5, r2
-+	add	r2/*tmp3[4]*/, r5, r2
-+	sub	r5/*tmp4[5]*/, r4, r3
-+	add	r3/*tmp3[5]*/, r4, r3
-+	sub	r4/*tmp4[6]*/, r9, lr
-+	add	lr/*tmp3[6]*/, r9, lr
-+	sub	r9/*tmp4[7]*/, r8, r10
-+	add	r10/*tmp3[7]*/, r8, r10
-+	lddpc	r8, scale_dctIV + 8*2			/*r8 = {scale[8], scale[9]} */
-+
-+	stm	--sp, r4, r5, r9, r11			/*sp[0] = tmp4[4],sp[1] = tmp4[7],
-+							  sp[2] = tmp4[5],sp[3] = tmp4[6] */
-+	ld.d	r4, r12[8*4]				/*r4 = x[9], r5 = x[8]*/
-+	mulsatrndwh.w	r5/*tmp2[8]*/, r5, r8:t		/*tmp2[8] = mad_f_mul(x[8], scale[8]) */
-+	mulsatrndwh.w	r4/*tmp2[9]*/, r4, r8:b		/*tmp2[9] = mad_f_mul(x[9], scale[9]) */
-+	sub		r9/*tmp4[8]*/, r5, r4
-+	add		r5/*tmp3[8]*/, r5, r4
-+
-+	st.w	--sp, r9				/* sp[0] = tmp4[8] */
-+
-+	/* Registers used:
-+
-+		r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r10=tmp3[7], lr=tmp3[6]
-+	   Free registers:
-+		r4, r8, r9, r11, r12
-+	*/
-+
-+
-+  /* SDCT-II */
-+/*
-+
-+	{
-+	mad_fixed_t tmp3[9];
-+	int i;
-+*/
-+	/* scale[i] = 2 * cos(PI * (2 * i + 1) / (2 * 18)) */
-+/*
-+	static mad_fixed_t const scale[9] = {
-+	MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930),
-+	MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8),
-+	MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7)
-+	};
-+*/
-+  /* divide the 18-point SDCT-II into two 9-point SDCT-IIs */
-+
-+
-+  /* fastdct */
-+
-+/*
-+	{
-+	mad_fixed_t a0,  a1,  a2,  a3,  a4,  a5,  a6,  a7,  a8,  a9,  a10, a11, a12;
-+	mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25;
-+	mad_fixed_t m0,  m1,  m2,  m3,  m4,  m5,  m6,  m7;
-+*/
-+//	  enum {
-+//	    c0 =  MAD_F(0x1f838b8d),  /* 2 * cos( 1 * PI / 18) */
-+//	    c1 =  MAD_F(0x1bb67ae8),  /* 2 * cos( 3 * PI / 18) */
-+//	    c2 =  MAD_F(0x18836fa3),  /* 2 * cos( 4 * PI / 18) */
-+//	    c3 =  MAD_F(0x1491b752),  /* 2 * cos( 5 * PI / 18) */
-+//	    c4 =  MAD_F(0x0af1d43a),  /* 2 * cos( 7 * PI / 18) */
-+//	    c5 =  MAD_F(0x058e86a0),  /* 2 * cos( 8 * PI / 18) */
-+//	    c6 = -MAD_F(0x1e11f642)   /* 2 * cos(16 * PI / 18) */
-+//	  };
-+
-+/*
-+	a2 = tmp3[6] + tmp3[2];
-+	a6 = tmp3[8] + tmp3[0];
-+	a11 = a2  - a6;
-+	m5 = mad_f_mul(a11, -c6) ;
-+	a4 = tmp3[1] + tmp3[7];
-+
-+	a18 =     tmp3[4] + a4;
-+	a19 = -2 * tmp3[4] + a4;
-+
-+	a0 = tmp3[3] + tmp3[5];
-+
-+*/
-+	add	r11/*a4*/, r7, r10
-+	add	r12/*a18*/, r2, r11
-+	sub	r11/*a19*/, r11, r2<<1
-+
-+	add	r4/*a2*/, lr, r0
-+	add	r8/*a6*/, r5, r6
-+	sub	r9/*a11*/, r4, r8
-+
-+	st.d	--sp, r0	/* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/
-+
-+	mov	r2, MAD_F(0x1e11f642)
-+	mulsatrndwh.w	r9/*m5*/, r9, r2:b
-+
-+	add	r2/*a0*/, r1, r3
-+
-+	/* Registers used:
-+
-+		r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r8=a6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6]
-+	   Free registers:
-+		r0, r1
-+	*/
-+
-+/*
-+	a8  = a0  + a2;
-+	a12 = a8  + a6;
-+	a10 = a0  - a6;
-+	a9  = a0  - a2;
-+	m7 = mad_f_mul(a9,  -c2) ;
-+	m6 = mad_f_mul(a10, -c5) ;
-+*/
-+
-+	add	r0/*a8*/, r2, r4
-+	add	r0/*a12*/, r8
-+	rsub	r8/*a10*/, r2
-+	sub	r2/*a9*/, r4
-+	mov	r1, -MAD_F(0x18836fa3)
-+	mulsatrndwh.w	r2/*m7*/, r2, r1:b
-+	mov	r1, -MAD_F(0x058e86a0)
-+	mulsatrndwh.w	r8/*m6*/, r8, r1:b
-+
-+	/* Registers used:
-+
-+		r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r8=m6, r10=tmp3[7], r9=m5, r11=a19, r12=a18,lr=tmp3[6]
-+	   Free registers:
-+		r1, r4
-+	*/
-+
-+
-+/*
-+	a21 = -a19 - (m5 << 1);
-+	tmp[ 8] = a21 - (m6 << 1);
-+
-+	a20 = a19 - (m5 << 1);
-+	tmp[ 4] = (m7 << 1)  + a20;
-+	a22 = -a19 + (m6 << 1);
-+	tmp[16] = a22 + (m7 << 1);
-+	tmp[ 0] = a18 + a12;
-+	tmp[12] = a12 - 2 * a18;
-+*/
-+	add	r1/*a21*/, r11, r9 << 1
-+	neg	r1
-+	sub	r1/*tmp[8]*/, r1, r8 << 1
-+	stdsp	sp[4*11/*tmp3[..] on the stack*/ + 8*4], r1
-+	sub	r4/*a20*/, r11, r9 << 1
-+	add	r4/*tmp[4]*/, r4, r2 << 1
-+	stdsp	sp[4*11/*tmp3[..] on the stack*/ + 4*4], r4
-+	neg	r11
-+	add	r1/*a22*/, r11, r8 << 1
-+	add	r1/*tmp[16]*/, r1, r2 << 1
-+	stdsp	sp[4*11/*tmp3[..] on the stack*/ + 16*4], r1
-+	add	r4, r12, r0
-+	sub	r1, r0, r12 << 1
-+	stdsp	sp[4*11/*tmp3[..] on the stack*/ + 0*4], r4
-+	stdsp	sp[4*11/*tmp3[..] on the stack*/ + 12*4], r1
-+
-+	ld.d	r0, sp++
-+
-+	/* Registers used:
-+
-+		r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r10=tmp3[7], r11=a19, lr=tmp3[6]
-+	   Free registers:
-+		r2,r4,r8,r9,r12
-+	*/
-+
-+/*
-+	a5 = tmp3[1] - tmp3[7];
-+	a7 = tmp3[8] - tmp3[0];
-+	a3 = tmp3[6] - tmp3[2];
-+	a1 = tmp3[3] - tmp3[5];
-+	a13 = a1  - a3;
-+	a14 = a13 + a7;
-+	m3 = mad_f_mul(a14, -c1) ;
-+	m4 = mad_f_mul(a5,  -c1) ;
-+	tmp[ 6] = m3 << 1;
-+*/
-+	sub	r7/*a5*/, r10
-+	sub	r2/*a7*/, r5, r6
-+	sub	r4/*a3*/, lr, r0
-+	sub	r8/*a1*/, r1, r3
-+	sub	r9/*a13*/, r8, r4
-+	add	r12/*a14*/, r9, r2
-+	mov	r0, -MAD_F(0x1bb67ae8)
-+	mulsatrndwh.w	r12/*m3*/, r12, r0:b
-+	mulsatrndwh.w	r7/*m4*/, r7, r0:b
-+	lsl	r12, 1
-+	stdsp	sp[4*9/*tmp3[..] on the stack*/ + 6*4], r12
-+
-+	/* Registers used:
-+		r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3
-+
-+	   Free registers:
-+		r0, r1, r3, r5, r6, r10, r9, r11, lr
-+	*/
-+
-+
-+/*
-+	a15 = a3  + a7;
-+	m2 = mad_f_mul(a15, -c4) ;
-+	a17 = a1  + a3;
-+	m0 = mad_f_mul(a17, -c3) ;
-+	a23 = (m4 << 1)  + (m2 << 1);
-+	tmp[14] = a23 + (m0 << 1); */
-+	add	r0/*a15*/, r4, r2
-+	mov	r1, -MAD_F(0x0af1d43a)
-+	mulsatrndwh.w	r0/*m2*/, r0, r1:b
-+	mov	r3, -MAD_F(0x1491b752)
-+	add	r5/*a17*/, r8, r4
-+	mulsatrndwh.w	r5/*m0*/, r5, r3:b
-+	lsl	r7, 1
-+	add	r6/*a23*/, r7, r0 << 1
-+	add	r6/*tmp[14]*/, r6, r5 << 1
-+	stdsp	sp[4*9/*tmp3[..] on the stack*/ + 14*4], r6
-+
-+	/* Registers used:
-+		r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1
-+
-+	   Free registers:
-+		r1, r3, r4, r6, r10, r9, r11, lr
-+	*/
-+
-+/*
-+	a16 = a1  - a7;
-+	m1 = mad_f_mul(a16, -c0) ;
-+	a24 = (m4 << 1)  - (m2 << 1);
-+	tmp[10] = a24 - (m1 << 1);
-+
-+	a25 = (m4 << 1)  + (m1 << 1);
-+	tmp[ 2] = (m0 << 1)  - a25;
-+*/
-+	sub	r3/*a16*/, r8, r2
-+	mov	r4,  -MAD_F(0x1f838b8d)
-+	mulsatrndwh.w	r3/*m1*/, r3, r4:b
-+	sub	r1/*a24*/, r7, r0 << 1
-+	sub	r1/*tmp[10]*/, r1, r3 << 1
-+	stdsp	sp[4*9/*tmp3[..] on the stack*/ + 10*4], r1
-+	add	r7/*a25*/, r7, r3 << 1
-+	sub	r7, r7, r5 << 1
-+	neg	r7
-+	stdsp	sp[4*9/*tmp3[..] on the stack*/ + 2*4], r7
-+
-+
-+
-+
-+  /* output to every other slot for convenience */
-+
-+  /*} */
-+  /* End fastdct */
-+
-+  /* odd input butterfly and scaling */
-+
-+
-+	/*  On the stack:
-+		sp[0] = tmp4[8], sp[1] = tmp4[4],sp[2] = tmp4[7], sp[3] = tmp4[5],sp[4] = tmp4[6]
-+		sp[5] = tmp4[0], sp[6] = tmp4[1],sp[7] = tmp4[2],sp[8] = tmp4[3]
-+	*/
-+
-+  /*
-+	  tmp3[0] = mad_f_mul(tmp4[0], scale[0]);
-+	  tmp3[1] = mad_f_mul(tmp4[1], scale[1]) << 1;
-+	  tmp3[2] = mad_f_mul(tmp4[2], scale[2]);
-+	  tmp3[3] = mad_f_mul(tmp4[3], scale[3]) << 1;
-+	  tmp3[4] = mad_f_mul(tmp4[4], scale[4]);
-+	  tmp3[5] = mad_f_mul(tmp4[5], scale[5]);
-+	  tmp3[6] = mad_f_mul(tmp4[6], scale[6]) << 1;
-+	  tmp3[7] = mad_f_mul(tmp4[7], scale[7]);
-+	  tmp3[8] = mad_f_mul(tmp4[8], scale[8]) << 1;
-+  */
-+	/* Registers used:
-+		r1 = tmp4[3], r2 = tmp4[2], r3 = tmp4[1], r4 = tmp4[0], r7 = tmp4[6]
-+		r10 = tmp4[5], r11 = tmp4[7], r12 = tmp4[4], lr = tmp4[8]
-+
-+	   Free registers:
-+		r0, r5, r6, r8, r9
-+	*/
-+	ld.d	r8, pc[ scale_sdctII - . + 4*2]	/* r8 = { scale[6], scale[7] }, r9 = { scale[4], scale[5]} */
-+	ldm	sp++, r1, r2, r3, r4, r7, r10, r11, r12, lr
-+	mov	r5, MAD_F(0x02c9fad7)		/* r3 = scale[8] */
-+	mulsatrndwh.w	r5/*tmp3[8]*/, lr, r5:b
-+	mulsatrndwh.w	lr/*tmp3[6]*/, r7, r8:t
-+	ld.d	r6, pc[ scale_sdctII - . + 0*2]	/* r6 = { scale[2], scale[3] }, r7 = { scale[0], scale[1]} */
-+	lsl	lr, 1
-+	lsl	r5, 1
-+	mulsatrndwh.w	r0/*tmp3[2]*/, r2, r6:t
-+	mulsatrndwh.w	r1/*tmp3[3]*/, r1, r6:b
-+	mulsatrndwh.w	r6/*tmp3[0]*/, r4, r7:t
-+	mulsatrndwh.w	r7/*tmp3[1]*/, r3, r7:b
-+	mulsatrndwh.w	r3/*tmp3[5]*/, r10, r9:b
-+	mulsatrndwh.w	r2/*tmp3[4]*/, r12, r9:t
-+	mulsatrndwh.w	r9/*tmp3[7]*/, r11, r8:b
-+	lsl	r1, 1
-+	lsl	r7, 1
-+
-+
-+  /* fastdct */
-+
-+/*
-+	{
-+	mad_fixed_t a0,  a1,  a2,  a3,  a4,  a5,  a6,  a7,  a8,  a9,  a10, a11, a12;
-+	mad_fixed_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25;
-+	mad_fixed_t m0,  m1,  m2,  m3,  m4,  m5,  m6,  m7;
-+*/
-+//	  enum {
-+//	    c0 =  MAD_F(0x1f838b8d),  /* 2 * cos( 1 * PI / 18) */
-+//	    c1 =  MAD_F(0x1bb67ae8),  /* 2 * cos( 3 * PI / 18) */
-+//	    c2 =  MAD_F(0x18836fa3),  /* 2 * cos( 4 * PI / 18) */
-+//	    c3 =  MAD_F(0x1491b752),  /* 2 * cos( 5 * PI / 18) */
-+//	    c4 =  MAD_F(0x0af1d43a),  /* 2 * cos( 7 * PI / 18) */
-+//	    c5 =  MAD_F(0x058e86a0),  /* 2 * cos( 8 * PI / 18) */
-+//	    c6 = -MAD_F(0x1e11f642)   /* 2 * cos(16 * PI / 18) */
-+//	  };
-+
-+	/* Registers used:
-+
-+		r0=tmp3[2], r1=tmp3[3], r2=tmp3[4], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r9=tmp3[7], lr=tmp3[6]
-+	   Free registers:
-+		r4, r8, r10, r11, r12
-+	*/
-+
-+/*
-+	a2 = tmp3[6] + (tmp3[2] << 1);
-+	a6 = tmp3[8] + (tmp3[0] << 1);
-+	a11 = a2 - a6;
-+	m5 = mad_f_mul(a11, c6) ;
-+	a4 = tmp3[1] + (tmp3[7] << 1);
-+
-+	a18 =     (tmp3[4] << 1) + a4;
-+	a19 = -2 * (tmp3[4] << 1) + a4;
-+
-+	a0 = tmp3[3] + (tmp3[5] << 1);
-+
-+*/
-+	add	r11/*a4*/, r7, r9 << 1
-+	add	r12/*a18*/, r11, r2 << 1
-+	sub	r11/*a19*/, r11, r2 << 2
-+
-+	add	r4/*a2*/, lr, r0 << 1
-+	add	r8/*a6*/, r5, r6 << 1
-+	sub	r10/*a11*/, r4, r8
-+
-+	st.d	--sp, r0	/* sp[0] = tmp3[3], sp1[1] = tmp3[2]*/
-+
-+	mov	r2, -MAD_F(0x1e11f642)
-+	mulsatrndwh.w	r10/*m5*/, r10, r2:b
-+
-+	add	r2/*a0*/, r1, r3 << 1
-+
-+	/* Registers used:
-+
-+		r2=a0, r3=tmp3[5], r4=a2, r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r8=a6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6]
-+	   Free registers:
-+		r0, r1
-+	*/
-+
-+/*
-+	a8  = a0  + a2;
-+	a12 = a8  + a6;
-+	a10 = a0  - a6;
-+	a9  = a0  - a2;
-+	m7 = mad_f_mul(a9,  -c2) ;
-+	m6 = mad_f_mul(a10, -c5) ;
-+*/
-+
-+	add	r0/*a8*/, r2, r4
-+	add	r0/*a12*/, r8
-+	rsub	r8/*a10*/, r2
-+	sub	r2/*a9*/, r4
-+	mov	r1, -MAD_F(0x18836fa3)
-+	mulsatrndwh.w	r2/*m7*/, r2, r1:b
-+	mov	r1, -MAD_F(0x058e86a0)
-+	mulsatrndwh.w	r8/*m6*/, r8, r1:b
-+
-+	/* Registers used:
-+
-+		r0=a12, r2=m7, r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r8=m6, r9=tmp3[7], r10=m5, r11=a19, r12=a18,lr=tmp3[6]
-+	   Free registers:
-+		r1, r4
-+	*/
-+
-+
-+/*
-+	a21 = -a19 + (m5 << 1);
-+	tmp[ 9] = a21 - (m6 << 1);
-+
-+	a20 = -(-a19 - (m5 << 1));
-+	tmp[ 5] = (m7 << 1)  + a20;
-+	a22 = -a19 + (m6 << 1);
-+	tmp[17] = a22 + (m7 << 1);
-+	tmp[ 1] = a18 + a12;
-+	tmp[13] = a12 - 2 * a18;
-+*/
-+	sub	r1/*a21*/, r11, r10 << 1
-+	neg	r1
-+	sub	r1/*tmp[9]*/, r1, r8 << 1
-+	stdsp	sp[4*2/*tmp3[..] on the stack*/ + 9*4], r1
-+	add	r4/*a20*/, r11, r10 << 1
-+	add	r4/*tmp[5]*/, r4, r2 << 1
-+	stdsp	sp[4*2/*tmp3[..] on the stack*/ + 5*4], r4
-+	neg	r11
-+	add	r1/*a22*/, r11, r8 << 1
-+	add	r1/*tmp[17]*/, r1, r2 << 1
-+	stdsp	sp[4*2/*tmp3[..] on the stack*/ + 17*4], r1
-+	add	r4, r12, r0
-+	sub	r1, r0, r12 << 1
-+	stdsp	sp[4*2/*tmp3[..] on the stack*/ + 1*4], r4
-+	stdsp	sp[4*2/*tmp3[..] on the stack*/ + 13*4], r1
-+
-+	ld.d	r0, sp++
-+
-+	/* Registers used:
-+
-+		r0 = tmp3[2], r1 = tmp3[3], r3=tmp3[5], r5=tmp3[8], r6 = tmp3[0],
-+		r7 = tmp3[1], r9=tmp3[7], r11=a19, lr=tmp3[6]
-+	   Free registers:
-+		r2,r4,r8,r10,r12
-+	*/
-+
-+/*
-+	a5 = tmp3[1] - (tmp3[7] << 1);
-+	a7 = tmp3[8] - (tmp3[0] << 1);
-+	a3 = tmp3[6] - (tmp3[2] << 1);
-+	a1 = tmp3[3] - (tmp3[5] << 1);
-+	a13 = a1  - a3;
-+	a14 = a13 + a7;
-+	m3 = mad_f_mul(a14, -c1) ;
-+	m4 = mad_f_mul(a5,  -c1) ;
-+	tmp[ 7] = m3 << 1;
-+*/
-+	sub	r7/*a5*/, r7, r9 << 1
-+	sub	r2/*a7*/, r5, r6 << 1
-+	sub	r4/*a3*/, lr, r0 << 1
-+	sub	r8/*a1*/, r1, r3 << 1
-+	sub	r10/*a13*/, r8, r4
-+	add	r12/*a14*/, r10, r2
-+	mov	r0, -MAD_F(0x1bb67ae8)
-+	mulsatrndwh.w	r12/*m3*/, r12, r0:b
-+	mulsatrndwh.w	r7/*m4*/, r7, r0:b
-+	lsl	r12, 1
-+	stdsp	sp[7*4], r12
-+
-+	/* Registers used:
-+		r2 = a7, r4 = a3, r7 = m4, r8 = a1, r12 = m3
-+
-+	   Free registers:
-+		r0, r1, r3, r5, r6, r9, r10, r11, lr
-+	*/
-+
-+
-+/*
-+	a15 = a3  + a7;
-+	m2 = mad_f_mul(a15, -c4) ;
-+	a17 = a1  + a3;
-+	m0 = mad_f_mul(a17, -c3) ;
-+	a23 = (m4 << 1)  + (m2 << 1);
-+	tmp[15] = a23 + (m0 << 1); */
-+	add	r0/*a15*/, r4, r2
-+	mov	r1, -MAD_F(0x0af1d43a)
-+	mulsatrndwh.w	r0/*m2*/, r0, r1:b
-+	mov	r3, -MAD_F(0x1491b752)
-+	add	r5/*a17*/, r8, r4
-+	mulsatrndwh.w	r5/*m0*/, r5, r3:b
-+	lsl	r7, 1
-+	add	r6/*a23*/, r7, r0 << 1
-+	add	r6/*tmp[15]*/, r6, r5 << 1
-+	stdsp	sp[15*4], r6
-+
-+	/* Registers used:
-+		r0 = m2, r2 = a7, r5 = m0, r7 = m4, r8 = a1
-+
-+	   Free registers:
-+		r1, r3, r4, r6, r9, r10, r11, lr
-+	*/
-+
-+/*
-+	a16 = a1  - a7;
-+	m1 = mad_f_mul(a16, -c0) ;
-+	a24 = (m4 << 1)  - (m2 << 1);
-+	tmp[11] = a24 - (m1 << 1);
-+
-+	a25 = (m4 << 1)  + (m1 << 1);
-+	tmp[ 3] = (m0 << 1)  - a25;
-+*/
-+	sub	r3/*a16*/, r8, r2
-+	mov	r4,  -MAD_F(0x1f838b8d)
-+	mulsatrndwh.w	r3/*m1*/, r3, r4:b
-+	sub	r1/*a24*/, r7, r0 << 1
-+	sub	r1/*tmp[11]*/, r1, r3 << 1
-+	stdsp	sp[11*4], r1
-+	add	r7/*a25*/, r7, r3 << 1
-+	sub	r7, r7, r5 << 1
-+	neg	r7
-+	lddsp	r12, sp[4*18+4]	/* Get y from stack */
-+	stdsp	sp[3*4], r7
-+
-+
-+  /* output to every other slot for convenience */
-+
-+  /* End fastdct */
-+
-+  /* output accumulation */
-+
-+/*	for (i = 3; i < 18; i += 8) {
-+	  tmp[i + 0] -= tmp[(i + 0) - 2];
-+	  tmp[i + 2] -= tmp[(i + 2) - 2];
-+	  tmp[i + 4] -= tmp[(i + 4) - 2];
-+	  tmp[i + 6] -= tmp[(i + 6) - 2];
-+	}
-+	}
-+*/
-+
-+/* End  SDCT-II */
-+
-+
-+
-+  /* scale reduction and output accumulation */
-+
-+/*
-+	for (i = 1; i < 17; i += 4) {
-+	  tmp[i + 0] = tmp[i + 0]  - tmp[(i + 0) - 1];
-+	  tmp[i + 1] = tmp[i + 1]  - tmp[(i + 1) - 1];
-+	  tmp[i + 2] = tmp[i + 2]  - tmp[(i + 2) - 1];
-+	  tmp[i + 3] = tmp[i + 3]  - tmp[(i + 3) - 1];
-+	}
-+	tmp[17] = tmp[17] - tmp[16];
-+	}
-+*/
-+/* End  DCT-IV */
-+
-+
-+  /* convert 18-point DCT-IV to 36-point IMDCT */
-+
-+/*
-+	for (i =  0; i <  9; i += 3) {
-+	  y[i + 0] =  tmp[9 + (i + 0)];
-+	  y[i + 1] =  tmp[9 + (i + 1)];
-+	  y[i + 2] =  tmp[9 + (i + 2)];
-+	}
-+	for (i =  9; i < 27; i += 3) {
-+	  y[i + 0] = -tmp[36 - (9 + (i + 0)) - 1];
-+	  y[i + 1] = -tmp[36 - (9 + (i + 1)) - 1];
-+	  y[i + 2] = -tmp[36 - (9 + (i + 2)) - 1];
-+	}
-+	for (i = 27; i < 36; i += 3) {
-+	  y[i + 0] = -tmp[(i + 0) - 27];
-+	  y[i + 1] = -tmp[(i + 1) - 27];
-+	  y[i + 2] = -tmp[(i + 2) - 27];
-+	}
-+	}
-+*/
-+
-+	/* Registers used:
-+		r0 = tmp[8], r1 = tmp[7], r2 = tmp[6], r3 = tmp[5], r4 = tmp[4]
-+		r5 = tmp[3], r6 = tmp[2], r7 = tmp[1], r8 = tmp[0], r12 = y
-+
-+	   Free registers:
-+		r9, r10, r11, lr
-+	*/
-+
-+	ldm	sp++, r0-r8	/* Get tmp[0]-tmp[8] from stack */
-+	sub	r5, r7		/* tmp[3] -= tmp[1]*/
-+	sub	r3, r5		/* tmp[5] -= tmp[3]*/
-+	sub	r1, r3		/* tmp[7] -= tmp[5]*/
-+
-+	sub	r7, r8		/* tmp[1] -= tmp[0]*/
-+	sub	r6, r7		/* tmp[2] -= tmp[1]*/
-+	sub	r5, r6		/* tmp[3] -= tmp[2]*/
-+	neg	r8
-+	st.w	r12[26*4], r8	/* y[26] = -tmp[0] */
-+	st.w	r12[27*4], r8	/* y[27] = -tmp[0] */
-+	neg	r7
-+	neg	r6
-+	st.w	r12[25*4], r7	/* y[25] = -tmp[1] */
-+	st.w	r12[24*4], r6	/* y[24] = -tmp[2] */
-+	st.d	r12[28*4], r6	/* y[28] = -tmp[1], y[29] = -tmp[2]*/
-+
-+	sub	r4, r5		/* tmp[4] -= tmp[3]*/
-+	sub	r3, r4		/* tmp[5] -= tmp[4]*/
-+	neg	r5
-+	neg	r4
-+	st.w	r12[23*4], r5	/* y[23] = -tmp[3] */
-+	st.w	r12[22*4], r4	/* y[22] = -tmp[4] */
-+	st.d	r12[30*4], r4	/* y[30] = -tmp[3], y[31] = -tmp[4]*/
-+
-+	ldm	sp++, r4-r11,lr	/* Get tmp[9]-tmp[17] from stack */
-+
-+	sub	r2, r3		/* tmp[6] -= tmp[5]*/
-+
-+	sub	lr, r1		/* tmp[9] -= tmp[7]*/
-+	sub	r10, lr		/* tmp[11] -= tmp[9]*/
-+	sub	r8, r10		/* tmp[13] -= tmp[11]*/
-+	sub	r6, r8		/* tmp[15] -= tmp[13]*/
-+	sub	r4, r6		/* tmp[17] -= tmp[15]*/
-+
-+	sub	r1, r2		/* tmp[7] -= tmp[6]*/
-+	sub	r0, r1		/* tmp[8] -= tmp[7]*/
-+	neg	r3
-+	neg	r2
-+	st.w	r12[21*4], r3	/* y[21] = -tmp[5] */
-+	st.w	r12[20*4], r2	/* y[20] = -tmp[6] */
-+	st.d	r12[32*4], r2	/* y[32] = -tmp[5], y[33] = -tmp[6]*/
-+
-+	sub	lr, r0		/* tmp[9] -= tmp[8]*/
-+	sub	r11, lr		/* tmp[10] -= tmp[9]*/
-+	neg	r1
-+	neg	r0
-+	st.w	r12[19*4], r1	/* y[19] = -tmp[7] */
-+	st.w	r12[18*4], r0	/* y[18] = -tmp[8] */
-+	st.d	r12[34*4], r0	/* y[34] = -tmp[7], y[35] = -tmp[8]*/
-+
-+	sub	r10, r11	/* tmp[11] -= tmp[10]*/
-+	sub	r9, r10		/* tmp[12] -= tmp[11]*/
-+
-+	st.w	r12[0*4], lr	/* y[0] = tmp[9]*/
-+	neg	lr
-+	st.w	r12[17*4], lr	/* y[17] = -tmp[9]*/
-+	st.d	r12[1*4], r10	/* y[1] = tmp[10], y[2] = tmp[11] */
-+	neg	r11
-+	neg	r10
-+	st.w	r12[16*4], r11	/* y[16] = -tmp[10] */
-+	st.w	r12[15*4], r10	/* y[15] = -tmp[11] */
-+
-+
-+	sub	r8, r9		/* tmp[13] -= tmp[12]*/
-+	sub	r7, r8		/* tmp[14] -= tmp[13]*/
-+	st.d	r12[3*4], r8	/* y[3] = tmp[12], y[4] = tmp[13] */
-+	neg	r9
-+	neg	r8
-+	st.w	r12[14*4], r9	/* y[14] = -tmp[12] */
-+	st.w	r12[13*4], r8	/* y[13] = -tmp[13] */
-+
-+	sub	r6, r7		/* tmp[15] -= tmp[14]*/
-+	sub	r5, r6		/* tmp[16] -= tmp[15]*/
-+	sub	r4, r5		/* tmp[17] -= tmp[16]*/
-+
-+	st.d	r12[5*4], r6	/* y[5] = tmp[14], y[6] = tmp[15] */
-+	neg	r7
-+	neg	r6
-+	st.w	r12[12*4], r7	/* y[12] = -tmp[14] */
-+	st.w	r12[11*4], r6	/* y[11] = -tmp[15] */
-+
-+	st.d	r12[7*4], r4	/* y[7] = tmp[16], y[8] = tmp[17] */
-+	neg	r5
-+	neg	r4
-+	st.w	r12[10*4], r5	/* y[10] = -tmp[16] */
-+	st.w	r12[9*4], r4	/* y[9] = -tmp[17] */
-+
-+	popm	r0-r7,r11,pc
-+
-+	.align	2
-+scale_dctIV:
-+	.short	MAD_F(0x1ff833fa), MAD_F(0x1fb9ea93), MAD_F(0x1f3dd120)
-+	.short	MAD_F(0x1e84d969), MAD_F(0x1d906bcf), MAD_F(0x1c62648b)
-+	.short	MAD_F(0x1afd100f), MAD_F(0x1963268b), MAD_F(0x1797c6a4)
-+	.short	MAD_F(0x159e6f5b), MAD_F(0x137af940), MAD_F(0x11318ef3)
-+	.short	MAD_F(0x0ec6a507), MAD_F(0x0c3ef153), MAD_F(0x099f61c5)
-+	.short	MAD_F(0x06ed12c5), MAD_F(0x042d4544), MAD_F(0x0165547c)
-+
-+	.align	2
-+scale_sdctII:
-+	.short	MAD_F(0x1fe0d3b4), MAD_F(0x1ee8dd47), MAD_F(0x1d007930)
-+	.short	MAD_F(0x1a367e59), MAD_F(0x16a09e66), MAD_F(0x125abcf8)
-+	.short	MAD_F(0x0d8616bc), MAD_F(0x08483ee1), MAD_F(0x02c9fad7)
-diff --git a/layer3.c b/layer3.c
-index 4e5d3fa..dffdab3 100644
---- a/layer3.c
-+++ b/layer3.c
-@@ -378,6 +378,11 @@ mad_fixed_t const ca[8] = {
-   -MAD_F(0x003a2847) /* -0.014198569 */, -MAD_F(0x000f27b4) /* -0.003699975 */
- };
- 
-+#ifdef FPM_AVR32
-+# undef MAD_F
-+# define MAD_F(x) ((x + (1 << 12)) >> 13)
-+#endif
-+
- /*
-  * IMDCT coefficients for short blocks
-  * derived from section 2.4.3.4.10.2 of ISO/IEC 11172-3
-@@ -386,7 +391,7 @@ mad_fixed_t const ca[8] = {
-  * imdct_s[i /odd][k] = cos((PI / 24) * (2 * (6 + (i-1)/2) + 7) * (2 * k + 1))
-  */
- static
--mad_fixed_t const imdct_s[6][6] = {
-+mad_coeff_t const imdct_s[6][6] = {
- # include "imdct_s.dat"
- };
- 
-@@ -398,7 +403,7 @@ mad_fixed_t const imdct_s[6][6] = {
-  * window_l[i] = sin((PI / 36) * (i + 1/2))
-  */
- static
--mad_fixed_t const window_l[36] = {
-+mad_coeff_t const window_l[36] = {
-   MAD_F(0x00b2aa3e) /* 0.043619387 */, MAD_F(0x0216a2a2) /* 0.130526192 */,
-   MAD_F(0x03768962) /* 0.216439614 */, MAD_F(0x04cfb0e2) /* 0.300705800 */,
-   MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x07635284) /* 0.461748613 */,
-@@ -429,7 +434,7 @@ mad_fixed_t const window_l[36] = {
-  * window_s[i] = sin((PI / 12) * (i + 1/2))
-  */
- static
--mad_fixed_t const window_s[12] = {
-+mad_coeff_t const window_s[12] = {
-   MAD_F(0x0216a2a2) /* 0.130526192 */, MAD_F(0x061f78aa) /* 0.382683432 */,
-   MAD_F(0x09bd7ca0) /* 0.608761429 */, MAD_F(0x0cb19346) /* 0.793353340 */,
-   MAD_F(0x0ec835e8) /* 0.923879533 */, MAD_F(0x0fdcf549) /* 0.991444861 */,
-@@ -438,6 +443,11 @@ mad_fixed_t const window_s[12] = {
-   MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x0216a2a2) /* 0.130526192 */,
- };
- 
-+#ifdef FPM_AVR32
-+# undef MAD_F
-+# define MAD_F(x)		((mad_fixed_t) (x##L))
-+#endif
-+
- /*
-  * coefficients for intensity stereo processing
-  * derived from section 2.4.3.4.9.3 of ISO/IEC 11172-3
-@@ -879,6 +889,42 @@ void III_exponents(struct channel const *channel,
-  * NAME:	III_requantize()
-  * DESCRIPTION:	requantize one (positive) value
-  */
-+
-+#if 0
-+/*static*/
-+mad_fixed_t III_requantize(unsigned int value, signed int exp)
-+{
-+  register mad_fixed_t tmp2, tmp3;
-+  long long tmp_d;
-+
-+  asm ("asr\t%0, %1, 2\n"
-+       "ld.w\t%2, %4[%5 << 2]\n"
-+       "sub\t%1, %1, %0 << 2\n"
-+       "asr\t%3, %2, 7\n"
-+       "andl\t%2, 0x7f, COH\n"
-+       "add\t%0, %2\n"
-+       "lsl\t%m0,%3,%0\n"
-+       "neg\t%0\n"
-+       "asr\t%3,%3,%0\n"
-+       "add\t%2, %6, %1 << 2\n"
-+       "ld.w\t%2, %2[12]\n"
-+       "cp.w\t%0, 0\n"
-+       "movlt\t%3, %m0\n"
-+       "muls.d\t%0, %3, %2\n"
-+       "cp.w\t%1, 0\n"
-+       "breq\t0f\n"
-+       "lsr\t%0, %0, 28\n"
-+       "or\t%3, %0, %m0 << 4\n"
-+       "0:\n"
-+       : "=&r"(tmp_d), "+r"(exp), "=&r"(tmp2), "=&r"(tmp3)
-+       : "r"(&rq_table), "r"(value), "r"(root_table));
-+
-+
-+  return tmp3;
-+}
-+
-+#else
-+
- static
- mad_fixed_t III_requantize(unsigned int value, signed int exp)
- {
-@@ -918,6 +964,7 @@ mad_fixed_t III_requantize(unsigned int value, signed int exp)
- 
-   return frac ? mad_f_mul(requantized, root_table[3 + frac]) : requantized;
- }
-+#endif
- 
- /* we must take care that sz >= bits and sz < sizeof(long) lest bits == 0 */
- # define MASK(cache, sz, bits)	\
-@@ -2054,27 +2101,42 @@ void imdct36(mad_fixed_t const X[18], mad_fixed_t x[36])
- }
- #  endif
- 
-+
-+#ifdef FPM_AVR32
-+# undef  mad_f_mul
-+# define mad_f_mul(x, y) __builtin_mulsatrndwh_w(x, y)
-+#endif
-+
- /*
-  * NAME:	III_imdct_l()
-  * DESCRIPTION:	perform IMDCT and windowing for long blocks
-  */
- static
--void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
-+void III_imdct_l(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36],
- 		 unsigned int block_type)
- {
-   unsigned int i;
-+  mad_fixed_t *z_ptr;
-+  mad_coeff_t *w_ptr;
- 
-   /* IMDCT */
- 
-+#ifdef FPM_AVR32
-+  imdct36_avr32(X, z);
-+#else
-   imdct36(X, z);
-+#endif
- 
-   /* windowing */
- 
-+  z_ptr = &z[0];
-+  w_ptr = &window_l[0];
-+
-   switch (block_type) {
-   case 0:  /* normal window */
- # if defined(ASO_INTERLEAVE1)
-     {
--      register mad_fixed_t tmp1, tmp2;
-+      register mad_coeff_t tmp1, tmp2;
- 
-       tmp1 = window_l[0];
-       tmp2 = window_l[1];
-@@ -2091,15 +2153,16 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
-     }
- # elif defined(ASO_INTERLEAVE2)
-     {
--      register mad_fixed_t tmp1, tmp2;
-+      register mad_fixed_t tmp1;
-+      register mad_coeff_t tmp2;
- 
--      tmp1 = z[0];
--      tmp2 = window_l[0];
-+      tmp1 = *z_ptr;
-+      tmp2 = *w_ptr++;
- 
-       for (i = 0; i < 35; ++i) {
--	z[i] = mad_f_mul(tmp1, tmp2);
--	tmp1 = z[i + 1];
--	tmp2 = window_l[i + 1];
-+	*z_ptr++ = mad_f_mul(tmp1, tmp2);
-+	tmp1 = *z_ptr;
-+	tmp2 = *w_ptr++;
-       }
- 
-       z[35] = mad_f_mul(tmp1, tmp2);
-@@ -2118,23 +2181,28 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
- 
-   case 1:  /* start block */
-     for (i =  0; i < 18; i += 3) {
--      z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]);
--      z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]);
--      z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]);
-+      *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++);
-+      *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++);
-+      *(z_ptr++) = mad_f_mul(*z_ptr, *w_ptr++);
-     }
-+    z_ptr += 6;
-+    w_ptr = &window_s[6];
-     /*  (i = 18; i < 24; ++i) z[i] unchanged */
--    for (i = 24; i < 30; ++i) z[i] = mad_f_mul(z[i], window_s[i - 18]);
--    for (i = 30; i < 36; ++i) z[i] = 0;
-+    for (i = 24; i < 30; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
-+    for (i = 30; i < 36; ++i) *z_ptr++ = 0;
-     break;
- 
-   case 3:  /* stop block */
--    for (i =  0; i <  6; ++i) z[i] = 0;
--    for (i =  6; i < 12; ++i) z[i] = mad_f_mul(z[i], window_s[i - 6]);
-+    w_ptr = &window_s[0];
-+    for (i =  0; i <  6; ++i) *z_ptr++ = 0;
-+    for (i =  6; i < 12; ++i) *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
-     /*  (i = 12; i < 18; ++i) z[i] unchanged */
-+    w_ptr = &window_l[18];
-+    z_ptr += 6;
-     for (i = 18; i < 36; i += 3) {
--      z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]);
--      z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]);
--      z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]);
-+      *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++ );
-+      *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
-+      *z_ptr++ = mad_f_mul(*z_ptr, *w_ptr++);
-     }
-     break;
-   }
-@@ -2146,10 +2214,10 @@ void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
-  * DESCRIPTION:	perform IMDCT and windowing for short blocks
-  */
- static
--void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
-+void III_imdct_s(mad_fixed_t /*const*/ X[18], mad_fixed_t z[36])
- {
-   mad_fixed_t y[36], *yptr;
--  mad_fixed_t const *wptr;
-+  mad_coeff_t const *wptr;
-   int w, i;
-   register mad_fixed64hi_t hi;
-   register mad_fixed64lo_t lo;
-@@ -2159,11 +2227,56 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
-   yptr = &y[0];
- 
-   for (w = 0; w < 3; ++w) {
--    register mad_fixed_t const (*s)[6];
-+    register mad_coeff_t const (*s)[6];
- 
-     s = imdct_s;
- 
-     for (i = 0; i < 3; ++i) {
-+#ifdef FPM_AVR32
-+      register long long int acc, tmp1, tmp2, tmp3, tmp4;
-+      asm volatile ("ld.d\t%0, %5++\n"
-+                    "ld.d\t%1, %6[0]\n"
-+                    "ld.d\t%2, %6[2*4]\n"
-+                    "ld.d\t%3, %6[4*4]\n"
-+                    "mulwh.d\t%4, %m1, %m0:t\n"
-+                    "macwh.d\t%4, %1, %m0:b\n"
-+                    "ld.w\t%m0, %5++\n"
-+                    "macwh.d\t%4, %m2, %0:t\n"
-+                    "macwh.d\t%4, %2, %0:b\n"
-+                    "macwh.d\t%4, %m3, %m0:t\n"
-+                    "macwh.d\t%4, %3, %m0:b\n"
-+                    "ld.d\t%0, %5++\n"
-+                    "rol\t%4\n"
-+                    "rol\t%m4\n"
-+                    : "=&r"(tmp1), "=&r"(tmp2), "=&r"(tmp3), "=&r"(tmp4),
-+                      "=&r"(acc), "+r"(s)
-+                    : "r"(X));
-+
-+      asm volatile ("st.w\t%1[0], %m0\n"
-+                    "neg\t%m0\n"
-+                    "st.w\t%2[5*4], %m0\n"
-+                    : "+r"(acc)
-+                    : "r"(&yptr[i]), "r"(&yptr[-i]));
-+
-+      asm volatile ("mulwh.d\t%4, %m1, %m0:t\n"
-+                    "macwh.d\t%4, %1, %m0:b\n"
-+                    "ld.w\t%m0, %5++\n"
-+                    "macwh.d\t%4, %m2, %0:t\n"
-+                    "macwh.d\t%4, %2, %0:b\n"
-+                    "macwh.d\t%4, %m3, %m0:t\n"
-+                    "macwh.d\t%4, %3, %m0:b\n"
-+                    "rol\t%4\n"
-+                    "rol\t%m4\n"
-+                    : "+r"(tmp1), "+r"(tmp2), "+r"(tmp3), "+r"(tmp4),
-+                      "=&r"(acc), "+r"(s)
-+                    : "r"(X));
-+
-+      asm volatile (  "st.w\t%1[6*4], %m0\n"
-+                      "st.w\t%2[11*4], %m0\n"
-+                      :: "r"(acc), "r"(&yptr[i]), "r"(&yptr[-i]));
-+
-+
-+#else
-       MAD_F_ML0(hi, lo, X[0], (*s)[0]);
-       MAD_F_MLA(hi, lo, X[1], (*s)[1]);
-       MAD_F_MLA(hi, lo, X[2], (*s)[2]);
-@@ -2187,6 +2300,7 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
-       yptr[11 - i] = yptr[i + 6];
- 
-       ++s;
-+#endif
-     }
- 
-     yptr += 12;
-@@ -2198,6 +2312,196 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
-   yptr = &y[0];
-   wptr = &window_s[0];
- 
-+#ifdef FPM_AVR32
-+  /*    z[0] = 0;
-+        z[1] = 0;
-+        z[2] = 0;
-+        z[3] = 0;
-+        z[4] = 0;
-+        z[5] = 0;
-+        z[30] = 0;
-+        z[31] = 0;
-+        z[32] = 0;
-+        z[33] = 0;
-+        z[34] = 0;
-+        z[35] = 0;
-+  */
-+  {
-+    register long long int tmp, tmp2, tmp3, w0123, w4567, w891011;
-+    asm volatile ("mov\t%m0, 0\n"
-+                  "mov\t%0, %m0\n"
-+                  "st.d\t%1[0], %0\n"
-+                  "st.d\t%1[2*4], %0\n"
-+                  "st.d\t%1[4*4], %0\n"
-+                  "st.d\t%1[30*4], %0\n"
-+                  "st.d\t%1[32*4], %0\n"
-+                  "st.d\t%1[34*4], %0\n"
-+                  : "=&r"(tmp) : "r"(z));
-+
-+
-+
-+    /*
-+            z[6] = mad_f_mul(yptr [0], wptr[0]);
-+            z[7] = mad_f_mul(yptr [1], wptr[1]);
-+            z[8] = mad_f_mul(yptr [2], wptr[2]);
-+            z[9] = mad_f_mul(yptr [3], wptr[3]);
-+            z[10] = mad_f_mul(yptr[4], wptr[4]);
-+            z[11] = mad_f_mul(yptr[5], wptr[5]);
-+            z[24] = mad_f_mul(yptr [30], wptr[6]);
-+            z[25] = mad_f_mul(yptr [31], wptr[7]);
-+            z[26] = mad_f_mul(yptr [32], wptr[8]);
-+            z[27] = mad_f_mul(yptr [33], wptr[9]);
-+            z[28] = mad_f_mul(yptr[34], wptr[10]);
-+            z[29] = mad_f_mul(yptr[35], wptr[11]);
-+    */
-+
-+
-+    asm volatile ("ld.d\t%0, %5[0*4]\n"
-+                  "ld.d\t%3, %6[0*4]\n"
-+                  "ld.d\t%1, %5[2*4]\n"
-+                  "ld.d\t%2, %5[4*4]\n"
-+                  "mulsatrndwh.w\t%m3, %m3, %m0:t\n"
-+                  "mulsatrndwh.w\t%3, %3, %m0:b\n"
-+                  "ld.d\t%4, %6[2*4]\n"
-+                  "st.d\t%7[6*4], %3\n"
-+
-+                  "mulsatrndwh.w\t%m4, %m4, %0:t\n"
-+                  "mulsatrndwh.w\t%4, %4, %0:b\n"
-+                  "ld.d\t%3, %6[4*4]\n"
-+                  "st.d\t%7[8*4], %4\n"
-+
-+                  "mulsatrndwh.w\t%m3, %m3, %m1:t\n"
-+                  "mulsatrndwh.w\t%3, %3, %m1:b\n"
-+                  "ld.d\t%4, %6[30*4]\n"
-+                  "st.d\t%7[10*4], %3\n"
-+
-+                  "mulsatrndwh.w\t%m4, %m4, %1:t\n"
-+                  "mulsatrndwh.w\t%4, %4, %1:b\n"
-+                  "ld.d\t%3, %6[32*4]\n"
-+                  "st.d\t%7[24*4], %4\n"
-+
-+                  "mulsatrndwh.w\t%m3, %m3, %m2:t\n"
-+                  "mulsatrndwh.w\t%3, %3, %m2:b\n"
-+                  "ld.d\t%4, %6[34*4]\n"
-+                  "st.d\t%7[26*4], %3\n"
-+
-+                  "mulsatrndwh.w\t%m4, %m4, %2:t\n"
-+                  "mulsatrndwh.w\t%4, %4, %2:b\n"
-+                  "st.d\t%7[28*4], %4\n"
-+
-+                  : "=&r"(w0123), "=&r"(w4567), "=&r"(w891011), "=&r"(tmp), "=&r"(tmp2)
-+                  : "r"(wptr), "r"(yptr), "r"(z));
-+    /*
-+       MAD_F_ML0(hi, lo, yptr[6], wptr[6]);
-+       MAD_F_MLA(hi, lo, yptr[12], wptr[0]);
-+       z[12] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[7], wptr[7]);
-+       MAD_F_MLA(hi, lo, yptr[13], wptr[1]);
-+       z[13] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[8], wptr[8]);
-+       MAD_F_MLA(hi, lo, yptr[14], wptr[2]);
-+       z[14] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[9], wptr[9]);
-+       MAD_F_MLA(hi, lo, yptr[15], wptr[3]);
-+       z[15] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[10], wptr[10]);
-+       MAD_F_MLA(hi, lo, yptr[16], wptr[4]);
-+       z[16] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[11], wptr[11]);
-+       MAD_F_MLA(hi, lo, yptr[17], wptr[5]);
-+       z[17] = MAD_F_MLZ(hi, lo);
-+
-+       MAD_F_ML0(hi, lo, yptr[18], wptr[6]);
-+       MAD_F_MLA(hi, lo, yptr[24], wptr[0]);
-+       z[18] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[19], wptr[7]);
-+       MAD_F_MLA(hi, lo, yptr[25], wptr[1]);
-+       z[19] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[20], wptr[8]);
-+       MAD_F_MLA(hi, lo, yptr[26], wptr[2]);
-+       z[20] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[21], wptr[9]);
-+       MAD_F_MLA(hi, lo, yptr[27], wptr[3]);
-+       z[21] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[22], wptr[10]);
-+       MAD_F_MLA(hi, lo, yptr[28], wptr[4]);
-+       z[22] = MAD_F_MLZ(hi, lo);
-+       MAD_F_ML0(hi, lo, yptr[23], wptr[11]);
-+       MAD_F_MLA(hi, lo, yptr[29], wptr[5]);
-+       z[23] = MAD_F_MLZ(hi, lo);*/
-+
-+
-+    asm volatile ("ld.d\t%0, %3[6*4]\n"
-+                  "ld.d\t%1, %3[12*4]\n"
-+                  "mulwh.d\t%2, %m0, %5:t\n"
-+                  "macwh.d\t%2, %m1, %m4:t\n"
-+                  "mulwh.d\t%0, %0, %5:b\n"
-+                  "macwh.d\t%0, %1, %m4:b\n"
-+                  "lsl\t%m2, 1\n"
-+                  "lsl\t%2, %m0, 1\n"
-+                  "st.d\t%6[12*4], %2\n"
-+
-+                  "ld.d\t%0, %3[18*4]\n"
-+                  "ld.d\t%1, %3[24*4]\n"
-+                  "mulwh.d\t%2, %m0, %5:t\n"
-+                  "macwh.d\t%2, %m1, %m4:t\n"
-+                  "mulwh.d\t%0, %0, %5:b\n"
-+                  "macwh.d\t%0, %1, %m4:b\n"
-+                  "lsl\t%m2, 1\n"
-+                  "lsl\t%2, %m0, 1\n"
-+                  "st.d\t%6[18*4], %2\n"
-+
-+                  : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3)
-+                  : "r"(yptr), "r"(w0123), "r"(w4567), "r"(z));
-+
-+    asm volatile ("ld.d\t%0, %3[8*4]\n"
-+                  "ld.d\t%1, %3[14*4]\n"
-+                  "mulwh.d\t%2, %m0, %m5:t\n"
-+                  "macwh.d\t%2, %m1, %4:t\n"
-+                  "mulwh.d\t%0, %0, %m5:b\n"
-+                  "macwh.d\t%0, %1, %4:b\n"
-+                  "lsl\t%m2, 1\n"
-+                  "lsl\t%2, %m0, 1\n"
-+                  "st.d\t%6[14*4], %2\n"
-+
-+                  "ld.d\t%0, %3[20*4]\n"
-+                  "ld.d\t%1, %3[26*4]\n"
-+                  "mulwh.d\t%2, %m0, %m5:t\n"
-+                  "macwh.d\t%2, %m1, %4:t\n"
-+                  "mulwh.d\t%0, %0, %m5:b\n"
-+                  "macwh.d\t%0, %1, %4:b\n"
-+                  "lsl\t%m2, 1\n"
-+                  "lsl\t%2, %m0, 1\n"
-+                  "st.d\t%6[20*4], %2\n"
-+
-+                  : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3)
-+                  : "r"(yptr), "r"(w0123), "r"(w891011), "r"(z));
-+
-+    asm volatile ("ld.d\t%0, %3[10*4]\n"
-+                  "ld.d\t%1, %3[16*4]\n"
-+                  "mulwh.d\t%2, %m0, %5:t\n"
-+                  "macwh.d\t%2, %m1, %m4:t\n"
-+                  "mulwh.d\t%0, %0, %5:b\n"
-+                  "macwh.d\t%0, %1, %m4:b\n"
-+                  "lsl\t%m2, 1\n"
-+                  "lsl\t%2, %m0, 1\n"
-+                  "st.d\t%6[16*4], %2\n"
-+
-+                  "ld.d\t%0, %3[22*4]\n"
-+                  "ld.d\t%1, %3[28*4]\n"
-+                  "mulwh.d\t%2, %m0, %5:t\n"
-+                  "macwh.d\t%2, %m1, %m4:t\n"
-+                  "mulwh.d\t%0, %0, %5:b\n"
-+                  "macwh.d\t%0, %1, %m4:b\n"
-+                  "lsl\t%m2, 1\n"
-+                  "lsl\t%2, %m0, 1\n"
-+                  "st.d\t%6[22*4], %2\n"
-+
-+                  : "=&r"(tmp), "=&r"(tmp2), "=&r"(tmp3)
-+                  : "r"(yptr), "r"(w4567), "r"(w891011), "r"(z));
-+
-+  }
-+#else
-   for (i = 0; i < 6; ++i) {
-     z[i +  0] = 0;
-     z[i +  6] = mad_f_mul(yptr[ 0 + 0], wptr[0]);
-@@ -2218,8 +2522,15 @@ void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
-     ++yptr;
-     ++wptr;
-   }
-+#endif
- }
- 
-+#ifdef FPM_AVR32
-+# undef  mad_f_mul
-+# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) *  \
-+				 (((y) + (1L << 15)) >> 16))
-+#endif
-+
- /*
-  * NAME:	III_overlap()
-  * DESCRIPTION:	perform overlap-add of windowed IMDCT outputs
-diff --git a/synth.c b/synth.c
-index 1d28d43..f42d49b 100644
---- a/synth.c
-+++ b/synth.c
-@@ -29,20 +29,6 @@
- # include "frame.h"
- # include "synth.h"
- 
--/*
-- * NAME:	synth->init()
-- * DESCRIPTION:	initialize synth struct
-- */
--void mad_synth_init(struct mad_synth *synth)
--{
--  mad_synth_mute(synth);
--
--  synth->phase = 0;
--
--  synth->pcm.samplerate = 0;
--  synth->pcm.channels   = 0;
--  synth->pcm.length     = 0;
--}
- 
- /*
-  * NAME:	synth->mute()
-@@ -88,6 +74,10 @@ void mad_synth_mute(struct mad_synth *synth)
- 
- /* FPM_DEFAULT without OPT_SSO will actually lose accuracy and performance */
- 
-+# if defined(FPM_AVR32)
-+#  define OPT_SSO
-+# endif
-+
- # if defined(FPM_DEFAULT) && !defined(OPT_SSO)
- #  define OPT_SSO
- # endif
-@@ -522,9 +512,15 @@ void dct32(mad_fixed_t const in[32], unsigned int slot,
- #  endif
- #  define ML0(hi, lo, x, y)	((lo)  = (x) * (y))
- #  define MLA(hi, lo, x, y)	((lo) += (x) * (y))
--#  define MLN(hi, lo)		((lo)  = -(lo))
--#  define MLZ(hi, lo)		((void) (hi), (mad_fixed_t) (lo))
--#  define SHIFT(x)		((x) >> 2)
-+#  if defined(FPM_AVR32)
-+#   define MLN(hi, lo)		MAD_F_MLN((hi), (lo))
-+#   define MLZ(hi, lo)		(hi)
-+#   define SHIFT(x)		((x) << 2)
-+#  else
-+#   define MLN(hi, lo)		((lo)  = -(lo))
-+#   define MLZ(hi, lo)		((void) (hi), (mad_fixed_t) (lo))
-+#   define SHIFT(x)		((x) >> 2)
-+#  endif
- #  define PRESHIFT(x)		((MAD_F(x) + (1L << 13)) >> 14)
- # else
- #  define ML0(hi, lo, x, y)	MAD_F_ML0((hi), (lo), (x), (y))
-@@ -541,11 +537,54 @@ void dct32(mad_fixed_t const in[32], unsigned int slot,
- #  endif
- # endif
- 
-+/*
-+ * NAME:	synth->init()
-+ * DESCRIPTION:	initialize synth struct
-+ */
-+
-+#ifdef FPM_AVR32
-+short Dmod[17][33];
-+#endif
-+
- static
-+#ifdef FPM_AVR32
-+short const D[17][32] = {
-+#else
- mad_fixed_t const D[17][32] = {
-+#endif
- # include "D.dat"
- };
- 
-+void mad_synth_init(struct mad_synth *synth)
-+{
-+
-+  mad_synth_mute(synth);
-+
-+  synth->phase = 0;
-+
-+  synth->pcm.samplerate = 0;
-+  synth->pcm.channels   = 0;
-+  synth->pcm.length     = 0;
-+
-+#ifdef FPM_AVR32
-+  {
-+    int i, j;
-+    for ( i = 0; i < 17; i++ ){
-+      for ( j = 0; j < 32; j++ ){
-+        if ( j & 1 ){
-+          Dmod[i][17 + (j >> 1)]= D[i][j];
-+        } else {
-+          Dmod[i][(j >> 1)]= D[i][j];
-+        }
-+      }
-+
-+      Dmod[i][16]= Dmod[i][16+8];
-+    }
-+  }
-+#endif
-+
-+}
-+
- # if defined(ASO_SYNTH)
- void synth_full(struct mad_synth *, struct mad_frame const *,
- 		unsigned int, unsigned int);
-@@ -560,9 +599,13 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
- {
-   unsigned int phase, ch, s, sb, pe, po;
-   mad_fixed_t *pcm1, *pcm2, (*filter)[2][2][16][8];
--  mad_fixed_t const (*sbsample)[36][32];
-+  mad_fixed_t /*const*/ (*sbsample)[36][32];
-   register mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8];
-+#ifdef FPM_AVR32
-+  register short const (*Dptr)[32], *ptr;
-+#else
-   register mad_fixed_t const (*Dptr)[32], *ptr;
-+#endif
-   register mad_fixed64hi_t hi;
-   register mad_fixed64lo_t lo;
- 
-@@ -573,6 +616,20 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
-     pcm1     = synth->pcm.samples[ch];
- 
-     for (s = 0; s < ns; ++s) {
-+#  ifdef FPM_AVR32
-+/*
-+  int i;
-+  for ( i = 0; i < 32; i++ ){
-+  (*sbsample)[s][i] = ((*sbsample)[s][i] + (1 << 13)) & 0xFFFFC000;
-+  }
-+*/
-+      dct32_avr32((*sbsample)[s], phase >> 1,
-+	    (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
-+      /*      printf("dct32: %d\n", GET_CYCLES);*/
-+      pcm1 = synth_avr32(phase, (mad_fixed_t *)filter, \
-+                         pcm1, (short *)&Dmod[0]);
-+      /*      printf("synth_window: %d\n", GET_CYCLES);*/
-+#  else
-       dct32((*sbsample)[s], phase >> 1,
- 	    (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
- 
-@@ -679,6 +736,7 @@ void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
-       MLA(hi, lo, (*fo)[7], ptr[ 2]);
- 
-       *pcm1 = SHIFT(-MLZ(hi, lo));
-+#  endif
-       pcm1 += 16;
- 
-       phase = (phase + 1) % 16;
-diff --git a/synth_avr32.S b/synth_avr32.S
-new file mode 100644
-index 0000000..701077b
---- /dev/null
-+++ b/synth_avr32.S
-@@ -0,0 +1,394 @@
-+/*
-+   Optimized function for speeding up synthesis filter
-+   in MPEG Audio Decoding.
-+   Copyright 2003-2006 Atmel Corporation.
-+
-+   Written by Ronny Pedersen and Lars Even Alm?s, Atmel Norway
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program; if not, write to the Free Software
-+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+
-+
-+/* *****************
-+   Defining macros
-+   ***************** */
-+
-+	.macro	window_1	f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi
-+	ld.d		\tmp1_lo, \f[0*4]			/* tmp1 = { f[0], f[1] } */
-+	ld.w		\tmp2_lo, \ptr[0*2+\ptr_offset*2]	/* tmp2_lo = { ptr[0], ptr[1] }*/
-+	ld.d		\tmp3_lo, \f[6*4]			/* tmp3 = { f[6], f[7] } */
-+	ld.w		\tmp2_hi, \ptr[6*2+\ptr_offset*2]	/* tmp2_hi = { ptr[6], ptr[7] }*/
-+	.if \mul
-+	mulwh.d		\acc, \tmp1_hi, \tmp2_lo:t		/* f[0] * ptr[0]*/
-+	.else
-+	macwh.d		\acc, \tmp1_hi, \tmp2_lo:t		/* f[0] * ptr[0]*/
-+	.endif
-+	macwh.d		\acc, \tmp3_lo, \tmp2_lo:b		/* f[7] * ptr[1]*/
-+	ld.w		\tmp2_lo, \ptr[2*2+\ptr_offset*2]	/* tmp2_lo = { ptr[2], ptr[3] }*/
-+	macwh.d		\acc, \tmp1_lo, \tmp2_hi:b		/* f[1] * ptr[7]*/
-+	ld.d		\tmp1_lo, \f[2*4]			/* tmp1 = { f[2], f[3] } */
-+
-+	macwh.d		\acc, \tmp3_hi, \tmp2_lo:t		/* f[6] * ptr[2]*/
-+	macwh.d		\acc, \tmp1_hi, \tmp2_hi:t		/* f[2] * ptr[6]*/
-+	ld.d		\tmp3_lo, \f[4*4]			/* tmp3 = { f[4], f[5] } */
-+	ld.w		\tmp2_hi, \ptr[4*2+\ptr_offset*2]	/* tmp2_hi = { ptr[4], ptr[5] }*/
-+	macwh.d		\acc, \tmp3_lo, \tmp2_lo:b		/* f[5] * ptr[3]*/
-+
-+	macwh.d		\acc, \tmp1_lo, \tmp2_hi:b		/* f[3] * ptr[5]*/
-+	macwh.d		\acc, \tmp3_hi, \tmp2_hi:t		/* f[4] * ptr[4]*/
-+	.endm
-+
-+	.macro	window_2	f, ptr, acc, ptr_offset, mul, tmp1_lo, tmp1_hi, tmp2_lo, tmp2_hi, tmp3_lo, tmp3_hi
-+	ld.d		\tmp1_lo, \f[0*4]			/* tmp1 = { f[0], f[1] } */
-+	ld.w		\tmp2_lo, \ptr[7*2+\ptr_offset*2]	/* tmp2_lo = { ptr[7], ptr[8] }*/
-+	ld.d		\tmp3_lo, \f[2*4]			/* tmp3 = { f[2], f[3] } */
-+	ld.w		\tmp2_hi, \ptr[9*2+\ptr_offset*2]	/* tmp2_hi = { ptr[9], ptr[10] }*/
-+	.if \mul
-+	mulwh.d		\acc, \tmp1_hi, \tmp2_lo:t		/* f[0] * ptr[7]*/
-+	.else
-+	macwh.d		\acc, \tmp1_hi, \tmp2_lo:t		/* f[0] * ptr[7]*/
-+	.endif
-+	macwh.d		\acc, \tmp1_lo, \tmp2_lo:b		/* f[1] * ptr[8]*/
-+
-+	ld.d		\tmp1_lo, \f[4*4]			/* tmp1 = { f[4], f[5] } */
-+	ld.w		\tmp2_lo, \ptr[11*2+\ptr_offset*2]	/* tmp2_lo = { ptr[11], ptr[12] }*/
-+
-+	macwh.d		\acc, \tmp3_hi, \tmp2_hi:t		/* f[2] * ptr[9]*/
-+	macwh.d		\acc, \tmp3_lo, \tmp2_hi:b		/* f[3] * ptr[10]*/
-+
-+	ld.d		\tmp3_lo, \f[6*4]			/* tmp3 = { f[6], f[7] } */
-+	ld.w		\tmp2_hi, \ptr[13*2+\ptr_offset*2]	/* tmp2_hi = { ptr[13], ptr[14] }*/
-+
-+	macwh.d		\acc, \tmp1_hi, \tmp2_lo:t		/* f[4] * ptr[11]*/
-+	macwh.d		\acc, \tmp1_lo, \tmp2_lo:b		/* f[5] * ptr[12]*/
-+	macwh.d		\acc, \tmp3_hi, \tmp2_hi:t		/* f[6] * ptr[13]*/
-+	macwh.d		\acc, \tmp3_lo, \tmp2_hi:b		/* f[7] * ptr[14]*/
-+	.endm
-+
-+	.macro	scale	res, d_lo, d_hi
-+	lsl		\d_hi, 2
-+	.endm
-+
-+/* **********************
-+   Starting main function
-+   ********************** */
-+
-+/* Function synth_avr32 is called from synth.c with arguments:
-+             phase, filter, *pcm1, &D[0]		*/
-+
-+	.global	synth_avr32
-+synth_avr32:
-+	pushm		r0-r7, lr
-+	sub		sp, 8
-+
-+	/* R12 = phase, R11 = filter, R10 = pcm1, r9 = D*/
-+	bld		r12, 0
-+	brcc		synth_even
-+
-+	/* Filter for odd phases */
-+
-+	/*	fe = &(*filter)[0][1][0];
-+		fx = &(*filter)[0][0][0];
-+		fo = &(*filter)[1][0][0]; */
-+	sub		lr /*fe*/, r11, -16*8*4
-+	sub		r8 /*fo*/, r11, -16*8*4*2
-+
-+	/*	pe = phase >> 1; */
-+	lsr		r12, 1
-+	stdsp		sp[4], r12
-+	/*	ptr = (short const *)Dmod + pe; */
-+	add		r12, r9, r12 << 1
-+
-+	/*	ML0(hi, lo, (*fx)[0], ptr[0 + 17]);
-+		MLA(hi, lo, (*fx)[1], ptr[7 + 17]);
-+		MLA(hi, lo, (*fx)[2], ptr[6 + 17]);
-+		MLA(hi, lo, (*fx)[3], ptr[5 + 17]);
-+		MLA(hi, lo, (*fx)[4], ptr[4 + 17]);
-+		MLA(hi, lo, (*fx)[5], ptr[3 + 17]);
-+		MLA(hi, lo, (*fx)[6], ptr[2 + 17]);
-+		MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */
-+	window_1	r11/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+
-+    /*		MLN(hi, lo); */
-+	neg		r0
-+	acr		r1
-+	neg		r1
-+
-+    /*		MLA(hi, lo, (*fe)[0], ptr[0]);
-+		MLA(hi, lo, (*fe)[1], ptr[7]);
-+		MLA(hi, lo, (*fe)[2], ptr[6]);
-+                MLA(hi, lo, (*fe)[3], ptr[5]);
-+                MLA(hi, lo, (*fe)[4], ptr[4]);
-+                MLA(hi, lo, (*fe)[5], ptr[3]);
-+                MLA(hi, lo, (*fe)[6], ptr[2]);
-+                MLA(hi, lo, (*fe)[7], ptr[1]); */
-+	window_1	lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
-+
-+    /*		*pcm1++ = SHIFT(MLZ(hi, lo));
-+
-+		pcm2 = pcm1 + 31; */
-+	scale		r1, r0, r1
-+	st.w		r10/*pcm_1*/++, r1
-+	sub		r11/*pcm2*/, r10, -4*31
-+
-+    /*		for (sb = 1; sb < 16; ++sb) { */
-+	mov 		r2, 15
-+	stdsp		sp[0], r2
-+odd_loop:
-+    /*		++fe;
-+		ptr += 33; */
-+	sub		lr /*fe*/, -8*4
-+	sub		r12, -33*2
-+
-+    /*		ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
-+		MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
-+		MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
-+		MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
-+		MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
-+		MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
-+		MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
-+		MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
-+	window_1	r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+    /*		MLN(hi, lo); */
-+
-+	neg		r0
-+	acr		r1
-+	neg		r1
-+
-+    /*		MLA(hi, lo, (*fe)[7], ptr[1]);
-+		MLA(hi, lo, (*fe)[6], ptr[2]);
-+		MLA(hi, lo, (*fe)[5], ptr[3]);
-+		MLA(hi, lo, (*fe)[4], ptr[4]);
-+		MLA(hi, lo, (*fe)[3], ptr[5]);
-+		MLA(hi, lo, (*fe)[2], ptr[6]);
-+		MLA(hi, lo, (*fe)[1], ptr[7]);
-+		MLA(hi, lo, (*fe)[0], ptr[0]); */
-+	window_1	lr/*fe*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
-+
-+    /*	ptr -= 2*pe; */
-+	lddsp		r2, sp[4]
-+
-+    /*		*pcm1++ = SHIFT(MLZ(hi, lo)); */
-+
-+	scale		r1, r0, r1
-+	sub		r12/*ptr*/, r12, r2/*pe*/<< 2
-+	st.w		r10/*pcm_1*/++, r1
-+
-+
-+    /*		ML0(hi, lo, (*fe)[0], ptr[7  + 17]);
-+		MLA(hi, lo, (*fe)[1], ptr[8  + 17]);
-+		MLA(hi, lo, (*fe)[2], ptr[9  + 17]);
-+		MLA(hi, lo, (*fe)[3], ptr[10 + 17]);
-+		MLA(hi, lo, (*fe)[4], ptr[11 + 17]);
-+		MLA(hi, lo, (*fe)[5], ptr[12 + 17]);
-+		MLA(hi, lo, (*fe)[6], ptr[13 + 17]);
-+		MLA(hi, lo, (*fe)[7], ptr[14 + 17]); */
-+	window_2	lr/*fe*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+    /*		MLA(hi, lo, (*fo)[7], ptr[14]);
-+		MLA(hi, lo, (*fo)[6], ptr[13]);
-+		MLA(hi, lo, (*fo)[5], ptr[12]);
-+		MLA(hi, lo, (*fo)[4], ptr[11]);
-+		MLA(hi, lo, (*fo)[3], ptr[10]);
-+		MLA(hi, lo, (*fo)[2], ptr[9]);
-+		MLA(hi, lo, (*fo)[1], ptr[8]);
-+		MLA(hi, lo, (*fo)[0], ptr[7]); */
-+	window_2	r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
-+
-+
-+    /*		*pcm2-- = SHIFT(MLZ(hi, lo)); */
-+	lddsp		r3, sp[4]
-+	lddsp		r2, sp[0]
-+	scale		r1, r0, r1
-+	st.w		--r11/*pcm_2*/, r1
-+
-+    /*		ptr += 2*pe; */
-+	add		r12/*ptr*/, r12, r3/*pe*/<< 2
-+
-+    /*		++fo;
-+		} */
-+	sub		r8/*fo*/, -8*4
-+
-+	sub		r2, 1
-+	stdsp		sp[0], r2
-+	brne		odd_loop
-+
-+    /*		ptr += 33; */
-+	sub		r12/*ptr*/, -33*2
-+
-+    /*		ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
-+		MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
-+		MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
-+		MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
-+		MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
-+		MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
-+		MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
-+		MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
-+	window_1	r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+
-+	rjmp		synth_end
-+synth_even:
-+	/* Filter for even phases */
-+
-+	/*	fe = &(*filter)[0][0][0];
-+		fx = &(*filter)[0][1][0];
-+		fo = &(*filter)[1][1][0]; */
-+	sub		lr /*fx*/, r11, -16*8*4
-+	sub		r8 /*fo*/, r11, -(16*8*4*2 + 16*8*4)
-+
-+	/*	po = ((phase - 1) & 0xF) >> 1; */
-+	sub		r12, 1
-+	andl		r12, 0xe, COH
-+	stdsp		sp[4], r12
-+	/*	ptr = (short const *)Dmod + po; */
-+	add		r12, r9, r12
-+
-+	/*	ML0(hi, lo, (*fx)[0], ptr[0 + 17]);
-+		MLA(hi, lo, (*fx)[1], ptr[7 + 17]);
-+		MLA(hi, lo, (*fx)[2], ptr[6 + 17]);
-+		MLA(hi, lo, (*fx)[3], ptr[5 + 17]);
-+		MLA(hi, lo, (*fx)[4], ptr[4 + 17]);
-+		MLA(hi, lo, (*fx)[5], ptr[3 + 17]);
-+		MLA(hi, lo, (*fx)[6], ptr[2 + 17]);
-+		MLA(hi, lo, (*fx)[7], ptr[1 + 17]); */
-+	window_1	lr/*fx*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+
-+    /*		MLN(hi, lo); */
-+	neg		r0
-+	acr		r1
-+	neg		r1
-+
-+    /*		MLA(hi, lo, (*fe)[0], ptr[0 + 1]);
-+		MLA(hi, lo, (*fe)[1], ptr[7 + 1]);
-+		MLA(hi, lo, (*fe)[2], ptr[6 + 1]);
-+                MLA(hi, lo, (*fe)[3], ptr[5 + 1]);
-+                MLA(hi, lo, (*fe)[4], ptr[4 + 1]);
-+                MLA(hi, lo, (*fe)[5], ptr[3 + 1]);
-+                MLA(hi, lo, (*fe)[6], ptr[2 + 1]);
-+                MLA(hi, lo, (*fe)[7], ptr[1 + 1]); */
-+	window_1	r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
-+
-+    /*		*pcm1++ = SHIFT(MLZ(hi, lo));
-+
-+		pcm2 = pcm1 + 31; */
-+	scale		r1, r0, r1
-+	st.w		r10/*pcm_1*/++, r1
-+	sub		lr/*pcm2*/, r10, -4*31
-+
-+    /*		for (sb = 1; sb < 16; ++sb) { */
-+	mov 		r2, 15
-+	stdsp		sp[0], r2
-+even_loop:
-+    /*		++fe;
-+		ptr += 33; */
-+	sub		r11 /*fe*/, -8*4
-+	sub		r12, -33*2
-+
-+    /*		ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
-+		MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
-+		MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
-+		MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
-+		MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
-+		MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
-+		MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
-+		MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
-+	window_1	r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+    /*		MLN(hi, lo); */
-+	neg		r0
-+	acr		r1
-+	neg		r1
-+
-+    /*		MLA(hi, lo, (*fe)[7], ptr[1 + 1]);
-+		MLA(hi, lo, (*fe)[6], ptr[2 + 1]);
-+		MLA(hi, lo, (*fe)[5], ptr[3 + 1]);
-+		MLA(hi, lo, (*fe)[4], ptr[4 + 1]);
-+		MLA(hi, lo, (*fe)[3], ptr[5 + 1]);
-+		MLA(hi, lo, (*fe)[2], ptr[6 + 1]);
-+		MLA(hi, lo, (*fe)[1], ptr[7 + 1]);
-+		MLA(hi, lo, (*fe)[0], ptr[0 + 1]); */
-+	window_1	r11/*fe*/,r12/*ptr*/,r0/*acc*/,1/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
-+
-+    /*		*pcm1++ = SHIFT(MLZ(hi, lo)); */
-+	lddsp		r2, sp[4]
-+	scale		r1, r0, r1
-+    /*	ptr -= 2*po; */
-+	sub		r12/*ptr*/, r12, r2/*po*/<< 1
-+	st.w		r10/*pcm_1*/++, r1
-+
-+
-+    /*		ML0(hi, lo, (*fe)[0], ptr[7  + 17 - 1]);
-+		MLA(hi, lo, (*fe)[1], ptr[8  + 17 - 1]);
-+		MLA(hi, lo, (*fe)[2], ptr[9  + 17 - 1]);
-+		MLA(hi, lo, (*fe)[3], ptr[10 + 17 - 1]);
-+		MLA(hi, lo, (*fe)[4], ptr[11 + 17 - 1]);
-+		MLA(hi, lo, (*fe)[5], ptr[12 + 17 - 1]);
-+		MLA(hi, lo, (*fe)[6], ptr[13 + 17 - 1]);
-+		MLA(hi, lo, (*fe)[7], ptr[14 + 17 - 1]); */
-+	window_2	r11/*fe*/,r12/*ptr*/,r0/*acc*/,16/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+    /*		MLA(hi, lo, (*fo)[7], ptr[14]);
-+		MLA(hi, lo, (*fo)[6], ptr[13]);
-+		MLA(hi, lo, (*fo)[5], ptr[12]);
-+		MLA(hi, lo, (*fo)[4], ptr[11]);
-+		MLA(hi, lo, (*fo)[3], ptr[10]);
-+		MLA(hi, lo, (*fo)[2], ptr[9]);
-+		MLA(hi, lo, (*fo)[1], ptr[8]);
-+		MLA(hi, lo, (*fo)[0], ptr[7]); */
-+	window_2	r8/*fo*/,r12/*ptr*/,r0/*acc*/,0/*off*/,0/*mac*/,r2,r3,r4,r5,r6,r7
-+
-+
-+    /*		*pcm2-- = SHIFT(MLZ(hi, lo)); */
-+	lddsp		r3, sp[4]
-+	lddsp		r2, sp[0]
-+	scale		r1, r0, r1
-+	st.w		--lr/*pcm_2*/, r1
-+
-+    /*		ptr += 2*po; */
-+	add		r12/*ptr*/, r12, r3/*po*/<< 1
-+
-+    /*		++fo;
-+		} */
-+	sub		r8/*fo*/, -8*4
-+
-+	sub		r2, 1
-+	stdsp		sp[0], r2
-+	brne		even_loop
-+
-+    /*		ptr += 33; */
-+	sub		r12/*ptr*/, -33*2
-+
-+    /*		ML0(hi, lo, (*fo)[0], ptr[0 + 17]);
-+		MLA(hi, lo, (*fo)[1], ptr[7 + 17]);
-+		MLA(hi, lo, (*fo)[2], ptr[6 + 17]);
-+		MLA(hi, lo, (*fo)[3], ptr[5 + 17]);
-+		MLA(hi, lo, (*fo)[4], ptr[4 + 17]);
-+		MLA(hi, lo, (*fo)[5], ptr[3 + 17]);
-+		MLA(hi, lo, (*fo)[6], ptr[2 + 17]);
-+		MLA(hi, lo, (*fo)[7], ptr[1 + 17]); */
-+	window_1	r8/*fo*/,r12/*ptr*/,r0/*acc*/,17/*off*/,1/*mul*/,r2,r3,r4,r5,r6,r7
-+
-+
-+
-+synth_end:
-+   /*		*pcm1 = SHIFT(-MLZ(hi, lo)); */
-+	scale		r1, r0, r1
-+	neg		r1
-+	st.w		r10/*pcm_1*/, r1
-+
-+	mov		r12, r10
-+	sub		sp, -8
-+	popm		r0-r7, pc
-+
-+
-+
-+
-+
diff --git a/package/libmad/Config.in b/package/libmad/Config.in
index 80ed853..d0edc49 100644
--- a/package/libmad/Config.in
+++ b/package/libmad/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_LIBMAD
 	bool "libmad"
-	select BR2_PACKAGE_LIBMAD_ASO if BR2_avr32
 	help
 	  High-quality MPEG audio decoder.  All computations are performed
 	  with fixed-point integer arithmetic, making it ideal for systems
diff --git a/package/libmicrohttpd/libmicrohttpd.mk b/package/libmicrohttpd/libmicrohttpd.mk
index 0575b74..3c05b57 100644
--- a/package/libmicrohttpd/libmicrohttpd.mk
+++ b/package/libmicrohttpd/libmicrohttpd.mk
@@ -21,9 +21,4 @@ LIBMICROHTTPD_LICENSE = LGPLv2.1+ or eCos
 LIBMICROHTTPD_CONF_OPTS += --disable-https
 endif
 
-ifeq ($(BR2_avr32),y)
-# no epoll_create1
-LIBMICROHTTPD_CONF_OPTS += --disable-epoll
-endif
-
 $(eval $(autotools-package))
diff --git a/package/libsecret/Config.in b/package/libsecret/Config.in
index 9a21d2e..70f1fe7 100644
--- a/package/libsecret/Config.in
+++ b/package/libsecret/Config.in
@@ -4,8 +4,6 @@ config BR2_PACKAGE_LIBSECRET
 	depends on BR2_USE_WCHAR # gettext dep in libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
 	depends on BR2_USE_MMU # libglib2
-	# Triggers an internal compiler error on AVR32
-	depends on !BR2_avr32
 	help
 	  libsecret is a library for storing and retrieving passwords and other
 	  secrets. It communicates with the "Secret Service" using DBus.
@@ -15,6 +13,5 @@ config BR2_PACKAGE_LIBSECRET
 	  https://wiki.gnome.org/Libsecret
 
 comment "libsecret needs a toolchain w/ wchar, threads"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/libsigsegv/0001-Add-stack-direction-for-the-AVR32-architecture.patch b/package/libsigsegv/0001-Add-stack-direction-for-the-AVR32-architecture.patch
deleted file mode 100644
index ba388c6..0000000
--- a/package/libsigsegv/0001-Add-stack-direction-for-the-AVR32-architecture.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 60d329bb2b20a67323152501969ff1db6a43e467 Mon Sep 17 00:00:00 2001
-From: Simon Dawson <spdawson@gmail.com>
-Date: Mon, 29 Dec 2014 13:53:51 +0100
-Subject: [PATCH 1/5] Add stack direction for the AVR32 architecture
-
-The libsigsegv configure step fails to correctly figure out the direction of
-stack growth for avr32. This leads to a zero STACK_DIRECTION definition, and
-build failures such as the following.
-
-  http://autobuild.buildroot.net/results/a3fe938f9376533b4777d79deb7a2ee83ed5ce33
-
-Signed-off-by: Simon Dawson <spdawson@gmail.com>
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
- m4/stack-direction.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/m4/stack-direction.m4 b/m4/stack-direction.m4
-index 00e0445..39c1a28 100644
---- a/m4/stack-direction.m4
-+++ b/m4/stack-direction.m4
-@@ -16,7 +16,7 @@ AC_DEFUN([SV_STACK_DIRECTION],
-       alpha* | \
-       arc | \
-       arm* | strongarm* | xscale* | \
--      avr | \
-+      avr | avr32 | \
-       c1 | c2 | c32 | c34 | c38 | \
-       clipper | \
-       cris | \
--- 
-2.1.0
-
diff --git a/package/libusb/libusb.mk b/package/libusb/libusb.mk
index 33a7157..d24a634 100644
--- a/package/libusb/libusb.mk
+++ b/package/libusb/libusb.mk
@@ -17,10 +17,6 @@ LIBUSB_INSTALL_STAGING = YES
 HOST_LIBUSB_CONF_OPTS = --disable-udev
 HOST_LIBUSB_DEPENDENCIES = host-pkgconf
 
-ifeq ($(BR2_avr32),y)
-LIBUSB_CONF_OPTS += --disable-timerfd
-endif
-
 ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
 LIBUSB_DEPENDENCIES += udev
 else
diff --git a/package/lua-ev/Config.in b/package/lua-ev/Config.in
index 74b5dc7..4b3f8ed 100644
--- a/package/lua-ev/Config.in
+++ b/package/lua-ev/Config.in
@@ -2,7 +2,7 @@ config BR2_PACKAGE_LUA_EV
 	bool "lua-ev"
 	depends on BR2_PACKAGE_HAS_LUAINTERPRETER
 	select BR2_PACKAGE_LIBEV
-	depends on !(BR2_avr32 || BR2_bfin) # libev
+	depends on !BR2_bfin # libev
 	help
 	  Get access to the libev library from Lua.
 
diff --git a/package/lxc/Config.in b/package/lxc/Config.in
index cf715ab..7bae87d 100644
--- a/package/lxc/Config.in
+++ b/package/lxc/Config.in
@@ -5,7 +5,6 @@ config BR2_PACKAGE_LXC
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_LARGEFILE
 	depends on BR2_USE_MMU # fork()
-	depends on !BR2_avr32 # no timerfd
 	# the toolchain doesn't support setns syscall
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405
@@ -19,7 +18,6 @@ config BR2_PACKAGE_LXC
 
 comment "lxc needs a toolchain w/ IPv6, threads, largefile, headers >= 3.0"
 	depends on BR2_USE_MMU
-	depends on !BR2_avr32 # no timerfd
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405
 	depends on !BR2_INET_IPV6 || !BR2_TOOLCHAIN_HAS_THREADS \
diff --git a/package/mpd/Config.in b/package/mpd/Config.in
index bab0b22..287ccf3 100644
--- a/package/mpd/Config.in
+++ b/package/mpd/Config.in
@@ -5,8 +5,8 @@ menuconfig BR2_PACKAGE_MPD
 	depends on BR2_USE_WCHAR # libglib2, flac
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
 	depends on BR2_USE_MMU # libglib2
-	# avr32, sparc & CS powerpc gcc are too old
-	depends on !(BR2_avr32 || BR2_sparc)
+	# sparc & CS powerpc gcc are too old
+	depends on !BR2_sparc
 	depends on !(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 || BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009)
 	select BR2_PACKAGE_BOOST
 	select BR2_PACKAGE_LIBGLIB2
@@ -311,6 +311,6 @@ endif
 
 comment "mpd needs a toolchain w/ C++, threads, wchar"
 	depends on BR2_USE_MMU
-	depends on !(BR2_avr32 || BR2_sparc)
+	depends on !BR2_sparc
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
 		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_LARGEFILE
diff --git a/package/mtr/Config.in b/package/mtr/Config.in
index 4e529d6..f3060a1 100644
--- a/package/mtr/Config.in
+++ b/package/mtr/Config.in
@@ -2,7 +2,6 @@ config BR2_PACKAGE_MTR
 	bool "mtr"
 	# res_mkquery() only available in 0.9.33+
 	depends on !BR2_UCLIBC_VERSION_0_9_31
-	depends on !BR2_avr32
 	help
 	  mtr combines the functionality of the 'traceroute' and 'ping'
 	  programs in a single network diagnostic tool.
diff --git a/package/mysql/Config.in b/package/mysql/Config.in
index 9c5d6ed..f5549ef 100644
--- a/package/mysql/Config.in
+++ b/package/mysql/Config.in
@@ -4,7 +4,6 @@ config BR2_PACKAGE_MYSQL
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	# Toolchain is not up to the task
-	depends on !BR2_avr32
 	select BR2_PACKAGE_NCURSES
 	select BR2_PACKAGE_READLINE
 	help
diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in
index a3e6e33..8b3ad71 100644
--- a/package/network-manager/Config.in
+++ b/package/network-manager/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_NETWORK_MANAGER
 	bool "networkmanager"
-	depends on !BR2_avr32 # udev
 	depends on BR2_INET_IPV6
 	depends on BR2_LARGEFILE # acl
 	depends on BR2_USE_WCHAR # libglib2 and gnutls
@@ -54,7 +53,6 @@ config BR2_PACKAGE_NETWORK_MANAGER_PPPD
 endif
 
 comment "NetworkManager needs udev /dev management and a toolchain w/ IPv6, largefile, wchar, threads, headers >= 3.7"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_INET_IPV6 || !BR2_LARGEFILE || !BR2_USE_WCHAR || \
 		!BR2_TOOLCHAIN_HAS_THREADS || \
diff --git a/package/ofono/Config.in b/package/ofono/Config.in
index 00df251..b26b5e7 100644
--- a/package/ofono/Config.in
+++ b/package/ofono/Config.in
@@ -3,7 +3,6 @@ config BR2_PACKAGE_OFONO
 	depends on BR2_USE_WCHAR # gettext, libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
 	depends on BR2_USE_MMU # dbus, libglib2
-	depends on !BR2_avr32 # libcap-ng
 	select BR2_PACKAGE_LIBCAP_NG
 	select BR2_PACKAGE_DBUS
 	select BR2_PACKAGE_LIBGLIB2
@@ -16,6 +15,5 @@ config BR2_PACKAGE_OFONO
 	  http://ofono.org/
 
 comment "ofono needs a toolchain w/ wchar, threads"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/opencv/Config.in b/package/opencv/Config.in
index c444d65..6a8ac6a 100644
--- a/package/opencv/Config.in
+++ b/package/opencv/Config.in
@@ -189,7 +189,6 @@ config BR2_PACKAGE_OPENCV_WITH_PNG
 config BR2_PACKAGE_OPENCV_WITH_QT
 	bool "qt backend support"
 	depends on BR2_INSTALL_LIBSTDCPP
-	depends on !BR2_avr32 # qt
 	depends on BR2_USE_MMU # qt
 	depends on BR2_PACKAGE_OPENCV_LIB_HIGHGUI
 	select BR2_PACKAGE_QT
diff --git a/package/openobex/Config.in b/package/openobex/Config.in
index 367caa6..c56692d 100644
--- a/package/openobex/Config.in
+++ b/package/openobex/Config.in
@@ -11,7 +11,6 @@ if BR2_PACKAGE_OPENOBEX
 
 config BR2_PACKAGE_OPENOBEX_BLUEZ
 	bool "enable bluez support"
-	depends on !BR2_avr32
 	depends on !BR2_STATIC_LIBS # bluez_utils
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2
@@ -19,7 +18,7 @@ config BR2_PACKAGE_OPENOBEX_BLUEZ
 	select BR2_PACKAGE_BLUEZ_UTILS
 
 comment "bluez support needs a toolchain w/ wchar, threads, dynamic library"
-	depends on !BR2_avr32 && BR2_USE_MMU
+	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
 
 config BR2_PACKAGE_OPENOBEX_LIBUSB
diff --git a/package/openpgm/Config.in b/package/openpgm/Config.in
index dc66367..3a26212 100644
--- a/package/openpgm/Config.in
+++ b/package/openpgm/Config.in
@@ -1,7 +1,6 @@
 config BR2_PACKAGE_OPENPGM
 	bool "openpgm"
 	# The following toolchains lack required compiler intrinsics
-	depends on !BR2_avr32
 	depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1
 	depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2
 	depends on BR2_TOOLCHAIN_HAS_THREADS
@@ -18,4 +17,3 @@ config BR2_PACKAGE_OPENPGM
 
 comment "openpgm needs a toolchain w/ wchar, threads, IPv6"
 	depends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_INET_IPV6 && BR2_USE_WCHAR)
-	depends on !BR2_avr32
diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk
index 1322d9d..5876307 100644
--- a/package/oprofile/oprofile.mk
+++ b/package/oprofile/oprofile.mk
@@ -19,11 +19,6 @@ OPROFILE_BINARIES = \
 	utils/op-check-perfevents libabi/opimport \
 	pe_counting/ocount
 
-# No perf_events support in kernel for avr32
-ifneq ($(BR2_avr32),y)
-OPROFILE_BINARIES += pe_profiling/operf
-endif
-
 ifeq ($(BR2_i386),y)
 OPROFILE_ARCH = i386
 endif
diff --git a/package/php/Config.ext b/package/php/Config.ext
index 2b1e615..daf16c7 100644
--- a/package/php/Config.ext
+++ b/package/php/Config.ext
@@ -106,7 +106,6 @@ config BR2_PACKAGE_PHP_EXT_MYSQL
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # mysql
 	depends on BR2_TOOLCHAIN_HAS_THREADS # mysql
-	depends on !BR2_avr32 # mysql
 	select BR2_PACKAGE_MYSQL
 	help
 	  MySQL support
@@ -116,7 +115,6 @@ config BR2_PACKAGE_PHP_EXT_MYSQLI
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # mysql
 	depends on BR2_TOOLCHAIN_HAS_THREADS # mysql
-	depends on !BR2_avr32 # mysql
 	select BR2_PACKAGE_MYSQL
 	select BR2_PACKAGE_PHP_EXT_MYSQL
 	help
@@ -134,7 +132,6 @@ config BR2_PACKAGE_PHP_EXT_PDO_MYSQL
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # mysql
 	depends on BR2_TOOLCHAIN_HAS_THREADS # mysql
-	depends on !BR2_avr32 # mysql
 	select BR2_PACKAGE_MYSQL
 	help
 	  PDO driver for MySQL
@@ -142,7 +139,6 @@ config BR2_PACKAGE_PHP_EXT_PDO_MYSQL
 comment "MySQL drivers need a toolchain w/ C++, threads"
 	depends on BR2_USE_MMU
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32
 
 config BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL
 	bool "PostgreSQL"
diff --git a/package/pinentry/Config.in b/package/pinentry/Config.in
index 350327a..edf3316 100644
--- a/package/pinentry/Config.in
+++ b/package/pinentry/Config.in
@@ -37,7 +37,6 @@ comment "pinentry-gtk2 needs X and a toolchain w/ wchar, threads, C++"
 
 config BR2_PACKAGE_PINENTRY_QT4
 	bool "pinentry-qt4"
-	depends on !BR2_avr32 # lacks TLS
 	depends on BR2_USE_MMU # fork
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
@@ -47,7 +46,6 @@ config BR2_PACKAGE_PINENTRY_QT4
 	  The pinentry-qt4 tool
 
 comment "pinentry-qt4 needs a toolchain w/ C++, threads"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
 
diff --git a/package/poco/Config.in b/package/poco/Config.in
index 8384b42..155f098 100644
--- a/package/poco/Config.in
+++ b/package/poco/Config.in
@@ -4,7 +4,7 @@ config BR2_PACKAGE_POCO
 	depends on BR2_USE_WCHAR
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \
-		|| BR2_xtensa || BR2_avr32)
+		|| BR2_xtensa)
 	select BR2_PACKAGE_ZLIB
 	select BR2_PACKAGE_PCRE
 	help
@@ -55,7 +55,6 @@ config BR2_PACKAGE_POCO_DATA_SQLITE
 config BR2_PACKAGE_POCO_DATA_MYSQL
 	bool "mysql"
 	depends on BR2_USE_MMU # mysql
-	depends on !BR2_avr32 # mysql
 	select BR2_PACKAGE_POCO_DATA
 	select BR2_PACKAGE_MYSQL
 
@@ -65,4 +64,4 @@ comment "poco needs a toolchain w/ wchar, threads, C++"
 	depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \
 		|| !BR2_TOOLCHAIN_HAS_THREADS
 	depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \
-		|| BR2_xtensa || BR2_avr32)
+		|| BR2_xtensa)
diff --git a/package/python/012-support-library-path-old-compilers.patch b/package/python/012-support-library-path-old-compilers.patch
deleted file mode 100644
index 9803821..0000000
--- a/package/python/012-support-library-path-old-compilers.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-python: do not rely only on LIBRARY_PATH for old compilers
-
-The cross-compilation improvements integrated in Python rely on the
-compiler exposing a line starting with LIBRARY_PATH when called with
--E -v. This is used by Python setup.py to find the installation
-locations of libraries.
-
-However, this LIBRARY_PATH line is not shown by very old compilers,
-such as the gcc 4.2.x compiler used on the AVR32 architecture. This
-causes libraries installed in the sysroot, such as libffi, to not be
-detected by the setup.py script.
-
-To fix this problem, this patch adds addtional logic to setup.py,
-which consists in deriving the library paths from the sysroot
-location, if no LIBRARY_PATH field was found.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
-Index: b/setup.py
-===================================================================
---- a/setup.py
-+++ b/setup.py
-@@ -418,6 +418,7 @@
-         in_incdirs = False
-         inc_dirs = []
-         lib_dirs = []
-+        compiler_has_library_path = False
-         try:
-             if ret >> 8 == 0:
-                 with open(tmpfile) as fp:
-@@ -429,6 +430,7 @@
-                         elif line.startswith("End of search list"):
-                             in_incdirs = False
-                         elif is_gcc and line.startswith("LIBRARY_PATH"):
-+                            compiler_has_library_path = True
-                             for d in line.strip().split("=")[1].split(":"):
-                                 d = os.path.normpath(d)
-                                 if '/gcc/' not in d:
-@@ -440,6 +442,15 @@
-         finally:
-             os.unlink(tmpfile)
- 
-+        if not compiler_has_library_path:
-+            ret = os.system("%s -print-file-name=libc.a | sed -r -e 's:(usr/)?lib(32|64)?/([^/]*/)?libc\.a::' >%s" % (gcc, tmpfile))
-+            with open(tmpfile) as fp:
-+                line = fp.readline().strip()
-+                add_dir_to_list(self.compiler.library_dirs,
-+                                os.path.join(line, "usr", "lib"))
-+                add_dir_to_list(self.compiler.library_dirs,
-+                                os.path.join(line, "lib"))
-+
-     def detect_modules(self):
-         # Ensure that /usr/local is always used
-         if not cross_compiling:
diff --git a/package/python3/011-support-library-path-old-compilers.patch b/package/python3/011-support-library-path-old-compilers.patch
deleted file mode 100644
index 296e9fe..0000000
--- a/package/python3/011-support-library-path-old-compilers.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-python3: do not rely only on LIBRARY_PATH for old compilers
-
-The cross-compilation improvements integrated in Python rely on the
-compiler exposing a line starting with LIBRARY_PATH when called with
--E -v. This is used by Python setup.py to find the installation
-locations of libraries.
-
-However, this LIBRARY_PATH line is not shown by very old compilers,
-such as the gcc 4.2.x compiler used on the AVR32 architecture. This
-causes libraries installed in the sysroot, such as libffi, to not be
-detected by the setup.py script.
-
-To fix this problem, this patch adds addtional logic to setup.py,
-which consists in deriving the library paths from the sysroot
-location, if no LIBRARY_PATH field was found.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
-Index: b/setup.py
-===================================================================
---- a/setup.py
-+++ b/setup.py
-@@ -427,6 +427,7 @@
-         in_incdirs = False
-         inc_dirs = []
-         lib_dirs = []
-+        compiler_has_library_path = False
-         try:
-             if ret >> 8 == 0:
-                 with open(tmpfile) as fp:
-@@ -438,6 +439,7 @@
-                         elif line.startswith("End of search list"):
-                             in_incdirs = False
-                         elif is_gcc and line.startswith("LIBRARY_PATH"):
-+                            compiler_has_library_path = True
-                             for d in line.strip().split("=")[1].split(":"):
-                                 d = os.path.normpath(d)
-                                 if '/gcc/' not in d:
-@@ -449,6 +451,15 @@
-         finally:
-             os.unlink(tmpfile)
- 
-+        if not compiler_has_library_path:
-+            ret = os.system("%s -print-file-name=libc.a | sed -r -e 's:(usr/)?lib(32|64)?/([^/]*/)?libc\.a::' >%s" % (gcc, tmpfile))
-+            with open(tmpfile) as fp:
-+                line = fp.readline().strip()
-+                add_dir_to_list(self.compiler.library_dirs,
-+                                os.path.join(line, "usr", "lib"))
-+                add_dir_to_list(self.compiler.library_dirs,
-+                                os.path.join(line, "lib"))
-+
-     def detect_modules(self):
-         # Ensure that /usr/local is always used, but the local build
-         # directories (i.e. '.' and 'Include') must be first.  See issue
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index 581f4ee..1202df7 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -22,7 +22,6 @@ HOST_QEMU_DEPENDENCIES = host-pkgconf host-python host-zlib host-libglib2 host-p
 #       -------         ----
 #       arm             arm
 #       armeb           armeb
-#       avr32           not supported
 #       bfin            not supported
 #       i386            i386
 #       i486            i386
diff --git a/package/qt/Config.in b/package/qt/Config.in
index 990014e..a40b6b5 100644
--- a/package/qt/Config.in
+++ b/package/qt/Config.in
@@ -1,11 +1,9 @@
 comment "qt needs a toolchain w/ C++, threads"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
 
 menuconfig BR2_PACKAGE_QT
 	bool "Qt"
-	depends on !BR2_avr32 # lacks TLS
 	depends on BR2_USE_MMU # fork
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/qt/qt.mk b/package/qt/qt.mk
index 9ea676c..3fb557f 100644
--- a/package/qt/qt.mk
+++ b/package/qt/qt.mk
@@ -225,8 +225,6 @@ endif
 
 ifeq ($(BR2_arm)$(BR2_armeb),y)
 QT_EMB_PLATFORM = arm
-else ifeq ($(BR2_avr32),y)
-QT_EMB_PLATFORM = avr32
 else ifeq ($(BR2_i386),y)
 QT_EMB_PLATFORM = x86
 else ifeq ($(BR2_x86_64),y)
diff --git a/package/qt5/Config.in b/package/qt5/Config.in
index fd8bde5..9d316b1 100644
--- a/package/qt5/Config.in
+++ b/package/qt5/Config.in
@@ -13,12 +13,10 @@ config BR2_PACKAGE_QT5_JSCORE_AVAILABLE
 
 comment "Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++"
 	depends on !BR2_PACKAGE_QT
-	depends on !BR2_avr32
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || !BR2_INET_IPV6 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL
 
 menuconfig BR2_PACKAGE_QT5
 	bool "Qt5"
-	depends on !BR2_avr32
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_WCHAR
 	depends on BR2_INET_IPV6
diff --git a/package/qt5/qt5base/Config.in b/package/qt5/qt5base/Config.in
index d57dd8e..99e249f 100644
--- a/package/qt5/qt5base/Config.in
+++ b/package/qt5/qt5base/Config.in
@@ -53,7 +53,6 @@ config BR2_PACKAGE_QT5BASE_MYSQL
 	select BR2_PACKAGE_NCURSES
 	select BR2_PACKAGE_READLINE
 	depends on BR2_USE_MMU # mysql
-	depends on !BR2_avr32 # mysql
 	help
 	  Build MySQL plugin
 	  If unsure, say n.
diff --git a/package/qt5/qt5connectivity/Config.in b/package/qt5/qt5connectivity/Config.in
index ca1deab..d529ea7 100644
--- a/package/qt5/qt5connectivity/Config.in
+++ b/package/qt5/qt5connectivity/Config.in
@@ -4,7 +4,6 @@ config BR2_PACKAGE_QT5CONNECTIVITY
 	select BR2_PACKAGE_QT5BASE
 	select BR2_PACKAGE_QT5BASE_CONCURRENT
 	select BR2_PACKAGE_QT5BASE_DBUS
-	depends on !BR2_avr32 # bluez_utils
 	depends on !BR2_STATIC_LIBS # bluez_utils
 	depends on BR2_USE_WCHAR # bluez_utils
 	depends on BR2_TOOLCHAIN_HAS_THREADS # bluez_utils
@@ -18,5 +17,5 @@ config BR2_PACKAGE_QT5CONNECTIVITY
 	  http://qt.io
 
 comment "qt5connectivity needs a toolchain w/ wchar, threads, dynamic library"
-	depends on !BR2_avr32 && BR2_USE_MMU
+	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
diff --git a/package/radvd/Config.in b/package/radvd/Config.in
index e74777c..1c60240 100644
--- a/package/radvd/Config.in
+++ b/package/radvd/Config.in
@@ -3,7 +3,6 @@ config BR2_PACKAGE_RADVD
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_INET_IPV6
 	# uClibc too old, does not define ARPHRD_IEEE802154
-	depends on !BR2_avr32
 	select BR2_PACKAGE_FLEX
 	help
 	  IPv6 Router Advertisement Daemon.
@@ -13,4 +12,3 @@ config BR2_PACKAGE_RADVD
 comment "radvd needs a toolchain w/ IPv6"
 	depends on BR2_USE_MMU
 	depends on !BR2_INET_IPV6
-	depends on !BR2_avr32
diff --git a/package/samba/Config.in b/package/samba/Config.in
index e2cac9e..9d04851 100644
--- a/package/samba/Config.in
+++ b/package/samba/Config.in
@@ -2,7 +2,6 @@ config BR2_PACKAGE_SAMBA
 	bool "samba"
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_USE_MMU # fork()
-	depends on !BR2_avr32 # binary too large, relocations don't fit
 	depends on !BR2_nios2 # binary too large, relocations don't fit
 	select BR2_PACKAGE_POPT
 	help
@@ -16,7 +15,6 @@ config BR2_PACKAGE_SAMBA
 		so choose only the components you need.
 
 comment "samba needs a toolchain w/ threads"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
 
diff --git a/package/samba4/Config.in b/package/samba4/Config.in
index 60e0f55..b841f42 100644
--- a/package/samba4/Config.in
+++ b/package/samba4/Config.in
@@ -6,7 +6,6 @@ config BR2_PACKAGE_SAMBA4
 	depends on BR2_USE_WCHAR # e2fsprogs
 	depends on BR2_LARGEFILE
 	depends on BR2_TOOLCHAIN_HAS_THREADS # talloc python threads
-	depends on !BR2_avr32 # bad toolchain
 	depends on !BR2_nios2 # binary too large, relocations don't fit
 	select BR2_PACKAGE_E2FSPROGS
 	select BR2_PACKAGE_POPT
diff --git a/package/sconeserver/Config.in b/package/sconeserver/Config.in
index 9d70086..c7d602f 100644
--- a/package/sconeserver/Config.in
+++ b/package/sconeserver/Config.in
@@ -35,7 +35,6 @@ config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE
 config BR2_PACKAGE_SCONESERVER_MYSQL
 	bool "mysql"
 	depends on BR2_USE_MMU # mysql
-	depends on !BR2_avr32 # mysql
 	select BR2_PACKAGE_MYSQL
 	help
 	  MySQL module for Sconeserver
@@ -45,14 +44,13 @@ config BR2_PACKAGE_SCONESERVER_BLUETOOTH
 	depends on BR2_USE_WCHAR # bluez->libglib2
 	depends on BR2_USE_MMU # bluez->dbus
 	depends on BR2_TOOLCHAIN_HAS_THREADS # bluez->dbus, bluez->libglib2
-	depends on !BR2_avr32 # bluez_utils
 	depends on !BR2_STATIC_LIBS # bluez_utils
 	select BR2_PACKAGE_BLUEZ_UTILS
 	help
 	  Bluetooth module for Sconeserver
 
 comment "bluetooth support needs a toolchain w/ wchar, threads, dynamic library"
-	depends on !BR2_avr32 && BR2_USE_MMU
+	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
 
 config BR2_PACKAGE_SCONESERVER_RSS
diff --git a/package/snowball-init/Config.in b/package/snowball-init/Config.in
index 03d4752..6c94731 100644
--- a/package/snowball-init/Config.in
+++ b/package/snowball-init/Config.in
@@ -2,7 +2,6 @@ config BR2_PACKAGE_SNOWBALL_INIT
 	bool "snowball-init"
 	# Runtime dependency, needed by snowball startup script
 	select BR2_PACKAGE_BLUEZ_UTILS
-	depends on !BR2_avr32
 	depends on !BR2_STATIC_LIBS # bluez_utils
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2
@@ -14,5 +13,5 @@ config BR2_PACKAGE_SNOWBALL_INIT
 	  http://www.igloocommunity.org
 
 comment "snowball-init needs a toolchain w/ wchar, threads, dynamic library"
-	depends on !BR2_avr32 && BR2_USE_MMU
+	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
diff --git a/package/squid/Config.in b/package/squid/Config.in
index 9953b0d..a9300d8 100644
--- a/package/squid/Config.in
+++ b/package/squid/Config.in
@@ -1,6 +1,5 @@
 comment "squid needs a toolchain w/ C++, IPv6, headers >= 3.0"
 	depends on BR2_USE_MMU
-	depends on !BR2_avr32 # toolchain too old
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_INET_IPV6 \
 		|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
 
diff --git a/package/trace-cmd/Config.in b/package/trace-cmd/Config.in
index 55f896f..f64d28d 100644
--- a/package/trace-cmd/Config.in
+++ b/package/trace-cmd/Config.in
@@ -2,7 +2,6 @@ config BR2_PACKAGE_TRACE_CMD
 	bool "trace-cmd"
 	depends on BR2_LARGEFILE
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_avr32 # AVR32 does not have TLS support
 	depends on BR2_USE_MMU # fork()
 	depends on !BR2_STATIC_LIBS # dlopen()
 	help
diff --git a/package/tvheadend/Config.in b/package/tvheadend/Config.in
index 303a345..33dd484 100644
--- a/package/tvheadend/Config.in
+++ b/package/tvheadend/Config.in
@@ -6,12 +6,6 @@ config BR2_PACKAGE_TVHEADEND
 	depends on BR2_LARGEFILE && BR2_INET_IPV6
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
-	# tvheadend requires an atomic_add operation. Either you have
-	# a gcc >= 4.3 toolchain and it uses the gcc intrinsics, or it
-	# has special code for x86, x86-64, PPC and ARM. So in the
-	# context of Buildroot, the only really problematic
-	# architecture is avr32, which uses gcc 4.2.
-	depends on !BR2_avr32
 	select BR2_PACKAGE_DTV_SCAN_TABLES
 	select BR2_PACKAGE_FFMPEG_AVRESAMPLE if BR2_PACKAGE_FFMPEG
 	select BR2_PACKAGE_FFMPEG_SWSCALE if BR2_PACKAGE_FFMPEG
diff --git a/package/uboot-tools/uboot-tools.mk b/package/uboot-tools/uboot-tools.mk
index f02bb55..413207d 100644
--- a/package/uboot-tools/uboot-tools.mk
+++ b/package/uboot-tools/uboot-tools.mk
@@ -69,8 +69,8 @@ $(eval $(host-generic-package))
 
 MKIMAGE = $(HOST_DIR)/usr/bin/mkimage
 
-# mkimage supports arm avr32 blackfin m68k microblaze mips mips64 nios2 powerpc ppc sh sparc sparc64 x86
-# KERNEL_ARCH can be arm64 arc arm avr32 blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa
+# mkimage supports arm blackfin m68k microblaze mips mips64 nios2 powerpc ppc sh sparc sparc64 x86
+# KERNEL_ARCH can be arm64 arc arm blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa
 # For arm64, arc, xtensa we'll just keep KERNEL_ARCH
 # For mips64, we'll just keep mips
 # For i386 and x86_64, we need to convert
diff --git a/package/udisks/Config.in b/package/udisks/Config.in
index 3eb8bf0..a5da2bf 100644
--- a/package/udisks/Config.in
+++ b/package/udisks/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_UDISKS
 	bool "udisks"
-	depends on !BR2_avr32 # udev
 	depends on BR2_PACKAGE_HAS_UDEV
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus-glib -> glib2
 	depends on BR2_USE_MMU # lvm2
@@ -36,12 +35,10 @@ config BR2_PACKAGE_UDISKS_LVM2
 endif
 
 comment "udisks needs udev /dev management"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_PACKAGE_HAS_UDEV
 
 comment "udisks needs a toolchain w/ wchar, threads, dynamic library"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
 		BR2_STATIC_LIBS
diff --git a/package/ussp-push/Config.in b/package/ussp-push/Config.in
index c08acc9..c3f6b86 100644
--- a/package/ussp-push/Config.in
+++ b/package/ussp-push/Config.in
@@ -1,7 +1,6 @@
 config BR2_PACKAGE_USSP_PUSH
 	bool "ussp-push"
 	depends on BR2_INET_IPV6
-	depends on !BR2_avr32
 	depends on !BR2_STATIC_LIBS # bluez_utils
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2
@@ -16,5 +15,5 @@ config BR2_PACKAGE_USSP_PUSH
 	  http://www.xmailserver.org/ussp-push.html
 
 comment "ussp-push needs a toolchain w/ wchar, IPv6, threads, dynamic library"
-	depends on !BR2_avr32 && BR2_USE_MMU
+	depends on BR2_USE_MMU
 	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INET_IPV6 || BR2_STATIC_LIBS
diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in
index 1b475d4..2fad0b3 100644
--- a/package/util-linux/Config.in
+++ b/package/util-linux/Config.in
@@ -93,7 +93,6 @@ config BR2_PACKAGE_UTIL_LINUX_EJECT
 
 config BR2_PACKAGE_UTIL_LINUX_FALLOCATE
 	bool "fallocate"
-	depends on !BR2_avr32 # fallocate not implemented
 	help
 	  Preallocate space to a file
 
@@ -216,7 +215,6 @@ config BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS
 
 config BR2_PACKAGE_UTIL_LINUX_SETPRIV
 	bool "setpriv"
-	depends on !BR2_avr32 # libcap-ng
 	select BR2_PACKAGE_LIBCAP_NG
 	help
 	  Run a program with different Linux privilege settings
diff --git a/package/wayland/Config.in b/package/wayland/Config.in
index f58a283..857ba73 100644
--- a/package/wayland/Config.in
+++ b/package/wayland/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_WAYLAND
 	bool "wayland"
-	depends on !BR2_avr32 # no epoll_create1, timerfd_create or timerfd_settime
 	depends on !BR2_STATIC_LIBS # dlfcn.h
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	select BR2_PACKAGE_LIBFFI
@@ -13,5 +12,4 @@ config BR2_PACKAGE_WAYLAND
 	  http://wayland.freedesktop.org/
 
 comment "wayland needs a toolchain w/ threads, dynamic library"
-	depends on !BR2_avr32
 	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
diff --git a/package/weston/Config.in b/package/weston/Config.in
index 49130b4..d7a2269 100644
--- a/package/weston/Config.in
+++ b/package/weston/Config.in
@@ -1,5 +1,4 @@
 comment "weston needs udev and a toolchain w/ threads, dynamic library, headers >= 3.0"
-	depends on !BR2_avr32
 	depends on BR2_ARCH_HAS_ATOMICS
 	depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \
 		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || BR2_STATIC_LIBS
@@ -14,7 +13,6 @@ config BR2_PACKAGE_WESTON
 	select BR2_PACKAGE_JPEG
 	select BR2_PACKAGE_MTDEV
 	depends on BR2_PACKAGE_HAS_UDEV
-	depends on !BR2_avr32 # wayland
 	depends on !BR2_STATIC_LIBS # wayland
 	depends on BR2_TOOLCHAIN_HAS_THREADS # wayland
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
diff --git a/package/wpa_supplicant/Config.in b/package/wpa_supplicant/Config.in
index 6ebd2fe..f32a867 100644
--- a/package/wpa_supplicant/Config.in
+++ b/package/wpa_supplicant/Config.in
@@ -1,7 +1,6 @@
 config BR2_PACKAGE_WPA_SUPPLICANT
 	bool "wpa_supplicant"
 	depends on BR2_USE_MMU # fork()
-	depends on !BR2_avr32 # no epoll_create1
 	help
 	  WPA supplicant for secure wireless networks
 
diff --git a/package/x11r7/xserver_xorg-server/Config.in b/package/x11r7/xserver_xorg-server/Config.in
index 40e3d84..7918495 100644
--- a/package/x11r7/xserver_xorg-server/Config.in
+++ b/package/x11r7/xserver_xorg-server/Config.in
@@ -49,16 +49,12 @@ config BR2_PACKAGE_XSERVER_XORG_SERVER
 	select BR2_PACKAGE_XPROTO_XPROTO
 	select BR2_PACKAGE_XUTIL_UTIL_MACROS
 	select BR2_PACKAGE_XKEYBOARD_CONFIG
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU # fork()
 	help
 	  X.Org X server
 
 	  http://xorg.freedesktop.org
 
-comment "xorg-xserver is BROKEN on AVR32"
-	depends on BR2_avr32 && BR2_USE_MMU
-
 if BR2_PACKAGE_XSERVER_XORG_SERVER
 
 choice
diff --git a/package/zeromq/Config.in b/package/zeromq/Config.in
index 778a503..a97ba8d 100644
--- a/package/zeromq/Config.in
+++ b/package/zeromq/Config.in
@@ -31,7 +31,6 @@ if BR2_PACKAGE_ZEROMQ
 
 config BR2_PACKAGE_ZEROMQ_PGM
 	bool "PGM/EPGM support"
-	depends on !BR2_avr32 # openpgm
 	depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1 # openpgm
 	depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 # openpgm
 	select BR2_PACKAGE_OPENPGM
diff --git a/package/zmqpp/Config.in b/package/zmqpp/Config.in
index 2ccaf7e..88973db 100644
--- a/package/zmqpp/Config.in
+++ b/package/zmqpp/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_ZMQPP
 	bool "zmqpp"
-	depends on !BR2_avr32 # compiler needs c++0x support
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 # c++0x support
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 # c++0x support
 	depends on BR2_INSTALL_LIBSTDCPP
@@ -18,7 +17,6 @@ config BR2_PACKAGE_ZMQPP
 	  http://github.com/benjamg/zmqpp
 
 comment "zmqpp needs a toolchain w/ C++, IPv6, largefile, wchar, threads"
-	depends on !BR2_avr32
 	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_INET_IPV6 && BR2_LARGEFILE \
 		&& BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS)
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 04/12] linux: get rid of avr32 specifics
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (2 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 03/12] packages: all salute the passing of avr32 Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 05/12] toolchain/buildroot: forget about avr32 Yann E. MORIN
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 linux/Config.in | 2 +-
 linux/linux.mk  | 4 ----
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/linux/Config.in b/linux/Config.in
index c981493..9873ea0 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -174,7 +174,7 @@ choice
 config BR2_LINUX_KERNEL_UIMAGE
 	bool "uImage"
 	depends on BR2_arc || BR2_arm || BR2_armeb || BR2_bfin || \
-		   BR2_powerpc || BR2_avr32 || BR2_sh || BR2_sh64 || \
+		   BR2_powerpc || BR2_sh || BR2_sh64 || \
 		   BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
 	select BR2_LINUX_KERNEL_UBOOT_IMAGE
 
diff --git a/linux/linux.mk b/linux/linux.mk
index 29f59e8..c9a7e9d 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -137,11 +137,7 @@ LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)
 else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
 LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)
 else
-ifeq ($(KERNEL_ARCH),avr32)
-LINUX_IMAGE_PATH = $(KERNEL_ARCH_PATH)/boot/images/$(LINUX_IMAGE_NAME)
-else
 LINUX_IMAGE_PATH = $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME)
-endif
 endif # BR2_LINUX_KERNEL_VMLINUX
 
 define LINUX_DOWNLOAD_PATCHES
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 05/12] toolchain/buildroot: forget about avr32
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (3 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 04/12] linux: get rid of avr32 specifics Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 06/12] toolchain/extrnal: avr32 is no more Yann E. MORIN
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 toolchain/toolchain-buildroot/Config.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
index 2955b2e..a69013f 100644
--- a/toolchain/toolchain-buildroot/Config.in
+++ b/toolchain/toolchain-buildroot/Config.in
@@ -29,7 +29,7 @@ config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
 	bool "uClibc"
 	select BR2_TOOLCHAIN_USES_UCLIBC
 	depends on BR2_arcle   || BR2_arceb  || BR2_arm    || BR2_armeb    || \
-		   BR2_avr32   || BR2_bfin   || BR2_i386   || BR2_m68k     || \
+		   BR2_bfin    || BR2_i386   || BR2_m68k   || \
 		   BR2_mips    || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
 		   BR2_powerpc || BR2_sh     || BR2_sparc  || BR2_xtensa   || \
 		   BR2_x86_64
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 06/12] toolchain/extrnal: avr32 is no more
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (4 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 05/12] toolchain/buildroot: forget about avr32 Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 07/12] package/binutils: avr32 is gone Yann E. MORIN
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Slightly reword a comment to no longer mention avr32.

This part dealing with sysroot detection will have to be reworked, now
that we got rid of avr32: we can now require a fully sysroot-aware
toolchain, i.e. at least gcc-4.4.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
CC: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 toolchain/toolchain-external/toolchain-external.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index 5a69eb8..999a354 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -97,8 +97,8 @@ LIB_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS))
 # mangling the path to find the base directory of the sysroot.
 #
 # Note that we do not use the -print-sysroot option, because it is
-# only available since gcc 4.4.x, and we still support 4.2.x (for
-# AVR32) and 4.3.x.
+# only available since gcc 4.4.x, and we only recently dropped support
+# for 4.2.x and 4.3.x.
 #
 # When doing this, we don't pass any option to gcc that could select a
 # multilib variant (such as -march) as we want the "main" sysroot,
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32)
@ 2015-02-13 22:34 Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 01/12] arch: kill avr32 Yann E. MORIN
                   ` (11 more replies)
  0 siblings, 12 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Hello All!

As stated in c2444e9 (arch: avr32 should only get removed for the 2015.02
release), get rid of avr32.

There still remain a few (34!) occurences of avr32, though:

  - fbv: the patch was seemingly made when testing for avr32, but is
    suposedly valid for other BE archs;

  - rubix: ditto;

  - x11r7: innocuous hunk for avr32, that we do not get rid of, since
    it is a patch from upstream;

  - other packages get their sources from an avr32-related site,
    presumably a mirror of the (now replaced?) avr32linux.org site;

  - a few references here-and-there: CHANGES, GNU's config.{guess,sub},
    uClibc's .config files.

Happy mourning! ;-]

Regards,
Yann E. MORIN.


The following changes since commit 414d7e97a7359be87ef3b622c409e4200a8991ff:

  python3: fix invalid ncursesw header path (2015-02-12 22:28:17 +0100)

are available in the git repository at:

  git://git.busybox.net/~ymorin/git/buildroot yem/avr32

for you to fetch changes up to 11ccc5cb61715123a995c19b9fc279a4ae2c78ad:

  arch/avr32: decommission for real (2015-02-13 23:29:44 +0100)

----------------------------------------------------------------
Yann E. MORIN (12):
      arch: kill avr32
      configs: get rid of avr32 defconfigs
      packages: all salute the passing of avr32
      linux: get rid of avr32 specifics
      toolchain/buildroot: forget about avr32
      toolchain/extrnal: avr32 is no more
      package/binutils: avr32 is gone
      package/gcc: do not mourn avr32 for too long...
      package/gdb: farewell avr32
      package/uClibc: RIP, avr32
      package/eudev: we won't miss you, avr32
      arch/avr32: decommission for real

 .defconfig                                         |    1 -
 arch/Config.in                                     |   19 -
 arch/Config.in.avr32                               |   11 -
 configs/atngw100_defconfig                         |   35 -
 configs/atstk100x_defconfig                        |   26 -
 linux/Config.in                                    |    2 +-
 linux/linux.mk                                     |    4 -
 package/aiccu/Config.in                            |    7 -
 package/alsa-lib/0001-avr32-bad-inline.patch       |   91 -
 package/alsa-lib/alsa-lib.mk                       |    4 -
 package/avrdude/Config.in                          |    2 -
 package/bdwgc/Config.in                            |    2 +-
 package/binutils/Config.in.host                    |   13 +-
 package/binutils/binutils.mk                       |    8 -
 package/blktrace/Config.in                         |    2 +-
 package/bluez5_utils/Config.in                     |    1 -
 package/bluez_utils/Config.in                      |    3 +-
 package/btrfs-progs/Config.in                      |    2 -
 package/collectd/Config.in                         |    1 -
 package/connman/Config.in                          |    3 +-
 package/cwiid/Config.in                            |    2 -
 package/dovecot/Config.in                          |    2 -
 package/dropwatch/dropwatch.mk                     |    4 +-
 .../dvb-apps/0002-Fix-compiler-warning-flags.patch |   25 -
 package/e2fsprogs/Config.in                        |    2 +-
 package/ecryptfs-utils/Config.in                   |    4 +-
 package/efl/expedite/Config.in                     |    2 -
 package/efl/libecore/Config.in                     |    2 -
 package/efl/libedbus/Config.in                     |    2 -
 package/efl/libedje/Config.in                      |    2 -
 package/efl/libelementary/Config.in                |    2 -
 package/efl/libethumb/Config.in                    |    2 -
 package/efl/libevas/Config.in                      |    2 -
 package/elfutils/Config.in                         |    4 -
 package/enlightenment/Config.in                    |    2 -
 package/eudev/Config.in                            |    3 -
 package/fbv/0001-arch.patch.avr32                  |   48 -
 package/fio/Config.in                              |    6 +-
 package/gadgetfs-test/Config.in                    |    2 +-
 .../1001-gcc-4.2.x-inhibit-libc.patch              |   49 -
 ...-fix-removal-of-redundant-cast-operations.patch |   16 -
 ...conditional-insn-which-clobbers-cc_status.patch |  150 -
 ...use-movh-to-move-immediates-into-register.patch |   31 -
 .../990-fix-300-libstdc++-pic.patch                |   20 -
 package/gcc/Config.in.host                         |   26 +-
 package/gcc/gcc.mk                                 |    4 +-
 package/gdb/Config.in                              |    4 +-
 package/gdb/Config.in.host                         |    7 -
 package/gdb/gdb.mk                                 |    9 +-
 package/gpsd/Config.in                             |    3 -
 package/gstreamer/gstreamer/gstreamer.mk           |    2 +-
 package/gstreamer1/gst1-libav/Config.in            |    1 -
 package/gstreamer1/gst1-plugins-bad/Config.in      |    1 -
 package/gstreamer1/gstreamer1/gstreamer1.mk        |    2 +-
 package/iputils/Config.in                          |    3 -
 package/keyutils/Config.in                         |    2 +-
 package/libaio/0002-avr32-support.patch            |  122 -
 package/libaio/Config.in                           |    2 +-
 package/libcap-ng/Config.in                        |    1 -
 package/libcec/0001-no-psabi-warning.patch         |   22 -
 package/libev/Config.in                            |    2 +-
 package/libglib2/libglib2.mk                       |    2 +-
 package/libmad/0002-optimization.patch.avr32       | 2922 --------------------
 package/libmad/Config.in                           |    1 -
 package/libmicrohttpd/libmicrohttpd.mk             |    5 -
 package/libsecret/Config.in                        |    3 -
 ...tack-direction-for-the-AVR32-architecture.patch |   33 -
 package/libusb/libusb.mk                           |    4 -
 package/lua-ev/Config.in                           |    2 +-
 package/lxc/Config.in                              |    2 -
 package/mpd/Config.in                              |    6 +-
 package/mtr/Config.in                              |    3 -
 package/mysql/Config.in                            |    1 -
 package/network-manager/Config.in                  |    2 -
 package/ofono/Config.in                            |    2 -
 package/opencv/Config.in                           |    1 -
 package/openobex/Config.in                         |    3 +-
 package/openpgm/Config.in                          |    2 -
 package/oprofile/oprofile.mk                       |    5 -
 package/php/Config.ext                             |    4 -
 package/pinentry/Config.in                         |    2 -
 package/poco/Config.in                             |    5 +-
 .../012-support-library-path-old-compilers.patch   |   54 -
 .../011-support-library-path-old-compilers.patch   |   54 -
 package/qemu/qemu.mk                               |    1 -
 package/qt/Config.in                               |    2 -
 package/qt/qt.mk                                   |    2 -
 package/qt5/Config.in                              |    2 -
 package/qt5/qt5base/Config.in                      |    1 -
 package/qt5/qt5connectivity/Config.in              |    3 +-
 package/radvd/Config.in                            |    2 -
 package/samba/Config.in                            |    2 -
 package/samba4/Config.in                           |    1 -
 package/sconeserver/Config.in                      |    4 +-
 package/snowball-init/Config.in                    |    3 +-
 package/squid/Config.in                            |    1 -
 package/trace-cmd/Config.in                        |    1 -
 package/tvheadend/Config.in                        |    6 -
 package/uboot-tools/uboot-tools.mk                 |    4 +-
 .../0.9.31.1/0001-add-bsd-endian-conversions.patch |   64 -
 .../uclibc/0.9.31.1/0002-add-inotify-init1.patch   |   64 -
 .../uclibc/0.9.31.1/0003-add-sock-cloexec.patch    |   43 -
 .../uclibc/0.9.31.1/0004-export-strverscmp.patch   |   30 -
 .../0005-fix-daylight-saving-time-handling.patch   |   36 -
 .../0.9.31.1/0006-fix-error-locale-utf-8.patch     |   17 -
 .../0.9.31.1/0007-linuxthreads-errno-fix.patch     |   98 -
 .../0008-more-workarounds-GCC-PR32219.patch        |   40 -
 package/uclibc/0.9.31.1/0009-unshare.patch         |   74 -
 .../0.9.31.1/0010-workaround-GCC-PR32219.patch     |   57 -
 .../0.9.31.1/0011-startfiles-Make-targets.patch    |   60 -
 .../0.9.31.1/0012-netlinkaccess-header-types.patch |   35 -
 ...deps-add-__kernel_long-and-__kernel_ulong.patch |   21 -
 ...clude-__iconv_codesets-into-iconv-utility.patch |   79 -
 ...deps-add-__kernel_long-and-__kernel_ulong.patch |   20 +-
 .../0005-Patch-from-OpenWRT-for-avr32.patch        |   28 -
 package/uclibc/Config.in                           |   12 +-
 package/uclibc/uClibc-0.9.31.config                |  258 --
 package/uclibc/uclibc.mk                           |   27 +-
 package/udisks/Config.in                           |    3 -
 package/ussp-push/Config.in                        |    3 +-
 package/util-linux/Config.in                       |    2 -
 package/wayland/Config.in                          |    2 -
 package/weston/Config.in                           |    2 -
 package/wpa_supplicant/Config.in                   |    1 -
 package/x11r7/xserver_xorg-server/Config.in        |    4 -
 package/zeromq/Config.in                           |    1 -
 package/zmqpp/Config.in                            |    2 -
 system/Config.in                                   |    2 -
 toolchain/toolchain-buildroot/Config.in            |    2 +-
 toolchain/toolchain-external/toolchain-external.mk |    4 +-
 130 files changed, 57 insertions(+), 5021 deletions(-)
 delete mode 100644 arch/Config.in.avr32
 delete mode 100644 configs/atngw100_defconfig
 delete mode 100644 configs/atstk100x_defconfig
 delete mode 100644 package/alsa-lib/0001-avr32-bad-inline.patch
 delete mode 100644 package/dvb-apps/0002-Fix-compiler-warning-flags.patch
 delete mode 100644 package/fbv/0001-arch.patch.avr32
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/1001-gcc-4.2.x-inhibit-libc.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/903-avr32-fix-removal-of-redundant-cast-operations.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/904-avr32-fix-conditional-insn-which-clobbers-cc_status.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/905-avr32-optimize-movsf2-use-movh-to-move-immediates-into-register.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/990-fix-300-libstdc++-pic.patch
 delete mode 100644 package/libaio/0002-avr32-support.patch
 delete mode 100644 package/libcec/0001-no-psabi-warning.patch
 delete mode 100644 package/libmad/0002-optimization.patch.avr32
 delete mode 100644 package/libsigsegv/0001-Add-stack-direction-for-the-AVR32-architecture.patch
 delete mode 100644 package/python/012-support-library-path-old-compilers.patch
 delete mode 100644 package/python3/011-support-library-path-old-compilers.patch
 delete mode 100644 package/uclibc/0.9.31.1/0001-add-bsd-endian-conversions.patch
 delete mode 100644 package/uclibc/0.9.31.1/0002-add-inotify-init1.patch
 delete mode 100644 package/uclibc/0.9.31.1/0003-add-sock-cloexec.patch
 delete mode 100644 package/uclibc/0.9.31.1/0004-export-strverscmp.patch
 delete mode 100644 package/uclibc/0.9.31.1/0005-fix-daylight-saving-time-handling.patch
 delete mode 100644 package/uclibc/0.9.31.1/0006-fix-error-locale-utf-8.patch
 delete mode 100644 package/uclibc/0.9.31.1/0007-linuxthreads-errno-fix.patch
 delete mode 100644 package/uclibc/0.9.31.1/0008-more-workarounds-GCC-PR32219.patch
 delete mode 100644 package/uclibc/0.9.31.1/0009-unshare.patch
 delete mode 100644 package/uclibc/0.9.31.1/0010-workaround-GCC-PR32219.patch
 delete mode 100644 package/uclibc/0.9.31.1/0011-startfiles-Make-targets.patch
 delete mode 100644 package/uclibc/0.9.31.1/0012-netlinkaccess-header-types.patch
 delete mode 100644 package/uclibc/0.9.31.1/0013-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch
 delete mode 100644 package/uclibc/0.9.31.1/0014-Do-not-include-__iconv_codesets-into-iconv-utility.patch
 delete mode 100644 package/uclibc/0.9.33.2/0005-Patch-from-OpenWRT-for-avr32.patch
 delete mode 100644 package/uclibc/uClibc-0.9.31.config

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 07/12] package/binutils: avr32 is gone
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (5 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 06/12] toolchain/extrnal: avr32 is no more Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 08/12] package/gcc: do not mourn avr32 for too long Yann E. MORIN
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/binutils/Config.in.host | 13 ++++---------
 package/binutils/binutils.mk    |  8 --------
 2 files changed, 4 insertions(+), 17 deletions(-)

diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
index 0739467..504e9ca 100644
--- a/package/binutils/Config.in.host
+++ b/package/binutils/Config.in.host
@@ -7,33 +7,28 @@ choice
 	help
 	  Select the version of binutils you wish to use.
 
-	config BR2_BINUTILS_VERSION_2_18_AVR32_1_0_1
-		depends on BR2_avr32
-		bool "binutils 2.18-avr32-1.0.1"
-
 	config BR2_BINUTILS_VERSION_2_22
-		depends on !BR2_avr32 && !BR2_aarch64 && !BR2_microblaze && !BR2_powerpc64le
+		depends on !BR2_aarch64 && !BR2_microblaze && !BR2_powerpc64le
 		bool "binutils 2.22"
 
 	# bfin disabled for newer binutils due to
 	# https://sourceware.org/bugzilla/show_bug.cgi?id=17334
 	config BR2_BINUTILS_VERSION_2_23_2
-		depends on !BR2_avr32 && !BR2_aarch64 && !BR2_bfin && !BR2_microblaze && !BR2_powerpc64le
+		depends on !BR2_aarch64 && !BR2_bfin && !BR2_microblaze && !BR2_powerpc64le
 		bool "binutils 2.23.2"
 
 	config BR2_BINUTILS_VERSION_2_24
-		depends on !BR2_avr32 && !BR2_bfin
+		depends on !BR2_bfin
 		bool "binutils 2.24"
 
 	config BR2_BINUTILS_VERSION_2_25
-		depends on !BR2_avr32 && !BR2_bfin
+		depends on !BR2_bfin
 		bool "binutils 2.25"
 
 endchoice
 
 config BR2_BINUTILS_VERSION
 	string
-	default "2.18-avr32-1.0.1" if BR2_BINUTILS_VERSION_2_18_AVR32_1_0_1
 	default "arc-2014.12"	if BR2_arc
 	default "2.22"		if BR2_BINUTILS_VERSION_2_22
 	default "2.23.2"	if BR2_BINUTILS_VERSION_2_23_2
diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index c3b3c18..9e99253 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -8,17 +8,9 @@
 # If not, we do like other packages
 BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION))
 ifeq ($(BINUTILS_VERSION),)
-ifeq ($(BR2_avr32),y)
-# avr32 uses a special version
-BINUTILS_VERSION = 2.18-avr32-1.0.1
-else
 BINUTILS_VERSION = 2.22
 endif
-endif
 
-ifeq ($(ARCH),avr32)
-BINUTILS_SITE = ftp://www.at91.com/pub/buildroot
-endif
 ifeq ($(BR2_arc),y)
 BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION))
 BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 08/12] package/gcc: do not mourn avr32 for too long...
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (6 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 07/12] package/binutils: avr32 is gone Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 09/12] package/gdb: farewell avr32 Yann E. MORIN
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 .../1001-gcc-4.2.x-inhibit-libc.patch              |  49 -------
 ...-fix-removal-of-redundant-cast-operations.patch |  16 ---
 ...conditional-insn-which-clobbers-cc_status.patch | 150 ---------------------
 ...use-movh-to-move-immediates-into-register.patch |  31 -----
 .../990-fix-300-libstdc++-pic.patch                |  20 ---
 package/gcc/Config.in.host                         |  26 +---
 package/gcc/gcc.mk                                 |   4 +-
 7 files changed, 8 insertions(+), 288 deletions(-)
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/1001-gcc-4.2.x-inhibit-libc.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/903-avr32-fix-removal-of-redundant-cast-operations.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/904-avr32-fix-conditional-insn-which-clobbers-cc_status.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/905-avr32-optimize-movsf2-use-movh-to-move-immediates-into-register.patch
 delete mode 100644 package/gcc/4.2.2-avr32-2.1.5/990-fix-300-libstdc++-pic.patch

diff --git a/package/gcc/4.2.2-avr32-2.1.5/1001-gcc-4.2.x-inhibit-libc.patch b/package/gcc/4.2.2-avr32-2.1.5/1001-gcc-4.2.x-inhibit-libc.patch
deleted file mode 100644
index 9a7c909..0000000
--- a/package/gcc/4.2.2-avr32-2.1.5/1001-gcc-4.2.x-inhibit-libc.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- gcc-4.2.4/gcc/unwind-sjlj.c.khem	2010-08-11 12:45:28.000000000 -0700
-+++ gcc-4.2.4/gcc/unwind-sjlj.c	2010-08-11 12:45:50.000000000 -0700
-@@ -28,6 +28,8 @@
-    Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-    02110-1301, USA.  */
- 
-+#ifndef inhibit_libc
-+
- #include "tconfig.h"
- #include "tsystem.h"
- #include "coretypes.h"
-@@ -326,3 +328,4 @@ uw_identify_context (struct _Unwind_Cont
- #include "unwind.inc"
- 
- #endif /* USING_SJLJ_EXCEPTIONS */
-+#endif
---- gcc-4.2.4/gcc/unwind-dw2.c.khem	2010-08-11 12:42:45.000000000 -0700
-+++ gcc-4.2.4/gcc/unwind-dw2.c	2010-08-11 12:43:17.000000000 -0700
-@@ -28,6 +28,8 @@
-    Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-    02110-1301, USA.  */
- 
-+#ifndef inhibit_libc
-+
- #include "tconfig.h"
- #include "tsystem.h"
- #include "coretypes.h"
-@@ -1537,3 +1539,5 @@ alias (_Unwind_SetIP);
- #endif
- 
- #endif /* !USING_SJLJ_EXCEPTIONS */
-+#endif
-+
---- gcc-4.2.4/gcc/unwind-dw2-fde-glibc.c.khem	2010-08-11 12:44:25.000000000 -0700
-+++ gcc-4.2.4/gcc/unwind-dw2-fde-glibc.c	2010-08-11 12:44:48.000000000 -0700
-@@ -29,6 +29,8 @@
-    segment and dl_iterate_phdr to avoid register/deregister calls at
-    DSO load/unload.  */
- 
-+#ifndef inhibit_libc
-+
- #ifndef _GNU_SOURCE
- #define _GNU_SOURCE 1
- #endif
-@@ -438,3 +440,4 @@ _Unwind_Find_FDE (void *pc, struct dwarf
- #if defined (USE_GAS_SYMVER) && defined (SHARED) && defined (USE_LIBUNWIND_EXCEPTIONS)
- alias (_Unwind_Find_FDE);
- #endif
-+#endif
diff --git a/package/gcc/4.2.2-avr32-2.1.5/903-avr32-fix-removal-of-redundant-cast-operations.patch b/package/gcc/4.2.2-avr32-2.1.5/903-avr32-fix-removal-of-redundant-cast-operations.patch
deleted file mode 100644
index 59ecbff..0000000
--- a/package/gcc/4.2.2-avr32-2.1.5/903-avr32-fix-removal-of-redundant-cast-operations.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: trunk/gcc/config/avr32/avr32.c
-===================================================================
---- trunk/gcc/config/avr32/avr32.c	(revision 43495)
-+++ trunk/gcc/config/avr32/avr32.c	(revision 43496)
-@@ -6499,6 +6499,11 @@
- 		    break;
- 		}
- 
-+              /* Check if we have a call and the register is used as an argument. */
-+              if (CALL_P (scan)
-+                  && find_reg_fusage (scan, USE, reg) )
-+                break;
-+
- 	      if (!reg_mentioned_p (reg, PATTERN (scan)))
- 		continue;
- 
diff --git a/package/gcc/4.2.2-avr32-2.1.5/904-avr32-fix-conditional-insn-which-clobbers-cc_status.patch b/package/gcc/4.2.2-avr32-2.1.5/904-avr32-fix-conditional-insn-which-clobbers-cc_status.patch
deleted file mode 100644
index 539c666..0000000
--- a/package/gcc/4.2.2-avr32-2.1.5/904-avr32-fix-conditional-insn-which-clobbers-cc_status.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-Index: gcc-4.2.2/gcc/config/avr32/avr32.c
-===================================================================
---- gcc-4.2.2.orig/gcc/config/avr32/avr32.c	2008-09-19 14:29:20.000000000 +0200
-+++ gcc-4.2.2/gcc/config/avr32/avr32.c	2008-09-19 14:30:02.000000000 +0200
-@@ -1788,7 +1788,7 @@
-     {
-       if (TREE_CODE (*node) != FUNCTION_DECL)
- 	{
--	  warning ("`%s' attribute only applies to functions",
-+	  warning (OPT_Wattributes,"`%s' attribute only applies to functions",
- 		   IDENTIFIER_POINTER (name));
- 	  *no_add_attrs = true;
- 	}
-@@ -1802,7 +1802,7 @@
- 	{
- 	  if (avr32_isr_value (args) == AVR32_FT_UNKNOWN)
- 	    {
--	      warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
-+	      warning (OPT_Wattributes,"`%s' attribute ignored", IDENTIFIER_POINTER (name));
- 	      *no_add_attrs = true;
- 	    }
- 	}
-@@ -1829,7 +1829,7 @@
- 	    }
- 	  else
- 	    {
--	      warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
-+	      warning (OPT_Wattributes,"`%s' attribute ignored", IDENTIFIER_POINTER (name));
- 	    }
- 	}
-     }
-@@ -1847,7 +1847,7 @@
- {
-   if (TREE_CODE (*node) != FUNCTION_DECL)
-     {
--      warning ("%qs attribute only applies to functions",
-+      warning (OPT_Wattributes,"%qs attribute only applies to functions",
- 	       IDENTIFIER_POINTER (name));
-       *no_add_attrs = true;
-     }
-@@ -1866,13 +1866,13 @@
- {
-   if (TREE_CODE (*node) == FUNCTION_TYPE || TREE_CODE (*node) == METHOD_TYPE)
-     {
--      warning ("`%s' attribute not yet supported...",
-+      warning (OPT_Wattributes,"`%s' attribute not yet supported...",
- 	       IDENTIFIER_POINTER (name));
-       *no_add_attrs = true;
-       return NULL_TREE;
-     }
- 
--  warning ("`%s' attribute only applies to functions",
-+  warning (OPT_Wattributes,"`%s' attribute only applies to functions",
- 	   IDENTIFIER_POINTER (name));
-   *no_add_attrs = true;
-   return NULL_TREE;
-@@ -4215,51 +4215,6 @@
- 
- 
- void
--avr32_asm_output_ascii (FILE * stream, char *ptr, int len)
--{
--  int i, i_new = 0;
--  char *new_ptr = xmalloc (4 * len);
--  if (new_ptr == NULL)
--    internal_error ("Out of memory.");
--
--  for (i = 0; i < len; i++)
--    {
--      if (ptr[i] == '\n')
--	{
--	  new_ptr[i_new++] = '\\';
--	  new_ptr[i_new++] = '0';
--	  new_ptr[i_new++] = '1';
--	  new_ptr[i_new++] = '2';
--	}
--      else if (ptr[i] == '\"')
--	{
--	  new_ptr[i_new++] = '\\';
--	  new_ptr[i_new++] = '\"';
--	}
--      else if (ptr[i] == '\\')
--	{
--	  new_ptr[i_new++] = '\\';
--	  new_ptr[i_new++] = '\\';
--	}
--      else if (ptr[i] == '\0' && i + 1 < len)
--	{
--	  new_ptr[i_new++] = '\\';
--	  new_ptr[i_new++] = '0';
--	}
--      else
--	{
--	  new_ptr[i_new++] = ptr[i];
--	}
--    }
--
--  /* Terminate new_ptr. */
--  new_ptr[i_new] = '\0';
--  fprintf (stream, "\t.ascii\t\"%s\"\n", new_ptr);
--  free (new_ptr);
--}
--
--
--void
- avr32_asm_output_label (FILE * stream, const char *name)
- {
-   name = avr32_strip_name_encoding (name);
-@@ -4444,12 +4399,15 @@
-         rtx cmp;
-         rtx cmp_op0, cmp_op1;
-         rtx cond;
-+        rtx dest;
-+
-         if ( GET_CODE (exp) == COND_EXEC )
-           {
-             cmp_op0 = XEXP (COND_EXEC_TEST (exp), 0);
-             cmp_op1 = XEXP (COND_EXEC_TEST (exp), 1);
-             cond = COND_EXEC_TEST (exp);
--          } 
-+            dest = SET_DEST (COND_EXEC_CODE (exp));
-+          }
-         else
-           {
-             /* If then else conditional. compare operands are in operands
-@@ -4457,6 +4415,7 @@
-             cmp_op0 = recog_data.operand[4];
-             cmp_op1 = recog_data.operand[5];
-             cond = recog_data.operand[1];
-+            dest = SET_DEST (exp);
-           }
- 
-         if ( GET_CODE (cmp_op0) == AND )
-@@ -4466,7 +4425,15 @@
-                                  cmp_op0,
-                                  cmp_op1);
-         
--	if (is_compare_redundant (cmp, cond) == NULL_RTX)
-+        /* Check if the conditional insns updates a register present
-+           in the comparison, if so then we must reset the cc_status. */
-+        if (REG_P (dest)
-+            && (reg_mentioned_p (dest, cmp_op0)
-+                || reg_mentioned_p (dest, cmp_op1)))
-+          {
-+            CC_STATUS_INIT;
-+          }
-+	else if (is_compare_redundant (cmp, cond) == NULL_RTX)
- 	  {
- 	    /* Reset the nonstandard flag */
- 	    CC_STATUS_INIT;
diff --git a/package/gcc/4.2.2-avr32-2.1.5/905-avr32-optimize-movsf2-use-movh-to-move-immediates-into-register.patch b/package/gcc/4.2.2-avr32-2.1.5/905-avr32-optimize-movsf2-use-movh-to-move-immediates-into-register.patch
deleted file mode 100644
index 08d972d..0000000
--- a/package/gcc/4.2.2-avr32-2.1.5/905-avr32-optimize-movsf2-use-movh-to-move-immediates-into-register.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Index: gcc-4.2.2/gcc/config/avr32/avr32.md
-===================================================================
---- gcc-4.2.2.orig/gcc/config/avr32/avr32.md	2008-09-19 14:23:34.000000000 +0200
-+++ gcc-4.2.2/gcc/config/avr32/avr32.md	2008-09-19 14:30:18.000000000 +0200
-@@ -803,14 +803,22 @@
- (define_insn "*movsf_internal"
-   [(set (match_operand:SF 0 "nonimmediate_operand"     "=r,r,r,r,m")
- 	(match_operand:SF 1 "general_operand"          "r, G,F,m,r"))]
--  "TARGET_SOFT_FLOAT
--   && (register_operand (operands[0], SFmode)
--       || register_operand (operands[1], SFmode))"
-+  "(register_operand (operands[0], SFmode)
-+    || register_operand (operands[1], SFmode))"
-   {
-     switch (which_alternative) {
-       case 0:
-       case 1: return "mov\t%0, %1";
--      case 2: return "mov\t%0, lo(%1)\;orh\t%0, hi(%1)";
-+      case 2: 
-+       {
-+        HOST_WIDE_INT target_float[2];
-+        real_to_target (target_float, CONST_DOUBLE_REAL_VALUE (operands[1]), SFmode);
-+        if ( TARGET_V2_INSNS 
-+             && avr32_hi16_immediate_operand (GEN_INT (target_float[0]), VOIDmode) )
-+           return "movh\t%0, hi(%1)";
-+        else
-+           return "mov\t%0, lo(%1)\;orh\t%0, hi(%1)";
-+       }
-       case 3:
-         if ( (REG_P(XEXP(operands[1], 0))
-               && REGNO(XEXP(operands[1], 0)) == SP_REGNUM)
diff --git a/package/gcc/4.2.2-avr32-2.1.5/990-fix-300-libstdc++-pic.patch b/package/gcc/4.2.2-avr32-2.1.5/990-fix-300-libstdc++-pic.patch
deleted file mode 100644
index a63b3ad..0000000
--- a/package/gcc/4.2.2-avr32-2.1.5/990-fix-300-libstdc++-pic.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-libstdc++-v3: fix the effects of pre-applied 300-libstdc++-pic.patch
-
-This version of GCC comes with a number of pre-applied patches, among which is
-300-libstdc++-pic.patch that makes a PIC version of libstdc++. The resulting
-Makefile.in incorrectly refers to object files that should be insde the library.
-
-Signed-off-by: Alexander Lukichev <alexander.lukichev@gmail.com>
-
-diff -uNrp host-gcc-final-4.2.2-avr32-2.1.5.orig/libstdc++-v3/src/Makefile.in host-gcc-final-4.2.2-avr32-2.1.5/libstdc++-v3/src/Makefile.in
---- host-gcc-final-4.2.2-avr32-2.1.5.orig/libstdc++-v3/src/Makefile.in	2008-07-04 00:18:42.000000000 +0300
-+++ host-gcc-final-4.2.2-avr32-2.1.5/libstdc++-v3/src/Makefile.in	2013-08-08 16:15:56.201258882 +0300
-@@ -804,7 +804,7 @@ install_debug:
- 
- install-exec-local:
- ifeq ($(enable_shared),yes)
--	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
- 	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
- endif
- 
diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index 24004c4..567f66a 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -8,7 +8,6 @@ config BR2_GCC_SUPPORTS_GRAPHITE
 
 choice
 	prompt "GCC compiler Version"
-	default BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 if BR2_avr32
 	default BR2_GCC_VERSION_4_8_ARC if BR2_arc
 	default BR2_GCC_VERSION_4_9_X if BR2_microblaze || BR2_powerpc64le
 	default BR2_GCC_VERSION_4_5_X if BR2_bfin
@@ -16,16 +15,11 @@ choice
 	help
 	  Select the version of gcc you wish to use.
 
-	config BR2_GCC_VERSION_4_2_2_AVR32_2_1_5
-		bool "gcc 4.2.2-avr32-2.1.5"
-		# Only supported architecture
-		depends on BR2_avr32
-
 	config BR2_GCC_VERSION_4_5_X
 		bool "gcc 4.5.x"
 		# Broken or unsupported architectures
 		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc \
-			&& !BR2_avr32  && !BR2_powerpc64le
+			&& !BR2_powerpc64le
 		# Broken or unsupported ARM cores
 		depends on !BR2_cortex_a7 && !BR2_cortex_a12 && \
 			!BR2_cortex_a15 && !BR2_fa526 && !BR2_pj4
@@ -46,7 +40,7 @@ choice
 		bool "gcc 4.7.x"
 		# Broken or unsupported architectures
 		depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc \
-			&& !BR2_avr32 && !BR2_bfin && !BR2_powerpc64le
+			&& !BR2_bfin && !BR2_powerpc64le
 		# Broken or unsupported ARM cores
 		depends on !BR2_cortex_a12 && !BR2_pj4
 		# Broken or unsupported PPC cores
@@ -61,7 +55,7 @@ choice
 	config BR2_GCC_VERSION_4_8_X
 		bool "gcc 4.8.x"
 		# Broken or unsupported architectures
-		depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 \
+		depends on !BR2_microblaze && !BR2_arc \
 			&& !BR2_bfin && !BR2_powerpc64le
 		# Broken or unsupported ARM cores
 		depends on !BR2_cortex_a12
@@ -79,7 +73,7 @@ choice
 	config BR2_GCC_VERSION_4_9_X
 		bool "gcc 4.9.x"
 		# Broken or unsupported architectures
-		depends on !BR2_arc && !BR2_avr32 && !BR2_bfin
+		depends on !BR2_arc && !BR2_bfin
 		# PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
 		select BR2_GCC_NEEDS_MPC
 		select BR2_GCC_SUPPORTS_GRAPHITE
@@ -88,11 +82,10 @@ endchoice
 
 config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
 	bool
-	default y if !BR2_GCC_VERSION_4_2_2_AVR32_2_1_5
+	default y
 
 config BR2_GCC_VERSION
 	string
-	default "4.2.2-avr32-2.1.5" if BR2_GCC_VERSION_4_2_2_AVR32_2_1_5
 	default "4.5.4"     if BR2_GCC_VERSION_4_5_X
 	default "4.7.4"     if BR2_GCC_VERSION_4_7_X
 	default "4.8.4"     if BR2_GCC_VERSION_4_8_X
@@ -110,16 +103,11 @@ config BR2_EXTRA_GCC_CONFIG_OPTIONS
 config BR2_TOOLCHAIN_BUILDROOT_CXX
 	bool "Enable C++ support"
 	select BR2_INSTALL_LIBSTDCPP
-	depends on !(BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 && \
-		     BR2_TOOLCHAIN_BUILDROOT_LOCALE)
 	help
 	  Enable this option if you want your toolchain to support the
 	  C++ language and you want C++ libraries to be installed on
 	  your target system.
 
-comment "C++ support broken in uClibc with locale enabled with gcc 4.2"
-	depends on BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 && BR2_TOOLCHAIN_BUILDROOT_LOCALE
-
 config BR2_GCC_ENABLE_TLS
 	bool "Enable compiler tls support" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC
 	default y
@@ -130,7 +118,7 @@ config BR2_GCC_ENABLE_TLS
 
 config BR2_GCC_ENABLE_OPENMP
 	bool "Enable compiler OpenMP support"
-	depends on !BR2_PTHREADS_NONE && !BR2_avr32 && !BR2_arc && !BR2_microblaze
+	depends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze
 	help
 	  Enable OpenMP support for the compiler
 
@@ -138,7 +126,7 @@ config BR2_GCC_ENABLE_LIBMUDFLAP
 	bool "Enable libmudflap support"
 	# There are architectures, or specific configurations for
 	# which mudflap is not supported.
-	depends on !BR2_avr32 && !BR2_bfin && !BR2_ARM_INSTRUCTIONS_THUMB && !BR2_powerpc_SPE
+	depends on !BR2_bfin && !BR2_ARM_INSTRUCTIONS_THUMB && !BR2_powerpc_SPE
 	depends on !BR2_GCC_VERSION_4_9_X
 	help
 	  libmudflap is a gcc library used for the mudflap pointer
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index 3af8290..477f846 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -10,9 +10,7 @@
 
 GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))
 
-ifeq ($(findstring avr32,$(GCC_VERSION)),avr32)
-GCC_SITE = ftp://www.at91.com/pub/buildroot
-else ifeq ($(BR2_arc),y)
+ifeq ($(BR2_arc),y)
 GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION))
 GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz
 else
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 09/12] package/gdb: farewell avr32
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (7 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 08/12] package/gcc: do not mourn avr32 for too long Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 10/12] package/uClibc: RIP, avr32 Yann E. MORIN
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/gdb/Config.in      | 4 ++--
 package/gdb/Config.in.host | 7 -------
 package/gdb/gdb.mk         | 9 +--------
 3 files changed, 3 insertions(+), 17 deletions(-)

diff --git a/package/gdb/Config.in b/package/gdb/Config.in
index b211878..db6adf5 100644
--- a/package/gdb/Config.in
+++ b/package/gdb/Config.in
@@ -40,10 +40,10 @@ config BR2_PACKAGE_GDB_DEBUGGER
 	bool "full debugger"
 	select BR2_PACKAGE_NCURSES
 	depends on BR2_USE_WCHAR
-	depends on !BR2_sh && !BR2_sh64 && !BR2_avr32 && !BR2_microblaze && !BR2_bfin
+	depends on !BR2_sh && !BR2_sh64 && !BR2_microblaze && !BR2_bfin
 
 comment "full gdb on target needs a toolchain w/ wchar"
-	depends on !BR2_sh && !BR2_sh64 && !BR2_avr32 && !BR2_microblaze && !BR2_bfin
+	depends on !BR2_sh && !BR2_sh64 && !BR2_microblaze && !BR2_bfin
 	depends on !BR2_USE_WCHAR
 
 if BR2_PACKAGE_GDB_DEBUGGER
diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host
index c8d6a94..2a03939 100644
--- a/package/gdb/Config.in.host
+++ b/package/gdb/Config.in.host
@@ -27,15 +27,10 @@ choice
 	prompt "GDB debugger Version"
 	depends on !BR2_arc
 	depends on !BR2_microblaze
-	default BR2_GDB_VERSION_6_7_1_AVR32_2_1_5 if BR2_avr32
 	default BR2_GDB_VERSION_7_7
 	help
 	  Select the version of gdb you wish to use.
 
-	config BR2_GDB_VERSION_6_7_1_AVR32_2_1_5
-		depends on BR2_avr32
-		bool "gdb 6.7.1-avr32-2.1.5"
-
 	config BR2_GDB_VERSION_7_7
 		bool "gdb 7.7.x"
 
@@ -50,8 +45,6 @@ endif
 config BR2_GDB_VERSION
 	string
 	depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB
-	default "6.7.1-avr32-2.1.5" if BR2_GDB_VERSION_6_7_1_AVR32_2_1_5 || \
-                                   (!BR2_PACKAGE_HOST_GDB && BR2_avr32)
 	default "arc-2014.12-gdb" if BR2_arc
 	default "6be65fb56ea6694a9260733a536a023a1e2d4d57" if BR2_microblaze
 	default "7.7.1"    if BR2_GDB_VERSION_7_7 || !BR2_PACKAGE_HOST_GDB
diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
index 24084b8..6a192fb 100644
--- a/package/gdb/gdb.mk
+++ b/package/gdb/gdb.mk
@@ -19,10 +19,6 @@ GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
 GDB_FROM_GIT = y
 endif
 
-ifeq ($(GDB_VERSION),6.7.1-avr32-2.1.5)
-GDB_SITE = ftp://www.at91.com/pub/buildroot
-endif
-
 # Starting from 7.8.x, bz2 tarballs no longer available, use .tar.xz
 # instead.
 ifneq ($(filter 7.8.%,$(GDB_VERSION)),)
@@ -129,12 +125,9 @@ endif
 #  * --target, because we're doing a cross build rather than a real
 #    host build.
 #  * --enable-static because gdb really wants to use libbfd.a
-#  * --disable-shared, otherwise the old 6.7 version specific to AVR32
-#    doesn't build because it wants to link a shared libbfd.so against
-#    non-PIC liberty.a.
 HOST_GDB_CONF_OPTS = \
 	--target=$(GNU_TARGET_NAME) \
-	--enable-static --disable-shared \
+	--enable-static \
 	--without-uiout \
 	--disable-gdbtk \
 	--without-x \
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 10/12] package/uClibc: RIP, avr32
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (8 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 09/12] package/gdb: farewell avr32 Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 11/12] package/eudev: we won't miss you, avr32 Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 12/12] arch/avr32: decommission for real Yann E. MORIN
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/aiccu/Config.in                            |   2 -
 package/fio/Config.in                              |   6 +-
 package/iputils/Config.in                          |   2 -
 package/libglib2/libglib2.mk                       |   2 +-
 package/mtr/Config.in                              |   2 -
 .../0.9.31.1/0001-add-bsd-endian-conversions.patch |  64 -----
 .../uclibc/0.9.31.1/0002-add-inotify-init1.patch   |  64 -----
 .../uclibc/0.9.31.1/0003-add-sock-cloexec.patch    |  43 ----
 .../uclibc/0.9.31.1/0004-export-strverscmp.patch   |  30 ---
 .../0005-fix-daylight-saving-time-handling.patch   |  36 ---
 .../0.9.31.1/0006-fix-error-locale-utf-8.patch     |  17 --
 .../0.9.31.1/0007-linuxthreads-errno-fix.patch     |  98 --------
 .../0008-more-workarounds-GCC-PR32219.patch        |  40 ----
 package/uclibc/0.9.31.1/0009-unshare.patch         |  74 ------
 .../0.9.31.1/0010-workaround-GCC-PR32219.patch     |  57 -----
 .../0.9.31.1/0011-startfiles-Make-targets.patch    |  60 -----
 .../0.9.31.1/0012-netlinkaccess-header-types.patch |  35 ---
 ...deps-add-__kernel_long-and-__kernel_ulong.patch |  21 --
 ...clude-__iconv_codesets-into-iconv-utility.patch |  79 -------
 ...deps-add-__kernel_long-and-__kernel_ulong.patch |  20 +-
 .../0005-Patch-from-OpenWRT-for-avr32.patch        |  28 ---
 package/uclibc/Config.in                           |  12 +-
 package/uclibc/uClibc-0.9.31.config                | 258 ---------------------
 package/uclibc/uclibc.mk                           |  27 +--
 24 files changed, 11 insertions(+), 1066 deletions(-)
 delete mode 100644 package/uclibc/0.9.31.1/0001-add-bsd-endian-conversions.patch
 delete mode 100644 package/uclibc/0.9.31.1/0002-add-inotify-init1.patch
 delete mode 100644 package/uclibc/0.9.31.1/0003-add-sock-cloexec.patch
 delete mode 100644 package/uclibc/0.9.31.1/0004-export-strverscmp.patch
 delete mode 100644 package/uclibc/0.9.31.1/0005-fix-daylight-saving-time-handling.patch
 delete mode 100644 package/uclibc/0.9.31.1/0006-fix-error-locale-utf-8.patch
 delete mode 100644 package/uclibc/0.9.31.1/0007-linuxthreads-errno-fix.patch
 delete mode 100644 package/uclibc/0.9.31.1/0008-more-workarounds-GCC-PR32219.patch
 delete mode 100644 package/uclibc/0.9.31.1/0009-unshare.patch
 delete mode 100644 package/uclibc/0.9.31.1/0010-workaround-GCC-PR32219.patch
 delete mode 100644 package/uclibc/0.9.31.1/0011-startfiles-Make-targets.patch
 delete mode 100644 package/uclibc/0.9.31.1/0012-netlinkaccess-header-types.patch
 delete mode 100644 package/uclibc/0.9.31.1/0013-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch
 delete mode 100644 package/uclibc/0.9.31.1/0014-Do-not-include-__iconv_codesets-into-iconv-utility.patch
 delete mode 100644 package/uclibc/0.9.33.2/0005-Patch-from-OpenWRT-for-avr32.patch
 delete mode 100644 package/uclibc/uClibc-0.9.31.config

diff --git a/package/aiccu/Config.in b/package/aiccu/Config.in
index df184fa..bd67bac 100644
--- a/package/aiccu/Config.in
+++ b/package/aiccu/Config.in
@@ -4,8 +4,6 @@ config BR2_PACKAGE_AICCU
 	depends on BR2_USE_WCHAR
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_USE_MMU # fork()
-	# Uses dn_skipname(), only available since 0.9.33
-	depends on !BR2_UCLIBC_VERSION_0_9_31
 	# Triggers the _gp link issue
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
 	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405
diff --git a/package/fio/Config.in b/package/fio/Config.in
index 8cbbf6c..219b9d9 100644
--- a/package/fio/Config.in
+++ b/package/fio/Config.in
@@ -7,10 +7,8 @@ config BR2_PACKAGE_FIO
 	# release of uClibc, but is part of uClibc Git, and backported
 	# in Buildroot patch set of uClibc 0.9.33. Therefore, we
 	# disable the build of fio for external uClibc toolchains
-	# (which use an unknown uClibc version) and for 0.9.31 which
-	# don't have posix_madvise().
-	depends on !BR2_TOOLCHAIN_EXTERNAL_UCLIBC && \
-		!BR2_UCLIBC_VERSION_0_9_31
+	# (which use an unknown uClibc version)
+	depends on !BR2_TOOLCHAIN_EXTERNAL_UCLIBC
 	# fio uses fallocate() which becomes fallocate64() while compiling
 	# with BR2_LARGEFILE but fallocate64() is not available on nios2
 	depends on !BR2_nios2
diff --git a/package/iputils/Config.in b/package/iputils/Config.in
index ac1218f..fdddb52 100644
--- a/package/iputils/Config.in
+++ b/package/iputils/Config.in
@@ -2,8 +2,6 @@ config BR2_PACKAGE_IPUTILS
 	bool "iputils"
 	select BR2_PACKAGE_OPENSSL if BR2_INET_IPV6
 	depends on BR2_USE_MMU # fork()
-	# requires dn_comp (only available in since uclibc 0.9.33)
-	depends on !BR2_UCLIBC_VERSION_0_9_31
 	help
 	  This package is set of small useful utilities for Linux networking.
 	  It includes complete versions of ping, traceroute, etc.
diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk
index fa909cd..991c972 100644
--- a/package/libglib2/libglib2.mk
+++ b/package/libglib2/libglib2.mk
@@ -49,7 +49,7 @@ LIBGLIB2_CONF_ENV = \
 	gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no)
 
 # old uClibc versions don't provide qsort_r
-ifeq ($(BR2_UCLIBC_VERSION_0_9_31)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2),y)
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2),y)
 LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=no
 else
 LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=yes
diff --git a/package/mtr/Config.in b/package/mtr/Config.in
index f3060a1..5e2d5b2 100644
--- a/package/mtr/Config.in
+++ b/package/mtr/Config.in
@@ -1,7 +1,5 @@
 config BR2_PACKAGE_MTR
 	bool "mtr"
-	# res_mkquery() only available in 0.9.33+
-	depends on !BR2_UCLIBC_VERSION_0_9_31
 	help
 	  mtr combines the functionality of the 'traceroute' and 'ping'
 	  programs in a single network diagnostic tool.
diff --git a/package/uclibc/0.9.31.1/0001-add-bsd-endian-conversions.patch b/package/uclibc/0.9.31.1/0001-add-bsd-endian-conversions.patch
deleted file mode 100644
index 652d7c9..0000000
--- a/package/uclibc/0.9.31.1/0001-add-bsd-endian-conversions.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From c6d6237819037168a6923ac080e348e54615422c Mon Sep 17 00:00:00 2001
-From: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Date: Tue, 1 Jun 2010 23:22:57 +0400
-Subject: [PATCH] endian.h: add BSD convertions between big/little-endian byte order
-
-This patch adds support for convertion of values between host and
-big-/little-endian byte order.
-
-Signed-off-by: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- include/endian.h |   38 ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 38 insertions(+), 0 deletions(-)
-
-diff --git a/include/endian.h b/include/endian.h
-index 2f7bce1..0ba7384 100644
---- a/include/endian.h
-+++ b/include/endian.h
-@@ -55,4 +55,42 @@
- # define __LONG_LONG_PAIR(HI, LO) HI, LO
- #endif
- 
-+
-+#ifdef __USE_BSD
-+/* Conversion interfaces.  */
-+# include <byteswap.h>
-+
-+# if __BYTE_ORDER == __LITTLE_ENDIAN
-+#  define htobe16(x) __bswap_16 (x)
-+#  define htole16(x) (x)
-+#  define be16toh(x) __bswap_16 (x)
-+#  define le16toh(x) (x)
-+
-+#  define htobe32(x) __bswap_32 (x)
-+#  define htole32(x) (x)
-+#  define be32toh(x) __bswap_32 (x)
-+#  define le32toh(x) (x)
-+
-+#  define htobe64(x) __bswap_64 (x)
-+#  define htole64(x) (x)
-+#  define be64toh(x) __bswap_64 (x)
-+#  define le64toh(x) (x)
-+# else
-+#  define htobe16(x) (x)
-+#  define htole16(x) __bswap_16 (x)
-+#  define be16toh(x) (x)
-+#  define le16toh(x) __bswap_16 (x)
-+
-+#  define htobe32(x) (x)
-+#  define htole32(x) __bswap_32 (x)
-+#  define be32toh(x) (x)
-+#  define le32toh(x) __bswap_32 (x)
-+
-+#  define htobe64(x) (x)
-+#  define htole64(x) __bswap_64 (x)
-+#  define be64toh(x) (x)
-+#  define le64toh(x) __bswap_64 (x)
-+# endif
-+#endif
-+
- #endif	/* endian.h */
--- 
-1.7.3.4
-
diff --git a/package/uclibc/0.9.31.1/0002-add-inotify-init1.patch b/package/uclibc/0.9.31.1/0002-add-inotify-init1.patch
deleted file mode 100644
index cbec426..0000000
--- a/package/uclibc/0.9.31.1/0002-add-inotify-init1.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From a2e5630af426f85fdd8721b2820786d9bd2aa695 Mon Sep 17 00:00:00 2001
-From: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Date: Tue, 1 Jun 2010 20:02:54 +0400
-Subject: [PATCH] inotify: add inotify_init1 system call support
-
-This patch introduces support for inotify_init1 system call, found
-since Linux 2.6.27.
-
-Signed-off-by: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libc/sysdeps/linux/common/inotify.c     |    4 ++++
- libc/sysdeps/linux/common/sys/inotify.h |   13 +++++++++++++
- 2 files changed, 17 insertions(+), 0 deletions(-)
-
-diff --git a/libc/sysdeps/linux/common/inotify.c b/libc/sysdeps/linux/common/inotify.c
-index e5a6120..e35f043 100644
---- a/libc/sysdeps/linux/common/inotify.c
-+++ b/libc/sysdeps/linux/common/inotify.c
-@@ -15,6 +15,10 @@
- _syscall0(int, inotify_init)
- #endif
- 
-+#ifdef __NR_inotify_init1
-+_syscall1(int, inotify_init1, int, flags)
-+#endif
-+
- #ifdef __NR_inotify_add_watch
- _syscall3(int, inotify_add_watch, int, fd, const char *, path, uint32_t, mask)
- #endif
-diff --git a/libc/sysdeps/linux/common/sys/inotify.h b/libc/sysdeps/linux/common/sys/inotify.h
-index 0131db9..dc4e19d 100644
---- a/libc/sysdeps/linux/common/sys/inotify.h
-+++ b/libc/sysdeps/linux/common/sys/inotify.h
-@@ -22,6 +22,16 @@
- #include <stdint.h>
- 
- 
-+/* Flags for the parameter of inotify_init1.  */
-+enum
-+  {
-+    IN_CLOEXEC = 02000000,
-+#define IN_CLOEXEC IN_CLOEXEC
-+    IN_NONBLOCK = 04000
-+#define IN_NONBLOCK IN_NONBLOCK
-+  };
-+
-+
- /* Structure describing an inotify event.  */
- struct inotify_event
- {
-@@ -79,6 +89,9 @@ __BEGIN_DECLS
- /* Create and initialize inotify instance.  */
- extern int inotify_init (void) __THROW;
- 
-+/* Create and initialize inotify instance.  */
-+extern int inotify_init1 (int __flags) __THROW;
-+
- /* Add watch of object NAME to inotify instance FD.  Notify about
-    events specified by MASK.  */
- extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
--- 
-1.7.3.4
-
diff --git a/package/uclibc/0.9.31.1/0003-add-sock-cloexec.patch b/package/uclibc/0.9.31.1/0003-add-sock-cloexec.patch
deleted file mode 100644
index a7089a9..0000000
--- a/package/uclibc/0.9.31.1/0003-add-sock-cloexec.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 83333e9c873e4eca6b2c945f7770b1f5373b0427 Mon Sep 17 00:00:00 2001
-From: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Date: Tue, 1 Jun 2010 20:02:39 +0400
-Subject: [PATCH] bits/socket.h: add SOCK_CLOEXEC and SOCK_NONBLOCK support
-
-This patch adds support for SOCK_CLOEXEC and SOCK_NONBLOCK socket
-descriptor flags, which are introduced since Linux 2.6.27
-
-Signed-off-by: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libc/sysdeps/linux/common/bits/socket.h |   12 +++++++++++-
- 1 files changed, 11 insertions(+), 1 deletions(-)
-
-diff --git a/libc/sysdeps/linux/common/bits/socket.h b/libc/sysdeps/linux/common/bits/socket.h
-index ac5a433..11f6e97 100644
---- a/libc/sysdeps/linux/common/bits/socket.h
-+++ b/libc/sysdeps/linux/common/bits/socket.h
-@@ -53,10 +53,20 @@ enum __socket_type
-   SOCK_SEQPACKET = 5,		/* Sequenced, reliable, connection-based,
- 				   datagrams of fixed maximum length.  */
- #define SOCK_SEQPACKET SOCK_SEQPACKET
--  SOCK_PACKET = 10		/* Linux specific way of getting packets
-+  SOCK_PACKET = 10,		/* Linux specific way of getting packets
- 				   at the dev level.  For writing rarp and
- 				   other similar things on the user level. */
- #define SOCK_PACKET SOCK_PACKET
-+
-+  /* Flags to be ORed into the type parameter of socket and socketpair and
-+     used for the flags parameter of paccept.  */
-+
-+  SOCK_CLOEXEC = 02000000,	/* Atomically set close-on-exec flag for the
-+				   new descriptor(s).  */
-+#define SOCK_CLOEXEC SOCK_CLOEXEC
-+  SOCK_NONBLOCK = 04000		/* Atomically mark descriptor(s) as
-+				   non-blocking.  */
-+#define SOCK_NONBLOCK SOCK_NONBLOCK
- };
- 
- /* Protocol families.  */
--- 
-1.7.3.4
-
diff --git a/package/uclibc/0.9.31.1/0004-export-strverscmp.patch b/package/uclibc/0.9.31.1/0004-export-strverscmp.patch
deleted file mode 100644
index 19bc021..0000000
--- a/package/uclibc/0.9.31.1/0004-export-strverscmp.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 139b8f0c673fed465d27f99c98568e5d5e1b9b72 Mon Sep 17 00:00:00 2001
-From: Denys Vlasenko <vda.linux@googlemail.com>
-Date: Fri, 4 Jun 2010 13:36:30 +0200
-Subject: [PATCH] strverscmp: I forgot to export it
-
-Result was:
-
-strverscmp.o:
-000000ec T __GI_strverscmp
-
-i.e. no plain "strverscmp"!
-
-Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
----
- libc/string/strverscmp.c |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/libc/string/strverscmp.c b/libc/string/strverscmp.c
-index 74ae4c6..b19e8f0 100644
---- a/libc/string/strverscmp.c
-+++ b/libc/string/strverscmp.c
-@@ -115,3 +115,4 @@ int strverscmp (const char *s1, const char *s2)
-       return state;
-   }
- }
-+libc_hidden_def(strverscmp)
--- 
-1.7.3.4
-
diff --git a/package/uclibc/0.9.31.1/0005-fix-daylight-saving-time-handling.patch b/package/uclibc/0.9.31.1/0005-fix-daylight-saving-time-handling.patch
deleted file mode 100644
index 5a96113..0000000
--- a/package/uclibc/0.9.31.1/0005-fix-daylight-saving-time-handling.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 47f3da1cf49377c25772bb54d07db55225bbb142 Mon Sep 17 00:00:00 2001
-From: Guillaume Bourcier <guillaumebourcier@free.fr>
-Date: Tue, 11 Oct 2011 13:45:33 +0200
-Subject: [PATCH] libc: fix daylight saving time handling
-
-The algorithm computing daylight saving time incorrectly adds a day for
-each month after January for leap years. The clock shift from/to DST can
-be delayed if the last Sunday of a transition month is exactly seven
-days before the first of the following month.
-
-This change adds a day for the February month only.
-
-Signed-off-by: Guillaume Bourcier <guillaumebourcier@free.fr>
-Signed-off-by: Richard Braun <rbraun@sceen.net>
-Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
----
- libc/misc/time/time.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/libc/misc/time/time.c b/libc/misc/time/time.c
-index 19d68e1..8e2ebf1 100644
---- a/libc/misc/time/time.c
-+++ b/libc/misc/time/time.c
-@@ -689,7 +689,7 @@ static int tm_isdst(register const struct tm *__restrict ptm,
- 					++day;
- 				}
- 				monlen = 31 + day_cor[r->month -1] - day_cor[r->month];
--				if (isleap && (r->month > 1)) {
-+				if (isleap && (r->month == 2)) {
- 					++monlen;
- 				}
- 				/* Wweekday (0 is Sunday) of 1st of the month
--- 
-1.7.3.4
-
diff --git a/package/uclibc/0.9.31.1/0006-fix-error-locale-utf-8.patch b/package/uclibc/0.9.31.1/0006-fix-error-locale-utf-8.patch
deleted file mode 100644
index 1305add..0000000
--- a/package/uclibc/0.9.31.1/0006-fix-error-locale-utf-8.patch
+++ /dev/null
@@ -1,17 +0,0 @@
----
- extra/locale/gen_wc8bit.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: uClibc-0.9.31/extra/locale/gen_wc8bit.c
-===================================================================
---- uClibc-0.9.31.orig/extra/locale/gen_wc8bit.c
-+++ uClibc-0.9.31/extra/locale/gen_wc8bit.c
-@@ -120,7 +120,7 @@
- 		}
- 
-  locale_failure:
--		printf("could not find a UTF8 locale ... please enable en_US.UTF-8\n");
-+		fprintf(stderr, "could not find a UTF8 locale ... please enable en_US.UTF-8\n");
- 		return EXIT_FAILURE;
-  locale_success:
- 		pclose(fp);
diff --git a/package/uclibc/0.9.31.1/0007-linuxthreads-errno-fix.patch b/package/uclibc/0.9.31.1/0007-linuxthreads-errno-fix.patch
deleted file mode 100644
index c49821b..0000000
--- a/package/uclibc/0.9.31.1/0007-linuxthreads-errno-fix.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From af8b2d71ce37b9d4d24ddbc755cdea68de02949a Mon Sep 17 00:00:00 2001
-From: Peter Korsgaard <jacmet@sunsite.dk>
-Date: Mon, 5 Jul 2010 14:08:17 +0200
-Subject: [PATCH] don't make __errno_location / __h_errno_location hidden
-
-Closes #2089 (https://bugs.busybox.net/show_bug.cgi?id=2089)
-
-__errno_location / __h_errno_location access has to go through the PLT
-like malloc/free, so the linuxthread variants gets used instead when
-compiling with -pthread.
-
-Based on http://github.com/mat-c/uClibc/commit/328d392c54aa5dc2b8e7f398a419087de497de2b
-
-Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
----
- include/netdb.h                               |    1 -
- libc/misc/internals/__errno_location.c        |    3 ---
- libc/misc/internals/__h_errno_location.c      |    1 -
- libc/misc/internals/__uClibc_main.c           |    2 --
- libc/sysdeps/linux/common/bits/errno.h        |    1 -
- libc/sysdeps/linux/common/bits/uClibc_errno.h |    3 ---
- 6 files changed, 0 insertions(+), 11 deletions(-)
-
-diff --git a/include/netdb.h b/include/netdb.h
-index 9d3807d..ac411ab 100644
---- a/include/netdb.h
-+++ b/include/netdb.h
-@@ -59,7 +59,6 @@ __BEGIN_DECLS
- 
- /* Function to get address of global `h_errno' variable.  */
- extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
--libc_hidden_proto(__h_errno_location)
- 
- /* Macros for accessing h_errno from inside libc.  */
- #ifdef _LIBC
-diff --git a/libc/misc/internals/__errno_location.c b/libc/misc/internals/__errno_location.c
-index 487a9c2..0620860 100644
---- a/libc/misc/internals/__errno_location.c
-+++ b/libc/misc/internals/__errno_location.c
-@@ -11,6 +11,3 @@ int * weak_const_function __errno_location (void)
- {
-     return &errno;
- }
--#ifdef IS_IN_libc /* not really need, only to keep in sync w/ libc_hidden_proto */
--libc_hidden_weak(__errno_location)
--#endif
-diff --git a/libc/misc/internals/__h_errno_location.c b/libc/misc/internals/__h_errno_location.c
-index 213d398..235df4e 100644
---- a/libc/misc/internals/__h_errno_location.c
-+++ b/libc/misc/internals/__h_errno_location.c
-@@ -10,4 +10,3 @@ int * weak_const_function __h_errno_location (void)
- {
-     return &h_errno;
- }
--libc_hidden_weak(__h_errno_location)
-diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
-index 6e520fa..f4a9ebb 100644
---- a/libc/misc/internals/__uClibc_main.c
-+++ b/libc/misc/internals/__uClibc_main.c
-@@ -64,9 +64,7 @@ void internal_function _dl_aux_init (ElfW(auxv_t) *av);
-  * Prototypes.
-  */
- extern int *weak_const_function __errno_location(void);
--libc_hidden_proto(__errno_location)
- extern int *weak_const_function __h_errno_location(void);
--libc_hidden_proto(__h_errno_location)
- 
- extern void weak_function _stdio_init(void) attribute_hidden;
- #ifdef __UCLIBC_HAS_LOCALE__
-diff --git a/libc/sysdeps/linux/common/bits/errno.h b/libc/sysdeps/linux/common/bits/errno.h
-index 0bf6354..de9688a 100644
---- a/libc/sysdeps/linux/common/bits/errno.h
-+++ b/libc/sysdeps/linux/common/bits/errno.h
-@@ -43,7 +43,6 @@
- # ifndef __ASSEMBLER__
- /* Function to get address of global `errno' variable.  */
- extern int *__errno_location (void) __THROW __attribute__ ((__const__));
--libc_hidden_proto(__errno_location)
- 
- #  ifdef __UCLIBC_HAS_THREADS__
- /* When using threads, errno is a per-thread value.  */
-diff --git a/libc/sysdeps/linux/common/bits/uClibc_errno.h b/libc/sysdeps/linux/common/bits/uClibc_errno.h
-index 9c15618..79eb7e6 100644
---- a/libc/sysdeps/linux/common/bits/uClibc_errno.h
-+++ b/libc/sysdeps/linux/common/bits/uClibc_errno.h
-@@ -33,9 +33,6 @@ extern int *__errno_location (void) __THROW __attribute__ ((__const__))
- ;
- # if defined __UCLIBC_HAS_THREADS__
- #  include <tls.h>
--#  if defined USE___THREAD && USE___THREAD
--libc_hidden_proto(__errno_location)
--#  endif
- # endif
- 
- #endif /* !__ASSEMBLER__ */
--- 
-1.7.1
-
diff --git a/package/uclibc/0.9.31.1/0008-more-workarounds-GCC-PR32219.patch b/package/uclibc/0.9.31.1/0008-more-workarounds-GCC-PR32219.patch
deleted file mode 100644
index 9e69532..0000000
--- a/package/uclibc/0.9.31.1/0008-more-workarounds-GCC-PR32219.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From aa67771881d65373da448ad5f7a8393f3a1d9469 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-Date: Wed, 30 Jun 2010 14:46:37 +0300
-Subject: [PATCH] more workarounds for GCC PR32219
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Commit 2e53dd645d5348f207cec7f8595969dc566c5a55 workarounds GCC
-bug when accessing _locale_init and _stdio_init. We need the same
-fix for __errno_location and __h_errno_location otherwise we crash
-calling null with static and non-threaded builds.
-
-Signed-off-by: Timo Ter?s <timo.teras@iki.fi>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- libc/misc/internals/__uClibc_main.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
-index 3f09ad2..58f6643 100644
---- a/libc/misc/internals/__uClibc_main.c
-+++ b/libc/misc/internals/__uClibc_main.c
-@@ -447,11 +447,11 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
-      * have resulted in errno being set nonzero, so set it to 0 before
-      * we call main.
-      */
--    if (likely(__errno_location!=NULL))
-+    if (likely(not_null_ptr(__errno_location)))
- 	*(__errno_location()) = 0;
- 
-     /* Set h_errno to 0 as well */
--    if (likely(__h_errno_location!=NULL))
-+    if (likely(not_null_ptr(__h_errno_location)))
- 	*(__h_errno_location()) = 0;
- 
- #if defined HAVE_CLEANUP_JMP_BUF && defined __UCLIBC_HAS_THREADS_NATIVE__
--- 
-1.7.1
-
diff --git a/package/uclibc/0.9.31.1/0009-unshare.patch b/package/uclibc/0.9.31.1/0009-unshare.patch
deleted file mode 100644
index ad440d9..0000000
--- a/package/uclibc/0.9.31.1/0009-unshare.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-Backport of unshare() syscall.
-From uClibc git 19dd090a0f68765db87990ef8eda9bf77bb29581
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
----
-diff -Nura uClibc-0.9.31.1.orig/libc/sysdeps/linux/common/bits/sched.h uClibc-0.9.31.1/libc/sysdeps/linux/common/bits/sched.h
---- uClibc-0.9.31.1.orig/libc/sysdeps/linux/common/bits/sched.h	2011-06-08 15:58:40.000000000 -0300
-+++ uClibc-0.9.31.1/libc/sysdeps/linux/common/bits/sched.h	2011-12-05 08:10:02.491978849 -0300
-@@ -58,7 +58,13 @@
- 				      force CLONE_PTRACE on this clone.  */
- # define CLONE_CHILD_SETTID 0x01000000 /* Store TID in userlevel buffer in
- 					  the child.  */
--# define CLONE_STOPPED	0x02000000 /* Start in stopped state.  */
-+# define CLONE_STOPPED 0x02000000 /* Start in stopped state.  */
-+# define CLONE_NEWUTS  0x04000000      /* New utsname group.  */
-+# define CLONE_NEWIPC  0x08000000      /* New ipcs.  */
-+# define CLONE_NEWUSER 0x10000000      /* New user namespace.  */
-+# define CLONE_NEWPID  0x20000000      /* New pid namespace.  */
-+# define CLONE_NEWNET  0x40000000      /* New network namespace.  */
-+# define CLONE_IO      0x80000000      /* Clone I/O context.  */
- #endif
- 
- /* The official definition.  */
-@@ -74,11 +80,9 @@
- extern int clone (int (*__fn) (void *__arg), void *__child_stack,
- 		  int __flags, void *__arg, ...) __THROW;
- 
--#if 0
- /* Unshare the specified resources.  */
- extern int unshare (int __flags) __THROW;
- #endif
--#endif
- 
- __END_DECLS
- 
-diff -Nura uClibc-0.9.31.1.orig/libc/sysdeps/linux/common/Makefile.in uClibc-0.9.31.1/libc/sysdeps/linux/common/Makefile.in
---- uClibc-0.9.31.1.orig/libc/sysdeps/linux/common/Makefile.in	2011-06-08 15:58:40.000000000 -0300
-+++ uClibc-0.9.31.1/libc/sysdeps/linux/common/Makefile.in	2011-12-05 08:23:28.353757602 -0300
-@@ -31,7 +31,8 @@
- 	remap_file_pages.c sched_getaffinity.c sched_setaffinity.c \
- 	sendfile64.c sendfile.c setfsgid.c setfsuid.c setresuid.c \
- 	splice.c vmsplice.c tee.c signalfd.c swapoff.c swapon.c \
--	sync_file_range.c sysctl.c sysinfo.c timerfd.c uselib.c vhangup.c,$(CSRC))
-+	sync_file_range.c sysctl.c sysinfo.c timerfd.c unshare.c uselib.c \
-+	vhangup.c,$(CSRC))
- endif
- 
- ifneq ($(UCLIBC_BSD_SPECIFIC),y)
-diff -Nura uClibc-0.9.31.1.orig/libc/sysdeps/linux/common/unshare.c uClibc-0.9.31.1/libc/sysdeps/linux/common/unshare.c
---- uClibc-0.9.31.1.orig/libc/sysdeps/linux/common/unshare.c	1969-12-31 21:00:00.000000000 -0300
-+++ uClibc-0.9.31.1/libc/sysdeps/linux/common/unshare.c	2011-12-05 08:22:45.954453512 -0300
-@@ -0,0 +1,21 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * unshare() for uClibc
-+ *
-+ * Copyright (C) 2011 Henning Heinold <heinold@inf.fu-berlin.de>
-+ *
-+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-+ */
-+
-+#include <sys/syscall.h>
-+#include <sched.h>
-+
-+#if defined __NR_unshare && defined __UCLIBC_LINUX_SPECIFIC__
-+_syscall1(int, unshare, int, flags)
-+#else
-+int unshare(int flags) 
-+{   
-+    __set_errno(ENOSYS);
-+    return -1;
-+}
-+#endif
diff --git a/package/uclibc/0.9.31.1/0010-workaround-GCC-PR32219.patch b/package/uclibc/0.9.31.1/0010-workaround-GCC-PR32219.patch
deleted file mode 100644
index 242a526..0000000
--- a/package/uclibc/0.9.31.1/0010-workaround-GCC-PR32219.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 2e53dd645d5348f207cec7f8595969dc566c5a55 Mon Sep 17 00:00:00 2001
-From: Denys Vlasenko <vda.linux@googlemail.com>
-Date: Mon, 17 May 2010 15:56:19 +0200
-Subject: [PATCH] workaround GCC PR32219
-
-we ended up calling 0
-Fixes bug #1033
-
-Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- libc/misc/internals/__uClibc_main.c |   15 +++++++++++++--
- 1 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
-index f9e1244..4ee4443 100644
---- a/libc/misc/internals/__uClibc_main.c
-+++ b/libc/misc/internals/__uClibc_main.c
-@@ -105,6 +105,17 @@ _pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer *__buffer,
- 
- #endif /* !SHARED */
- 
-+/* Defeat compiler optimization which assumes function addresses are never NULL */
-+static __always_inline int not_null_ptr(const void *p)
-+{
-+	const void *q;
-+	__asm__ (""
-+		: "=r" (q) /* output */
-+		: "0" (p) /* input */
-+	);
-+	return q != 0;
-+}
-+
- /*
-  * Prototypes.
-  */
-@@ -254,7 +265,7 @@ void __uClibc_init(void)
- 
- #ifdef __UCLIBC_HAS_LOCALE__
-     /* Initialize the global locale structure. */
--    if (likely(_locale_init!=NULL))
-+    if (likely(not_null_ptr(_locale_init)))
- 	_locale_init();
- #endif
- 
-@@ -264,7 +275,7 @@ void __uClibc_init(void)
-      * Thus we get a nice size savings because the stdio functions
-      * won't be pulled into the final static binary unless used.
-      */
--    if (likely(_stdio_init != NULL))
-+    if (likely(not_null_ptr(_stdio_init)))
- 	_stdio_init();
- 
- }
--- 
-1.7.1
-
diff --git a/package/uclibc/0.9.31.1/0011-startfiles-Make-targets.patch b/package/uclibc/0.9.31.1/0011-startfiles-Make-targets.patch
deleted file mode 100644
index 9a7f304..0000000
--- a/package/uclibc/0.9.31.1/0011-startfiles-Make-targets.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Add startfiles and install_startfiles targets to the top-level Makefile, as
-in uClibc 0.9.32 and later.
-
-Signed-off-by: Simon Dawson <spdawson@gmail.com>
-
-diff -Nurp a/Makefile.help b/Makefile.help
---- a/Makefile.help	2011-06-08 19:58:40.000000000 +0100
-+++ b/Makefile.help	2013-08-10 21:17:46.572104259 +0100
-@@ -14,6 +14,7 @@ help:
- 	@echo 'Build:'
- 	@echo '  all			- libraries and generated headers'
- 	@echo '  pregen		- generate headers'
-+	@echo '  startfiles		- build startfiles (crt)'
- 	@echo '  utils			- build target utilities'
- 	@echo '			  (ldd, ldconfig, locale, iconv)'
- 	@echo '  hostutils		- build host utilities (see utils)'
-@@ -32,6 +33,7 @@ help:
- 	@echo '  install		- install both the runtime and the headers'
- 	@echo '  install_runtime	- install the libraries'
- 	@echo '  install_dev		- install all headers and static libs'
-+	@echo '  install_startfiles	- install startfiles (crt)'
- 	@echo '  install_headers	- install headers excluding generated ones'
- 	@echo '  install_utils		- install target utilities'
- 	@echo '  install_hostutils	- install host utilities'
-diff -Nurp a/Makefile.in b/Makefile.in
---- a/Makefile.in	2011-06-08 19:58:40.000000000 +0100
-+++ b/Makefile.in	2013-08-10 21:10:55.248649101 +0100
-@@ -193,6 +193,8 @@ install: install_runtime install_dev
- 
- RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB=$(shell $(top_srcdir)extra/scripts/relative_path.sh $(DEVEL_PREFIX)$(MULTILIB_DIR) $(RUNTIME_PREFIX)$(MULTILIB_DIR))
- 
-+startfiles: $(crt-y)
-+
- $(top_builddir)extra/scripts/unifdef: |$(top_builddir)extra/scripts
- $(top_builddir)extra/scripts/unifdef: $(top_srcdir)extra/scripts/unifdef.c
- 	$(hcompile.u)
-@@ -301,6 +303,10 @@ else
- 	cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -f wchar-stub.h
- endif
- 
-+# Installs startfiles
-+install_startfiles: startfiles | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)
-+	-$(INSTALL) -m 644 $(startfiles) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
-+
- # Installs development library links.
- install_dev: install_headers install_runtime | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)
- 	-$(INSTALL) -m 644 $(top_builddir)lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
-diff -Nurp a/Makerules b/Makerules
---- a/Makerules	2011-06-08 19:58:40.000000000 +0100
-+++ b/Makerules	2013-08-10 21:24:21.287583111 +0100
-@@ -406,7 +406,8 @@ endif
- CRTS_COMPAT :=
- #endif
- 
--$(crt-y): $(CRTS) $(CTOR_TARGETS) $(CRTS_COMPAT) $(CRTRELOC)
-+startfiles = $(CRTS) $(CTOR_TARGETS) $(CRTS_COMPAT) $(CRTRELOC)
-+$(crt-y): $(startfiles)
- $(CRTS) $(CTOR_TARGETS) $(CRTS_COMPAT) $(CRTRELOC): | headers
- 
- $(top_builddir)lib/$(NONSHARED_LIBNAME): $(libc-nonshared-y)
diff --git a/package/uclibc/0.9.31.1/0012-netlinkaccess-header-types.patch b/package/uclibc/0.9.31.1/0012-netlinkaccess-header-types.patch
deleted file mode 100644
index bc981a4..0000000
--- a/package/uclibc/0.9.31.1/0012-netlinkaccess-header-types.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Using kernel headers newer than 3.6.x, uclibc 0.9.31.1 fails to build:
-
-  In file included from output/host/usr/avr32-buildroot-linux-uclibc/sysroot/usr/include/linux/rtnetlink.h:6,
-                 from libc/inet/netlinkaccess.h:34,
-                 from libc/inet/if_index.c:36:
-  output/host/usr/avr32-buildroot-linux-uclibc/sysroot/usr/include/linux/if_link.h:314: error: expected specifier-qualifier-list before '__be16'
-  make[1]: *** [libc/inet/if_index.os] Error 1
-  make[1]: Leaving directory `output/build/uclibc-0.9.31.1'
-  make: *** [output/build/uclibc-0.9.31.1/.stamp_built] Error 2
-
-This patch adjusts the system type definitions in the netlinkaccess.h
-header, updating the types to match those used in uClibc 0.9.33.2.
-
-Signed-off-by: Simon Dawson <spdawson@gmail.com>
-
-diff -Nurp a/libc/inet/netlinkaccess.h b/libc/inet/netlinkaccess.h
---- a/libc/inet/netlinkaccess.h	2011-06-08 19:58:40.000000000 +0100
-+++ b/libc/inet/netlinkaccess.h	2012-12-20 12:16:34.251965672 +0000
-@@ -22,15 +22,8 @@
- #include <features.h>
- #include <stdint.h>
- #include <unistd.h>
--#include <sys/types.h>
--
- #if defined __ASSUME_NETLINK_SUPPORT || defined __UCLIBC_USE_NETLINK__
--#define _LINUX_TYPES_H
--typedef uint8_t __u8;
--typedef uint16_t __u16;
--typedef uint32_t __u32;
--typedef uint64_t __u64;
--typedef int32_t __s32;
-+#include <asm/types.h>
- #include <linux/rtnetlink.h>
- #include <linux/netlink.h>
- 
diff --git a/package/uclibc/0.9.31.1/0013-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch b/package/uclibc/0.9.31.1/0013-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch
deleted file mode 100644
index 55cb0c5..0000000
--- a/package/uclibc/0.9.31.1/0013-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-libc/sysdeps: add __kernel_long and __kernel_ulong
-
-Linux 3.4 added __kernel_long_t and __kernel_ulong_t and various
-exported header files were updated to use these new types. Add the
-definitions for __kernel_long_t and __kernel_ulong_t to the relevant
-kernel_types.h headers.
-
-Signed-off-by: Simon Dawson <spdawson@gmail.com>
-
-diff -Nurp a/libc/sysdeps/linux/avr32/bits/kernel_types.h b/libc/sysdeps/linux/avr32/bits/kernel_types.h
---- a/libc/sysdeps/linux/avr32/bits/kernel_types.h	2011-06-08 19:58:40.000000000 +0100
-+++ b/libc/sysdeps/linux/avr32/bits/kernel_types.h	2013-11-15 08:01:09.209037851 +0000
-@@ -39,6 +39,8 @@ typedef unsigned int		__kernel_gid32_t;
- typedef unsigned short		__kernel_old_uid_t;
- typedef unsigned short		__kernel_old_gid_t;
- typedef unsigned short		__kernel_old_dev_t;
-+typedef long			__kernel_long_t;
-+typedef unsigned long		__kernel_ulong_t;
- 
- #ifdef __GNUC__
- typedef long long		__kernel_loff_t;
diff --git a/package/uclibc/0.9.31.1/0014-Do-not-include-__iconv_codesets-into-iconv-utility.patch b/package/uclibc/0.9.31.1/0014-Do-not-include-__iconv_codesets-into-iconv-utility.patch
deleted file mode 100644
index 4b6a701..0000000
--- a/package/uclibc/0.9.31.1/0014-Do-not-include-__iconv_codesets-into-iconv-utility.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-uclibc: Do not include __iconv_codesets into iconv utility
-
-Backporting an upstream patch to fix a problem in the install step:
-
-make[1]: Entering directory `/br/output/build/uclibc-0.9.31.1'
-make[2]: Nothing to be done for `locale_headers'.
-	CC utils/getconf
-	STRIP -x -R .note -R .comment ../utils/getconf
-	CC utils/iconv
-../lib/libc.a(iconv.os):(.rodata+0x18): multiple definition of
-`__iconv_codesets'
-/tmp/ccVmV8Lq.o:(.rodata+0x18): first defined here
-collect2: error: ld returned 1 exit status
-
-Upstream commit:
-	http://git.uclibc.org/uClibc/commit/?id=d46dc8bc88e38251bfa3712efe7abf62933f5419
-
-Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
-
-From d46dc8bc88e38251bfa3712efe7abf62933f5419 Mon Sep 17 00:00:00 2001
-From: Peter S. Mazinger <ps.m@gmx.net>
-Date: Thu, 24 Mar 2011 00:15:25 +0000
-Subject: iconv: Do not include __iconv_codesets into iconv utility
-
-Host iconv needs only L_iconv_main defined and __iconv_codesets
-has to included, as host system does not provide it.
-Keep __iconv_codesets out of iconv linked against uClibc.
-
-Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
-diff --git a/libc/misc/wchar/wchar.c b/libc/misc/wchar/wchar.c
-index 412c557..0704096 100644
---- a/libc/misc/wchar/wchar.c
-+++ b/libc/misc/wchar/wchar.c
-@@ -1196,6 +1196,9 @@ libc_hidden_proto(__iconv_codesets)
- #endif
- 
- #if defined L_iconv || defined L_iconv_main
-+# ifdef L_iconv_main
-+static
-+# endif
- const unsigned char __iconv_codesets[] =
- 	"\x0a\xe0""WCHAR_T\x00"		/* superset of UCS-4 but platform-endian */
- #if __BYTE_ORDER == __BIG_ENDIAN
-diff --git a/utils/Makefile.in b/utils/Makefile.in
-index bb85be3..1714d28 100644
---- a/utils/Makefile.in
-+++ b/utils/Makefile.in
-@@ -36,8 +36,7 @@ CFLAGS-ldd := $(CFLAGS-utils-shared) -DBUILDING_LINKAGE
- # Need CFLAGS-utils explicitly, because the source file is not located in utils
- CFLAGS-iconv := $(CFLAGS-utils) \
-     $(CFLAGS-utils-shared) \
--    -I$(top_srcdir)libc/misc/wchar \
--    -DL_iconv_main \
-+    -I$(top_srcdir)libc/misc/wchar
- 
- CFLAGS-locale := $(CFLAGS-utils)
- CFLAGS-getconf :=$(CFLAGS-utils) \
-diff --git a/utils/iconv.c b/utils/iconv.c
-index 04e2c32..a0260df 100644
---- a/utils/iconv.c
-+++ b/utils/iconv.c
-@@ -108,7 +108,12 @@
- #include <wchar.h>
- #include "wchar.c" /* for _UC_iconv_t and __iconv_codesets */
- 
--extern const unsigned char __iconv_codesets[];
-+#ifdef L_iconv_main
-+static
-+#else
-+extern
-+#endif
-+const unsigned char __iconv_codesets[];
- 
- #define IBUF BUFSIZ
- #define OBUF BUFSIZ
---
-cgit v0.9.1
diff --git a/package/uclibc/0.9.33.2/0004-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch b/package/uclibc/0.9.33.2/0004-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch
index 0381ba8..edd68f1 100644
--- a/package/uclibc/0.9.33.2/0004-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch
+++ b/package/uclibc/0.9.33.2/0004-libc-sysdeps-add-__kernel_long-and-__kernel_ulong.patch
@@ -15,9 +15,12 @@ This change was automated with the following scriptlet
   typedef long\t\t__kernel_long_t;\
   typedef unsigned long\t__kernel_ulong_t;'
 
-Whitespace in arm, avr32, hppa, sparc was then manually fixed up.
+Whitespace in arm, hppa, sparc was then manually fixed up.
 
 Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+[yann.morin.1998 at free.fr: remove avr32 bits, now Buildroot no longer
+ supports it]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 --
 Here's a cleaned up patch which should get the whitespace right. I'm a
 bit iffy about the sparc changes they make sense to me but it's not a
@@ -27,7 +30,6 @@ I can break this up per arch or per maintainer if requested.
 
  libc/sysdeps/linux/alpha/bits/kernel_types.h      |    2 ++
  libc/sysdeps/linux/arm/bits/kernel_types.h        |    2 ++
- libc/sysdeps/linux/avr32/bits/kernel_types.h      |    2 ++
  libc/sysdeps/linux/bfin/bits/kernel_types.h       |    2 ++
  libc/sysdeps/linux/c6x/bits/kernel_types.h        |    2 ++
  libc/sysdeps/linux/cris/bits/kernel_types.h       |    2 ++
@@ -54,7 +56,6 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 ---
  libc/sysdeps/linux/alpha/bits/kernel_types.h      | 2 ++
  libc/sysdeps/linux/arm/bits/kernel_types.h        | 2 ++
- libc/sysdeps/linux/avr32/bits/kernel_types.h      | 2 ++
  libc/sysdeps/linux/bfin/bits/kernel_types.h       | 2 ++
  libc/sysdeps/linux/c6x/bits/kernel_types.h        | 2 ++
  libc/sysdeps/linux/cris/bits/kernel_types.h       | 2 ++
@@ -102,19 +103,6 @@ index 766a306..6b36f32 100644
  
  typedef struct {
  #ifdef __USE_ALL
-diff --git a/libc/sysdeps/linux/avr32/bits/kernel_types.h b/libc/sysdeps/linux/avr32/bits/kernel_types.h
-index f7d8b52..c551d57 100644
---- a/libc/sysdeps/linux/avr32/bits/kernel_types.h
-+++ b/libc/sysdeps/linux/avr32/bits/kernel_types.h
-@@ -39,6 +39,8 @@ typedef unsigned int		__kernel_gid32_t;
- typedef unsigned short		__kernel_old_uid_t;
- typedef unsigned short		__kernel_old_gid_t;
- typedef unsigned short		__kernel_old_dev_t;
-+typedef long			__kernel_long_t;
-+typedef unsigned long		__kernel_ulong_t;
- 
- #ifdef __GNUC__
- typedef long long		__kernel_loff_t;
 diff --git a/libc/sysdeps/linux/bfin/bits/kernel_types.h b/libc/sysdeps/linux/bfin/bits/kernel_types.h
 index d69a875..9fec595 100644
 --- a/libc/sysdeps/linux/bfin/bits/kernel_types.h
diff --git a/package/uclibc/0.9.33.2/0005-Patch-from-OpenWRT-for-avr32.patch b/package/uclibc/0.9.33.2/0005-Patch-from-OpenWRT-for-avr32.patch
deleted file mode 100644
index 9b6be2b..0000000
--- a/package/uclibc/0.9.33.2/0005-Patch-from-OpenWRT-for-avr32.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From b0bbb35065e1c8fdd308573f38eed35c30760d87 Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Sat, 13 Jul 2013 17:14:49 +0200
-Subject: [PATCH 5/8] Patch from OpenWRT for avr32.
-
-https://dev.openwrt.org/browser/trunk/toolchain/uClibc/patches-0.9.32/140-avr32_atomic_fix.patch
-
-Signed-off-by: Simon Dawson <spdawson@gmail.com>
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
- libc/sysdeps/linux/avr32/bits/atomic.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libc/sysdeps/linux/avr32/bits/atomic.h b/libc/sysdeps/linux/avr32/bits/atomic.h
-index e6be41f..3bc2aee 100644
---- a/libc/sysdeps/linux/avr32/bits/atomic.h
-+++ b/libc/sysdeps/linux/avr32/bits/atomic.h
-@@ -28,6 +28,7 @@ typedef uintmax_t uatomic_max_t;
- 
- #define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval)	\
- 	({								\
-+		__uint32_t __result;					\
- 		__typeof__(*(mem)) __prev;				\
- 		__asm__ __volatile__(					\
- 			"/* __arch_compare_and_exchange_val_32_acq */\n" \
--- 
-1.8.1.2
-
diff --git a/package/uclibc/Config.in b/package/uclibc/Config.in
index 020c47c..aa99a6f 100644
--- a/package/uclibc/Config.in
+++ b/package/uclibc/Config.in
@@ -13,13 +13,9 @@ choice
 	help
 	  Select the version of uClibc you wish to use.
 
-	config BR2_UCLIBC_VERSION_0_9_31
-		bool "uClibc 0.9.31.x"
-		depends on BR2_avr32
-
 	config BR2_UCLIBC_VERSION_0_9_33
 		bool "uClibc 0.9.33.x"
-		depends on !(BR2_arc || BR2_avr32 || BR2_xtensa)
+		depends on !(BR2_arc || BR2_xtensa)
 
 	config BR2_UCLIBC_VERSION_XTENSA_GIT
 		bool "uClibc Git Xtensa"
@@ -40,7 +36,6 @@ config BR2_USE_UCLIBC_SNAPSHOT
 
 config BR2_UCLIBC_VERSION_STRING
 	string
-	default 0.9.31.1	if BR2_UCLIBC_VERSION_0_9_31
 	default 0.9.33.2	if BR2_UCLIBC_VERSION_0_9_33
 	default "arc-2014.12" if BR2_arc
 	default "7bf35c8b7d4a1f97174eb49f47f33946b282114c" if BR2_UCLIBC_VERSION_XTENSA_GIT
@@ -48,7 +43,6 @@ config BR2_UCLIBC_VERSION_STRING
 
 config BR2_UCLIBC_CONFIG
 	string "uClibc configuration file to use?"
-	default "package/uclibc/uClibc-0.9.31.config" if BR2_UCLIBC_VERSION_0_9_31
 	default "package/uclibc/uClibc-0.9.33.config" if BR2_UCLIBC_VERSION_0_9_33
 	default "package/uclibc/uClibc-snapshot.config" if BR2_arc
 	default "package/uclibc/uClibc-snapshot.config" if BR2_UCLIBC_VERSION_SNAPSHOT
@@ -98,7 +92,7 @@ config BR2_TOOLCHAIN_BUILDROOT_LOCALE
 
 choice
 	prompt "Thread library implementation"
-	default BR2_PTHREADS_NATIVE if !(BR2_avr32 || BR2_xtensa)
+	default BR2_PTHREADS_NATIVE if !BR2_xtensa
 	default BR2_PTHREADS_OLD
 	help
 	  Use this option to select the thread library implementation
@@ -125,7 +119,6 @@ choice
 		select BR2_TOOLCHAIN_HAS_THREADS
 		select BR2_TOOLCHAIN_HAS_THREADS_NPTL
 		depends on !BR2_arc
-		depends on !BR2_avr32
 		depends on !BR2_bfin
 		depends on !BR2_xtensa
 		depends on !BR2_x86_i386
@@ -183,7 +176,6 @@ config BR2_UCLIBC_TARGET_ARCH
 	string
 	default arc	   if BR2_arcle || BR2_arceb
 	default arm	   if BR2_arm	|| BR2_armeb
-	default avr32	   if BR2_avr32
 	default bfin	   if BR2_bfin
 	default m68k	   if BR2_m68k
 	default mips	   if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
diff --git a/package/uclibc/uClibc-0.9.31.config b/package/uclibc/uClibc-0.9.31.config
deleted file mode 100644
index 83df7d0..0000000
--- a/package/uclibc/uClibc-0.9.31.config
+++ /dev/null
@@ -1,258 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Version: 0.9.31
-# Sun Apr  4 10:43:39 2010
-#
-# TARGET_alpha is not set
-# TARGET_arm is not set
-# TARGET_avr32 is not set
-# TARGET_bfin is not set
-# TARGET_cris is not set
-# TARGET_e1 is not set
-# TARGET_frv is not set
-# TARGET_h8300 is not set
-# TARGET_hppa is not set
-# TARGET_i386 is not set
-# TARGET_i960 is not set
-# TARGET_ia64 is not set
-# TARGET_m68k is not set
-# TARGET_microblaze is not set
-# TARGET_mips is not set
-# TARGET_nios is not set
-# TARGET_nios2 is not set
-# TARGET_powerpc is not set
-# TARGET_sh is not set
-# TARGET_sh64 is not set
-# TARGET_sparc is not set
-# TARGET_v850 is not set
-# TARGET_vax is not set
-# TARGET_x86_64 is not set
-# TARGET_xtensa is not set
-
-#
-# Target Architecture Features and Options
-#
-TARGET_ARCH="none"
-FORCE_OPTIONS_FOR_ARCH=y
-# ARCH_LITTLE_ENDIAN is not set
-# ARCH_BIG_ENDIAN is not set
-# ARCH_WANTS_LITTLE_ENDIAN is not set
-# ARCH_WANTS_BIG_ENDIAN is not set
-TARGET_SUBARCH=""
-
-#
-# Using Little Endian
-#
-ARCH_HAS_MMU=y
-ARCH_USE_MMU=y
-UCLIBC_HAS_FLOATS=y
-UCLIBC_HAS_FPU=y
-DO_C99_MATH=y
-# DO_XSI_MATH is not set
-# UCLIBC_HAS_FENV is not set
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
-KERNEL_HEADERS="/usr/src/linux/include"
-HAVE_DOT_CONFIG=y
-
-#
-# General Library Settings
-#
-# HAVE_NO_PIC is not set
-DOPIC=y
-# ARCH_HAS_NO_SHARED is not set
-# ARCH_HAS_NO_LDSO is not set
-# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
-LDSO_LDD_SUPPORT=y
-# LDSO_CACHE_SUPPORT is not set
-# LDSO_PRELOAD_FILE_SUPPORT is not set
-# UCLIBC_STATIC_LDCONFIG is not set
-LDSO_RUNPATH=y
-LDSO_SEARCH_INTERP_PATH=y
-UCLIBC_CTOR_DTOR=y
-# LDSO_GNU_HASH_SUPPORT is not set
-# HAS_NO_THREADS is not set
-LINUXTHREADS_OLD=y
-# LINUXTHREADS_NEW is not set
-UCLIBC_HAS_THREADS=y
-# PTHREADS_DEBUG_SUPPORT is not set
-UCLIBC_HAS_SYSLOG=y
-UCLIBC_HAS_LFS=y
-# MALLOC is not set
-# MALLOC_SIMPLE is not set
-MALLOC_STANDARD=y
-MALLOC_GLIBC_COMPAT=y
-UCLIBC_DYNAMIC_ATEXIT=y
-# COMPAT_ATEXIT is not set
-UCLIBC_SUSV3_LEGACY=y
-# UCLIBC_SUSV3_LEGACY_MACROS is not set
-UCLIBC_SUSV4_LEGACY=y
-# UCLIBC_HAS_STUBS is not set
-UCLIBC_HAS_SHADOW=y
-UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
-UCLIBC_HAS___PROGNAME=y
-UCLIBC_HAS_PTY=y
-ASSUME_DEVPTS=y
-UNIX98PTY_ONLY=y
-UCLIBC_HAS_GETPT=y
-UCLIBC_HAS_LIBUTIL=y
-UCLIBC_HAS_TM_EXTENSIONS=y
-UCLIBC_HAS_TZ_CACHING=y
-UCLIBC_HAS_TZ_FILE=y
-UCLIBC_HAS_TZ_FILE_READ_MANY=y
-UCLIBC_TZ_FILE_PATH="/etc/TZ"
-
-#
-# Advanced Library Settings
-#
-UCLIBC_PWD_BUFFER_SIZE=256
-UCLIBC_GRP_BUFFER_SIZE=256
-
-#
-# Support various families of functions
-#
-UCLIBC_LINUX_MODULE_24=y
-UCLIBC_LINUX_SPECIFIC=y
-UCLIBC_HAS_GNU_ERROR=y
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_HAS_BSD_ERR=y
-# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set
-# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
-# UCLIBC_NTP_LEGACY is not set
-UCLIBC_SV4_DEPRECATED=y
-UCLIBC_HAS_REALTIME=y
-UCLIBC_HAS_ADVANCED_REALTIME=y
-UCLIBC_HAS_EPOLL=y
-UCLIBC_HAS_XATTR=y
-UCLIBC_HAS_PROFILING=y
-UCLIBC_HAS_CRYPT_IMPL=y
-UCLIBC_HAS_CRYPT=y
-UCLIBC_HAS_NETWORK_SUPPORT=y
-UCLIBC_HAS_SOCKET=y
-UCLIBC_HAS_IPV4=y
-# UCLIBC_HAS_IPV6 is not set
-# UCLIBC_HAS_RPC is not set
-# UCLIBC_HAS_FULL_RPC is not set
-# UCLIBC_HAS_REENTRANT_RPC is not set
-UCLIBC_USE_NETLINK=y
-UCLIBC_SUPPORT_AI_ADDRCONFIG=y
-# UCLIBC_HAS_BSD_RES_CLOSE is not set
-UCLIBC_HAS_COMPAT_RES_STATE=y
-# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
-UCLIBC_HAS_LIBRESOLV_STUB=y
-UCLIBC_HAS_LIBNSL_STUB=y
-
-#
-# String and Stdio Support
-#
-UCLIBC_HAS_STRING_GENERIC_OPT=y
-UCLIBC_HAS_STRING_ARCH_OPT=y
-UCLIBC_HAS_CTYPE_TABLES=y
-UCLIBC_HAS_CTYPE_SIGNED=y
-# UCLIBC_HAS_CTYPE_UNSAFE is not set
-UCLIBC_HAS_CTYPE_CHECKED=y
-# UCLIBC_HAS_CTYPE_ENFORCED is not set
-# UCLIBC_HAS_WCHAR is not set
-# UCLIBC_HAS_LOCALE is not set
-UCLIBC_HAS_HEXADECIMAL_FLOATS=y
-UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
-# USE_OLD_VFPRINTF is not set
-UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
-UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
-# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
-UCLIBC_HAS_STDIO_BUFSIZ_4096=y
-# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
-UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
-# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
-# UCLIBC_HAS_STDIO_GETC_MACRO is not set
-# UCLIBC_HAS_STDIO_PUTC_MACRO is not set
-UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
-# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
-UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
-UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
-UCLIBC_HAS_PRINTF_M_SPEC=y
-UCLIBC_HAS_ERRNO_MESSAGES=y
-# UCLIBC_HAS_SYS_ERRLIST is not set
-UCLIBC_HAS_SIGNUM_MESSAGES=y
-# UCLIBC_HAS_SYS_SIGLIST is not set
-UCLIBC_HAS_GNU_GETOPT=y
-# UCLIBC_HAS_GNU_GETSUBOPT is not set
-
-#
-# Big and Tall
-#
-UCLIBC_HAS_REGEX=y
-# UCLIBC_HAS_REGEX_OLD is not set
-UCLIBC_HAS_FNMATCH=y
-# UCLIBC_HAS_FNMATCH_OLD is not set
-# UCLIBC_HAS_WORDEXP is not set
-UCLIBC_HAS_NFTW=y
-UCLIBC_HAS_FTW=y
-UCLIBC_HAS_GLOB=y
-UCLIBC_HAS_GNU_GLOB=y
-
-#
-# Library Installation Options
-#
-RUNTIME_PREFIX="/"
-DEVEL_PREFIX="/usr/"
-MULTILIB_DIR="lib"
-HARDWIRED_ABSPATH=y
-
-#
-# Security options
-#
-# UCLIBC_BUILD_PIE is not set
-# UCLIBC_HAS_ARC4RANDOM is not set
-# HAVE_NO_SSP is not set
-UCLIBC_HAS_SSP=y
-# UCLIBC_HAS_SSP_COMPAT is not set
-# SSP_QUICK_CANARY is not set
-PROPOLICE_BLOCK_ABRT=y
-# PROPOLICE_BLOCK_SEGV is not set
-# UCLIBC_BUILD_SSP is not set
-UCLIBC_BUILD_RELRO=y
-UCLIBC_BUILD_NOW=y
-UCLIBC_BUILD_NOEXECSTACK=y
-
-#
-# uClibc development/debugging options
-#
-CROSS_COMPILER_PREFIX=""
-UCLIBC_EXTRA_CFLAGS=""
-# DODEBUG is not set
-# DODEBUG_PT is not set
-# DOSTRIP is not set
-# DOASSERTS is not set
-# SUPPORT_LD_DEBUG is not set
-# SUPPORT_LD_DEBUG_EARLY is not set
-# UCLIBC_MALLOC_DEBUGGING is not set
-WARNINGS="-Wall"
-# EXTRA_WARNINGS is not set
-# DOMULTI is not set
-# UCLIBC_MJN3_ONLY is not set
-
-USE_BX=y
-# CONFIG_GENERIC_ARM is not set
-# CONFIG_ARM610 is not set
-# CONFIG_ARM710 is not set
-# CONFIG_ARM7TDMI is not set
-# CONFIG_ARM720T is not set
-# CONFIG_ARM920T is not set
-# CONFIG_ARM922T is not set
-# CONFIG_ARM926T is not set
-# CONFIG_ARM10T is not set
-# CONFIG_ARM1136JF_S is not set
-# CONFIG_ARM1176JZ_S is not set
-# CONFIG_ARM1176JZF_S is not set
-# CONFIG_ARM_CORTEX_M3 is not set
-# CONFIG_ARM_CORTEX_M1 is not set
-# CONFIG_ARM_SA110 is not set
-# CONFIG_ARM_SA1100 is not set
-# CONFIG_ARM_XSCALE is not set
-# CONFIG_ARM_IWMMXT is not set
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index 8654926..40e6c6c 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -193,16 +193,6 @@ endif
 endif # bfin
 
 #
-# AVR32 definitions
-#
-
-ifeq ($(UCLIBC_TARGET_ARCH),avr32)
-define UCLIBC_AVR32_CONFIG
-	$(call KCONFIG_ENABLE_OPT,LINKRELAX,$(@D)/.config)
-endef
-endif # avr32
-
-#
 # x86 definitions
 #
 ifeq ($(UCLIBC_TARGET_ARCH),i386)
@@ -432,7 +422,6 @@ define UCLIBC_KCONFIG_FIXUP_CMDS
 	$(UCLIBC_SH_TYPE_CONFIG)
 	$(UCLIBC_SPARC_TYPE_CONFIG)
 	$(UCLIBC_POWERPC_TYPE_CONFIG)
-	$(UCLIBC_AVR32_CONFIG)
 	$(UCLIBC_BFIN_CONFIG)
 	$(UCLIBC_X86_TYPE_CONFIG)
 	$(UCLIBC_ENDIAN_CONFIG)
@@ -459,21 +448,9 @@ define UCLIBC_BUILD_TEST_SUITE
 endef
 endif
 
-# In uClibc 0.9.31 parallel building is broken so we have to disable it
-# Fortunately uClibc 0.9.31 is only used by AVR32 and in its turn AVR32 is
-# about to be removed from buildroot.
-#
-# So as soon as AVR32 is removed please revert this patch so instead of
-# UCLIBC_MAKE normal "MAKE" is used in UCLIBC_BUILD_CMDS
-ifeq ($(BR2_UCLIBC_VERSION_0_9_31),y)
-	UCLIBC_MAKE = $(MAKE1)
-else
-	UCLIBC_MAKE = $(MAKE)
-endif
-
 define UCLIBC_BUILD_CMDS
-	$(UCLIBC_MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) headers
-	$(UCLIBC_MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS)
+	$(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) headers
+	$(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS)
 	$(MAKE) -C $(@D)/utils \
 		PREFIX=$(HOST_DIR) \
 		HOSTCC="$(HOSTCC)" hostutils
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 11/12] package/eudev: we won't miss you, avr32
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (9 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 10/12] package/uClibc: RIP, avr32 Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  2015-02-13 22:34 ` [Buildroot] [PATCH 12/12] arch/avr32: decommission for real Yann E. MORIN
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/eudev/Config.in | 3 ---
 system/Config.in        | 2 --
 2 files changed, 5 deletions(-)

diff --git a/package/eudev/Config.in b/package/eudev/Config.in
index 7916fd0..7934cd7 100644
--- a/package/eudev/Config.in
+++ b/package/eudev/Config.in
@@ -1,6 +1,5 @@
 config BR2_PACKAGE_EUDEV
 	bool "eudev"
-	depends on !BR2_avr32 # no epoll_create1
 	depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV
 	depends on BR2_USE_MMU # uses fork()
 	depends on BR2_LARGEFILE # util-linux
@@ -32,11 +31,9 @@ config BR2_PACKAGE_EUDEV_RULES_GEN
 endif
 
 comment "eudev needs eudev /dev management"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV
 
 comment "eudev needs a toolchain w/ largefile, wchar, dynamic library"
-	depends on !BR2_avr32
 	depends on BR2_USE_MMU
 	depends on !BR2_LARGEFILE || !BR2_USE_WCHAR || BR2_STATIC_LIBS
diff --git a/system/Config.in b/system/Config.in
index 95e10ab..fb8b686 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -124,7 +124,6 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV
 
 config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV
 	bool "Dynamic using eudev"
-	depends on !BR2_avr32 # eudev
 	depends on BR2_LARGEFILE
 	depends on BR2_USE_WCHAR
 	depends on !BR2_STATIC_LIBS
@@ -133,7 +132,6 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV
 	select BR2_PACKAGE_EUDEV
 
 comment "eudev needs a toolchain w/ largefile, wchar, dynamic library, headers >= 3.9"
-	depends on !BR2_avr32 # eudev
 	depends on BR2_USE_MMU
 	depends on !BR2_LARGEFILE || !BR2_USE_WCHAR || BR2_STATIC_LIBS \
 		|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 12/12] arch/avr32: decommission for real
  2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
                   ` (10 preceding siblings ...)
  2015-02-13 22:34 ` [Buildroot] [PATCH 11/12] package/eudev: we won't miss you, avr32 Yann E. MORIN
@ 2015-02-13 22:34 ` Yann E. MORIN
  11 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-13 22:34 UTC (permalink / raw)
  To: buildroot

Now that we have absolutely zero reference to the avr32 architecture, we
can now really decommission the symbol.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 arch/Config.in       | 19 -------------------
 arch/Config.in.avr32 | 11 -----------
 2 files changed, 30 deletions(-)
 delete mode 100644 arch/Config.in.avr32

diff --git a/arch/Config.in b/arch/Config.in
index 6c8f328..16ad8be 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -194,21 +194,6 @@ config BR2_xtensa
 
 endchoice
 
-config BR2_avr32
-	bool
-	select BR2_SOFT_FLOAT
-	# This architecture is obsolete and complicated to maintain to
-	# do the lack of upstream support in the major toolchain
-	# components. If you're interested by AVR32, contact the
-	# Buildroot community. Otherwise, its support will be removed
-	# by the 2015.02 release.
-	depends on BR2_DEPRECATED_SINCE_2014_08
-	help
-	  The AVR32 is a 32-bit RISC microprocessor architecture designed by
-	  Atmel.
-	  http://www.atmel.com/
-	  http://en.wikipedia.org/wiki/Avr32
-
 # The following string values are defined by the individual
 # Config.in.$ARCH files
 config BR2_ARCH
@@ -328,10 +313,6 @@ if BR2_aarch64
 source "arch/Config.in.aarch64"
 endif
 
-if BR2_avr32
-source "arch/Config.in.avr32"
-endif
-
 if BR2_bfin
 source "arch/Config.in.bfin"
 endif
diff --git a/arch/Config.in.avr32 b/arch/Config.in.avr32
deleted file mode 100644
index fc1f4f6..0000000
--- a/arch/Config.in.avr32
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_ARCH
-	default "avr32"
-
-config BR2_ENDIAN
-	default "BIG"
-
-config BR2_GCC_TARGET_ARCH
-	default "ap"
-
-config BR2_ARCH_HAS_ATOMICS
-	default y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 01/12] arch: kill avr32
  2015-02-13 22:34 ` [Buildroot] [PATCH 01/12] arch: kill avr32 Yann E. MORIN
@ 2015-02-14  6:37   ` Thomas Petazzoni
  2015-02-14  9:12     ` Yann E. MORIN
  0 siblings, 1 reply; 15+ messages in thread
From: Thomas Petazzoni @ 2015-02-14  6:37 UTC (permalink / raw)
  To: buildroot

Dear Yann E. MORIN,

On Fri, 13 Feb 2015 23:34:20 +0100, Yann E. MORIN wrote:

> diff --git a/.defconfig b/.defconfig
> index 77ab11a..585be55 100644
> --- a/.defconfig
> +++ b/.defconfig
> @@ -6,7 +6,6 @@ BR2_HAVE_DOT_CONFIG=y
>  # BR2_alpha is not set
>  # BR2_arm is not set
>  # BR2_armeb is not set
> -# BR2_avr32 is not set
>  # BR2_cris is not set
>  # BR2_ia64 is not set
>  BR2_i386=y
> diff --git a/arch/Config.in b/arch/Config.in
> index 890e7e2..6c8f328 100644
> --- a/arch/Config.in
> +++ b/arch/Config.in
> @@ -53,21 +53,6 @@ config BR2_aarch64
>  	  http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php
>  	  http://en.wikipedia.org/wiki/ARM
>  
> -config BR2_avr32
> -	bool "AVR32"
> -	select BR2_SOFT_FLOAT
> -	# This architecture is obsolete and complicated to maintain to
> -	# do the lack of upstream support in the major toolchain
> -	# components. If you're interested by AVR32, contact the
> -	# Buildroot community. Otherwise, its support will be removed
> -	# by the 2015.02 release.
> -	depends on BR2_DEPRECATED_SINCE_2014_08

Instead of moving things around, why not simply just add "depends on
BR2_BROKEN" ?

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Buildroot] [PATCH 01/12] arch: kill avr32
  2015-02-14  6:37   ` Thomas Petazzoni
@ 2015-02-14  9:12     ` Yann E. MORIN
  0 siblings, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2015-02-14  9:12 UTC (permalink / raw)
  To: buildroot

Thomas, All,

On 2015-02-14 07:37 +0100, Thomas Petazzoni spake thusly:
> On Fri, 13 Feb 2015 23:34:20 +0100, Yann E. MORIN wrote:
> 
> > diff --git a/.defconfig b/.defconfig
> > index 77ab11a..585be55 100644
> > --- a/.defconfig
> > +++ b/.defconfig
> > @@ -6,7 +6,6 @@ BR2_HAVE_DOT_CONFIG=y
> >  # BR2_alpha is not set
> >  # BR2_arm is not set
> >  # BR2_armeb is not set
> > -# BR2_avr32 is not set
> >  # BR2_cris is not set
> >  # BR2_ia64 is not set
> >  BR2_i386=y
> > diff --git a/arch/Config.in b/arch/Config.in
> > index 890e7e2..6c8f328 100644
> > --- a/arch/Config.in
> > +++ b/arch/Config.in
> > @@ -53,21 +53,6 @@ config BR2_aarch64
> >  	  http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php
> >  	  http://en.wikipedia.org/wiki/ARM
> >  
> > -config BR2_avr32
> > -	bool "AVR32"
> > -	select BR2_SOFT_FLOAT
> > -	# This architecture is obsolete and complicated to maintain to
> > -	# do the lack of upstream support in the major toolchain
> > -	# components. If you're interested by AVR32, contact the
> > -	# Buildroot community. Otherwise, its support will be removed
> > -	# by the 2015.02 release.
> > -	depends on BR2_DEPRECATED_SINCE_2014_08
> 
> Instead of moving things around, why not simply just add "depends on
> BR2_BROKEN" ?

OK, I'll respin shortly.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2015-02-14  9:12 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-13 22:34 [Buildroot] [PATCH 0/12] arch/avr32: say bye-bye! (branch yem/avr32) Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 01/12] arch: kill avr32 Yann E. MORIN
2015-02-14  6:37   ` Thomas Petazzoni
2015-02-14  9:12     ` Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 02/12] configs: get rid of avr32 defconfigs Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 03/12] packages: all salute the passing of avr32 Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 04/12] linux: get rid of avr32 specifics Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 05/12] toolchain/buildroot: forget about avr32 Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 06/12] toolchain/extrnal: avr32 is no more Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 07/12] package/binutils: avr32 is gone Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 08/12] package/gcc: do not mourn avr32 for too long Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 09/12] package/gdb: farewell avr32 Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 10/12] package/uClibc: RIP, avr32 Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 11/12] package/eudev: we won't miss you, avr32 Yann E. MORIN
2015-02-13 22:34 ` [Buildroot] [PATCH 12/12] arch/avr32: decommission for real Yann E. MORIN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.