Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages
@ 2010-12-12 21:53 Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 01/19] input-tools: convert to gentargets Thomas Petazzoni
                   ` (19 more replies)
  0 siblings, 20 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

Hello,

Here is a set of patches that merges most of Martin Banky's pending
patches. I've taken Martin patches for input-tools, mii-diag, mrouted,
sysklogd, sysinit, lsof, lvm2, memtester, alsa-utils, netplug and
l2tp. I tested all of them, and fixed various issues.

I also include some other patches to :
 * remove deprecated packages
 * bump mplayer and add many more options to mplayer
 * bump libtheora
 * fix libaio on AVR32

Regards,

Thomas

The following changes since commit cc37a07f289f56a81195933810af705d77e95ee4:
  Peter Korsgaard (1):
        zlib: really fix install for static only builds

are available in the git repository at:

  git://git.busybox.net/~tpetazzoni/git/buildroot for-2011.02/martin-packages

Martin Banky (11):
      input-tools: convert to gentargets
      mii-diag: convert to gentargets and bump to 2.11.3
      mrouted: convet to gentargets and bump to version 3.9.4
      sysklogd: convert to gentargets and bump to 1.5
      sysvint: convert to gentargets and bump to 2.88
      lsof: convert to gentargets and bump to 4.84
      lvm2: convert to autotargets and bump to 2.02.78
      memtester: convert to gentargets and bump to 4.2.1
      alsa-utils: convert to autotargets and bump to 1.0.23
      netplug: convert to gentargets and bump to 1.2.9.2
      l2tp: convert to gentargets and change to xl2tp

Thomas Petazzoni (8):
      target: support generic getty with sysvinit inittabs
      microcom: remove package
      ng-spice-rework: remove package
      libfloat: remove package
      hotplug: remove package
      libaio: add patch to support AVR32
      mplayer: convert to gentargets, bump to a recent SVN version
      libtheora: bump version to 1.1.1

 package/Config.in                                  |    8 +-
 package/hotplug/Config.in                          |    7 -
 package/hotplug/diethotplug-0.5.tar                |  Bin 40960 -> 0 bytes
 package/hotplug/hotplug.mk                         |   45 -
 ...-rint.patch => input-tools-20051019-rint.patch} |    0
 package/input-tools/input-tools.mk                 |  102 +-
 package/l2tp/Config.in                             |    7 -
 package/l2tp/l2tp-no-gnu-extensions.patch          |   33 -
 package/l2tp/l2tp-sanity.patch                     |   49 -
 package/l2tp/l2tp.mk                               |   60 -
 package/libaio/libaio-0.3.109-avr32-support.patch  |  122 +
 package/libfloat/Config.in                         |    8 -
 package/libfloat/libfloat.mk                       |   65 -
 package/libfloat/libfloat.patch                    |   45 -
 ...sof-makefile.patch => lsof-4.84-makefile.patch} |    4 +-
 ...f-noportmap.patch => lsof-4.84-noportmap.patch} |    4 +-
 ...flags.patch => lsof-4.84-override-cflags.patch} |    4 +-
 ...tch => lsof-4.84-remove-susvlegacy-funcs.patch} |    4 +-
 package/lsof/lsof-uclibc.patch                     |   12 -
 package/lsof/lsof.mk                               |   96 +-
 package/lvm2/lvm2.mk                               |  137 +-
 package/memtester/Config.in                        |    4 +
 .../memtester/memtester-4.2.1-makefile-fix.patch   |   23 +
 package/memtester/memtester.mk                     |   54 +-
 package/microcom/Config.in                         |    7 -
 .../microcom/microcom-102-001-speed-defines.patch  |   34 -
 .../microcom-102-002-rename-variable-log.patch     |   78 -
 package/microcom/microcom.mk                       |   71 -
 package/mii-diag/Config.in                         |    2 +-
 package/mii-diag/mii-diag-strchr.patch             |    3 +
 package/mii-diag/mii-diag.mk                       |   72 +-
 package/mrouted/Config.in                          |    5 +-
 .../mrouted-3.9-beta3-bcopy_bcmp_bzero.patch       |  164 -
 package/mrouted/mrouted-3.9.4-bcopy.patch          |   26 +
 package/mrouted/mrouted-3.9.4-makefile-flags.patch |   64 +
 package/mrouted/mrouted-sys_errlist.patch          |   44 -
 package/mrouted/mrouted.mk                         |   60 +-
 ...tils-1.0.18-check-if-__use_bsd-is-defined.patch |   13 -
 .../alsa-utils-1.0.18-fix-intl-support.patch       |   11 -
 .../alsa-utils-1.0.18-fix_sysv_legacy.patch        |   20 -
 .../alsa-utils/alsa-utils-1.0.18-remove_man.patch  |   11 -
 package/multimedia/alsa-utils/alsa-utils.mk        |   99 +-
 package/multimedia/libtheora/libtheora.mk          |    5 +-
 package/multimedia/mplayer/Config.in               |   17 +-
 .../mplayer/mplayer-1.0rc2-100-atmel.1.patch       | 6262 --------------------
 .../mplayer/mplayer-1.0rc2-largefile.patch         |   18 -
 .../mplayer/mplayer-1.0rc2-remove-sys-timeb.patch  |   12 -
 .../mplayer-1.0rc3-disable-install-strip.patch     |   24 +
 ...g.patch => mplayer-1.0rc3-fix-cc-parsing.patch} |   16 +-
 package/multimedia/mplayer/mplayer.mk              |  150 +-
 package/netplug/netplug-1.2.9-disable-werror.patch |   22 -
 .../netplug/netplug-1.2.9.2-makefile-flags.patch   |   21 +
 package/netplug/netplug-socklen-type.patch         |   12 -
 package/netplug/netplug.mk                         |   53 +-
 package/ng-spice-rework/Config.in                  |    9 -
 .../ng-spice-rework-17-makeidx.patch               |   12 -
 package/ng-spice-rework/ng-spice-rework.mk         |   18 -
 package/sysklogd/S25syslog                         |   48 -
 package/sysklogd/sysklogd-susv3-legacy.patch       |   20 -
 package/sysklogd/sysklogd.mk                       |   95 +-
 package/sysklogd/sysklogd.patch                    |   91 -
 package/sysvinit/inittab                           |   32 +
 package/sysvinit/sysvinit-2.86-gentoo.patch        |    9 -
 package/sysvinit/sysvinit.mk                       |   71 +-
 package/xl2tp/Config.in                            |   11 +
 .../xl2tp-1.2.7-legacy.patch}                      |    3 +
 package/xl2tp/xl2tp-1.2.7-makefile-flags.patch     |   33 +
 package/xl2tp/xl2tp.mk                             |   33 +
 package/{l2tp/l2tpd => xl2tp/xl2tpd}               |    6 +-
 target/generic/Makefile.in                         |   14 +-
 70 files changed, 830 insertions(+), 7964 deletions(-)
 delete mode 100644 package/hotplug/Config.in
 delete mode 100644 package/hotplug/diethotplug-0.5.tar
 delete mode 100644 package/hotplug/hotplug.mk
 rename package/input-tools/{joystick-20051019-rint.patch => input-tools-20051019-rint.patch} (100%)
 delete mode 100644 package/l2tp/Config.in
 delete mode 100644 package/l2tp/l2tp-no-gnu-extensions.patch
 delete mode 100644 package/l2tp/l2tp-sanity.patch
 delete mode 100644 package/l2tp/l2tp.mk
 create mode 100644 package/libaio/libaio-0.3.109-avr32-support.patch
 delete mode 100644 package/libfloat/Config.in
 delete mode 100644 package/libfloat/libfloat.mk
 delete mode 100644 package/libfloat/libfloat.patch
 rename package/lsof/{lsof-makefile.patch => lsof-4.84-makefile.patch} (62%)
 rename package/lsof/{lsof-noportmap.patch => lsof-4.84-noportmap.patch} (64%)
 rename package/lsof/{lsof-override-cflags.patch => lsof-4.84-override-cflags.patch} (66%)
 rename package/lsof/{lsof-remove-susvlegacy-funcs.patch => lsof-4.84-remove-susvlegacy-funcs.patch} (62%)
 delete mode 100644 package/lsof/lsof-uclibc.patch
 create mode 100644 package/memtester/memtester-4.2.1-makefile-fix.patch
 delete mode 100644 package/microcom/Config.in
 delete mode 100644 package/microcom/microcom-102-001-speed-defines.patch
 delete mode 100644 package/microcom/microcom-102-002-rename-variable-log.patch
 delete mode 100644 package/microcom/microcom.mk
 delete mode 100644 package/mrouted/mrouted-3.9-beta3-bcopy_bcmp_bzero.patch
 create mode 100644 package/mrouted/mrouted-3.9.4-bcopy.patch
 create mode 100644 package/mrouted/mrouted-3.9.4-makefile-flags.patch
 delete mode 100644 package/mrouted/mrouted-sys_errlist.patch
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-check-if-__use_bsd-is-defined.patch
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-fix-intl-support.patch
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-fix_sysv_legacy.patch
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-remove_man.patch
 delete mode 100644 package/multimedia/mplayer/mplayer-1.0rc2-100-atmel.1.patch
 delete mode 100644 package/multimedia/mplayer/mplayer-1.0rc2-largefile.patch
 delete mode 100644 package/multimedia/mplayer/mplayer-1.0rc2-remove-sys-timeb.patch
 create mode 100644 package/multimedia/mplayer/mplayer-1.0rc3-disable-install-strip.patch
 rename package/multimedia/mplayer/{mplayer-1.0rc2-fix-cc-parsing.patch => mplayer-1.0rc3-fix-cc-parsing.patch} (53%)
 delete mode 100644 package/netplug/netplug-1.2.9-disable-werror.patch
 create mode 100644 package/netplug/netplug-1.2.9.2-makefile-flags.patch
 delete mode 100644 package/netplug/netplug-socklen-type.patch
 delete mode 100644 package/ng-spice-rework/Config.in
 delete mode 100644 package/ng-spice-rework/ng-spice-rework-17-makeidx.patch
 delete mode 100644 package/ng-spice-rework/ng-spice-rework.mk
 delete mode 100755 package/sysklogd/S25syslog
 delete mode 100644 package/sysklogd/sysklogd-susv3-legacy.patch
 delete mode 100644 package/sysklogd/sysklogd.patch
 create mode 100644 package/sysvinit/inittab
 delete mode 100644 package/sysvinit/sysvinit-2.86-gentoo.patch
 create mode 100644 package/xl2tp/Config.in
 rename package/{l2tp/l2tp-legacy.patch => xl2tp/xl2tp-1.2.7-legacy.patch} (86%)
 create mode 100644 package/xl2tp/xl2tp-1.2.7-makefile-flags.patch
 create mode 100644 package/xl2tp/xl2tp.mk
 rename package/{l2tp/l2tpd => xl2tp/xl2tpd} (76%)

Thanks,
-- 
Thomas Petazzoni

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

* [Buildroot] [PATCH 01/19] input-tools: convert to gentargets
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 02/19] mii-diag: convert to gentargets and bump to 2.11.3 Thomas Petazzoni
                   ` (18 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 ...-rint.patch => input-tools-20051019-rint.patch} |    0
 package/input-tools/input-tools.mk                 |  102 ++++++++------------
 2 files changed, 41 insertions(+), 61 deletions(-)
 rename package/input-tools/{joystick-20051019-rint.patch => input-tools-20051019-rint.patch} (100%)

diff --git a/package/input-tools/joystick-20051019-rint.patch b/package/input-tools/input-tools-20051019-rint.patch
similarity index 100%
rename from package/input-tools/joystick-20051019-rint.patch
rename to package/input-tools/input-tools-20051019-rint.patch
diff --git a/package/input-tools/input-tools.mk b/package/input-tools/input-tools.mk
index 9f5eb19..bd85af3 100644
--- a/package/input-tools/input-tools.mk
+++ b/package/input-tools/input-tools.mk
@@ -3,64 +3,44 @@
 # input-tools
 #
 #############################################################
-
-INPUT_TOOLS_VERSION:=20051019
-INPUT_TOOLS_SOURCE:=joystick_$(INPUT_TOOLS_VERSION).orig.tar.gz
-INPUT_TOOLS_PATCH:=joystick_$(INPUT_TOOLS_VERSION)-2.diff.gz
-INPUT_TOOLS_SITE:=$(BR2_DEBIAN_MIRROR)/debian/pool/main/j/joystick/
-INPUT_TOOLS_DIR:=$(BUILD_DIR)/joystick-$(INPUT_TOOLS_VERSION).orig
-INPUT_TOOLS_CAT:=$(ZCAT)
-
-INPUT_TOOLS_TARGETS-y:=
-
-INPUT_TOOLS_TARGETS-$(BR2_PACKAGE_INPUT_TOOLS_EVTEST) += evtest
-INPUT_TOOLS_TARGETS-$(BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH) += inputattach
-INPUT_TOOLS_TARGETS-$(BR2_PACKAGE_INPUT_TOOLS_JSCAL) += jscal
-INPUT_TOOLS_TARGETS-$(BR2_PACKAGE_INPUT_TOOLS_JSTEST) += jstest
-
-INPUT_TOOLS_TARGETS := $(addprefix $(TARGET_DIR)/usr/bin/, $(INPUT_TOOLS_TARGETS-y))
-INPUT_TOOLS_SOURCES := $(addprefix $(INPUT_TOOLS_DIR)/utils/, \
-	$(addsuffix .c, $(INPUT_TOOLS_TARGETS-y)))
-
-$(DL_DIR)/$(INPUT_TOOLS_SOURCE):
-	$(call DOWNLOAD,$(INPUT_TOOLS_SITE),$(@F))
-
-$(DL_DIR)/$(INPUT_TOOLS_PATCH):
-	$(call DOWNLOAD,$(INPUT_TOOLS_SITE),$(@F))
-
-$(INPUT_TOOLS_DIR)/.unpacked: $(DL_DIR)/$(INPUT_TOOLS_SOURCE) $(DL_DIR)/$(INPUT_TOOLS_PATCH)
-	$(INPUT_TOOLS_CAT) $(DL_DIR)/$(INPUT_TOOLS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-ifneq ($(INPUT_TOOLS_PATCH),)
-	(cd $(INPUT_TOOLS_DIR) && $(INPUT_TOOLS_CAT) $(DL_DIR)/$(INPUT_TOOLS_PATCH) | patch -p1)
-endif
-	toolchain/patch-kernel.sh $(INPUT_TOOLS_DIR) package/input-tools/ \*.patch
-	touch $@
-
-$(INPUT_TOOLS_SOURCES): $(INPUT_TOOLS_DIR)/.unpacked
-
-$(INPUT_TOOLS_DIR)/utils/%: $(INPUT_TOOLS_DIR)/utils/%.c
-	$(TARGET_CC) $(TARGET_CFLAGS) -o $@ $^
-
-$(INPUT_TOOLS_TARGETS): $(TARGET_DIR)/usr/bin/%: $(INPUT_TOOLS_DIR)/utils/%
-	cp -dpf $^ $@
-	$(STRIPCMD) $(STRIP_STRIP_ALL) $@
-
-input-tools: $(INPUT_TOOLS_TARGETS)
-
-input-tools-source: $(DL_DIR)/$(INPUT_TOOLS_SOURCE) $(DL_DIR)/$(INPUT_TOOLS_PATCH)
-
-input-tools-unpacked: $(INPUT_TOOLS_DIR)/.unpacked
-
-input-tools-clean:
-	rm -f $(INPUT_TOOLS_TARGETS)
-
-input-tools-dirclean:
-	rm -rf $(INPUT_TOOLS_DIR)
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_INPUT_TOOLS),y)
-TARGETS+=input-tools
-endif
+INPUT_TOOLS_VERSION = 20051019
+INPUT_TOOLS_SOURCE  = joystick_$(INPUT_TOOLS_VERSION).orig.tar.gz
+INPUT_TOOLS_PATCH   = joystick_$(INPUT_TOOLS_VERSION)-5.diff.gz
+INPUT_TOOLS_SITE    = $(BR2_DEBIAN_MIRROR)/debian/pool/main/j/joystick/
+
+INPUT_TOOLS_TARGETS_$(BR2_PACKAGE_INPUT_TOOLS_EVTEST)      += evtest
+INPUT_TOOLS_TARGETS_$(BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH) += inputattach
+INPUT_TOOLS_TARGETS_$(BR2_PACKAGE_INPUT_TOOLS_JSCAL)       += jscal
+INPUT_TOOLS_TARGETS_$(BR2_PACKAGE_INPUT_TOOLS_JSTEST)      += jstest
+
+define INPUT_TOOLS_DEBIAN_PATCHES
+	if [ -d $(@D)/debian/patches ]; then \
+		toolchain/patch-kernel.sh $(@D) $(@D)/debian/patches \*.patch; \
+	fi
+endef
+
+INPUT_TOOLS_POST_PATCH_HOOKS = INPUT_TOOLS_DEBIAN_PATCHES
+
+define INPUT_TOOLS_BUILD_CMDS
+	(cd $(@D)/utils; \
+		$(TARGET_CC) $(TARGET_CFLAGS) -o evtest evtest.c; \
+		$(TARGET_CC) $(TARGET_CFLAGS) -o inputattach inputattach.c; \
+		$(TARGET_CC) $(TARGET_CFLAGS) -o jscal jscal.c; \
+		$(TARGET_CC) $(TARGET_CFLAGS) -o jstest jstest.c; \
+	)
+endef
+
+define INPUT_TOOLS_INSTALL_TARGET_CMDS
+	test -z "$(INPUT_TOOLS_TARGETS_y)" || \
+	install -m 755 $(addprefix $(@D)/utils/,$(INPUT_TOOLS_TARGETS_y)) $(TARGET_DIR)/usr/bin/
+endef
+
+define INPUT_TOOLS_UNINSTALL_TARGET_CMDS
+	rm -f $(addprefix $(TARGET_DIR)/usr/bin/,$(INPUT_TOOLS_TARGETS_y))
+endef
+
+define INPUT_TOOLS_CLEAN_CMDS
+	rm -f $(addprefix $(@D)/utils/,$(INPUT_TOOLS_TARGETS_y))
+endef
+
+$(eval $(call GENTARGETS,package,input-tools))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 02/19] mii-diag: convert to gentargets and bump to 2.11.3
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 01/19] input-tools: convert to gentargets Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 03/19] mrouted: convet to gentargets and bump to version 3.9.4 Thomas Petazzoni
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

[ Thomas: minor fixes. ]

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/mii-diag/Config.in             |    2 +-
 package/mii-diag/mii-diag-strchr.patch |    3 +
 package/mii-diag/mii-diag.mk           |   72 ++++++++++---------------------
 3 files changed, 27 insertions(+), 50 deletions(-)

diff --git a/package/mii-diag/Config.in b/package/mii-diag/Config.in
index ea5fae4..ca48ba2 100644
--- a/package/mii-diag/Config.in
+++ b/package/mii-diag/Config.in
@@ -1,4 +1,4 @@
-config BR2_PACKAGE_MIIDIAG
+config BR2_PACKAGE_MII_DIAG
 	bool "mii-diag"
 	help
 	  mii-diag allows you to manipulate the MII registers of
diff --git a/package/mii-diag/mii-diag-strchr.patch b/package/mii-diag/mii-diag-strchr.patch
index 537c042..fcfeb3c 100644
--- a/package/mii-diag/mii-diag-strchr.patch
+++ b/package/mii-diag/mii-diag-strchr.patch
@@ -1,3 +1,6 @@
+Use the strrchr() function instead of the deprecated rindex()
+function.
+
 --- mii-diag-2.11.orig/mii-diag.c.orig	2008-06-25 11:08:52.000000000 +1000
 +++ mii-diag-2.11.orig/mii-diag.c	2005-03-27 03:56:33.000000000 +1000
 @@ -174,7 +174,7 @@
diff --git a/package/mii-diag/mii-diag.mk b/package/mii-diag/mii-diag.mk
index ba01c0e..01a8b5f 100644
--- a/package/mii-diag/mii-diag.mk
+++ b/package/mii-diag/mii-diag.mk
@@ -3,59 +3,33 @@
 # mii-diag
 #
 #############################################################
-MIIDIAG_VERSION:=2.11
-MIIDIAG_DEBIAN_PATCH_LEVEL:=2
-MIIDIAG_SOURCE:=mii-diag_$(MIIDIAG_VERSION).orig.tar.gz
-MIIDIAG_PATCH_FILE=mii-diag_$(MIIDIAG_VERSION)-$(MIIDIAG_DEBIAN_PATCH_LEVEL).diff.gz
-MIIDIAG_SITE:=$(BR2_DEBIAN_MIRROR)/debian/pool/main/m/mii-diag
-MIIDIAG_DIR:=$(BUILD_DIR)/mii-diag-$(MIIDIAG_VERSION)
-MIIDIAG_CAT:=$(ZCAT)
-MIIDIAG_BINARY:=usr/sbin/mii-diag
+MII_DIAG_VERSION = 2.11
+MII_DIAG_SOURCE  = mii-diag_$(MII_DIAG_VERSION).orig.tar.gz
+MII_DIAG_PATCH   = mii-diag_$(MII_DIAG_VERSION)-3.diff.gz
+MII_DIAG_SITE    = $(BR2_DEBIAN_MIRROR)/debian/pool/main/m/mii-diag
 
-ifneq ($(MIIDIAG_PATCH_FILE),)
-MIIDIAG_PATCH=$(DL_DIR)/$(MIIDIAG_PATCH_FILE)
-$(MIIDIAG_PATCH):
-	$(call DOWNLOAD,$(MIIDIAG_SITE),$(MIIDIAG_PATCH_FILE))
-endif
+define MII_DIAG_DEBIAN_PATCHES
+	if [ -d $(@D)/debian/patches ]; then \
+		toolchain/patch-kernel.sh $(@D) $(@D)/debian/patches \*.patch; \
+	fi
+endef
 
-$(DL_DIR)/$(MIIDIAG_SOURCE):
-	$(call DOWNLOAD,$(MIIDIAG_SITE),$(MIIDIAG_SOURCE))
+MII_DIAG_POST_PATCH_HOOKS = MII_DIAG_DEBIAN_PATCHES
 
-$(MIIDIAG_DIR)/.unpacked: $(DL_DIR)/$(MIIDIAG_SOURCE) $(MIIDIAG_PATCH)
-	mkdir -p $(MIIDIAG_DIR)
-	$(MIIDIAG_CAT) $(DL_DIR)/$(MIIDIAG_SOURCE) | tar --strip 1 -C $(MIIDIAG_DIR) $(TAR_OPTIONS) -
-ifneq ($(MIIDIAG_PATCH_FILE),)
-	(cd $(MIIDIAG_DIR) && $(MIIDIAG_CAT) $(MIIDIAG_PATCH) | patch -p1)
-endif
-	toolchain/patch-kernel.sh $(MIIDIAG_DIR) package/mii-diag/ mii-diag-\*.patch*
-	touch $@
+define MII_DIAG_BUILD_CMDS
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
+endef
 
-$(MIIDIAG_DIR)/.configured: $(MIIDIAG_DIR)/.unpacked
-	touch $@
+define MII_DIAG_INSTALL_TARGET_CMDS
+	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
+endef
 
-$(MIIDIAG_DIR)/mii-diag: $(MIIDIAG_DIR)/.configured
-	$(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" -C $(MIIDIAG_DIR)
+define MII_DIAG_UNINSTALL_TARGET_CMDS
+	rm -f $(TARGET_DIR)/usr/sbin/mii-diag
+endef
 
-$(TARGET_DIR)/$(MIIDIAG_BINARY): $(MIIDIAG_DIR)/mii-diag
-	$(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" -C $(MIIDIAG_DIR) DESTDIR=$(TARGET_DIR) install
-	$(STRIPCMD) $@
-	touch $@
+define MII_DIAG_CLEAN_CMDS
+	$(MAKE) -C $(@D) clean
+endef
 
-mii-diag: $(TARGET_DIR)/$(MIIDIAG_BINARY)
-
-mii-diag-source: $(DL_DIR)/$(MIIDIAG_SOURCE) $(MIIDIAG_PATCH)
-
-mii-diag-clean:
-	-$(MAKE) -C $(MIIDIAG_DIR) clean
-
-mii-diag-dirclean:
-	rm -rf $(MIIDIAG_DIR)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_MIIDIAG),y)
-TARGETS+=mii-diag
-endif
+$(eval $(call GENTARGETS,package,mii-diag))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 03/19] mrouted: convet to gentargets and bump to version 3.9.4
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 01/19] input-tools: convert to gentargets Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 02/19] mii-diag: convert to gentargets and bump to 2.11.3 Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 04/19] sysklogd: convert to gentargets and bump to 1.5 Thomas Petazzoni
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

mrouted is once again being actively developed.
See http://github.com/troglobit/mrouted

[ Thomas: bump to 3.9.4, patches updated, prefix fix. ]

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/mrouted/Config.in                          |    5 +-
 .../mrouted-3.9-beta3-bcopy_bcmp_bzero.patch       |  164 --------------------
 package/mrouted/mrouted-3.9.4-bcopy.patch          |   26 +++
 package/mrouted/mrouted-3.9.4-makefile-flags.patch |   64 ++++++++
 package/mrouted/mrouted-sys_errlist.patch          |   44 ------
 package/mrouted/mrouted.mk                         |   60 ++------
 6 files changed, 110 insertions(+), 253 deletions(-)
 delete mode 100644 package/mrouted/mrouted-3.9-beta3-bcopy_bcmp_bzero.patch
 create mode 100644 package/mrouted/mrouted-3.9.4-bcopy.patch
 create mode 100644 package/mrouted/mrouted-3.9.4-makefile-flags.patch
 delete mode 100644 package/mrouted/mrouted-sys_errlist.patch

diff --git a/package/mrouted/Config.in b/package/mrouted/Config.in
index df3c567..1503cc6 100644
--- a/package/mrouted/Config.in
+++ b/package/mrouted/Config.in
@@ -3,4 +3,7 @@ config BR2_PACKAGE_MROUTED
 	help
 	  An implementation of the DVMRP multicast routing protocol.
 
-	  http://freshmeat.net/projects/mrouted/
+	  If built with uClibc, then UCLIBC_SUPPORT_AI_ADDRCONFIG is
+	  needed in uClibc configuration.
+
+	  http://github.com/troglobit/mrouted
diff --git a/package/mrouted/mrouted-3.9-beta3-bcopy_bcmp_bzero.patch b/package/mrouted/mrouted-3.9-beta3-bcopy_bcmp_bzero.patch
deleted file mode 100644
index e38efd2..0000000
--- a/package/mrouted/mrouted-3.9-beta3-bcopy_bcmp_bzero.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-diff -urN mrouted-3.9-beta3.0rig/cfparse.y mrouted-3.9-beta3/cfparse.y
---- mrouted-3.9-beta3.0rig/cfparse.y	1998-03-01 02:48:58.000000000 +0100
-+++ mrouted-3.9-beta3/cfparse.y	2009-01-14 21:17:00.000000000 +0100
-@@ -583,8 +583,7 @@
- 				  if (hp->h_addr_list[1])
- 				    fatal("Hostname %s does not %s",
- 					$1, "map to a unique address");
--
--				  bcopy(hp->h_addr_list[0], &$$,
-+				  memmove (&$$,	hp->h_addr_list[0],
- 					    hp->h_length);
- 				}
- 
-diff -urN mrouted-3.9-beta3.0rig/config.c mrouted-3.9-beta3/config.c
---- mrouted-3.9-beta3.0rig/config.c	1998-01-06 02:57:41.000000000 +0100
-+++ mrouted-3.9-beta3/config.c	2009-01-14 21:18:59.000000000 +0100
-@@ -89,7 +89,7 @@
- 	 * SIOCGIFFLAGS stomps over it because the requests
- 	 * are returned in a union.)
- 	 */
--	bcopy(ifrp->ifr_name, ifr.ifr_name, sizeof(ifr.ifr_name));
-+	memmove	(ifr.ifr_name,	ifrp->ifr_name,	sizeof(ifr.ifr_name));
- 
- 	/*
- 	 * Ignore loopback interfaces and interfaces that do not support
-diff -urN mrouted-3.9-beta3.0rig/defs.h mrouted-3.9-beta3/defs.h
---- mrouted-3.9-beta3.0rig/defs.h	2009-01-14 21:12:22.000000000 +0100
-+++ mrouted-3.9-beta3/defs.h	2009-01-14 21:20:05.000000000 +0100
-@@ -116,8 +116,6 @@
- #endif /* RSRR */
- 
- #ifdef SYSV
--#define bcopy(a, b, c)	memcpy(b, a, c)
--#define bzero(s, n) 	memset((s), 0, (n))
- #define setlinebuf(s)	setvbuf(s, NULL, _IOLBF, 0)
- #endif
- 
-diff -urN mrouted-3.9-beta3.0rig/igmp.c mrouted-3.9-beta3/igmp.c
---- mrouted-3.9-beta3.0rig/igmp.c	1998-01-06 02:57:43.000000000 +0100
-+++ mrouted-3.9-beta3/igmp.c	2009-01-14 21:27:41.000000000 +0100
-@@ -56,7 +56,7 @@
-     k_set_loop(FALSE);		/* disable multicast loopback     */
- 
-     ip         = (struct ip *)send_buf;
--    bzero(ip, sizeof(struct ip));
-+    memset(ip, 0, sizeof(struct ip));
-     /*
-      * Fields zeroed that aren't filled in later:
-      * - IP ID (let the kernel fill it in)
-@@ -421,7 +421,7 @@
- 	}
-     }
- 
--    bzero(&sdst, sizeof(sdst));
-+    memset(&sdst, 0, sizeof(sdst));
-     sdst.sin_family = AF_INET;
- #ifdef HAVE_SA_LEN
-     sdst.sin_len = sizeof(sdst);
-diff -urN mrouted-3.9-beta3.0rig/ipip.c mrouted-3.9-beta3/ipip.c
---- mrouted-3.9-beta3.0rig/ipip.c	1998-01-06 02:57:45.000000000 +0100
-+++ mrouted-3.9-beta3/ipip.c	2009-01-14 21:28:19.000000000 +0100
-@@ -61,7 +61,7 @@
-     ip = v->uv_encap_hdr = (struct ip *)malloc(sizeof(struct ip));
-     if (ip == NULL)
- 	log(LOG_ERR, 0, "out of memory");
--    bzero(ip, sizeof(struct ip));
-+    memset(ip, 0, sizeof(struct ip));
-     /*
-      * Fields zeroed that aren't filled in later:
-      * - IP ID (let the kernel fill it in)
-@@ -111,7 +111,7 @@
-     ip->ip_len = htons(ip->ip_len);
- #endif
- 
--    bzero(&sdst, sizeof(sdst));
-+    memset(&sdst, 0, sizeof(sdst));
-     sdst.sin_family = AF_INET;
- #ifdef HAVE_SA_LEN
-     sdst.sin_len = sizeof(sdst);
-@@ -123,7 +123,7 @@
-     iov[1].iov_base = (caddr_t)send_buf;
-     iov[1].iov_len = MIN_IP_HEADER_LEN + IGMP_MINLEN + datalen;
- 
--    bzero(&msg, sizeof(msg));
-+    memset(&msg, 0, sizeof(msg));
-     msg.msg_name = (caddr_t)&sdst;
-     msg.msg_namelen = sizeof(sdst);
-     msg.msg_iov = iov;
-diff -urN mrouted-3.9-beta3.0rig/main.c mrouted-3.9-beta3/main.c
---- mrouted-3.9-beta3.0rig/main.c	2009-01-14 21:12:22.000000000 +0100
-+++ mrouted-3.9-beta3/main.c	2009-01-14 21:22:33.000000000 +0100
-@@ -429,7 +429,7 @@
-     gettimeofday(&curtime, NULL);
-     lasttime = curtime;
-     for(;;) {
--	bcopy((char *)&readers, (char *)&rfds, sizeof(rfds));
-+	memmove	((char *)&rfds,	(char *)&readers,	sizeof(rfds));
- 	secs = timer_nextTimer();
- 	if (secs == -1)
- 	    timeout = NULL;
-diff -urN mrouted-3.9-beta3.0rig/prune.c mrouted-3.9-beta3/prune.c
---- mrouted-3.9-beta3.0rig/prune.c	1998-03-01 03:06:32.000000000 +0100
-+++ mrouted-3.9-beta3/prune.c	2009-01-14 21:27:06.000000000 +0100
-@@ -2450,7 +2450,7 @@
-     /* copy the packet to the sending buffer */
-     p = send_buf + MIN_IP_HEADER_LEN + IGMP_MINLEN;
-     
--    bcopy(data, p, datalen);
-+    memmove	(p,	data,	datalen);
-     
-     p += datalen;
-     
-@@ -2469,7 +2469,7 @@
-      * fill in initial response fields
-      */
-     resp = (struct tr_resp *)p;
--    bzero(resp, sizeof(struct tr_resp));
-+    memset(resp, 0, sizeof(struct tr_resp));
-     datalen += RLEN;
- 
-     resp->tr_qarr    = htonl(((tp.tv_sec + JAN_1970) << 16) + 
-diff -urN mrouted-3.9-beta3.0rig/route.c mrouted-3.9-beta3/route.c
---- mrouted-3.9-beta3.0rig/route.c	1998-01-15 01:08:34.000000000 +0100
-+++ mrouted-3.9-beta3/route.c	2009-01-14 21:26:37.000000000 +0100
-@@ -388,7 +388,8 @@
-     else                              r->rt_originwidth = 1;
-     r->rt_flags        = 0;
-     r->rt_dominants    = (u_int32 *)(r + 1);
--    bzero(r->rt_dominants, numvifs * sizeof(u_int32));
-+    memset(r->rt_dominants, 0, numvifs * sizeof(u_int32));
-+
-     r->rt_groups       = NULL;
-     VIFM_CLRALL(r->rt_children);
-     NBRM_CLRALL(r->rt_subordinates);
-@@ -968,7 +969,7 @@
-     bh->bh_dst = dst;
-     bh->bh_level = level;
-     bh->bh_datalen = datalen;
--    bcopy(p, (char *)(bh + 1), datalen);
-+    memmove	((char *)(bh + 1),	p,	datalen);
-     v->uv_blasterend += bblen;
- 
-     if (v->uv_blastertimer == 0) {
-diff -urN mrouted-3.9-beta3.0rig/rsrr.c mrouted-3.9-beta3/rsrr.c
---- mrouted-3.9-beta3.0rig/rsrr.c	1998-01-06 02:57:58.000000000 +0100
-+++ mrouted-3.9-beta3/rsrr.c	2009-01-14 21:29:18.000000000 +0100
-@@ -81,7 +81,7 @@
- 	log(LOG_ERR, errno, "Can't create RSRR socket");
- 
-     unlink(RSRR_SERV_PATH);
--    bzero((char *) &serv_addr, sizeof(serv_addr));
-+    memset((char *) &serv_addr, 0, sizeof(serv_addr));
-     serv_addr.sun_family = AF_UNIX;
-     strcpy(serv_addr.sun_path, RSRR_SERV_PATH);
- #ifdef HAVE_SA_LEN
-@@ -107,7 +107,7 @@
- {
-     register int rsrr_recvlen;
-     
--    bzero((char *) &client_addr, sizeof(client_addr));
-+    memset((char *) &client_addr, 0, sizeof(client_addr));
-     rsrr_recvlen = recvfrom(rsrr_socket, rsrr_recv_buf, sizeof(rsrr_recv_buf),
- 			    0, (struct sockaddr *)&client_addr, &client_length);
-     if (rsrr_recvlen < 0) {	
diff --git a/package/mrouted/mrouted-3.9.4-bcopy.patch b/package/mrouted/mrouted-3.9.4-bcopy.patch
new file mode 100644
index 0000000..73f8acc
--- /dev/null
+++ b/package/mrouted/mrouted-3.9.4-bcopy.patch
@@ -0,0 +1,26 @@
+---
+ mtrace.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: mrouted-3.9.4/mtrace.c
+===================================================================
+--- mrouted-3.9.4.orig/mtrace.c
++++ mrouted-3.9.4/mtrace.c
+@@ -556,7 +556,7 @@
+ 		save->rtime = ((tr.tv_sec + JAN_1970) << 16) +
+ 		    (tr.tv_usec << 10) / 15625;
+ 		save->len = len;
+-		bcopy((char *)igmp, (char *)&save->igmp, ipdatalen);
++		memmove((char *)igmp, (char *)&save->igmp, ipdatalen);
+ 	    }
+ 	    return recvlen;
+ 	}
+@@ -646,7 +646,7 @@
+ 	base.rtime = ((tr.tv_sec + JAN_1970) << 16) +
+ 	    (tr.tv_usec << 10) / 15625;
+ 	base.len = len;
+-	bcopy((char *)igmp, (char *)&base.igmp, ipdatalen);
++	memmove((char *)igmp, (char *)&base.igmp, ipdatalen);
+ 	/*
+ 	 * If the user specified which traces to monitor,
+ 	 * only accept traces that correspond to the
diff --git a/package/mrouted/mrouted-3.9.4-makefile-flags.patch b/package/mrouted/mrouted-3.9.4-makefile-flags.patch
new file mode 100644
index 0000000..932bec0
--- /dev/null
+++ b/package/mrouted/mrouted-3.9.4-makefile-flags.patch
@@ -0,0 +1,64 @@
+---
+ Makefile |   20 +++++++++-----------
+ 1 file changed, 9 insertions(+), 11 deletions(-)
+
+Index: mrouted-3.9.4/Makefile
+===================================================================
+--- mrouted-3.9.4.orig/Makefile
++++ mrouted-3.9.4/Makefile
+@@ -42,11 +42,9 @@
+ #MSTAT_OBJS    = mstat.o $(EXTRA_OBJS)
+ 
+ ## Common
+-CFLAGS        = $(MCAST_INCLUDE) $(SNMPDEF) $(RSRRDEF) $(INCLUDES) $(DEFS) $(USERCOMPILE)
+-CFLAGS       += -O2 -W -Wall -Werror
+-#CFLAGS       += -O -g
+-LDLIBS        = $(SNMPLIBDIR) $(SNMPLIBS) $(EXTRA_LIBS)
+-LDFLAGS      += -Wl,-Map,$@.map
++MROUTED_CFLAGS   = $(MCAST_INCLUDE) $(SNMPDEF) $(RSRRDEF) $(INCLUDES) $(DEFS) $(USERCOMPILE)
++LDLIBS           = $(SNMPLIBDIR) $(SNMPLIBS) $(EXTRA_LIBS)
++MROUTED_LDFLAGS += -Wl,-Map,$@.map
+ OBJS          = $(IGMP_OBJS) $(ROUTER_OBJS) $(MAPPER_OBJS) $(MRINFO_OBJS) \
+ 		$(MTRACE_OBJS) $(MSTAT_OBJS)
+ SRCS          = $(OBJS:.o=.c)
+@@ -65,7 +63,7 @@
+ 
+ .c.o:
+ 	@printf "  CC      $@\n"
+-	@$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
++	@$(CC) $(CFLAGS) $(MROUTED_CFLAGS) $(CPPFLAGS) -c -o $@ $<
+ 
+ install: $(EXECS)
+ 	@install -d $(DESTDIR)$(prefix)/sbin
+@@ -95,26 +93,26 @@
+ 
+ mrouted: $(IGMP_OBJS) $(ROUTER_OBJS) $(CMULIBS)
+ 	@printf "  LINK    $@\n"
+-	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(IGMP_OBJS) $(ROUTER_OBJS) $(LDLIBS)
++	@$(CC) $(CFLAGS) $(MROUTED_CFLAGS) $(LDFLAGS) $(MROUTED_LDFLAGS) -o $@ $(IGMP_OBJS) $(ROUTER_OBJS) $(LDLIBS)
+ 
+ vers.c: Makefile
+ 	@echo $(VERSION) | sed -e 's/.*/char todaysversion[]="&";/' > vers.c
+ 
+ map-mbone: $(IGMP_OBJS) $(MAPPER_OBJS)
+ 	@printf "  LINK    $@\n"
+-	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(IGMP_OBJS) $(MAPPER_OBJS) $(LDLIBS)
++	@$(CC) $(CFLAGS) $(MROUTED_CFLAGS) $(LDFLAGS) $(MROUTED_LDFLAGS) -o $@ $(IGMP_OBJS) $(MAPPER_OBJS) $(LDLIBS)
+ 
+ mrinfo: $(IGMP_OBJS) $(MRINFO_OBJS)
+ 	@printf "  LINK    $@\n"
+-	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(IGMP_OBJS) $(MRINFO_OBJS) $(LDLIBS)
++	@$(CC) $(CFLAGS) $(MROUTED_CFLAGS) $(LDFLAGS) $(MROUTED_LDFLAGS) -o $@ $(IGMP_OBJS) $(MRINFO_OBJS) $(LDLIBS)
+ 
+ mtrace: $(IGMP_OBJS) $(MTRACE_OBJS)
+ 	@printf "  LINK    $@\n"
+-	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(IGMP_OBJS) $(MTRACE_OBJS) $(LDLIBS)
++	@$(CC) $(CFLAGS) $(MROUTED_CFLAGS) $(LDFLAGS) $(MROUTED_LDFLAGS) -o $@ $(IGMP_OBJS) $(MTRACE_OBJS) $(LDLIBS)
+ 
+ mstat: $(MSTAT_OBJS) $(CMULIBS)
+ 	@printf "  LINK    $@\n"
+-	@$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(MSTAT_OBJS) $(LDLIBS)
++	@$(CC) $(CFLAGS) $(MROUTED_CFLAGS) $(LDFLAGS) $(MROUTED_LDFLAGS) -o $@ $(MSTAT_OBJS) $(LDLIBS)
+ 
+ clean: $(SNMPCLEAN)
+ 	-@$(RM) $(OBJS) $(EXECS)
diff --git a/package/mrouted/mrouted-sys_errlist.patch b/package/mrouted/mrouted-sys_errlist.patch
deleted file mode 100644
index 8498dc7..0000000
--- a/package/mrouted/mrouted-sys_errlist.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Patches from Kevin P. Fleming <kpfleming@backtobasicsmgmt.com>.
-
---- mrouted-3.9-beta3.orig/main.c~	2004-03-10 19:00:38.000000000 -0700
-+++ mrouted-3.9-beta3.orig/main.c	2004-03-10 19:02:33.000000000 -0700
-@@ -1001,10 +1001,8 @@
- 		    thyme->tm_min, thyme->tm_sec, now.tv_usec / 1000, msg);
- 	if (syserr == 0)
- 	    fprintf(stderr, "\n");
--	else if (syserr < sys_nerr)
--	    fprintf(stderr, ": %s\n", sys_errlist[syserr]);
- 	else
--	    fprintf(stderr, ": errno %d\n", syserr);
-+	    fprintf(stderr, ": %s\n", strerror(syserr));
-     }
- 
-     /*
---- mrouted-3.9-beta3.orig/mrinfo.c~	1998-02-28 20:05:20.000000000 -0700
-+++ mrouted-3.9-beta3.orig/mrinfo.c	2004-03-10 19:01:49.000000000 -0700
-@@ -159,10 +159,8 @@
- 		vfprintf(stderr, fmt, ap);
- 		if (syserr == 0)
- 			fprintf(stderr, "\n");
--		else if (syserr < sys_nerr)
--			fprintf(stderr, ": %s\n", sys_errlist[syserr]);
- 		else
--			fprintf(stderr, ": errno %d\n", syserr);
-+			fprintf(stderr, ": %s\n", strerror(syserr));
- 	}
- 
- 	if (severity <= LOG_ERR)
---- mrouted-3.9-beta3.orig/mapper.c~	1998-01-05 18:57:47.000000000 -0700
-+++ mrouted-3.9-beta3.orig/mapper.c	2004-03-10 19:02:04.000000000 -0700
-@@ -197,10 +197,8 @@
- 	    vfprintf(stderr, fmt, ap);
- 	    if (syserr == 0)
- 		fprintf(stderr, "\n");
--	    else if (syserr < sys_nerr)
--		fprintf(stderr, ": %s\n", sys_errlist[syserr]);
- 	    else
--		fprintf(stderr, ": errno %d\n", syserr);
-+	        fprintf(stderr, ": %s\n", strerror(syserr));
-     }
- 
-     if (severity <= LOG_ERR)
diff --git a/package/mrouted/mrouted.mk b/package/mrouted/mrouted.mk
index 4438c6d..da4ef72 100644
--- a/package/mrouted/mrouted.mk
+++ b/package/mrouted/mrouted.mk
@@ -4,52 +4,24 @@
 #
 #
 #############################################################
-MROUTED_VERSION:=3.9-beta3.orig
-MROUTED_SOURCE:=mrouted_$(MROUTED_VERSION).tar.gz
-MROUTED_SITE:=http://archive.debian.org/debian-archive/pool/non-free/m/mrouted/
-MROUTED_DIR:=$(BUILD_DIR)/mrouted-$(MROUTED_VERSION)
-MROUTED_CAT:=$(ZCAT)
-MROUTED_PATCH:=mrouted_3.9-beta3-1.1.diff.gz
-MROUTED_BINARY:=mrouted
-MROUTED_TARGET_BINARY:=usr/sbin/mrouted
+MROUTED_VERSION     = 3.9.4
+MROUTED_SITE        = https://github.com/troglobit/mrouted.git
+MROUTED_SITE_METHOD = git
 
-$(DL_DIR)/$(MROUTED_SOURCE):
-	 $(call DOWNLOAD,$(MROUTED_SITE),$(MROUTED_SOURCE))
+define MROUTED_BUILD_CMDS
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
+endef
 
-$(DL_DIR)/$(MROUTED_PATCH):
-	 $(call DOWNLOAD,$(MROUTED_SITE),$(MROUTED_PATCH))
+define MROUTED_INSTALL_TARGET_CMDS
+	$(MAKE) prefix=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install
+endef
 
-$(MROUTED_DIR)/.unpacked: $(DL_DIR)/$(MROUTED_SOURCE) $(DL_DIR)/$(MROUTED_PATCH)
-	$(MROUTED_CAT) $(DL_DIR)/$(MROUTED_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	$(MROUTED_CAT) $(DL_DIR)/$(MROUTED_PATCH) | patch -p1 -d $(MROUTED_DIR)
-	toolchain/patch-kernel.sh $(MROUTED_DIR) package/mrouted/ mrouted\*.patch
-	touch $(MROUTED_DIR)/.unpacked
+define MROUTED_UNINSTALL_TARGET_CMDS
+	$(MAKE) prefix=/usr DESTDIR=$(TARGET_DIR) -C $(@D) uninstall
+endef
 
-$(MROUTED_DIR)/$(MROUTED_BINARY): $(MROUTED_DIR)/.unpacked
-	$(TARGET_CONFIGURE_OPTS) \
-	$(MAKE) CC="$(TARGET_CC)" -C $(MROUTED_DIR)
+define MROUTED_CLEAN_CMDS
+	$(MAKE) -C $(@D) clean
+endef
 
-$(TARGET_DIR)/$(MROUTED_TARGET_BINARY): $(MROUTED_DIR)/$(MROUTED_BINARY)
-	cp -a $(MROUTED_DIR)/$(MROUTED_BINARY) $(TARGET_DIR)/$(MROUTED_TARGET_BINARY)
-
-mrouted: $(TARGET_DIR)/$(MROUTED_TARGET_BINARY)
-
-mrouted-source: $(DL_DIR)/$(MROUTED_SOURCE) $(DL_DIR)/$(MROUTED_PATCH)
-
-mrouted-unpacked: $(MROUTED_DIR)/.unpacked
-
-mrouted-clean:
-	rm -f $(TARGET_DIR)/$(MROUTED_TARGET_BINARY)
-	-$(MAKE) -C $(MROUTED_DIR) clean
-
-mrouted-dirclean:
-	rm -rf $(MROUTED_DIR)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_MROUTED),y)
-TARGETS+=mrouted
-endif
+$(eval $(call GENTARGETS,package,mrouted))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 04/19] sysklogd: convert to gentargets and bump to 1.5
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (2 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 03/19] mrouted: convet to gentargets and bump to version 3.9.4 Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 05/19] sysvint: convert to gentargets and bump to 2.88 Thomas Petazzoni
                   ` (15 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

Also, changed the site to Debian, to get the latest patches

[ Thomas: Minor fixes. Removed S25sysklogd since our default
  /etc/inittab already starts klogd and sysklogd. ]

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/sysklogd/S25syslog                   |   48 -------------
 package/sysklogd/sysklogd-susv3-legacy.patch |   20 ------
 package/sysklogd/sysklogd.mk                 |   95 ++++++++++++--------------
 package/sysklogd/sysklogd.patch              |   91 ------------------------
 4 files changed, 43 insertions(+), 211 deletions(-)
 delete mode 100755 package/sysklogd/S25syslog
 delete mode 100644 package/sysklogd/sysklogd-susv3-legacy.patch
 delete mode 100644 package/sysklogd/sysklogd.patch

diff --git a/package/sysklogd/S25syslog b/package/sysklogd/S25syslog
deleted file mode 100755
index 793ac61..0000000
--- a/package/sysklogd/S25syslog
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-#
-# Starts syslog.
-#
-
-
-
-umask 077
-
-start() {
- 	echo -n "Starting syslogd: "
-	start-stop-daemon -S -q -p /var/run/syslog.pid -x /sbin/syslogd -- -m 0
-	echo "OK"
-
-	echo -n "Starting klogd: "
-	start-stop-daemon -S -q -p /var/run/klogd.pid -x /sbin/klogd
-	echo "OK"
-}
-stop() {
-	echo -n "Stopping klogd: "
-	start-stop-daemon -K -n klogd
-	echo "OK"
-
-	echo -n "Stopping syslogd: "
-	start-stop-daemon -K -n syslogd
-	echo "OK"
-}
-restart() {
-	stop
-	start
-}
-
-case "$1" in
-  start)
-  	start
-	;;
-  stop)
-  	stop
-	;;
-  restart|reload)
-  	restart
-	;;
-  *)
-	echo $"Usage: $0 {start|stop|restart}"
-	exit 1
-esac
-
-exit $?
diff --git a/package/sysklogd/sysklogd-susv3-legacy.patch b/package/sysklogd/sysklogd-susv3-legacy.patch
deleted file mode 100644
index 7e9a294..0000000
--- a/package/sysklogd/sysklogd-susv3-legacy.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-[PATCH] replace susv3 legacy functions with modern equivalents
-
-Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
----
- syslog.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: sysklogd-1.4.1/syslog.c
-===================================================================
---- sysklogd-1.4.1.orig/syslog.c
-+++ sysklogd-1.4.1/syslog.c
-@@ -178,7 +178,7 @@
- 		return;
- 	(void)strcat(tbuf, "\r\n");
- 	cnt += 2;
--	p = index(tbuf, '>') + 1;
-+	p = strchr(tbuf, '>') + 1;
- 	(void)write(fd, p, cnt - (p - tbuf));
- 	(void)close(fd);
- }
diff --git a/package/sysklogd/sysklogd.mk b/package/sysklogd/sysklogd.mk
index 7333dfd..5d07236 100644
--- a/package/sysklogd/sysklogd.mk
+++ b/package/sysklogd/sysklogd.mk
@@ -3,59 +3,50 @@
 # sysklogd
 #
 #############################################################
-SYSKLOGD_VERSION:=1.4.1
-SYSKLOGD_SOURCE:=sysklogd-$(SYSKLOGD_VERSION).tar.gz
-SYSKLOGD_SITE:=http://www.infodrom.org/projects/sysklogd/download
-SYSKLOGD_DIR:=$(BUILD_DIR)/sysklogd-$(SYSKLOGD_VERSION)
-SYSKLOGD_SYSLOGD_BINARY:=syslogd
-SYSKLOGD_KLOGD_BINARY:=klogd
-SYSKLOGD_BINARY:=$(SYSKLOGD_KLOGD_BINARY)
-SYSKLOGD_SYSLOGD_TARGET_BINARY:=sbin/syslogd
-SYSKLOGD_KLOGD_TARGET_BINARY:=sbin/klogd
-SYSKLOGD_TARGET_BINARY:=$(SYSKLOGD_KLOGD_TARGET_BINARY)
-
-$(DL_DIR)/$(SYSKLOGD_SOURCE):
-	 $(call DOWNLOAD,$(SYSKLOGD_SITE),$(SYSKLOGD_SOURCE))
-
-sysklogd-source: $(DL_DIR)/$(SYSKLOGD_SOURCE)
-
-$(SYSKLOGD_DIR)/.unpacked: $(DL_DIR)/$(SYSKLOGD_SOURCE)
-	$(ZCAT) $(DL_DIR)/$(SYSKLOGD_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(SYSKLOGD_DIR) package/sysklogd/ sysklogd\*.patch
-	touch $(SYSKLOGD_DIR)/.unpacked
-
-$(SYSKLOGD_DIR)/$(SYSKLOGD_BINARY): $(SYSKLOGD_DIR)/.unpacked
-	$(MAKE) CC="$(TARGET_CC) $(TARGET_CFLAGS)" -C $(SYSKLOGD_DIR)
-	$(STRIPCMD) $(SYSKLOGD_DIR)/$(SYSKLOGD_SYSLOGD_BINARY)
-	$(STRIPCMD) $(SYSKLOGD_DIR)/$(SYSKLOGD_KLOGD_BINARY)
-
-$(TARGET_DIR)/$(SYSKLOGD_TARGET_BINARY): $(SYSKLOGD_DIR)/$(SYSKLOGD_BINARY)
-	$(INSTALL) -m 0755 -D $(SYSKLOGD_DIR)/$(SYSKLOGD_SYSLOGD_BINARY) $(TARGET_DIR)/$(SYSKLOGD_SYSLOGD_TARGET_BINARY)
-	$(INSTALL) -m 0755 -D $(SYSKLOGD_DIR)/$(SYSKLOGD_KLOGD_BINARY) $(TARGET_DIR)/$(SYSKLOGD_KLOGD_TARGET_BINARY)
-	if [ ! -f $(TARGET_DIR)/etc/init.d/S25syslog ]; then \
-		$(INSTALL) -m 0755 -D package/sysklogd/S25syslog $(TARGET_DIR)/etc/init.d; \
-	fi
-	if [ ! -f $(TARGET_DIR)/etc/syslog.conf ]; then \
-		$(INSTALL) -m 0644 -D package/sysklogd/syslog.conf $(TARGET_DIR)/etc/syslog.conf; \
-	fi
-
-sysklogd: $(TARGET_DIR)/$(SYSKLOGD_TARGET_BINARY)
+SYSKLOGD_VERSION = 1.5
+SYSKLOGD_SOURCE  = sysklogd_$(SYSKLOGD_VERSION).orig.tar.gz
+SYSKLOGD_PATCH   = sysklogd_$(SYSKLOGD_VERSION)-6.diff.gz
+SYSKLOGD_SITE    = $(BR2_DEBIAN_MIRROR)/debian/pool/main/s/sysklogd
+
+# Override Busybox implementations if Busybox is enabled.
+ifeq ($(BR2_PACKAGE_BUSYBOX),y)
+SYSKLOGD_DEPENDENCIES = busybox
+endif
 
-sysklogd-clean:
-	rm -f $(TARGET_DIR)/$(SYSKLOGD_SYSLOGD_TARGET_BINARY)
-	rm -f $(TARGET_DIR)/$(SYSKLOGD_KLOGD_TARGET_BINARY)
-	rm -f $(TARGET_DIR)/etc/init.d/S25syslogd
+define SYSKLOGD_DEBIAN_PATCHES
+	if [ -d $(@D)/debian/patches ]; then \
+		toolchain/patch-kernel.sh $(@D) $(@D)/debian/patches \*.patch; \
+	fi
+endef
+
+SYSKLOGD_POST_PATCH_HOOKS = SYSKLOGD_DEBIAN_PATCHES
+
+define SYSKLOGD_BUILD_CMDS
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
+endef
+
+define SYSKLOGD_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0500 $(@D)/syslogd $(TARGET_DIR)/usr/sbin/syslogd
+	$(INSTALL) -D -m 0500 $(@D)/klogd $(TARGET_DIR)/usr/sbin/klogd
+	$(INSTALL) -D -m 0644 $(@D)/sysklogd.8 $(TARGET_DIR)/usr/share/man/man8/sysklogd.8
+	$(INSTALL) -D -m 0644 $(@D)/syslogd.8 $(TARGET_DIR)/usr/share/man/man8/syslogd.8
+	$(INSTALL) -D -m 0644 $(@D)/syslog.conf.5 $(TARGET_DIR)/usr/share/man/man5/syslog.conf.5
+	$(INSTALL) -D -m 0644 $(@D)/klogd.8 $(TARGET_DIR)/usr/share/man/man8/klogd.8
+	$(INSTALL) -D -m 0644 package/sysklogd/syslog.conf $(TARGET_DIR)/etc/syslog.conf
+endef
+
+define SYSKLOGD_UNINSTALL_TARGET_CMDS
+	rm -f $(TARGET_DIR)/usr/sbin/syslogd
+	rm -f $(TARGET_DIR)/usr/sbin/klogd
+	rm -f $(TARGET_DIR)/usr/share/man/man8/sysklogd.8
+	rm -f $(TARGET_DIR)/usr/share/man/man8/syslogd.8
+	rm -f $(TARGET_DIR)/usr/share/man/man5/syslog.conf.5
+	rm -f $(TARGET_DIR)/usr/share/man/man8/klogd.8
 	rm -f $(TARGET_DIR)/etc/syslog.conf
-	-$(MAKE) -C $(SYSKLOGD_DIR) clean
+endef
 
-sysklogd-dirclean:
-	rm -rf $(SYSKLOGD_DIR)
+define SYSKLOGD_CLEAN_CMDS
+	$(MAKE) -C $(@D) clean
+endef
 
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_SYSKLOGD),y)
-TARGETS+=sysklogd
-endif
+$(eval $(call GENTARGETS,package,sysklogd))
diff --git a/package/sysklogd/sysklogd.patch b/package/sysklogd/sysklogd.patch
deleted file mode 100644
index 393a1a3..0000000
--- a/package/sysklogd/sysklogd.patch
+++ /dev/null
@@ -1,91 +0,0 @@
---- sysklogd-1.4.1/module.h.orig	1970-01-01 10:00:00.000000000 +1000
-+++ sysklogd-1.4.1/module.h	2005-11-24 01:40:09.000000000 +1000
-@@ -0,0 +1,62 @@
-+/* this file eliminates the need to include <kernel/module.h> */
-+/* Module definitions for klogd's module support */
-+struct kernel_sym
-+{
-+	        unsigned long value;
-+	        char name[60];
-+};
-+
-+struct module_symbol
-+{
-+	unsigned long value;
-+	const char *name;
-+};
-+
-+struct module_ref
-+{
-+	struct module *dep;     /* "parent" pointer */
-+	struct module *ref;     /* "child" pointer */
-+	struct module_ref *next_ref;
-+};
-+
-+struct module_info
-+{
-+	unsigned long addr;
-+	unsigned long size;
-+	unsigned long flags;
-+	long usecount;
-+};
-+
-+
-+typedef struct { volatile int counter; } atomic_t;
-+
-+struct module
-+{
-+	unsigned long size_of_struct;   /* == sizeof(module) */
-+	struct module *next;
-+	const char *name;
-+	unsigned long size;
-+	
-+	union
-+	{
-+		atomic_t usecount;
-+		long pad;
-+        } uc;                           /* Needs to keep its size - so says rth */
-+	
-+	unsigned long flags;            /* AUTOCLEAN et al */
-+	
-+	unsigned nsyms;
-+	unsigned ndeps;
-+	
-+	struct module_symbol *syms;
-+	struct module_ref *deps;
-+	struct module_ref *refs;
-+	int (*init)(void);
-+	void (*cleanup)(void);
-+	const struct exception_table_entry *ex_table_start;
-+	const struct exception_table_entry *ex_table_end;
-+#ifdef __alpha__
-+	unsigned long gp;
-+#endif
-+};
-+	
-
---- sysklogd-1.4.1/ksym_mod.c.orig	2005-11-24 23:15:01.000000000 +1000
-+++ sysklogd-1.4.1/ksym_mod.c	2005-11-24 23:11:54.000000000 +1000
-@@ -89,17 +89,21 @@
- #include <errno.h>
- #include <sys/fcntl.h>
- #include <sys/stat.h>
-+#include <linux/version.h>
- #if !defined(__GLIBC__)
- #include <linux/time.h>
- #include <linux/module.h>
- #else /* __GLIBC__ */
-+#if LINUX_VERSION_CODE >= 0x20500
-+#include "module.h"
-+#else
- #include <linux/module.h>
-+#endif
- extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
- extern int get_kernel_syms __P ((struct kernel_sym *__table));
- #endif /* __GLIBC__ */
- #include <stdarg.h>
- #include <paths.h>
--#include <linux/version.h>
- 
- #include "klogd.h"
- #include "ksyms.h"
-- 
1.7.0.4

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

* [Buildroot] [PATCH 05/19] sysvint: convert to gentargets and bump to 2.88
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (3 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 04/19] sysklogd: convert to gentargets and bump to 1.5 Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 06/19] target: support generic getty with sysvinit inittabs Thomas Petazzoni
                   ` (14 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

Also, changed the site to Debian, to get the latest patches

[ Thomas: add inittab compatible with sysvinit. Minor fixes. ]

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/sysvinit/inittab                    |   32 ++++++++++++
 package/sysvinit/sysvinit-2.86-gentoo.patch |    9 ---
 package/sysvinit/sysvinit.mk                |   71 +++++++++++++--------------
 3 files changed, 66 insertions(+), 46 deletions(-)
 create mode 100644 package/sysvinit/inittab
 delete mode 100644 package/sysvinit/sysvinit-2.86-gentoo.patch

diff --git a/package/sysvinit/inittab b/package/sysvinit/inittab
new file mode 100644
index 0000000..3ea534d
--- /dev/null
+++ b/package/sysvinit/inittab
@@ -0,0 +1,32 @@
+# /etc/inittab
+#
+# This inittab is a basic inittab sample for sysvinit, which mimics
+# Buildroot's default inittab for Busybox.
+id:1:initdefault:
+
+proc::sysinit:/bin/mount -t proc proc /proc
+rwmo::sysinit:/bin/mount -o remount,rw /
+dpts::sysinit:/bin/mkdir -p /dev/pts
+moun::sysinit:/bin/mount -a
+host::sysinit:/bin/hostname -F /etc/hostname
+init::sysinit:/etc/init.d/rcS
+
+1:1:respawn:/sbin/getty 38400 tty1
+2:1:respawn:/sbin/getty 38400 tty2
+
+# S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
+
+# Logging junk
+mess::sysinit:/bin/touch /var/log/messages
+sysl:1:respawn:/sbin/syslogd -n -m 0
+klog:1:respawn:/sbin/klogd -n
+
+# Stuff to do for the 3-finger salute
+rebo::ctrlaltdel:/sbin/reboot
+
+# Stuff to do before rebooting
+sklo:6:wait:/usr/bin/killall klogd
+ssys:6:wait:/usr/bin/killall syslogd
+umou:6:wait:/bin/umount -a -r
+swap:6:wait:/sbin/swapoff -a
+
diff --git a/package/sysvinit/sysvinit-2.86-gentoo.patch b/package/sysvinit/sysvinit-2.86-gentoo.patch
deleted file mode 100644
index 06b9e15..0000000
--- a/package/sysvinit/sysvinit-2.86-gentoo.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- sysvinit/src/Makefile
-+++ sysvinit/src/Makefile
-@@ -10,5 +10,3 @@
- 
--CC	= gcc
--CFLAGS	= -Wall -O2 -fomit-frame-pointer -D_GNU_SOURCE
--LDFLAGS	= -s
-+CFLAGS	+= -Wall -D_GNU_SOURCE
- STATIC	=
diff --git a/package/sysvinit/sysvinit.mk b/package/sysvinit/sysvinit.mk
index ef7c713..b22f0f2 100644
--- a/package/sysvinit/sysvinit.mk
+++ b/package/sysvinit/sysvinit.mk
@@ -3,50 +3,47 @@
 # sysvinit
 #
 #############################################################
-SYSVINIT_VERSION:=2.86
-SYSVINIT_SOURCE:=sysvinit-$(SYSVINIT_VERSION).tar.gz
-SYSVINIT_SITE:=ftp://ftp.cistron.nl/pub/people/miquels/software
-SYSVINIT_DIR:=$(BUILD_DIR)/sysvinit-$(SYSVINIT_VERSION)
-SYSVINIT_CAT:=$(ZCAT)
-SYSVINIT_BINARY:=src/init
-SYSVINIT_TARGET_BINARY:=sbin/init
-
-$(DL_DIR)/$(SYSVINIT_SOURCE):
-	$(call DOWNLOAD,$(SYSVINIT_SITE),$(SYSVINIT_SOURCE))
-
-sysvinit-unpacked: $(SYSVINIT_DIR)/.unpacked
-$(SYSVINIT_DIR)/.unpacked: $(DL_DIR)/$(SYSVINIT_SOURCE)
-	$(SYSVINIT_CAT) $(DL_DIR)/$(SYSVINIT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(SYSVINIT_DIR) package/sysvinit/ sysvinit-\*.patch
-	touch $@
-
-$(SYSVINIT_DIR)/$(SYSVINIT_BINARY): $(SYSVINIT_DIR)/.unpacked
+SYSVINIT_VERSION = 2.88
+SYSVINIT_SOURCE  = sysvinit_$(SYSVINIT_VERSION)dsf.orig.tar.gz
+SYSVINIT_PATCH   = sysvinit_$(SYSVINIT_VERSION)dsf-13.diff.gz
+SYSVINIT_SITE    = $(BR2_DEBIAN_MIRROR)/debian/pool/main/s/sysvinit
+
+# Override Busybox implementations if Busybox is enabled.
+ifeq ($(BR2_PACKAGE_BUSYBOX),y)
+SYSKLOGD_DEPENDENCIES = busybox
+endif
+
+define SYSVINIT_DEBIAN_PATCHES
+	if [ -d $(@D)/debian/patches ]; then \
+		toolchain/patch-kernel.sh $(@D) $(@D)/debian/patches \*.patch; \
+	fi
+endef
+
+SYSVINIT_POST_PATCH_HOOKS = SYSVINIT_DEBIAN_PATCHES
+
+define SYSVINIT_BUILD_CMDS
 	# Force sysvinit to link against libcrypt as it otherwise
 	# use an incorrect test to see if it's available
-	CFLAGS="$(TARGET_CFLAGS)" $(MAKE) CC="$(TARGET_CC)" LCRYPT="-lcrypt" -C $(SYSVINIT_DIR)/src
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) LCRYPT="-lcrypt" -C $(@D)/src
+endef
 
-$(TARGET_DIR)/$(SYSVINIT_TARGET_BINARY): $(SYSVINIT_DIR)/$(SYSVINIT_BINARY)
+define SYSVINIT_INSTALL_TARGET_CMDS
 	for x in halt init shutdown; do \
-		install -D $(SYSVINIT_DIR)/src/$$x $(TARGET_DIR)/sbin/$$x || exit 1; \
+		install -D -m 0755 $(@D)/src/$$x $(TARGET_DIR)/sbin/$$x || exit 1; \
 	done
+	# Override Busybox's inittab with an inittab compatible with
+	# sysvinit
+	install -D -m 0644 package/sysvinit/inittab $(TARGET_DIR)/etc/inittab
+endef
 
-sysvinit: $(TARGET_DIR)/$(SYSVINIT_TARGET_BINARY)
-
-sysvinit-source: $(DL_DIR)/$(SYSVINIT_SOURCE)
-
-sysvinit-clean:
+define SYSVINIT_UNINSTALL_TARGET_CMDS
 	for x in halt init shutdown; do \
 		rm -f $(TARGET_DIR)/sbin/$$x || exit 1; \
 	done
-	-$(MAKE) -C $(SYSVINIT_DIR) clean
+endef
 
-sysvinit-dirclean:
-	rm -rf $(SYSVINIT_DIR)
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_SYSVINIT),y)
-TARGETS+=sysvinit
-endif
+define SYSVINIT_CLEAN_CMDS
+	$(MAKE) -C $(@D) clean
+endef
+
+$(eval $(call GENTARGETS,package,sysvinit))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 06/19] target: support generic getty with sysvinit inittabs
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (4 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 05/19] sysvint: convert to gentargets and bump to 2.88 Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 07/19] lsof: convert to gentargets and bump to 4.84 Thomas Petazzoni
                   ` (13 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

In sysvinit inittab the "id" field (first field) must be no longer
than 4 bytes, and is not used by init to determine the output
terminal. Therefore, we adjust the strategy used to modify the inittab
file according to the getty configuration.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 target/generic/Makefile.in |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/target/generic/Makefile.in b/target/generic/Makefile.in
index 1ef2a9d..3a750c3 100644
--- a/target/generic/Makefile.in
+++ b/target/generic/Makefile.in
@@ -11,10 +11,16 @@ target-generic-issue:
 	mkdir -p $(TARGET_DIR)/etc
 	echo "$(TARGET_GENERIC_ISSUE)" > $(TARGET_DIR)/etc/issue
 
-target-generic-getty:
+target-generic-getty-busybox:
 	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) vt100 #~' \
 		$(TARGET_DIR)/etc/inittab
 
+# In sysvinit inittab, the "id" must not be longer than 4 bytes, so we
+# skip the "tty" part and keep only the remaining.
+target-generic-getty-sysvinit:
+	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(TARGET_GENERIC_GETTY) | tail -c+4)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY) $(TARGET_GENERIC_GETTY_BAUDRATE) vt100 #~' \
+		$(TARGET_DIR)/etc/inittab
+
 ifneq ($(TARGET_GENERIC_HOSTNAME),)
 TARGETS += target-generic-hostname
 endif
@@ -24,5 +30,9 @@ TARGETS += target-generic-issue
 endif
 
 ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
-TARGETS += target-generic-getty
+ifeq ($(BR2_PACKAGE_SYSVINIT),y)
+TARGETS += target-generic-getty-sysvinit
+else
+TARGETS += target-generic-getty-busybox
+endif
 endif
-- 
1.7.0.4

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

* [Buildroot] [PATCH 07/19] lsof: convert to gentargets and bump to 4.84
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (5 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 06/19] target: support generic getty with sysvinit inittabs Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 08/19] lvm2: convert to autotargets and bump to 2.02.78 Thomas Petazzoni
                   ` (12 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

lsof is packaged as a tarball inside a .tar.bz2 package, so we have a
post-extract hook to extract the source code tarball, so that for the
next steps, lsof looks like a normal package.

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 ...sof-makefile.patch => lsof-4.84-makefile.patch} |    4 +-
 ...f-noportmap.patch => lsof-4.84-noportmap.patch} |    4 +-
 ...flags.patch => lsof-4.84-override-cflags.patch} |    4 +-
 ...tch => lsof-4.84-remove-susvlegacy-funcs.patch} |    4 +-
 package/lsof/lsof-uclibc.patch                     |   12 ---
 package/lsof/lsof.mk                               |   96 ++++++++++----------
 6 files changed, 54 insertions(+), 70 deletions(-)
 rename package/lsof/{lsof-makefile.patch => lsof-4.84-makefile.patch} (62%)
 rename package/lsof/{lsof-noportmap.patch => lsof-4.84-noportmap.patch} (64%)
 rename package/lsof/{lsof-override-cflags.patch => lsof-4.84-override-cflags.patch} (66%)
 rename package/lsof/{lsof-remove-susvlegacy-funcs.patch => lsof-4.84-remove-susvlegacy-funcs.patch} (62%)
 delete mode 100644 package/lsof/lsof-uclibc.patch

diff --git a/package/lsof/lsof-makefile.patch b/package/lsof/lsof-4.84-makefile.patch
similarity index 62%
rename from package/lsof/lsof-makefile.patch
rename to package/lsof/lsof-4.84-makefile.patch
index 2d4e9d4..65b1b2e 100644
--- a/package/lsof/lsof-makefile.patch
+++ b/package/lsof/lsof-4.84-makefile.patch
@@ -1,6 +1,6 @@
 diff -ru lsof_4.81.orig/lsof_4.81_src/lib/Makefile.skel lsof_4.81/lsof_4.81_src/lib/Makefile.skel
---- lsof_4.81.orig/lsof_4.81_src/lib/Makefile.skel	2001-02-13 03:12:22.000000000 +0100
-+++ lsof_4.81/lsof_4.81_src/lib/Makefile.skel	2006-11-29 13:51:44.000000000 +0100
+--- a/lib/Makefile.skel	2001-02-13 03:12:22.000000000 +0100
++++ b/lib/Makefile.skel	2006-11-29 13:51:44.000000000 +0100
 @@ -21,8 +21,8 @@
  all:	${LIB}
  
diff --git a/package/lsof/lsof-noportmap.patch b/package/lsof/lsof-4.84-noportmap.patch
similarity index 64%
rename from package/lsof/lsof-noportmap.patch
rename to package/lsof/lsof-4.84-noportmap.patch
index 4a37db4..984e0d8 100644
--- a/package/lsof/lsof-noportmap.patch
+++ b/package/lsof/lsof-4.84-noportmap.patch
@@ -1,5 +1,5 @@
---- lsof_4.81/lsof_4.81_src/print.orig.c	2006-08-23 13:37:43.000000000 -0600
-+++ lsof_4.81/lsof_4.81_src/print.c	2006-08-23 13:38:29.000000000 -0600
+--- a/print.c	2006-08-23 13:37:43.000000000 -0600
++++ b/print.c	2006-08-23 13:38:29.000000000 -0600
 @@ -148,6 +148,7 @@
  static void
  fill_portmap()
diff --git a/package/lsof/lsof-override-cflags.patch b/package/lsof/lsof-4.84-override-cflags.patch
similarity index 66%
rename from package/lsof/lsof-override-cflags.patch
rename to package/lsof/lsof-4.84-override-cflags.patch
index fcb9292..135e599 100644
--- a/package/lsof/lsof-override-cflags.patch
+++ b/package/lsof/lsof-4.84-override-cflags.patch
@@ -1,5 +1,5 @@
---- lsof_4.81/lsof_4.81_src/Configure	2008-10-21 18:21:45.000000000 +0200
-+++ lsof_4.81/lsof_4.81_src/Configure	2010-11-03 14:00:00.000000000 +0100
+--- lsof_4.84/Configure	2008-10-21 18:21:45.000000000 +0200
++++ lsof_4.84/Configure	2010-11-03 14:00:00.000000000 +0100
 @@ -5206,6 +5206,10 @@
    cp $LSOF_MKFC ${LSOF_LIB}/$LSOF_LIBMKF
  fi	# }
diff --git a/package/lsof/lsof-remove-susvlegacy-funcs.patch b/package/lsof/lsof-4.84-remove-susvlegacy-funcs.patch
similarity index 62%
rename from package/lsof/lsof-remove-susvlegacy-funcs.patch
rename to package/lsof/lsof-4.84-remove-susvlegacy-funcs.patch
index d1d9371..fca66ae 100644
--- a/package/lsof/lsof-remove-susvlegacy-funcs.patch
+++ b/package/lsof/lsof-4.84-remove-susvlegacy-funcs.patch
@@ -1,6 +1,6 @@
 diff -rdup lsof_4.81.orig/lsof_4.81_src/dialects/linux/machine.h lsof_4.81/lsof_4.81_src/dialects/linux/machine.h
---- lsof_4.81.orig/lsof_4.81_src/dialects/linux/machine.h	2007-04-24 18:20:58.000000000 +0200
-+++ lsof_4.81/lsof_4.81_src/dialects/linux/machine.h	2007-05-15 12:17:03.000000000 +0200
+--- a/dialects/linux/machine.h	2007-04-24 18:20:58.000000000 +0200
++++ b/dialects/linux/machine.h	2007-05-15 12:17:03.000000000 +0200
 @@ -616,6 +616,6 @@
   * zeromem is a macro that uses bzero or memset.
   */
diff --git a/package/lsof/lsof-uclibc.patch b/package/lsof/lsof-uclibc.patch
deleted file mode 100644
index 797a0ce..0000000
--- a/package/lsof/lsof-uclibc.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru lsof_4.81.orig/lsof_4.81_src/dialects/linux/dlsof.h lsof_4.81/lsof_4.81_src/dialects/linux/dlsof.h
---- lsof_4.81.orig/lsof_4.81_src/dialects/linux/dlsof.h	2006-03-28 00:57:14.000000000 +0200
-+++ lsof_4.81/lsof_4.81_src/dialects/linux/dlsof.h	2006-11-29 14:03:07.000000000 +0100
-@@ -49,7 +49,7 @@
- #include <unistd.h>
- #include <netinet/in.h>
- 
--# if	defined(GLIBCV)
-+# if	defined(GLIBCV) || defined __UCLIBC__
- #include <netinet/tcp.h>
- # else	/* !defined(GLIBCV) */
- #include <linux/tcp.h>
diff --git a/package/lsof/lsof.mk b/package/lsof/lsof.mk
index 837a88c..1177116 100644
--- a/package/lsof/lsof.mk
+++ b/package/lsof/lsof.mk
@@ -3,68 +3,64 @@
 # lsof
 #
 #############################################################
-LSOF_VERSION:=4.81
-LSOF_SOURCE:=lsof_$(LSOF_VERSION).tar.bz2
-LSOF_SITE:=ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
-LSOF_CAT:=$(BZCAT)
-LSOF_DIR:=$(BUILD_DIR)/lsof_$(LSOF_VERSION)
-LSOF_BINARY:=lsof
-LSOF_TARGET_BINARY:=bin/lsof
-LSOF_INCLUDE:=$(STAGING_DIR)/usr/include
+LSOF_VERSION = 4.84
+LSOF_SOURCE = lsof_$(LSOF_VERSION).tar.bz2
+LSOF_SITE = ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 
-BR2_LSOF_CFLAGS:=
+BR2_LSOF_CFLAGS =
 ifeq ($(BR2_LARGEFILE),)
-BR2_LSOF_CFLAGS+=-U_FILE_OFFSET_BITS
+BR2_LSOF_CFLAGS += -U_FILE_OFFSET_BITS
 endif
 ifeq ($(BR2_INET_IPV6),)
-BR2_LSOF_CFLAGS+=-UHASIPv6
+BR2_LSOF_CFLAGS += -UHASIPv6
 endif
 
-$(DL_DIR)/$(LSOF_SOURCE):
-	 $(call DOWNLOAD,$(LSOF_SITE),$(LSOF_SOURCE))
-
-lsof-source: $(DL_DIR)/$(LSOF_SOURCE)
-
-lsof-unpacked: $(LSOF_DIR)/.unpacked
-
-$(LSOF_DIR)/.unpacked: $(DL_DIR)/$(LSOF_SOURCE)
-	$(LSOF_CAT) $(DL_DIR)/$(LSOF_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	(cd $(LSOF_DIR);tar xf lsof_$(LSOF_VERSION)_src.tar;rm -f lsof_$(LSOF_VERSION)_src.tar)
-	toolchain/patch-kernel.sh $(LSOF_DIR) package/lsof/ \*.patch
-	touch $(LSOF_DIR)/.unpacked
-
-$(LSOF_DIR)/.configured: $(LSOF_DIR)/.unpacked
-	(cd $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src; echo n | $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS) $(BR2_LSOF_CFLAGS)" LSOF_INCLUDE="$(LSOF_INCLUDE)" LSOF_CFLAGS_OVERRIDE=1 ./Configure linux)
-	touch $(LSOF_DIR)/.configured
-
-$(LSOF_DIR)/lsof_$(LSOF_VERSION)_src/$(LSOF_BINARY): $(LSOF_DIR)/.configured
 ifeq ($(BR2_USE_WCHAR),)
-	$(SED) 's,^#define[[:space:]]*HASWIDECHAR.*,#undef HASWIDECHAR,' $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src/machine.h
-	$(SED) 's,^#define[[:space:]]*WIDECHARINCL.*,,' $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src/machine.h
+define LSOF_CONFIGURE_WCHAR_FIXUPS
+	$(SED) 's,^#define[[:space:]]*HASWIDECHAR.*,#undef HASWIDECHAR,' \
+		$(@D)/lsof_$(LSOF_VERSION)_src/machine.h
+	$(SED) 's,^#define[[:space:]]*WIDECHARINCL.*,,' \
+		$(@D)/lsof_$(LSOF_VERSION)_src/machine.h
+endef
 endif
+
 ifeq ($(BR2_ENABLE_LOCALE),)
-	$(SED) 's,^#define[[:space:]]*HASSETLOCALE.*,#undef HASSETLOCALE,' $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src/machine.h
+define LSOF_CONFIGURE_LOCALE_FIXUPS
+	$(SED) 's,^#define[[:space:]]*HASSETLOCALE.*,#undef HASSETLOCALE,' \
+		$(@D)/lsof_$(LSOF_VERSION)_src/machine.h
+endef
 endif
-	$(MAKE) $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS) $(BR2_LSOF_CFLAGS)" -C $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src
 
-$(TARGET_DIR)/$(LSOF_TARGET_BINARY): $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src/$(LSOF_BINARY)
-	cp $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src/$(LSOF_BINARY) $@
-	$(STRIPCMD) $@
+# The .tar.bz2 contains another .tar, which contains the source code.
+define LSOF_EXTRACT_TAR
+	$(TAR) $(TAR_STRIP_COMPONENTS)=1 -xf $(@D)/lsof_$(LSOF_VERSION)_src.tar -C $(@D)
+	rm -f $(@D)/lsof_$(LSOF_VERSION)_src.tar
+endef
 
-lsof: $(TARGET_DIR)/$(LSOF_TARGET_BINARY)
+LSOF_POST_EXTRACT_HOOKS += LSOF_EXTRACT_TAR
 
-lsof-clean:
-	-rm -f $(TARGET_DIR)/$(LSOF_TARGET_BINARY)
-	-$(MAKE) -C $(LSOF_DIR)/lsof_$(LSOF_VERSION)_src clean
+define LSOF_CONFIGURE_CMDS
+	(cd $(@D) ; \
+		echo n | $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS) $(BR2_LSOF_CFLAGS)" \
+		LSOF_INCLUDE="$(STAGING_DIR)/usr/include" LSOF_CFLAGS_OVERRIDE=1 ./Configure linux)
+	$(LSOF_CONFIGURE_WCHAR_FIXUPS)
+	$(LSOF_CONFIGURE_LOCALE_FIXUPS)
+endef
 
-lsof-dirclean:
-	rm -rf $(LSOF_DIR)
+define LSOF_BUILD_CMDS
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS) $(BR2_LSOF_CFLAGS)" -C $(@D)
+endef
 
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_LSOF),y)
-TARGETS+=lsof
-endif
+define LSOF_INSTALL_TARGET_CMDS
+	install -D -m 755 $(@D)/lsof $(TARGET_DIR)/bin/lsof
+endef
+
+define LSOF_UNINSTALL_TARGET_CMDS
+	-rm -f $(TARGET_DIR)/bin/lsof
+endef
+
+define LSOF_CLEAN_CMDS
+	-$(MAKE) -C $(@D)/lsof_$(LSOF_VERSION)_src clean
+endef
+
+$(eval $(call GENTARGETS,package,lsof))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 08/19] lvm2: convert to autotargets and bump to 2.02.78
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (6 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 07/19] lsof: convert to gentargets and bump to 4.84 Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 09/19] memtester: convert to gentargets and bump to 4.2.1 Thomas Petazzoni
                   ` (11 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

[ Thomas: simplifications and bump to 2.02.78 ]

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/lvm2/lvm2.mk |  137 +++++++++++++------------------------------------
 1 files changed, 37 insertions(+), 100 deletions(-)

diff --git a/package/lvm2/lvm2.mk b/package/lvm2/lvm2.mk
index 2bd6b8b..5c83d9d 100644
--- a/package/lvm2/lvm2.mk
+++ b/package/lvm2/lvm2.mk
@@ -3,115 +3,52 @@
 # lvm2
 #
 #############################################################
-# Copyright (C) 2005 by Richard Downer <rdowner@gmail.com>
-# Derived from work
-# Copyright (C) 2001-2005 by Erik Andersen <andersen@codepoet.org>
-# Copyright (C) 2002 by Tim Riker <Tim@Rikers.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Library 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
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library 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
-
-LVM2_BASEVER=2.02
-LVM2_DMVER=1.02
-LVM2_PATCH=50
-LVM2_VERSION=$(LVM2_BASEVER).$(LVM2_PATCH)
-LVM2_SOURCE:=LVM2.$(LVM2_VERSION).tgz
-LVM2_SITE:=ftp://sources.redhat.com/pub/lvm2
-LVM2_CAT:=$(ZCAT)
-LVM2_DIR:=$(BUILD_DIR)/LVM2.$(LVM2_VERSION)
-LVM2_SBIN:=lvchange lvcreate lvdisplay lvextend lvm lvmchange lvmdiskscan lvmsadc lvmsar lvreduce lvremove lvrename lvresize lvs lvscan pvchange pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan vgcfgbackup vgcfgrestore vgchange vgck vgconvert vgcreate vgdisplay vgexport vgextend vgimport vgmerge vgmknodes vgreduce vgremove vgrename vgs vgscan vgsplit
-LVM2_DMSETUP_SBIN:=dmsetup
-LVM2_LIB:=libdevmapper.so.$(LVM2_DMVER)
-LVM2_TARGET_SBINS=$(foreach lvm2sbin, $(LVM2_SBIN), $(TARGET_DIR)/sbin/$(lvm2sbin))
-LVM2_TARGET_DMSETUP_SBINS=$(foreach lvm2sbin, $(LVM2_DMSETUP_SBIN), $(TARGET_DIR)/sbin/$(lvm2sbin))
-LVM2_TARGET_LIBS=$(foreach lvm2lib, $(LVM2_LIB), $(TARGET_DIR)/lib/$(lvm2lib))
-
-$(DL_DIR)/$(LVM2_SOURCE):
-	 $(call DOWNLOAD,$(LVM2_SITE),$(LVM2_SOURCE))
-
-lvm2-source: $(DL_DIR)/$(LVM2_SOURCE)
-
+LVM2_VERSION = 2.02.78
+LVM2_SOURCE = LVM2.$(LVM2_VERSION).tgz
+LVM2_SITE = ftp://sources.redhat.com/pub/lvm2
+LVM2_INSTALL_STAGING = YES
+
+LVM2_BINS = \
+	dmsetup fsadm lvm lvmconf lvmdump vgimportclone \
+	lvchange lvconvert lvcreate lvdisplay lvextend 	\
+	lvmchange lvmdiskscan lvmsadc lvmsar lvreduce  	\
+	lvremove lvrename lvresize lvs lvscan pvchange 	\
+	pvck pvcreate pvdisplay pvmove pvremove 	\
+	pvresize pvs pvscan vgcfgbackup vgcfgrestore 	\
+	vgchange vgck vgconvert vgcreate vgdisplay 	\
+	vgexport vgextend vgimport vgmerge vgmknodes 	\
+	vgreduce vgremove vgrename vgs vgscan vgsplit
+
+# Make sure that binaries and libraries are installed with write
+# permissions for the owner.
+LVM2_CONF_OPT += --enable-write_install
+
+# LVM2 uses autoconf, but not automake, and the build system does not
+# take into account the CC passed at configure time.
+LVM2_MAKE_ENV = CC="$(TARGET_CC)"
 
 ifeq ($(BR2_PACKAGE_READLINE),y)
-LVM2_DEPENDENCIES+=readline
+LVM2_DEPENDENCIES += readline
 else
 # v2.02.44: disable readline usage, or binaries are linked against provider
 # of "tgetent" (=> ncurses) even if it's not used..
-LVM2_CONF_OPT+=--disable-readline
+LVM2_CONF_OPT += --disable-readline
 endif
 
-
-$(LVM2_DIR)/.unpacked: $(DL_DIR)/$(LVM2_SOURCE)
-	$(LVM2_CAT) $(DL_DIR)/$(LVM2_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	touch $(LVM2_DIR)/.unpacked
-
-$(LVM2_DIR)/.configured: $(LVM2_DIR)/.unpacked
-	(cd $(LVM2_DIR); rm -rf config.cache; \
-		$(TARGET_CONFIGURE_OPTS) \
-		$(TARGET_CONFIGURE_ARGS) \
-		./configure $(QUIET) \
-		--target=$(GNU_TARGET_NAME) \
-		--host=$(GNU_TARGET_NAME) \
-		--build=$(GNU_HOST_NAME) \
-		$(DISABLE_NLS) \
-		$(DISABLE_LARGEFILE) \
-		--with-user=$(shell id -un) --with-group=$(shell id -gn) \
-		$(LVM2_CONF_OPT) \
-	)
-	touch $(LVM2_DIR)/.configured
-
-
-$(LVM2_DIR)/.built: $(LVM2_DIR)/.configured
-	$(MAKE1) -C $(LVM2_DIR) DESTDIR=$(STAGING_DIR)
-	$(MAKE1) -C $(LVM2_DIR) DESTDIR=$(STAGING_DIR) install
-	# Fixup write permissions so that the files can be overwritten
-	# several times in the $(TARGET_DIR)
-	chmod 755 $(STAGING_DIR)/sbin/lvm
-	chmod 755 $(STAGING_DIR)/sbin/dmsetup
-	chmod 644 $(STAGING_DIR)/lib/$(LVM2_LIB)
-	touch $(LVM2_DIR)/.built
-
-
-$(LVM2_TARGET_SBINS) $(LVM2_TARGET_DMSETUP_SBINS): $(LVM2_DIR)/.built
-	cp -a $(STAGING_DIR)/sbin/$(notdir $@) $@
-	touch $@
-
-$(LVM2_TARGET_LIBS): $(LVM2_DIR)/.built
-	cp -a $(STAGING_DIR)/lib/$(notdir $@) $@
-	touch $@
-
-
 ifeq ($(BR2_PACKAGE_LVM2_DMSETUP_ONLY),y)
-lvm2: $(LVM2_TARGET_DMSETUP_SBINS) $(LVM2_TARGET_LIBS)
-else
-lvm2: $(LVM2_TARGET_SBINS) $(LVM2_TARGET_DMSETUP_SBINS) $(LVM2_TARGET_LIBS)
+LVM2_MAKE_OPT = device-mapper
+LVM2_INSTALL_STAGING_OPT = DESTDIR=$(STAGING_DIR) install_device-mapper
+LVM2_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install_device-mapper
 endif
 
+define LVM2_UNINSTALL_STAGING_CMDS
+	rm -f $(addprefix $(STAGING_DIR)/usr/sbin/,$(LVM2_BINS))
+	rm -f $(addprefix $(STAGING_DIR)/usr/lib/,libdevmapper.so*)
+endef
 
-lvm2-clean:
-	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(LVM2_DIR) uninstall
-	-$(MAKE) -C $(LVM2_DIR) clean
-
-lvm2-dirclean:
-	rm -rf $(LVM2_DIR)
+define LVM2_UNINSTALL_TARGET_CMDS
+	rm -f $(addprefix $(TARGET_DIR)/usr/sbin/,$(LVM2_BINS))
+	rm -f $(addprefix $(TARGET_DIR)/usr/lib/,libdevmapper.so*)
+endef
 
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_LVM2),y)
-TARGETS+=lvm2
-endif
+$(eval $(call AUTOTARGETS,package,lvm2))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 09/19] memtester: convert to gentargets and bump to 4.2.1
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (7 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 08/19] lvm2: convert to autotargets and bump to 2.02.78 Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 10/19] microcom: remove package Thomas Petazzoni
                   ` (10 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

Also, memtester requires largefile support

[ Thomas: add patch to fix memtester's Makefile at installation
  stage. Bump to 4.2.1. ]

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/memtester/Config.in                        |    4 ++
 .../memtester/memtester-4.2.1-makefile-fix.patch   |   23 ++++++++
 package/memtester/memtester.mk                     |   54 +++++++-------------
 3 files changed, 45 insertions(+), 36 deletions(-)
 create mode 100644 package/memtester/memtester-4.2.1-makefile-fix.patch

diff --git a/package/memtester/Config.in b/package/memtester/Config.in
index 7a504dc..82769f5 100644
--- a/package/memtester/Config.in
+++ b/package/memtester/Config.in
@@ -1,6 +1,10 @@
 config BR2_PACKAGE_MEMTESTER
 	bool "memtester"
+	depends on BR2_LARGEFILE
 	help
 	  A userspace utility for testing the memory subsystem for faults.
 
 	  http://pyropus.ca/software/memtester/
+
+comment "memtester requires a toolchain with LARGEFILE support"
+       depends on !BR2_LARGEFILE
diff --git a/package/memtester/memtester-4.2.1-makefile-fix.patch b/package/memtester/memtester-4.2.1-makefile-fix.patch
new file mode 100644
index 0000000..6f1481b
--- /dev/null
+++ b/package/memtester/memtester-4.2.1-makefile-fix.patch
@@ -0,0 +1,23 @@
+The a/{b,c} construct doesn't work within make, so let's split the
+creation of the installation directories in two commands.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ Makefile |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: memtester-4.2.1/Makefile
+===================================================================
+--- memtester-4.2.1.orig/Makefile
++++ memtester-4.2.1/Makefile
+@@ -25,8 +25,9 @@
+ all: memtester
+ 
+ install: all
+-	mkdir -m 755 -p $(INSTALLPATH)/{bin,man/man8}
++	mkdir -m 755 -p $(INSTALLPATH)/bin
+ 	install -m 755 memtester $(INSTALLPATH)/bin/
++	mkdir -m 755 -p $(INSTALLPATH)/man/man8
+ 	gzip -c memtester.8 >memtester.8.gz ; install -m 644 memtester.8.gz $(INSTALLPATH)/man/man8/
+ 
+ auto-ccld.sh: \
diff --git a/package/memtester/memtester.mk b/package/memtester/memtester.mk
index ed8470b..a92c5d2 100644
--- a/package/memtester/memtester.mk
+++ b/package/memtester/memtester.mk
@@ -3,45 +3,27 @@
 # memtester
 #
 #############################################################
-MEMTESTER_VERSION:=4.0.6
-MEMTESTER_SOURCE:=memtester-$(MEMTESTER_VERSION).tar.gz
-MEMTESTER_SITE:=http://pyropus.ca/software/memtester/old-versions/
-MEMTESTER_DIR:=$(BUILD_DIR)/memtester-$(MEMTESTER_VERSION)
-MEMTESTER_BINARY:=memtester
-MEMTESTER_TARGET_BINARY:=usr/bin/memtester
+MEMTESTER_VERSION = 4.2.1
+MEMTESTER_SOURCE = memtester-$(MEMTESTER_VERSION).tar.gz
+MEMTESTER_SITE = http://pyropus.ca/software/memtester/old-versions/
 
-$(DL_DIR)/$(MEMTESTER_SOURCE):
-	 $(call DOWNLOAD,$(MEMTESTER_SITE),$(MEMTESTER_SOURCE))
+MEMTESTER_TARGET_INSTALL_OPTS = INSTALLPATH=$(TARGET_DIR)/usr
 
-memtester-source: $(DL_DIR)/$(MEMTESTER_SOURCE)
+define MEMTESTER_BUILD_CMDS
+	$(SED) "s,cc,$(TARGET_CC)," $(@D)/conf-*
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
+endef
 
-$(MEMTESTER_DIR)/.unpacked: $(DL_DIR)/$(MEMTESTER_SOURCE)
-	$(ZCAT) $(DL_DIR)/$(MEMTESTER_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	#toolchain/patch-kernel.sh $(MEMTESTER_DIR) package/memtester/ memtester\*.patch
-	$(SED) "s,cc,$(TARGET_CC)," $(MEMTESTER_DIR)/conf-*
-	touch $(MEMTESTER_DIR)/.unpacked
+define MEMTESTER_INSTALL_TARGET_CMDS
+	$(MAKE) $(MEMTESTER_TARGET_INSTALL_OPTS) -C $(@D) install
+endef
 
-$(MEMTESTER_DIR)/$(MEMTESTER_BINARY): $(MEMTESTER_DIR)/.unpacked
-	$(MAKE) -C $(MEMTESTER_DIR)
-	$(STRIPCMD) $(MEMTESTER_DIR)/$(MEMTESTER_BINARY)
+define MEMTESTER_UNINSTALL_TARGET_CMDS
+	rm -f $(TARGET_DIR)/usr/bin/memtester
+endef
 
-$(TARGET_DIR)/$(MEMTESTER_TARGET_BINARY): $(MEMTESTER_DIR)/$(MEMTESTER_BINARY)
-	$(INSTALL) -m 0755 -D $(MEMTESTER_DIR)/$(MEMTESTER_BINARY) $(TARGET_DIR)/$(MEMTESTER_TARGET_BINARY)
+define MEMTESTER_CLEAN_CMDS
+	-$(MAKE) -C $(@D) clean
+endef
 
-memtester: $(TARGET_DIR)/$(MEMTESTER_TARGET_BINARY)
-
-memtester-clean:
-	rm -f $(TARGET_DIR)/$(MEMTESTER_TARGET_BINARY)
-	-$(MAKE) -C $(MEMTESTER_DIR) clean
-
-memtester-dirclean:
-	rm -rf $(MEMTESTER_DIR)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_MEMTESTER),y)
-TARGETS+=memtester
-endif
+$(eval $(call GENTARGETS,package,memtester))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 10/19] microcom: remove package
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (8 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 09/19] memtester: convert to gentargets and bump to 4.2.1 Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 11/19] ng-spice-rework: " Thomas Petazzoni
                   ` (9 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

This package has been marked deprecated some time ago, because it has
been integrated into Busybox. Let's get rid of it now.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Config.in                                  |    3 -
 package/microcom/Config.in                         |    7 --
 .../microcom/microcom-102-001-speed-defines.patch  |   34 ---------
 .../microcom-102-002-rename-variable-log.patch     |   78 --------------------
 package/microcom/microcom.mk                       |   71 ------------------
 5 files changed, 0 insertions(+), 193 deletions(-)
 delete mode 100644 package/microcom/Config.in
 delete mode 100644 package/microcom/microcom-102-001-speed-defines.patch
 delete mode 100644 package/microcom/microcom-102-002-rename-variable-log.patch
 delete mode 100644 package/microcom/microcom.mk

diff --git a/package/Config.in b/package/Config.in
index 10d8918..32145d0 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -388,9 +388,6 @@ source "package/lighttpd/Config.in"
 endif
 source "package/links/Config.in"
 source "package/lrzsz/Config.in"
-if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
-source "package/microcom/Config.in"
-endif
 source "package/mii-diag/Config.in"
 source "package/mrouted/Config.in"
 source "package/mutt/Config.in"
diff --git a/package/microcom/Config.in b/package/microcom/Config.in
deleted file mode 100644
index bf9f5df..0000000
--- a/package/microcom/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_MICROCOM
-	depends on BR2_DEPRECATED
-	bool "microcom"
-	help
-	  A minicom-like serial terminal emulator with scripting support.
-
-	  http://microcom.port5.com/
diff --git a/package/microcom/microcom-102-001-speed-defines.patch b/package/microcom/microcom-102-001-speed-defines.patch
deleted file mode 100644
index b9aece8..0000000
--- a/package/microcom/microcom-102-001-speed-defines.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -rdup microcom-1.02.orig/help.c microcom-1.02/help.c
---- microcom-1.02.orig/help.c	2000-07-30 06:15:47.000000000 +0200
-+++ microcom-1.02/help.c	2007-01-19 19:44:19.000000000 +0100
-@@ -273,12 +273,29 @@ static void help_set_speed(int fd, char 
-     B19200,
-     B38400,
-     B57600,
-+#if defined B115200
-     B115200,
-+#endif
-+#if defined B230400
-     B230400,
-+#endif
-+#if defined B460800
-     B460800
-+#endif
-   };
-+#undef __STOPCHAR
-+#if defined B115200
-+#define __STOPCHAR 'h'
-+#endif
-+#if defined B230400
-+#define __STOPCHAR 'i'
-+#endif
-+#if defined B460800
-+#define __STOPCHAR 'j'
-+#endif
- 
--  if (c < 'a' && c > 'j') {
-+
-+  if (c < 'a' && c > __STOPCHAR) {
-     if (c == '~') {
-       help_speed();
-       return;
diff --git a/package/microcom/microcom-102-002-rename-variable-log.patch b/package/microcom/microcom-102-002-rename-variable-log.patch
deleted file mode 100644
index 8516b56..0000000
--- a/package/microcom/microcom-102-002-rename-variable-log.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-diff -rdup microcom-1.02.speed/help.c microcom-1.02/help.c
---- microcom-1.02.speed/help.c	2007-01-19 19:44:19.000000000 +0100
-+++ microcom-1.02/help.c	2007-01-19 19:48:20.000000000 +0100
-@@ -23,7 +23,7 @@ extern int crnl_mapping; //0 - no mappin
- extern int script; /* script active flag */
- extern char scr_name[MAX_SCRIPT_NAME]; /* default name of the script */
- extern char device[MAX_DEVICE_NAME]; /* serial device name */
--extern int log; /* log active flag */
-+extern int log_active; /* log active flag */
- extern FILE* flog;   /* log file */
- 
- static int help_state = 0;
-@@ -85,7 +85,7 @@ static void help_escape(void) {
- 
-   write(STDOUT_FILENO, str1, strlen(str1));
- 
--  if (log == 0)
-+  if (log_active == 0)
-     write(STDOUT_FILENO, "  l - log on             \n", 26);
-   else
-     write(STDOUT_FILENO, "  l - log off            \n", 26);
-@@ -156,11 +156,11 @@ static void help_send_escape(int fd, cha
-   case 'q': /* quit help */
-     break;
-   case 'l': /* log on/off */
--    log = (log == 0)? 1: 0;
--    if (log) { /* open log file */
-+    log_active = (log_active == 0)? 1: 0;
-+    if (log_active) { /* open log file */
-       if ((flog = fopen("microcom.log", "a")) == (FILE *)0) {
- 	write(STDOUT_FILENO, "Cannot open microcom.log \n", 26);
--	log = 0;
-+	log_active = 0;
-       }
-     }
-     else { /* cloase log file */
-diff -rdup microcom-1.02.speed/microcom.c microcom-1.02/microcom.c
---- microcom-1.02.speed/microcom.c	2000-08-27 17:22:47.000000000 +0200
-+++ microcom-1.02/microcom.c	2007-01-19 19:48:37.000000000 +0100
-@@ -25,7 +25,7 @@ int crnl_mapping; //0 - no mapping, 1 ma
- int script = 0; /* script active flag */
- char scr_name[MAX_SCRIPT_NAME] = "script.scr"; /* default name of the script */
- char device[MAX_DEVICE_NAME]; /* serial device name */
--int log = 0; /* log active flag */
-+int log_active = 0; /* log active flag */
- FILE* flog;   /* log file */
- int  pf = 0;  /* port file descriptor */
- struct termios pots; /* old port termios settings to restore */
-@@ -106,7 +106,7 @@ void main_usage(int exitcode, char *str,
- /* restore original terminal settings on exit */
- void cleanup_termios(int signal) {
-   /* cloase the log file first */
--  if (log) {
-+  if (log_active) {
-     fflush(flog);
-     fclose(flog);
-   }
-diff -rdup microcom-1.02.speed/mux.c microcom-1.02/mux.c
---- microcom-1.02.speed/mux.c	2000-07-30 06:15:47.000000000 +0200
-+++ microcom-1.02/mux.c	2007-01-19 19:48:48.000000000 +0100
-@@ -24,7 +24,7 @@
- 
- extern int script;
- extern char scr_name[];
--extern int log;
-+extern int log_active;
- extern FILE* flog;
- 
- void mux_clear_sflag(void) {
-@@ -71,7 +71,7 @@ void mux_loop(int pf) {
-       i = read(pf, buf, BUFSIZE);
-       if (i > 0) {
- 	write(STDOUT_FILENO, buf, i);
--	if (log)
-+	if (log_active)
- 	  fwrite(buf, 1, i, flog);
- 	if (script) {
- 	  i = script_process(S_DCE, buf, i);
diff --git a/package/microcom/microcom.mk b/package/microcom/microcom.mk
deleted file mode 100644
index f691723..0000000
--- a/package/microcom/microcom.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-#############################################################
-#
-# microcom terminal emulator
-#
-# Maintainer: Tim Riker <Tim@Rikers.org>
-#
-#############################################################
-# Copyright (C) 2001-2003 by Erik Andersen <andersen@codepoet.org>
-# Copyright (C) 2002 by Tim Riker <Tim@Rikers.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Library 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
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library 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
-
-# TARGETS
-# http://microcom.port5.com/m102.tar.gz
-MICROCOM_VERSION:=1.02
-MICROCOM_SITE:=http://buildroot.net/downloads/sources/
-MICROCOM_SOURCE:=m102.tar.gz
-MICROCOM_DIR:=$(BUILD_DIR)/microcom-$(MICROCOM_VERSION)
-
-$(DL_DIR)/$(MICROCOM_SOURCE):
-	$(call DOWNLOAD,$(MICROCOM_SITE),$(MICROCOM_SOURCE))
-
-microcom-source: $(DL_DIR)/$(MICROCOM_SOURCE)
-
-$(MICROCOM_DIR)/.unpacked: $(DL_DIR)/$(MICROCOM_SOURCE)
-	mkdir -p $(MICROCOM_DIR)
-	$(ZCAT) $(DL_DIR)/$(MICROCOM_SOURCE) | tar -C $(MICROCOM_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(MICROCOM_DIR) package/microcom/ \*.patch
-	touch $@
-
-$(MICROCOM_DIR)/.configured: $(MICROCOM_DIR)/.unpacked
-	$(SED) 's~gcc~$$(CC)~' -e 's~-O~$$(CFLAGS)~' $(MICROCOM_DIR)/Makefile
-	touch $@
-
-$(MICROCOM_DIR)/microcom: $(MICROCOM_DIR)/.configured
-	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(MICROCOM_DIR)
-	$(STRIPCMD) $(STRIP_STRIP_ALL) $@
-
-$(TARGET_DIR)/usr/bin/microcom: $(MICROCOM_DIR)/microcom
-	install -c $(MICROCOM_DIR)/microcom $(TARGET_DIR)/usr/bin/microcom
-
-microcom-clean:
-	rm -f $(MICROCOM_DIR)/*.o $(MICROCOM_DIR)/microcom \
-		$(TARGET_DIR)/usr/bin/microcom
-
-microcom-dirclean:
-	rm -rf $(MICROCOM_DIR)
-
-microcom: $(TARGET_DIR)/usr/bin/microcom
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_MICROCOM),y)
-TARGETS+=microcom
-endif
-- 
1.7.0.4

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

* [Buildroot] [PATCH 11/19] ng-spice-rework: remove package
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (9 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 10/19] microcom: remove package Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 12/19] libfloat: " Thomas Petazzoni
                   ` (8 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

This package has been marked deprecated in October, and no-one
complained. Moreover, it doesn't sound like a package that is widely
used on embedded systems. So we get rid of it.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Config.in                                  |    1 -
 package/ng-spice-rework/Config.in                  |    9 ---------
 .../ng-spice-rework-17-makeidx.patch               |   12 ------------
 package/ng-spice-rework/ng-spice-rework.mk         |   18 ------------------
 4 files changed, 0 insertions(+), 40 deletions(-)
 delete mode 100644 package/ng-spice-rework/Config.in
 delete mode 100644 package/ng-spice-rework/ng-spice-rework-17-makeidx.patch
 delete mode 100644 package/ng-spice-rework/ng-spice-rework.mk

diff --git a/package/Config.in b/package/Config.in
index 32145d0..70c807b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -352,7 +352,6 @@ endmenu
 endmenu
 
 menu "Miscellaneous"
-source "package/ng-spice-rework/Config.in"
 source "package/shared-mime-info/Config.in"
 endmenu
 
diff --git a/package/ng-spice-rework/Config.in b/package/ng-spice-rework/Config.in
deleted file mode 100644
index de5d091..0000000
--- a/package/ng-spice-rework/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_NG_SPICE_REWORK
-	bool "ng-spice-rework"
-	depends on BR2_DEPRECATED
-	depends on BR2_PACKAGE_XORG7
-	select BR2_PACKAGE_XLIB_LIBXAW
-	help
-	  Ngspice is a mixed-level/mixed-signal circuit simulator.
-
-	  http://superb-west.dl.sourceforge.net/sourceforge/ngspice
diff --git a/package/ng-spice-rework/ng-spice-rework-17-makeidx.patch b/package/ng-spice-rework/ng-spice-rework-17-makeidx.patch
deleted file mode 100644
index dcce6ce..0000000
--- a/package/ng-spice-rework/ng-spice-rework-17-makeidx.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/src/Makefile.in	2005-08-30 03:58:00.000000000 -0400
-+++ b/src/Makefile.in	2008-02-13 14:38:04.000000000 -0500
-@@ -882,7 +882,8 @@ spice.o: main.c
- 		$(COMPILE) -DSIMULATOR -o spice.o  -c $(srcdir)/main.c
- 
- ngspice.idx: makeidx
--	./makeidx $(srcdir)/ngspice.txt
-+	gcc -I/usr/include -I.. -I./include $(makeidx_SOURCES) -o makeidx-host
-+	./makeidx-host $(srcdir)/ngspice.txt
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
diff --git a/package/ng-spice-rework/ng-spice-rework.mk b/package/ng-spice-rework/ng-spice-rework.mk
deleted file mode 100644
index 113b59d..0000000
--- a/package/ng-spice-rework/ng-spice-rework.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-#############################################################
-#
-# ng-spice-rework
-#
-#############################################################
-NG_SPICE_REWORK_VERSION = 17
-NG_SPICE_REWORK_SOURCE = ng-spice-rework-$(NG_SPICE_REWORK_VERSION).tar.gz
-NG_SPICE_REWORK_SITE = http://superb-west.dl.sourceforge.net/sourceforge/ngspice
-NG_SPICE_REWORK_AUTORECONF = NO
-NG_SPICE_REWORK_INSTALL_STAGING = NO
-NG_SPICE_REWORK_INSTALL_TARGET = YES
-
-NG_SPICE_REWORK_CONF_OPT = CFLAGS="-I$(STAGING_DIR)/usr/include"
-
-NG_SPICE_REWORK_DEPENDENCIES = xserver_xorg-server xlib_libXaw
-
-$(eval $(call AUTOTARGETS,package,ng-spice-rework))
-
-- 
1.7.0.4

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

* [Buildroot] [PATCH 12/19] libfloat: remove package
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (10 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 11/19] ng-spice-rework: " Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:53 ` [Buildroot] [PATCH 13/19] hotplug: " Thomas Petazzoni
                   ` (7 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

This package has been marked deprecated in Buildroot last year, no-one
complained, and it isn't developed upstream anymore. So get rid of it.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Config.in               |    1 -
 package/libfloat/Config.in      |    8 -----
 package/libfloat/libfloat.mk    |   65 ---------------------------------------
 package/libfloat/libfloat.patch |   45 ---------------------------
 4 files changed, 0 insertions(+), 119 deletions(-)
 delete mode 100644 package/libfloat/Config.in
 delete mode 100644 package/libfloat/libfloat.mk
 delete mode 100644 package/libfloat/libfloat.patch

diff --git a/package/Config.in b/package/Config.in
index 70c807b..8c11838 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -322,7 +322,6 @@ source "package/libcap/Config.in"
 source "package/libdaemon/Config.in"
 source "package/libelf/Config.in"
 source "package/libevent/Config.in"
-source "package/libfloat/Config.in"
 source "package/libglib2/Config.in"
 source "package/liboil/Config.in"
 source "package/startup-notification/Config.in"
diff --git a/package/libfloat/Config.in b/package/libfloat/Config.in
deleted file mode 100644
index 3df9334..0000000
--- a/package/libfloat/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_LIBFLOAT
-	bool "libfloat"
-	depends on BR2_DEPRECATED
-	help
-	 Soft floating point library.
-	
-	 http://netwinder.osuosl.org/devteam/scottb/libfloat/
-
diff --git a/package/libfloat/libfloat.mk b/package/libfloat/libfloat.mk
deleted file mode 100644
index 0c4ae28..0000000
--- a/package/libfloat/libfloat.mk
+++ /dev/null
@@ -1,65 +0,0 @@
-#############################################################
-#
-# libfloat
-#
-#############################################################
-LIBFLOAT_SOURCE:=libfloat_990616.orig.tar.gz
-LIBFLOAT_PATCH:=libfloat_990616-3.diff.gz
-LIBFLOAT_SITE:=$(BR2_DEBIAN_MIRROR)/debian/pool/main/libf/libfloat
-LIBFLOAT_CAT:=$(ZCAT)
-LIBFLOAT_DIR:=$(BUILD_DIR)/libfloat
-
-LIBFLOAT_TARGET=
-ifeq ($(strip $(SOFT_FLOAT)),true)
-ifeq ("$(strip $(ARCH))","arm")
-ifeq ($(findstring 3.3.,$(GCC_VERSION)),3.3.)
-LIBFLOAT_TARGET+=$(STAGING_DIR)/lib/libfloat.so
-endif
-endif
-endif
-
-$(DL_DIR)/$(LIBFLOAT_SOURCE):
-	 $(call DOWNLOAD,$(LIBFLOAT_SITE),$(LIBFLOAT_SOURCE))
-
-$(DL_DIR)/$(LIBFLOAT_PATCH):
-	 $(call DOWNLOAD,$(LIBFLOAT_SITE),$(LIBFLOAT_PATCH))
-
-libfloat-source: $(DL_DIR)/$(LIBFLOAT_SOURCE) $(DL_DIR)/$(LIBFLOAT_PATCH)
-
-$(LIBFLOAT_DIR)/.unpacked: $(DL_DIR)/$(LIBFLOAT_SOURCE) $(DL_DIR)/$(LIBFLOAT_PATCH)
-	$(LIBFLOAT_CAT) $(DL_DIR)/$(LIBFLOAT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	# Remove the binary files distributed with the the package.
-	-$(MAKE) -C $(LIBFLOAT_DIR) clean
-	toolchain/patch-kernel.sh $(LIBFLOAT_DIR) $(DL_DIR) $(LIBFLOAT_PATCH)
-	toolchain/patch-kernel.sh $(LIBFLOAT_DIR) package/libfloat/ libfloat\*.patch
-	touch $@
-
-$(LIBFLOAT_DIR)/libfloat.so.1: $(LIBFLOAT_DIR)/.unpacked
-	$(MAKE) CC="$(TARGET_CC)" LD=$(TARGET_CROSS)ld -C $(LIBFLOAT_DIR)
-
-$(STAGING_DIR)/lib/libfloat.so $(STAGING_DIR)/lib/libfloat.a: $(LIBFLOAT_DIR)/libfloat.so.1
-	cp -dpf $(LIBFLOAT_DIR)/libfloat.a $(STAGING_DIR)/lib/libfloat.a
-	cp -dpf $(LIBFLOAT_DIR)/libfloat.so.1 $(STAGING_DIR)/lib/libfloat.so.1
-	(cd $(STAGING_DIR)/lib; ln -snf libfloat.so.1 libfloat.so)
-	cp -dpf $(LIBFLOAT_DIR)/libfloat.a $(TARGET_DIR)/usr/lib/libfloat.a
-	cp -dpf $(LIBFLOAT_DIR)/libfloat.so.1 $(TARGET_DIR)/lib/libfloat.so.1
-	$(STRIPCMD) $(TARGET_DIR)/lib/libfloat.so.1 > /dev/null 2>&1
-	(cd $(TARGET_DIR)/lib; ln -snf libfloat.so.1 libfloat.so)
-	(cd $(TARGET_DIR)/usr/lib; ln -snf /lib/libfloat.so libfloat.so)
-
-libfloat: $(gcc_initial) $(STAGING_DIR)/lib/libfloat.so
-
-libfloat-clean:
-	-$(MAKE) -C $(LIBFLOAT_DIR) clean
-
-libfloat-dirclean:
-	rm -rf $(LIBFLOAT_DIR)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-#ifeq ($(BR2_PACKAGE_LIBFLOAT),y)
-#TARGETS+=libfloat
-#endif
diff --git a/package/libfloat/libfloat.patch b/package/libfloat/libfloat.patch
deleted file mode 100644
index 90459a8..0000000
--- a/package/libfloat/libfloat.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -urN libfloat-dist/Makefile libfloat/Makefile
---- libfloat-dist/Makefile	2003-10-26 00:33:45.000000000 -0500
-+++ libfloat/Makefile	2003-10-26 01:07:26.000000000 -0500
-@@ -1,7 +1,7 @@
- # Makefile for the Linux soft-float library
- 
--CC=gcc -O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__
--#CC=gcc -g -O2 -freg-struct-return -D__LIBFLOAT__
-+CFLAGS= -O2 -freg-struct-return -fomit-frame-pointer -D__LIBFLOAT__ -msoft-float
-+LIBGCC=$(shell $(CC) -print-libgcc-file-name)
- AR=ar
- 
- all: libfloat.a libfloat.so.1
-@@ -12,24 +11,24 @@
- 
- libfloat.so.1: softfloat.os fplib_glue.os
- 	rm -f libfloat.so.1
--	gcc -shared -Wl,-soname,libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1
-+	$(LD) -shared -soname=libfloat.so.1 softfloat.os fplib_glue.os -o libfloat.so.1 $(LIBGCC)
- 
- softfloat.o: softfloat/bits64/softfloat.c
--	$(CC) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
-+	$(CC) $(CFLAGS) -c -o softfloat.o -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
- 
- fplib_glue.o: fplib_glue.S
--	$(CC) -c -o fplib_glue.o fplib_glue.S
-+	$(CC) $(CFLAGS) -c -o fplib_glue.o fplib_glue.S
- 
- softfloat.os: softfloat/bits64/softfloat.c
--	$(CC) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
-+	$(CC) $(CFLAGS) -fpic -c -o softfloat.os -Isoftfloat/bits64/ARM-gcc softfloat/bits64/softfloat.c
- 
- fplib_glue.os: fplib_glue.S
--	$(CC) -fpic -c -o fplib_glue.os fplib_glue.S
-+	$(CC) $(CFLAGS) -fpic -c -o fplib_glue.os fplib_glue.S
- 
- install: libfloat.a libfloat.so.1
- 	cp -a libfloat.a $(DESTDIR)/usr/lib
--	cp -a libfloat.so.1 $(DESTDIR)/usr/lib
--	cd $(DESTDIR)/usr/lib; ln -s libfloat.so.1 libfloat.so
-+	cp -a libfloat.so.1 $(DESTDIR)/lib
-+	cd $(DESTDIR)/lib; ln -s libfloat.so.1 libfloat.so
- 	#ldconfig
- 
- clean: 
-- 
1.7.0.4

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

* [Buildroot] [PATCH 13/19] hotplug: remove package
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (11 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 12/19] libfloat: " Thomas Petazzoni
@ 2010-12-12 21:53 ` Thomas Petazzoni
  2010-12-12 21:54 ` [Buildroot] [PATCH 14/19] alsa-utils: convert to autotargets and bump to 1.0.23 Thomas Petazzoni
                   ` (6 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:53 UTC (permalink / raw)
  To: buildroot

The package has been marked deprecated, is no longer developed
upstream, so let's get rid of it.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Config.in                   |    1 -
 package/hotplug/Config.in           |    7 -----
 package/hotplug/diethotplug-0.5.tar |  Bin 40960 -> 0 bytes
 package/hotplug/hotplug.mk          |   45 -----------------------------------
 4 files changed, 0 insertions(+), 53 deletions(-)
 delete mode 100644 package/hotplug/Config.in
 delete mode 100644 package/hotplug/diethotplug-0.5.tar
 delete mode 100644 package/hotplug/hotplug.mk

diff --git a/package/Config.in b/package/Config.in
index 8c11838..1d85af1 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -169,7 +169,6 @@ source "package/gvfs/Config.in"
 source "package/hal/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 source "package/hdparm/Config.in"
-source "package/hotplug/Config.in"
 endif
 source "package/hwdata/Config.in"
 source "package/i2c-tools/Config.in"
diff --git a/package/hotplug/Config.in b/package/hotplug/Config.in
deleted file mode 100644
index 48f1d71..0000000
--- a/package/hotplug/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_HOTPLUG
-	bool "hotplug"
-	depends on BR2_DEPRECATED
-	help
-	  Plug in new devices and use them immediately.
-
-	  http://linux-hotplug.sourceforge.net/
diff --git a/package/hotplug/diethotplug-0.5.tar b/package/hotplug/diethotplug-0.5.tar
deleted file mode 100644
index 80886707097c1a5bd334c90966e5e4f2f3854c56..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 40960
zcmeHQd3PH(lJ~#lr$Fe~reso=&#_~_ktN#ZTUpZ6kxbT;<u=Kt)MK)n+fC|-<NfUW
ztHRMhAEYG9*<?ccJ(&#@fI?NFE}+4F;7?AY$#^(DX|An2S-tZOK5O_qd-CKC{#$?c
zWX=Acs_1iPeeLnnr_b>B(c?R7>yOu-J-Q>Fd;?r^T~3pU7YlL63;TYY_+bt}70jzI
zYxf5)?`Qb`!TaP7f}ww#XcL2<J_cWl`M>dK{aJ?pPo6w_dPl6?CK6?R{l)ozS7?rl
zK@<y19IDm3;?SRn$*GU3;V?Q6!V@ux#D7oXssDh!jUX(-6MersJvs5ZLtk{K!LYxA
zmOH+8=A&(ph=e*pvw=5E(2j-~$5DUUn*>oPris5&-EO@(ekWcD2BCr5192Hmg%|rG
zo`xZf?1^3+C5h-oqcH?DZZO2iyA<bM$RqGT7!mC;UJ{L<+Nk9yLN`G;@nb)kpr9d!
z0T8cw@u)cr!s$h`wjxBE`=h>Odo_+YOT=_*7<79LOvjsuo)?O)FZxmFi&JzdyhNP)
z!{JJG>tOHj5VN?uI!)r$;L-D^s{3h=+H+|)2xW~dYgV_m(Bk_#w_Q5v^{Sf(R)H5+
z504Jo`&LmhiGy*Khy>D!2hF|Yfr!SFU=;l7F-3!c at XowoNDOHRA4F%!=H5niZ~v(M
zq5YqmNA0~`@dD$1PELWkKog*_wItA+Xda4YBv$+W*=jgNW%HtEJ-tpVHeTOfe<}W1
ztyCZ*q40aBk*J}E+DkdAF4(AvmtqinsaAj5JlJjTzB{C`n?HHf`A^BI*N at KW3ntc^
zG$9+4XmUCBlj_#noy~WL4_`IM!Puu615YU`5Gy~V3HFIA82p?#BEo1Qm_7nRrikKK
zgMt4)qW*nd)_h;*E|!)WB*#nDiX26Vhr|bsA(3KTG*3ixTaMV=?!4PQ?i}tNA8fU%
zm7Q(IjT$w78aA5eUK}<dGNUN0R+wd5AGX1 at Rbn^|1hNKU&+nZ39Y}RYt{Dhpl^9ft
z#P@ZZWk6~Wje<#Y5PKuPIgVJUfnq6Y;N~pszOOT?=of&^*dIk_elziTWxiSgHGy`n
zm}co?mH1&l7(fug#uq~Q5Y?*sVoFwe)ryoY{AHRgfy|10OS;`kk7Q1Ff(Dv|2BKQ+
z4Sg?sQLV%y(ToSs16X^ig;-ws=taL&t7Te#QC>m;OX0KsrwF>zD}ldB at ofA5^a=TV
zuK)Ms*`p^5`+pN!U$@Qba#bwrWrVdV_<2*D!5Jp=91X;3LOM*ZG`4|IzocqCk at R4U
zCM&AhRy4khgOk&VsKb_Qz}*w?V*f<^M;v*l&G%kB8Nqn|aDuYGf1<J#=#tm6apj17
z1t|X$=r)0`gV^_B#0L|oR{td%XEMF9-w#NUcc)NJ0dNTWt5Ei%2+HUZ1?a6ZC10K$
z7uft!LX#jb2KrmP^Fu%OhGKu(9R@wI6ZHHL1`;-WOeHXfebK!naO&tS;c%#M5N{)N
zEN!eN&xY<>b)+bfn at oyxAD#$fa~h4wL4rqtS)2#3h43n1(g)LF1AY`w<fr!0`@Q2M
zvAO%RfMq(^+&%jFC4dpKO(()XgW;oz1*7pW0OFuj4FBa4ND=lQS_fP2(PZ;Yd#8Q$
zGugzq?W5fmoRqhF2Vzs~Zyp at Aw~lw<a_k=;?C%}6;0GOI%8FXlNeRKoi(|j4?@!=s
zBzodM!)r@`-LNlC$pei2o*$e6H at I(*4o$9EtQbbHiWr%u2~1L{cuDpja@P>&aRBba
z$s<I|nA8yMu(#5nuAV-70zVhd<K`J$qAhRKjf4IPzJAygYa8p2{?-u3hnrfA-+R4J
zz<4^Q5n|u#^Dt*#97NNEByBqMla=L>H-=Y(uOx%))`EK&jTro9nq0n#E=ZJGaqvlO
zs_0VupySBD_oBW(j{M0=6rZRyuu5(nyoBMj?~5P&I1Zzg)7Mr}GU*5TA}>D4f%W}C
zt_)6Swk(DRk}11PhEb+$8e+-yb8xF;4{J4FJe?#V{1d9E-UT87JmsDCZfmEt`|jwy
zc)tF(4NP=(S+v-NQ(Pt4hnRqxkpASd3+j2}@esko at +wF$5bITh>Ju#5UKA$q!%q>n
zFRKSYc4$m^Ts5VsYA-eXSrqh1p~X?$86_umyM59SXI=*je<H?9)z8(+U@)8}r|=c~
zSYk^rQ7{IPCIc!#7Y$MSXGs6<B`-v+K`8RT1bLPPMdxEwe5v{uP(-0%M7rHhDJm-~
zD~yCe>17q&dL7D9OzPu?NO+vIy&8dF;EvU4v@(Qij7cdf9SCLz-awW*-x{Tge-TXT
zt$(zSI&U}IJI4ntiKpVV<lQ)(@l57{Q39Zl0{jglq8<dNo`_ek#2Q@v3ciUNB%@-9
zgQg)tE++;G>@6bZz2si<&k&qPGuR<Utd74+*Cu`Wq^?MFs{=g;OAZijWyCIp|4L at 3
z9n}j4F5zhT;vFIGh%Y<-#i@sE43q$PB+G;;1262^EMJTec0|2;68!3S5cJ_cxpHW&
zFOMfA0~QFFBSqmmR1u5qRcNSDC!Mmql*NZQ8~c+fRxn!Add}bi8^Or1ur5bK1f`{T
z5h751httCik$9JhsI><SO+L>Wn-anv57NWp5L`ui9P3sq(0Wn#Ux?C#EQfuHw8zw6
zsR^-7h7pbhr6(F>j(Q$^9EByfm(w9#yL-H|L+Bzll|gj)0Pcv&s34+8qJ$k5&U_$O
zL)us_Dv<out2J@|zQBx^#Ai^Ie6~70fnu6uGyon!w2EYlrk0@-LDS;99o}e*qs%~O
z<ON}c{#5U(h!x8g$tRIayU8WwZ3NT>KDK5NWK3RiG3k^#Tx94+WSy2oowy8?zkriU
zBnbpYvorFO#5?gtoeSWe!IQIl9gN_+(Bc-N)A1(Ci|uqoz251-qZ)aWP6uD5#p!e!
zVxu7*Es<)mMoQr9O*)Uxyx|nShpVsACFQqh{4RLj5YsRTPC~3HDq4oEL!<RZ6)tkV
z9D@}VKPno2;~Na`j?=@M>ZCj>oM(=c%cg<b*)a0@9qGBb6q9Azgj-aeCf$zWxna3g
zJ?;gwssrEm;Z{D*!5D{Vb9=i(Nsirjm73S@*G$Dh>%-oUEmJ3xGBt9TR<&r$jMO@L
zMR2cVO3d~WjSE-NE&AP)x)d<DEN~Y|29YoO?27Hq-n$O>-GF?)J>K1-JR!uh23trD
zF66Tz?%t&ymR^c4;`|iuuc*Va-j!Lbxx=|_R04 at avp1e*Xa#4CRwZ=hE<#Po3aIu~
zE>-Gyjg>LA5B<qkweLs0PdDyBnYNrXlGaH at _~S3INpe!3MGXQ}YgA~4wkUl;xPlMr
zA%Cjgmc+DPOBg&6A at qZpK?(=Ls(x$|r}ZG5s<%m)))QeAfI}k#!3KmULf^y}R*b|F
zTLH61gxDa7F8y|VKl}I#nQWRbX at 9B}- at OtWY)T-oqF$SZpTg)o6ybE#MMRG{9#B)t
zJ|^VOY7?_AHT4%QFk=e!pm-;7G}KX|Q4As(`@LX5@iL+_#$){#Hfw~560EH9QD6=D
z6gEqN1MC{dGDj4Lt5q)s(~xth3CAuf1ZuZhE!GJiHjlR6cYbW`Ztop*+S`@23)&eo
z3LpdbVQ;&&LtqkaqYUnFzqQqV+is;@J}v|Ov2}2Wm92VwUPYk97E$A`G$l;un9RCu
z!c_Rn3KI-)>;=?A at 3b=*dM8P?3Ym&NqOYKzt$_aZhXv)DNkwf`@&&Zdnb9$a?qo3C
zHCZ&X<$^-kbavuQ6@~vDtWc0b8h$0QZ`(U9VR}Gqhf)Dj4iz<37%bHPPMzsr*&m|x
zGQ>K*gpMevl#S)m8OQ#aGG#KDA-Ux$LV+BYj~_PwvA=or9s&0+R!i)4`5)6j+^&-S
z<tte=Bkcvf4;0C%1%+rlTCr0atA1b2Z%O=s7>ndZh6l8IQP1m?W4v{6g__D`ny9c^
z<BY(16$y$}iAl10FVSCDG(CU;w4Kf_#6I=|5?^&n_|z>xW(R0FK$b16TZ6>4r6mdn
zNm((rhy>Dj#)Ja3EzV()4^BOZdkKct-I$5+e0oG54mX%U_y)5?6J_&QADsA;q)xPN
zSXmJGXi8aV*;yjxr?HX_F*9rpX5*E3aQ6Yi7V4Gs8a6G75m=cR`r$(?Dw at AU<TV98
zj0sPVnyBZ8uh!Rq8uy|{x0m`WaiM+lg6an1Xz)LxOh}owSb~eG2M3XOq#05z9%42`
zyrzH(XK2J;*v74MqlQ?!>Y$hy2jCQC5Gj%bx#EGMdhH$}tBZRVMSp7Wh2_AU*3(b-
z8G+_&OQki0E;Pz42d$J at 3TmsdEVNQ%%=f2;S9V}puc_5wF9G=I$h#%H-A)4X0<yWn
z83}sQROd*HC!tGHx#3t0e$}4bHTH!HwmFEE`EBIj0<3u*I?`TxpLW`@Qwe$E%<c~D
zoC_I2VF#R&wf_q?G+@h2jugA<$j}dyh?`OW=h#h8$R_^_p+2}j!d!e6$HrXYu>yuB
zq|H$p4Z!5SBUV*fZ*q>Ty%mT~;@)UnmzBu48TH7Nl`4r=L0W+&YVrq at 7&=omUV2D6
zip2pk-Wy-m(>73mEFlE&rCQPQ!DTx2m_pl{ZqOS>iJwzW=;({KQlw_nB}Zly%GC<c
zQi*dTG)KJLDlJ{w!=e!+Rx}vg90YJmmrGyEi~;K0yFf}nxk+S!RgvnGpJ?F_RZTOu
z1=6Z=2MN<;Wk?$a^#D!RkjB^1kt8Yk86SgRR at 4(&4Xq1biiZyaUK<k0VHACWTnJ<%
z?jiMLEl-0~Wq$9p63d`cABH&Xm=#M`GP)_KxGyqZoAK_JkRZWuhW(jN4Ebor<^d+^
zvm~$08yI=N_X&q&VCMVa5jDAYVKi9Dj7+Cm|Cj=rAhFQV3^$*$?SRgiwIf@Yh5ekJ
zyIprP3fMhpBG_fOOb6v%&mn<cOU!oOYt2qvL)?(-+^3#yx)=*M4pT6I8SV=lY5I=y
zdwQ{XeOhen`;<tRwPuNoQm<ewItiDnwWYNt+bd5;#bR1lk*LDH(|@W)hW~|16e$&z
zwowXD`p!!B{qRicLRp#$L#9HJ4SOpJo^&Ut{AKfEC0$ULjzA$0O(D~ixutz;tsd>*
z1Jvbq=?p++xRyW-fwECI<Ze^<>3{@aLE5WS16$LyL6snDDAtAc at Y-Gd?Ki1M>X|`v
z_0Bk|)>7`HAVD4)${lCP!m}WbLW=Z}vy20Imd)!%F&*GrA(RS(f1}$l518-?oOp<V
z3_j6kL#4adpXSKKM$R;GW|C{A=HZUP93)9`z?m5=F at R3j0htbiSU~#)mbJ~<P9^S2
z@F?S;qFcvrkeNbP>an!tfefTk()2zue_nVg4 at dG5#usqh3leL380GM%DHJmiQ{*JK
z(%fbm=5%O9nxv7F<g|d)91I*MmzZfPu~c=Y>?UZPl`cHaz{u4gzuU6C$+=A}+EU*c
zC{}p#Ny!PxzOL3{4GS&XX}Ohs-dJ`OmvgBno`*#vLv!E;SpbVE_k<ipaoTBrtKGr*
zkqSO*7X$S%DIZEcre2szPnIWq3N#lbb_!G)j*r4iFQ@?eazPf?mA2~*k<}|`!{u-x
zlTX)42xaEI>^?)+auh<Pwi4#8A14C@2zam8Oa8cHrFkE>ykM&R7)NR14$dHXvi2{U
z5RycnoeQ!UgLVJMO#@kY{=OL?SK2@$ll*aOaw!<MdREHEg}gzw$L)ZIN)tUY1P9(O
zkUPpXvq5Qw$V63AIch)JO#!8O9;vmmP)60IfG8@4Wi^(<rCQB&YOQ{jl;<W$EY2B$
zE>KO2bkUzPT_m~3hDF+W%jIK<=j?;Dq?C%!Ws5SK`Ki=Z+}OhsQl}S3QZsD`0hUm+
zfmfVf%DD?tta0XItil;5zabM(5>qT}&O&K#A$_*$-6T{4Zz7S?0dHEj;;*t4RAgt|
zPDC*wWeV?xIVc#RnVn!%nNi6 at Dc&Igpj<SaF_;A^8|704<b}=2j+Avv;RZD)REc2)
z>7aa5#e}OMpMokz7`-K#uj*%~Im$55Jiiw5Mm#8kHkbGgw0X#~z*JnD3#O$dx7VFc
zO5>|cCxyn?#Y{03H<^y?(p`Ib(c*J(lIwh0jm~njevoNhoNc0`W~s)22B_!7K(_cV
zUWNP}tEgZ}%5G$ozzfpq7ebKk5=fbpy%PAf=g&=X%z?s{4r#hVUh?GUXWjDiy;8z$
zZnK-_+A>C{B+Dk}j#P*pr3C#nji%CWd;l*kou6DQiiy5aoXNI==xE1(U?rE!xj-Og
z0<K=8RoC9u=>#ku?2FOFG9ZV?Zw`Mxv>*+oGJsn<n}>(GJ5IdmA$9g4O}bfw<tnZI
zZ$01Uq_*UtL~|-oV%rewPvO!^^MWr*)krSVtT>~EY_FT(A|s?zW|@9d%BsFmV7fOt
z3v8l3W{<$60ohH?&(Nwofye90alG{4mdevb1|6jgwD7o-&1CbW#L;`0x0%Ru55q_z
z(!p06%{-N*@G1l~BYVg7g^9aLC37T<db&!^j@hU4ZE2SK&zH1w2n+!rZmWbHj`bBM
z?2ZrL;1uSM?X4CRMaMoYrVebSN5zUj_Yd~AkGGC;$Hj_ZF-&J?Pl2Y##mYe6w-xAf
zbF!=qlognSUSFFF4ZSEE&{4RJ`S6(I(caeH4j+koJR82fd(^S8c|IT7#s>L at nb=eB
zHa2+aaVETEEcSzo2q$-O#BX>REiVF!uQ+R~&Jz{^5kv8o;Ja4I2$JC?BT(i0_S^wT
zFgJI%aez^tA}pMWoac;z7|Xe1b=tdcA)jSKNXB9mx`co}Wi-(&y#lD_=4{-E?=x^S
zLN{kXg1aJawxlhY{5>5GcJlYPaauFz|Hu&`0zxMx5cK!u#U0s-Zm+-1epqLSm#*AK
zY29g%tCOv^WNJUtPSzbxyR)i+&?M?bILeY~-KP6K242rEZf&Yd`!^8j5LZ8MnqkYb
z`>eMYsFdAHd_n%9;DD*DxZd`HJ65{A;FjC2d3tUM{t&$$N8S_r==#LtzuAdWN!HmL
z2o~u<l|SwVf`#YryMf@!6KG^M5Zs#F27+5XYXiZBbW{7BP?&dI)a{^T1HlDyN4fC^
zLb{cZew(wYV4Y at 5Hv+USHroK|<e|~UDQK!`hfx+htvd~@7MA|awQ%)su8~%Yxpqcz
zvgWngnF_6Q%bV)XS)$kFD<Pzmig!A|z{O4n-o*NI?sQ1*74LNL(zF6@yc&sgJzn0t
z!j6Xm&Fq7ig)nF9f^A^I?u14_Zcmurp#JD6rb?yLDP+bIH+g8+NQeLS{)4M|ZtDyz
zPFUMcVWwNqBVWxV<~MhMCg(?I0wKj(=8_{inCtbM4FJw;%^Ru6r<akE+Atx-P|x?G
zHD`LVR_5&0sU4Z7DNFAb5J~r^nM{--Z(F^M!S)Cz!wH)k&r1h+^3ZVU#P-!HK;~Kr
znlm*mqa|A^g>zF~8p-_ at vy;*1Y_6I0f=~i)6q!e7f~J&!va at _GS7Kfu>{jl=ymdaR
zP<kdCQ*=%Pfwy+dbIDWzm7VGjO6$y;E7|+B>vEaRp8_WFlNyjt^O}>u`N1-K64VY!
zPP||Mt>_#CzEV?KJhC}5!#XuA3xK_RdklFrH45FzAkP6?dlNhk>$JWMOM4VyW{d`x
zWvl~|p+&`5P#k4m-Db!E%^tS>s5{dpLk*Y?tpWbcEJl$Yr*%SUl&`l4)Dx%q=BO9T
z<0Zqu#CH~)WL0*h0hH}~UV^(;k7=g=n`jiBDZ0`WwUbS=)UxGFR2Sy7%G|l?u6c)7
zQm|aF+}IWpM@=$rwkDM<fC=MON;5WVh$Tyzd|i0`8SAduJW5qiKI1>VCe`P at 1Dxtf
zRVkiiMok|5S!mO;chCy_E6YOOlK)+#O?6WG>$R!LU(ZoBCZykD1B-=s3kuck^c(6_
zJNtgsiE7<<t7_HESoi*IHLJ6gFk7=4%(Mo)RppxN{jaHCOODaNTv4tgJs=~G&CuQ0
z*|NasW^?KWMWwH*=}=Z?`pfos$isH(Oc+tn&UUoRtF_Nj4xw#y0Yo}U>7$v8791o~
zC_NY)ZA1vU*`$DaObI9<Gg~v-7q@r<X!HJ^ire*x9nB&e<ml)9mab=?$muF~awqNL
z)(`FwCEW8h<}xu0Cw0I^iwg3%cFNg^0tiF>(Ts{u^Ki8uF7+m4`X$ZhrQ=w`+;Ei4
z4QZN`m=P|NP^XZj6N3yiVXw=y#H3JKH0Dl|y2;PdUKOHlKk0+3bpD3L*%VxPNTw{D
zP27DS`gkLpFG`3$(aZ64meR;KDkA-UpDA=sr{N7!*o4->+s!RUMl;Y_NI&a0-%LH<
zSBM`Az}39`(+IdjkZx|m6)1#EM0btRi-zSdZfeqHSZ4+xbQS;7GD$bZ!n8Q0=>4?t
z%2X|8WZIF`J#?X!?G4ji8M+`HKP}4)Kl2P2Et22yWlkCnD9f8XN)Le%)T~2b7Sit9
zo6aFHetnZb|5B&G9125|s8e9alK?k4URtNXXc^0U$>_!veOb0)PQsU--~bujGVPp<
zL;;me@PjOLsVB}fQo0WJrO8|SMC}5f7nk_d<Zac#$rQhaBIp`%=n879E_9^r2?Ay?
zYJj>`W}7phdyAqRkJmuqy_4McdM4Ml%%vMTr^e1rcRCpO at kgAZvTvtareoCVk~jO^
zR4U#`UnHs5)Vz_aq3fFDleXMsp>(}cWai*$Q+2LjLR<->fzge;^+=+I3<^@UnIfkj
zt(C_C?&_dB#G#4@L5$mO)Gc=EO>3SL9EAI7&U(f?DU?fGrFB&oEv|E5M at TY7Huzd&
zoS0MhC3JC?1TVqz_Du@#;Dx?9O4mzrVh9O at 77rgP3af7*Dyc!4Yc=3>I8Rnc)~!n{
z<xBQ*7W(KcT|TNzrpzGAYBXTZq;qzFq?iy;AM8_u*!)XpMYu3EVE+_Xab+$}EzvK+
z(5+o3QN*`J>IAZ8vC15y8Jss}4u0<>!sQoN<Bp`1qR;i%V(9plWCz=6%C}5*>eV9q
zh9<kRR5Hcxs2=4sUP<+=k|tUG6`!l>AN;%%KDezEtf6)pHDo+iTOUY4C|5%_y#Cg{
zS3oV+g at U?81+}_RP}s!!|5s41VR`V)*z)@-Fn3nBXg6?wO8h4>8;`z;*`Qu6vq5)-
zv+LlR4a7mXgZ}I8^Hy4zx(d`F_E8$+B-3%1;w$8|cZb^oE$_}mKB^u2jdUlVv?g%)
z)Q?AyN2I3Z45mVvI;NgFO$rcxB{}<qw6hUzTP<sE!10Bb`O@J>aD=&Eexl1jaZxJ&
zA`{vns_gpeyso;U81?)!1_HlhAm3~zVo1~&WP`e(_i|*JyTLD;NGHu|uBMjYmPfj`
z2z38cmwSo)%K~foRW_Qs%tg?Jj{GhsZU?8Ejc|P<Za}5qapYp)%s=r&FLzQS|HALl
z6;_!^@jc~d7+3+}M?%*0lXhfz@OpE7NsTY(LfENG@?^e&M$t|1?u0iTPE-R`N&wQ=
zb;S0%zooT+Ur=B{fdvH?6j)GTL4gGY78F=eU_pTe1r`)oP+&oU1qBuqSWsX=fdvH?
z6j)GTL4gGY78F=eU_pTe1r`)oP+&oU1qBuqSWsX=fdvH?6j)GTL4gGYeh&)#9~+}2
AQvd(}

diff --git a/package/hotplug/hotplug.mk b/package/hotplug/hotplug.mk
deleted file mode 100644
index 0b354a8..0000000
--- a/package/hotplug/hotplug.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-#############################################################
-#
-# hotplug support
-#
-#############################################################
-HOTPLUG_VERSION:=0.5
-HOTPLUG_SOURCE=package/hotplug/diethotplug-$(HOTPLUG_VERSION).tar
-HOTPLUG_SITE=$(BR2_KERNEL_MIRROR)/linux/utils/kernel/hotplug/
-HOTPLUG_DIR=$(BUILD_DIR)/diethotplug-$(HOTPLUG_VERSION)
-HOTPLUG_CAT=cat
-
-$(HOTPLUG_DIR): $(HOTPLUG_SOURCE)
-	$(HOTPLUG_CAT) $(HOTPLUG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(HOTPLUG_DIR) package/hotplug/ hotplug\*.patch
-
-$(HOTPLUG_DIR)/hotplug: $(HOTPLUG_DIR)
-	$(MAKE) CROSS=$(TARGET_CROSS) DEBUG=false KLIBC=false \
-	    KERNEL_INCLUDE_DIR=$(STAGING_DIR)/usr/include \
-	    TARGET_DIR=$(TARGET_DIR) -C $(HOTPLUG_DIR)
-	$(STRIPCMD) $(HOTPLUG_DIR)/hotplug
-	touch -c $(HOTPLUG_DIR)/hotplug
-
-$(TARGET_DIR)/sbin/hotplug: $(HOTPLUG_DIR)/hotplug
-	cp $(HOTPLUG_DIR)/hotplug $(TARGET_DIR)/sbin/hotplug
-	touch -c $(TARGET_DIR)/sbin/hotplug
-
-hotplug: $(TARGET_DIR)/sbin/hotplug
-
-hotplug-source: $(HOTPLUG_SOURCE)
-
-hotplug-clean:
-	rm -f $(TARGET_DIR)/sbin/hotplug
-	-$(MAKE) -C $(HOTPLUG_DIR) clean
-
-hotplug-dirclean:
-	rm -rf $(HOTPLUG_DIR)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_HOTPLUG),y)
-TARGETS+=hotplug
-endif
-- 
1.7.0.4

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

* [Buildroot] [PATCH 14/19] alsa-utils: convert to autotargets and bump to 1.0.23
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (12 preceding siblings ...)
  2010-12-12 21:53 ` [Buildroot] [PATCH 13/19] hotplug: " Thomas Petazzoni
@ 2010-12-12 21:54 ` Thomas Petazzoni
  2010-12-12 21:54 ` [Buildroot] [PATCH 15/19] netplug: convert to gentargets and bump to 1.2.9.2 Thomas Petazzoni
                   ` (5 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:54 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

[ Thomas: remove all patches, since they have been merged. Implement
  the target uninstallation step, fix many issues. ]

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 ...tils-1.0.18-check-if-__use_bsd-is-defined.patch |   13 ---
 .../alsa-utils-1.0.18-fix-intl-support.patch       |   11 --
 .../alsa-utils-1.0.18-fix_sysv_legacy.patch        |   20 ----
 .../alsa-utils/alsa-utils-1.0.18-remove_man.patch  |   11 --
 package/multimedia/alsa-utils/alsa-utils.mk        |   99 +++++---------------
 5 files changed, 24 insertions(+), 130 deletions(-)
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-check-if-__use_bsd-is-defined.patch
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-fix-intl-support.patch
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-fix_sysv_legacy.patch
 delete mode 100644 package/multimedia/alsa-utils/alsa-utils-1.0.18-remove_man.patch

diff --git a/package/multimedia/alsa-utils/alsa-utils-1.0.18-check-if-__use_bsd-is-defined.patch b/package/multimedia/alsa-utils/alsa-utils-1.0.18-check-if-__use_bsd-is-defined.patch
deleted file mode 100644
index f0d3209..0000000
--- a/package/multimedia/alsa-utils/alsa-utils-1.0.18-check-if-__use_bsd-is-defined.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: alsa-utils-1.0.18/alsactl/init_sysdeps.c
-===================================================================
---- alsa-utils-1.0.18.orig/alsactl/init_sysdeps.c	2008-12-01 08:27:16.000000000 +0100
-+++ alsa-utils-1.0.18/alsactl/init_sysdeps.c	2008-12-01 08:27:22.000000000 +0100
-@@ -17,7 +17,7 @@
-  *
-  */
- 
--#ifdef __GLIBC__
-+#if defined(__GLIBC__) && !defined(__USE_BSD)
- static size_t strlcpy(char *dst, const char *src, size_t size)
- {
- 	size_t bytes = 0;
diff --git a/package/multimedia/alsa-utils/alsa-utils-1.0.18-fix-intl-support.patch b/package/multimedia/alsa-utils/alsa-utils-1.0.18-fix-intl-support.patch
deleted file mode 100644
index 317c472..0000000
--- a/package/multimedia/alsa-utils/alsa-utils-1.0.18-fix-intl-support.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/seq/aseqnet/Makefile.in
-+++ b/seq/aseqnet/Makefile.in
-@@ -252,7 +252,7 @@ clean-binPROGRAMS:
- 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
- aseqnet$(EXEEXT): $(aseqnet_OBJECTS) $(aseqnet_DEPENDENCIES) 
- 	@rm -f aseqnet$(EXEEXT)
--	$(LINK) $(aseqnet_LDFLAGS) $(aseqnet_OBJECTS) $(aseqnet_LDADD) $(LIBS)
-+	$(LINK) $(aseqnet_LDFLAGS) $(aseqnet_OBJECTS) $(aseqnet_LDADD) $(LIBS) $(INTLLIBS)
- 
- mostlyclean-compile:
- 	-rm -f *.$(OBJEXT)
diff --git a/package/multimedia/alsa-utils/alsa-utils-1.0.18-fix_sysv_legacy.patch b/package/multimedia/alsa-utils/alsa-utils-1.0.18-fix_sysv_legacy.patch
deleted file mode 100644
index c6135b4..0000000
--- a/package/multimedia/alsa-utils/alsa-utils-1.0.18-fix_sysv_legacy.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/alsactl/init_parse.c	2009-01-15 10:44:48.000000000 +0000
-+++ b/alsactl/init_parse.c	2009-01-15 10:46:41.000000000 +0000
-@@ -381,7 +381,7 @@ static int set_ctl_value(struct space *s
- 				snd_ctl_elem_value_set_integer(space->ctl_value, idx, val);
- 			} else if (items > 2 && value[items-2] == 'd' && value[items-1] == 'B') {
- 				val = strtol(value, NULL, 0) * 100;
--				if ((pos2 = index(value, '.')) != NULL) {
-+				if ((pos2 = strchr(value, '.')) != NULL) {
- 					if (isdigit(*(pos2-1)) && isdigit(*(pos2-2))) {
- 						if (val < 0)
- 							val -= strtol(pos2 + 1, NULL, 0);
-@@ -1253,7 +1253,7 @@ static char *new_root_dir(const char *fi
- 
- 	res = strdup(filename);
- 	if (res) {
--		tmp = rindex(res, '/');
-+		tmp = strrchr(res, '/');
- 		if (tmp)
- 			*tmp = '\0';
- 	}
diff --git a/package/multimedia/alsa-utils/alsa-utils-1.0.18-remove_man.patch b/package/multimedia/alsa-utils/alsa-utils-1.0.18-remove_man.patch
deleted file mode 100644
index a7d4679..0000000
--- a/package/multimedia/alsa-utils/alsa-utils-1.0.18-remove_man.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/alsactl/Makefile.in	2009-01-15 10:59:38.000000000 +0000
-+++ b/alsactl/Makefile.in	2009-01-15 10:59:34.000000000 +0000
-@@ -204,7 +204,7 @@ sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
- SUBDIRS = init
--man_MANS = alsactl.1 alsactl_init.7
-+man_MANS = alsactl.1
- EXTRA_DIST = alsactl.1 alsactl_init.xml
- alsactl_SOURCES = alsactl.c state.c utils.c init_parse.c
- noinst_HEADERS = alsactl.h list.h init_sysdeps.c init_utils_string.c init_utils_run.c init_sysfs.c
diff --git a/package/multimedia/alsa-utils/alsa-utils.mk b/package/multimedia/alsa-utils/alsa-utils.mk
index 3d1b0ef..bcaf95b 100644
--- a/package/multimedia/alsa-utils/alsa-utils.mk
+++ b/package/multimedia/alsa-utils/alsa-utils.mk
@@ -3,52 +3,23 @@
 # alsa-utils
 #
 #############################################################
-ALSA_UTILS_VERSION:=1.0.22
-ALSA_UTILS_SOURCE:=alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2
-ALSA_UTILS_SITE:=ftp://ftp.alsa-project.org/pub/utils
-ALSA_UTILS_DIR:=$(BUILD_DIR)/alsa-utils-$(ALSA_UTILS_VERSION)
-ALSA_UTILS_CAT:=$(BZCAT)
-ALSA_UTILS_BINARY:=alsactl/alsactl
-ALSA_UTILS_TARGET_BINARY:=usr/sbin/alsactl
+ALSA_UTILS_VERSION = 1.0.23
+ALSA_UTILS_SOURCE = alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2
+ALSA_UTILS_SITE = ftp://ftp.alsa-project.org/pub/utils
+ALSA_UTILS_INSTALL_STAGING = YES
+ALSA_UTILS_DEPENDENCIES = alsa-lib \
+	$(if $(BR2_PACKAGE_NCURSES),ncurses)
 
-ALSA_UTILS_CONFIGURE_OPTS =
-ifneq ($(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER),y)
-ALSA_UTILS_CONFIGURE_OPTS += --disable-alsamixer --disable-alsatest
-endif
-
-$(DL_DIR)/$(ALSA_UTILS_SOURCE):
-	$(call DOWNLOAD,$(ALSA_UTILS_SITE),$(ALSA_UTILS_SOURCE))
-
-$(ALSA_UTILS_DIR)/.unpacked: $(DL_DIR)/$(ALSA_UTILS_SOURCE)
-	$(ALSA_UTILS_CAT) $(DL_DIR)/$(ALSA_UTILS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(ALSA_UTILS_DIR) package/multimedia/alsa-utils/ alsa-utils-$(ALSA_UTILS_VERSION)\*.patch
-	$(CONFIG_UPDATE) $(ALSA_UTILS_DIR)
-	touch $@
+ALSA_UTILS_CONF_ENV = \
+	ac_cv_prog_ncurses5_config=$(STAGING_DIR)/bin/ncurses5-config
 
-$(ALSA_UTILS_DIR)/.configured: $(ALSA_UTILS_DIR)/.unpacked
-	(cd $(ALSA_UTILS_DIR); rm -f config.cache; \
-		$(TARGET_CONFIGURE_OPTS) \
-		$(TARGET_CONFIGURE_ARGS) \
-		CFLAGS="$(TARGET_CFLAGS)" \
-		LDFLAGS="$(TARGET_LDFLAGS)" \
-		ac_cv_prog_ncurses5_config=$(STAGING_DIR)/bin/ncurses5-config \
-		./configure $(QUIET) \
-		--target=$(GNU_TARGET_NAME) \
-		--host=$(GNU_TARGET_NAME) \
-		--build=$(GNU_HOST_NAME) \
-		--prefix=/usr \
-		$(ALSA_UTILS_CONFIGURE_OPTS) \
-		--disable-xmlto \
-		--with-curses=ncurses \
-	)
-	touch $@
+ALSA_UTILS_CONF_OPT = \
+	--disable-xmlto \
+	--with-curses=ncurses
 
-$(ALSA_UTILS_DIR)/$(ALSA_UTILS_BINARY): $(ALSA_UTILS_DIR)/.configured
-	$(MAKE) CC="$(TARGET_CC)" -C $(ALSA_UTILS_DIR)
-	touch -c $@
-
-ALSA_UTILS_TARGETS_ :=
-ALSA_UTILS_TARGETS_y :=
+ifneq ($(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER),y)
+ALSA_UTILS_CONF_OPT += --disable-alsamixer --disable-alsatest
+endif
 
 ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf
 ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACTL) += usr/sbin/alsactl
@@ -64,14 +35,12 @@ ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI) += usr/bin/arecordmidi
 ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQDUMP) += usr/bin/aseqdump
 ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQNET) += usr/bin/aseqnet
 ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST) += usr/bin/speaker-test
+ALSA_UTILS_TARGETS_ += $(ALSA_UTILS_TARGETS_y)
 
-$(TARGET_DIR)/$(ALSA_UTILS_TARGET_BINARY): $(ALSA_UTILS_DIR)/$(ALSA_UTILS_BINARY)
-	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(ALSA_UTILS_DIR) install
-	mkdir -p $(TARGET_DIR)/usr/bin
-	mkdir -p $(TARGET_DIR)/usr/sbin
-	for file in $(ALSA_UTILS_TARGETS_y); do \
-		cp -dpf $(STAGING_DIR)/$$file $(TARGET_DIR)/$$file; \
-	done
+define ALSA_UTILS_INSTALL_TARGET_CMDS
+	test -z "$(ALSA_UTILS_TARGETS_y)" || \
+		install -D -m 755 $(addprefix $(STAGING_DIR)/,$(ALSA_UTILS_TARGETS_y)) \
+		$(TARGET_DIR)/usr/bin/
 	if [ -x "$(TARGET_DIR)/usr/bin/speaker-test" ]; then \
 		mkdir -p $(TARGET_DIR)/usr/share/alsa/speaker-test; \
 		mkdir -p $(TARGET_DIR)/usr/share/sounds/alsa; \
@@ -83,30 +52,10 @@ $(TARGET_DIR)/$(ALSA_UTILS_TARGET_BINARY): $(ALSA_UTILS_DIR)/$(ALSA_UTILS_BINARY
 		rm -rf $(TARGET_DIR)/usr/share/alsa/; \
 		cp -rdpf $(STAGING_DIR)/usr/share/alsa/ $(TARGET_DIR)/usr/share/alsa/; \
 	fi
-	touch -c $@
-
-alsa-utils: alsa-lib $(if $(BR2_PACKAGE_NCURSES),ncurses) $(if $(BR2_PACKAGE_LIBINTL),libintl) $(if $(BR2_PACKAGE_LIBICONV),libiconv) $(TARGET_DIR)/$(ALSA_UTILS_TARGET_BINARY)
+endef
 
-alsa-utils-unpacked: $(ALSA_UTILS_DIR)/.unpacked
+define ALSA_UTILS_UNINSTALL_TARGET_CMDS
+	rm -f $(addprefix $(TARGET_DIR),$(ALSA_UTILS_TARGET_))
+endef
 
-alsa-utils-source: $(DL_DIR)/$(ALSA_UTILS_SOURCE)
-
-alsa-utils-clean:
-	for file in $(ALSA_UTILS_TARGETS_y); do \
-		rm -f $(TARGET_DIR)/$$file; \
-	done
-	for file in $(ALSA_UTILS_TARGETS_); do \
-		rm -f $(TARGET_DIR)/$$file; \
-	done
-	-$(MAKE) -C $(ALSA_UTILS_DIR) clean
-
-alsa-utils-dirclean:
-	rm -rf $(ALSA_UTILS_DIR)
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_ALSA_UTILS),y)
-TARGETS+=alsa-utils
-endif
+$(eval $(call AUTOTARGETS,package/multimedia,alsa-utils))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 15/19] netplug: convert to gentargets and bump to 1.2.9.2
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (13 preceding siblings ...)
  2010-12-12 21:54 ` [Buildroot] [PATCH 14/19] alsa-utils: convert to autotargets and bump to 1.0.23 Thomas Petazzoni
@ 2010-12-12 21:54 ` Thomas Petazzoni
  2010-12-12 21:54 ` [Buildroot] [PATCH 16/19] libaio: add patch to support AVR32 Thomas Petazzoni
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:54 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/netplug/netplug-1.2.9-disable-werror.patch |   22 --------
 .../netplug/netplug-1.2.9.2-makefile-flags.patch   |   21 ++++++++
 package/netplug/netplug-socklen-type.patch         |   12 -----
 package/netplug/netplug.mk                         |   53 +++++--------------
 4 files changed, 35 insertions(+), 73 deletions(-)
 delete mode 100644 package/netplug/netplug-1.2.9-disable-werror.patch
 create mode 100644 package/netplug/netplug-1.2.9.2-makefile-flags.patch
 delete mode 100644 package/netplug/netplug-socklen-type.patch

diff --git a/package/netplug/netplug-1.2.9-disable-werror.patch b/package/netplug/netplug-1.2.9-disable-werror.patch
deleted file mode 100644
index d8a3e15..0000000
--- a/package/netplug/netplug-1.2.9-disable-werror.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-netplug uses nested functions, and gcc generates a warning that
-is turned into an error:
-
-cc1: warnings being treated as errors
-if_info.c: In function 'ifsm_scriptdone':
-if_info.c:289: error: generating trampoline in object (requires executable stack)
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
-Index: netplug-1.2.9/Makefile
-===================================================================
---- netplug-1.2.9.orig/Makefile	2010-05-09 21:07:40.000000000 +0200
-+++ netplug-1.2.9/Makefile	2010-05-09 21:09:32.000000000 +0200
-@@ -9,7 +9,7 @@
- 
- install_opts :=
- 
--CFLAGS += -Wall -Werror -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \
-+CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \
- 	-DNP_SCRIPT_DIR='"$(scriptdir)"' -ggdb3 -O3 -DNP_VERSION='"$(version)"'
- 
- netplugd: config.o netlink.o lib.o if_info.o main.o
diff --git a/package/netplug/netplug-1.2.9.2-makefile-flags.patch b/package/netplug/netplug-1.2.9.2-makefile-flags.patch
new file mode 100644
index 0000000..b2468f8
--- /dev/null
+++ b/package/netplug/netplug-1.2.9.2-makefile-flags.patch
@@ -0,0 +1,21 @@
+Preserve the cflags settings, because buildroot clobbers them.
+
+--- a/Makefile	2010-10-05 00:06:38.000000000 -0700
++++ b/Makefile	2010-10-05 00:15:27.000000000 -0700
+@@ -11,11 +11,14 @@ mandir ?= $(prefix)/usr/share/man
+ 
+ install_opts :=
+ 
+-CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \
++NETPLUG_CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \
+ 	-DNP_SCRIPT_DIR='"$(scriptdir)"' -ggdb3 -O3 -DNP_VERSION='"$(version)"'
+ 
++%.o: %.c
++	$(CC) $(NETPLUG_CFLAGS) $(CFLAGS) -c -o $@ $<
++
+ netplugd: config.o netlink.o lib.o if_info.o main.o
+-	$(CC) $(LDFLAGS) -o $@ $^
++	$(CC) $(LDFLAGS) -o $@ $(NETPLUG_CFLAGS) $^
+ 
+ install:
+ 	install -d $(install_opts) -m 755 \
diff --git a/package/netplug/netplug-socklen-type.patch b/package/netplug/netplug-socklen-type.patch
deleted file mode 100644
index 1e36988..0000000
--- a/package/netplug/netplug-socklen-type.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur netplug-1.2.9/netlink.c netplug-1.2.9-patched/netlink.c
---- netplug-1.2.9/netlink.c	2005-01-07 23:57:09.000000000 -0600
-+++ netplug-1.2.9-patched/netlink.c	2008-02-27 20:18:09.855767996 -0600
-@@ -284,7 +284,7 @@
-         exit(1);
-     }
- 
--    int addr_len = sizeof(addr);
-+    socklen_t addr_len = sizeof(addr);
- 
-     if (getsockname(fd, (struct sockaddr *) &addr, &addr_len) == -1) {
-         do_log(LOG_ERR, "Could not get socket details: %m");
diff --git a/package/netplug/netplug.mk b/package/netplug/netplug.mk
index 74fa0c5..cbe9a8d 100644
--- a/package/netplug/netplug.mk
+++ b/package/netplug/netplug.mk
@@ -3,51 +3,26 @@
 # netplug
 #
 #############################################################
-NETPLUG_VERSION=1.2.9
+NETPLUG_VERSION=1.2.9.2
 NETPLUG_SOURCE=netplug-$(NETPLUG_VERSION).tar.bz2
 NETPLUG_SITE=http://www.red-bean.com/~bos/netplug
-NETPLUG_DIR=$(BUILD_DIR)/netplug-$(NETPLUG_VERSION)
-NETPLUG_CAT:=$(BZCAT)
-NETPLUG_BINARY:=netplugd
-NETPLUG_TARGET_BINARY:=sbin/netplugd
 
-$(DL_DIR)/$(NETPLUG_SOURCE):
-	$(call DOWNLOAD,$(NETPLUG_SITE),$(NETPLUG_SOURCE))
+define NETPLUG_BUILD_CMDS
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
+endef
 
-netplug-source: $(DL_DIR)/$(NETPLUG_SOURCE)
+define NETPLUG_INSTALL_TARGET_CMDS
+	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
+endef
 
-$(NETPLUG_DIR)/.unpacked: $(DL_DIR)/$(NETPLUG_SOURCE)
-	$(NETPLUG_CAT) $(DL_DIR)/$(NETPLUG_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(NETPLUG_DIR) package/netplug/ netplug\*.patch
-	touch $(NETPLUG_DIR)/.unpacked
-
-$(NETPLUG_DIR)/$(NETPLUG_BINARY): $(NETPLUG_DIR)/.unpacked
-	$(MAKE) CC="$(TARGET_CC)" -C $(NETPLUG_DIR)
-	$(STRIPCMD) $(NETPLUG_DIR)/$(NETPLUG_BINARY)
-
-$(TARGET_DIR)/$(NETPLUG_TARGET_BINARY): $(NETPLUG_DIR)/$(NETPLUG_BINARY)
-	$(INSTALL) -m 644 -D $(NETPLUG_DIR)/etc/netplugd.conf $(TARGET_DIR)/etc/netplug/netplugd.conf
-	$(INSTALL) -m 755 -D package/netplug/netplug-script $(TARGET_DIR)/etc/netplug.d/netplug
-	$(INSTALL) -m 755 -D package/netplug/S29netplug $(TARGET_DIR)/etc/init.d
-	$(INSTALL) -m 755 -D $(NETPLUG_DIR)/$(NETPLUG_BINARY) $(TARGET_DIR)/$(NETPLUG_TARGET_BINARY)
-	touch -c $(TARGET_DIR)/$(NETPLUG_TARGET_BINARY)
-
-netplug: $(TARGET_DIR)/$(NETPLUG_TARGET_BINARY)
-
-netplug-clean:
-	rm -f $(TARGET_DIR)/$(NETPLUG_TARGET_BINARY)
+define NETPLUG_UNINSTALL_TARGET_CMDS
+	rm -f $(TARGET_DIR)/sbin/netplugd
 	rm -rf $(TARGET_DIR)/etc/netplug*
 	rm -f $(TARGET_DIR)/etc/init.d/S*netplug
-	-$(MAKE) -C $(NETPLUG_DIR) clean
+endef
 
-netplug-dirclean:
-	rm -rf $(NETPLUG_DIR)
+define NETPLUG_CLEAN_CMDS
+	$(MAKE) -C $(@D) clean
+endef
 
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_NETPLUG),y)
-TARGETS+=netplug
-endif
+$(eval $(call GENTARGETS,package,netplug))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 16/19] libaio: add patch to support AVR32
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (14 preceding siblings ...)
  2010-12-12 21:54 ` [Buildroot] [PATCH 15/19] netplug: convert to gentargets and bump to 1.2.9.2 Thomas Petazzoni
@ 2010-12-12 21:54 ` Thomas Petazzoni
  2010-12-12 21:54 ` [Buildroot] [PATCH 17/19] mplayer: convert to gentargets, bump to a recent SVN version Thomas Petazzoni
                   ` (3 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:54 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/libaio/libaio-0.3.109-avr32-support.patch |  122 +++++++++++++++++++++
 1 files changed, 122 insertions(+), 0 deletions(-)
 create mode 100644 package/libaio/libaio-0.3.109-avr32-support.patch

diff --git a/package/libaio/libaio-0.3.109-avr32-support.patch b/package/libaio/libaio-0.3.109-avr32-support.patch
new file mode 100644
index 0000000..57bb1f3
--- /dev/null
+++ b/package/libaio/libaio-0.3.109-avr32-support.patch
@@ -0,0 +1,122 @@
+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
-- 
1.7.0.4

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

* [Buildroot] [PATCH 17/19] mplayer: convert to gentargets, bump to a recent SVN version
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (15 preceding siblings ...)
  2010-12-12 21:54 ` [Buildroot] [PATCH 16/19] libaio: add patch to support AVR32 Thomas Petazzoni
@ 2010-12-12 21:54 ` Thomas Petazzoni
  2010-12-12 21:54 ` [Buildroot] [PATCH 18/19] libtheora: bump version to 1.1.1 Thomas Petazzoni
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:54 UTC (permalink / raw)
  To: buildroot

Based on the conversion to gentargets done by Martin Banky, several
issues were fixed, and the mplayer package was improved:

 * Updated to a recent SVN version

 * Removed mandatory dependency on libmad

 * The AVR32 specific patch has been removed. It was a pain to remain
   blocked at the old 1.0-rc2 just for this patch. All this
   optimization work should have been submitted upstream, Buildroot is
   not the place to carry such heavy modifications.

 * Options were added to select whether mplayer and/or mencoder should
   be built/installed.

 * Support for additional options if packages have been selected:
   tremor, libmad, libtheora, libpng, jpeg, xlib_libX11,
   xlib_libXv. More could be added in the future.

 * Support for ARM-related optimization options. Similar improvements
   could be done for x86 and PowerPC architectures.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/multimedia/mplayer/Config.in               |   17 +-
 .../mplayer/mplayer-1.0rc2-100-atmel.1.patch       | 6262 --------------------
 .../mplayer/mplayer-1.0rc2-largefile.patch         |   18 -
 .../mplayer/mplayer-1.0rc2-remove-sys-timeb.patch  |   12 -
 .../mplayer-1.0rc3-disable-install-strip.patch     |   24 +
 ...g.patch => mplayer-1.0rc3-fix-cc-parsing.patch} |   16 +-
 package/multimedia/mplayer/mplayer.mk              |  150 +-
 7 files changed, 127 insertions(+), 6372 deletions(-)
 delete mode 100644 package/multimedia/mplayer/mplayer-1.0rc2-100-atmel.1.patch
 delete mode 100644 package/multimedia/mplayer/mplayer-1.0rc2-largefile.patch
 delete mode 100644 package/multimedia/mplayer/mplayer-1.0rc2-remove-sys-timeb.patch
 create mode 100644 package/multimedia/mplayer/mplayer-1.0rc3-disable-install-strip.patch
 rename package/multimedia/mplayer/{mplayer-1.0rc2-fix-cc-parsing.patch => mplayer-1.0rc3-fix-cc-parsing.patch} (53%)

diff --git a/package/multimedia/mplayer/Config.in b/package/multimedia/mplayer/Config.in
index 894f65c..1223eb6 100644
--- a/package/multimedia/mplayer/Config.in
+++ b/package/multimedia/mplayer/Config.in
@@ -1,8 +1,23 @@
 config BR2_PACKAGE_MPLAYER
 	bool "mplayer"
-	select BR2_PACKAGE_LIBMAD
 	help
 	  MPlayer is a movie player which runs on many systems and supports
 	  many different file formats.
 
 	  http://www.mplayerhq.hu/
+
+if BR2_PACKAGE_MPLAYER
+
+config BR2_PACKAGE_MPLAYER_MPLAYER
+	bool "Build and install mplayer"
+	default y
+	help
+	  This will install the video player.
+
+config BR2_PACKAGE_MPLAYER_MENCODER
+	bool "Build and install mencoder"
+	help
+	  This will install the video encoder.
+
+endif
+
diff --git a/package/multimedia/mplayer/mplayer-1.0rc2-100-atmel.1.patch b/package/multimedia/mplayer/mplayer-1.0rc2-100-atmel.1.patch
deleted file mode 100644
index 0de695f..0000000
--- a/package/multimedia/mplayer/mplayer-1.0rc2-100-atmel.1.patch
+++ /dev/null
@@ -1,6262 +0,0 @@
---- a/cfg-common.h
-+++ b/cfg-common.h
-@@ -240,6 +240,10 @@
- 	{"psprobe", &ps_probe, CONF_TYPE_POSITION, 0, 0, TS_MAX_PROBE_SIZE, NULL},
- 	{"tskeepbroken", &ts_keep_broken, CONF_TYPE_FLAG, 0, 0, 1, NULL},
- 
-+#ifdef ARCH_AVR32
-+        {"use-pico", &avr32_use_pico, CONF_TYPE_FLAG, 0, 0, 1, NULL},
-+        {"nouse-pico", &avr32_use_pico, CONF_TYPE_FLAG, 0, 1, 0, NULL},
-+#endif
- 	// draw by slices or whole frame (useful with libmpeg2/libavcodec)
- 	{"slices", &vd_use_slices, CONF_TYPE_FLAG, 0, 0, 1, NULL},
- 	{"noslices", &vd_use_slices, CONF_TYPE_FLAG, 0, 1, 0, NULL},
---- a/cfg-mencoder.h
-+++ b/cfg-mencoder.h
-@@ -5,6 +5,10 @@
- 
- #include "cfg-common.h"
- 
-+#ifdef ARCH_AVR32
-+extern int avr32_use_pico;
-+#endif
-+
- #ifdef USE_FAKE_MONO
- extern int fakemono; // defined in dec_audio.c
- #endif
---- a/cfg-mplayer.h
-+++ b/cfg-mplayer.h
-@@ -7,6 +7,10 @@
- extern int key_fifo_size;
- extern unsigned doubleclick_time;
- 
-+#ifdef ARCH_AVR32
-+extern int avr32_use_pico;
-+#endif
-+
- #ifdef HAVE_FBDEV
- extern char *fb_mode_cfgfile;
- extern char *fb_mode_name;
---- a/configure
-+++ b/configure
-@@ -1631,7 +1631,7 @@ EOF
- fi
- 
- 
--_arch_all='X86 X86_32 X86_64 IA64 SPARC ARM ARMV4L SH3 POWERPC PPC ALPHA SGI_MIPS PA_RISC S390 S390X VAX BFIN GENERIC'
-+_arch_all='X86 X86_32 X86_64 IA64 SPARC ARM ARMV4L AVR32 SH3 POWERPC PPC ALPHA SGI_MIPS PA_RISC S390 S390X VAX BFIN GENERIC'
- case "$host_arch" in
-   i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686)
-   _arch='X86 X86_32'
-@@ -1994,6 +1994,16 @@ EOF
-     _optimizing="$proc"
-     ;;
- 
-+  avr32)
-+    _arch='AVR32'
-+    _target_arch='ARCH_AVR32 = yes'
-+    iproc='avr32'
-+    proc=''
-+    _march=''
-+    _mcpu=''
-+    _optimizing=''
-+    ;;
-+
-   arm|armv4l|armv5tel)
-     _arch='ARM ARMV4L'
-     _target_arch='ARCH_ARMV4L = yes'
---- a/libavcodec/Makefile
-+++ b/libavcodec/Makefile
-@@ -372,6 +372,11 @@ ASM_OBJS-$(ARCH_ARMV4L)                +
- OBJS-$(ARCH_ARMV4L)                    += armv4l/dsputil_arm.o   \
-                                           armv4l/mpegvideo_arm.o \
- 
-+ASM_OBJS-$(ARCH_AVR32)                 += avr32/idct.o avr32/fdct.o \
-+                                          avr32/mc.o avr32/h264idct.o
-+
-+OBJS-$(ARCH_AVR32)                     += avr32/dsputil_avr32.o
-+
- OBJS-$(HAVE_IWMMXT)                    += armv4l/dsputil_iwmmxt.o   \
-                                           armv4l/mpegvideo_iwmmxt.o \
- 
-@@ -445,6 +450,7 @@ clean::
- 	rm -f \
- 	   alpha/*.o alpha/*~ \
- 	   armv4l/*.o armv4l/*~ \
-+	   avr32/*.o avr32/*~ \
- 	   bfin/*.o bfin/*~ \
- 	   i386/*.o i386/*~ \
- 	   mlib/*.o mlib/*~ \
---- /dev/null
-+++ b/libavcodec/avr32/dsputil_avr32.c
-@@ -0,0 +1,2638 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+
-+#include "../dsputil.h"
-+#include "pico.h"
-+
-+int avr32_use_pico = 1;
-+
-+#ifdef CHECK_DSP_FUNCS_AGAINST_C
-+#define DSP_FUNC_NAME(name) test_ ## name
-+#else
-+#define DSP_FUNC_NAME(name) name
-+#endif
-+
-+union doubleword {
-+  int64_t doubleword;
-+  struct {
-+    int32_t top;
-+    int32_t bottom;
-+  } words; 
-+};
-+
-+#undef  LD16
-+#undef  LD32
-+#undef  LD64
-+  
-+#define LD16(a) (*((uint16_t*)(a)))
-+#define LD32(a) (*((uint32_t*)(a)))
-+#define LD64(a) (*((uint64_t*)(a)))
-+#define LD64_UNALIGNED(a) \
-+  ({ union doubleword __tmp__; \
-+   __tmp__.words.top = LD32(a); \
-+   __tmp__.words.bottom = LD32(a + 4); \
-+   __tmp__.doubleword; }) 
-+
-+#undef  ST32
-+#undef  ST16
-+
-+#define ST16(a, b) *((uint16_t*)(a)) = (b)
-+#define ST32(a, b) *((uint32_t*)(a)) = (b)
-+
-+#undef rnd_avg32
-+#define rnd_avg32(a, b) \
-+  ({ uint32_t __tmp__;\
-+     asm("pavg.ub\t%0, %1, %2" : "=r"(__tmp__) : "r"(a), "r"(b));\
-+     __tmp__;})
-+
-+void idct_avr32(DCTELEM *data);
-+void fdct_avr32(DCTELEM *data);
-+
-+void idct_put_avr32(uint8_t *dest, int line_size, DCTELEM *data);
-+void idct_add_avr32(uint8_t *dest, int line_size, DCTELEM *data);
-+
-+void h264_idct_add_avr32(uint8_t *dest, DCTELEM *data, int stride);
-+void h264_idct8_add_avr32(uint8_t *dest, DCTELEM *data, int stride);
-+
-+#define extern_dspfunc(PFX, NUM) \
-+    void PFX ## _pixels ## NUM ## _avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h );     \
-+    void PFX ## _pixels ## NUM ## _h_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h );  \
-+    void PFX ## _pixels ## NUM ## _v_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h );  \
-+    void PFX ## _pixels ## NUM ## _hv_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h )
-+
-+extern_dspfunc(put, 8);
-+extern_dspfunc(put_no_rnd, 8);
-+extern_dspfunc(avg, 8);
-+extern_dspfunc(avg_no_rnd, 8);
-+#undef extern_dspfunc
-+
-+#ifdef CHECK_DSP_FUNCS_AGAINST_C
-+#define extern_dspfunc(PFX, NUM)                                        \
-+  void PFX ## _pixels ## NUM ## _c(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
-+  void PFX ## _pixels ## NUM ## _x2_c(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
-+  void PFX ## _pixels ## NUM ## _y2_c(uint8_t *dst, const uint8_t *pixels, int line_size, int h ); \
-+  void PFX ## _pixels ## NUM ## _xy2_c(uint8_t *dst, const uint8_t *pixels, int line_size, int h )
-+
-+extern_dspfunc(put, 4);
-+extern_dspfunc(put_no_rnd, 4);
-+extern_dspfunc(put, 8);
-+extern_dspfunc(put_no_rnd, 8);
-+extern_dspfunc(put, 16);
-+extern_dspfunc(put_no_rnd, 16);
-+extern_dspfunc(avg, 8);
-+extern_dspfunc(avg_no_rnd, 8);
-+extern_dspfunc(avg, 16);
-+extern_dspfunc(avg_no_rnd, 16);
-+
-+
-+#undef extern_dspfunc
-+#define extern_dspfunc(PFX, NUM) \
-+void PFX ## NUM ## _mc00_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc10_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc20_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc30_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc01_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc11_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc21_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc31_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc02_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc12_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc22_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc32_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc03_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc13_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc23_c(uint8_t *dst, uint8_t *src, int stride);  \
-+void PFX ## NUM ## _mc33_c(uint8_t *dst, uint8_t *src, int stride);  \
-+
-+extern_dspfunc(put_h264_qpel,  16);
-+extern_dspfunc(put_h264_qpel,  8);
-+extern_dspfunc(put_h264_qpel,  4);
-+extern_dspfunc(avg_h264_qpel,  16);
-+extern_dspfunc(avg_h264_qpel,  8);
-+extern_dspfunc(avg_h264_qpel,  4);
-+
-+#undef extern_dspfunc
-+
-+void put_h264_chroma_mc2_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
-+void put_h264_chroma_mc4_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
-+void put_h264_chroma_mc8_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
-+                         
-+void avg_h264_chroma_mc2_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
-+void avg_h264_chroma_mc4_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
-+void avg_h264_chroma_mc8_c(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y);
-+
-+
-+void dump_block8(uint8_t *block, int line_size, int h);
-+void dump_block4(uint8_t *block, int line_size, int h);
-+void dump_block(uint8_t *block, int line_size, int h, int w);
-+
-+void check_block8(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct, 
-+                  int h, char *name, int max_dev);
-+void check_block4(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct, 
-+                  int h, char *name, int max_dev);
-+void check_block(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct, 
-+                 int h, int width, char *name, int max_dev);
-+
-+#define PIXOP2( OPNAME, OP ) \
-+void OPNAME ## _pixels4_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        OP(*((uint32_t*)(block  )), LD32(pixels  ));\
-+        pixels+=line_size;\
-+        block +=line_size;\
-+    }\
-+}\
-+void OPNAME ## _pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
-+                                                int src_stride1, int src_stride2, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        uint32_t a,b;\
-+        a= LD32(&src1[i*src_stride1  ]);\
-+        b= LD32(&src2[i*src_stride2  ]);\
-+        OP(*((uint32_t*)&dst[i*dst_stride  ]), rnd_avg32(a, b));\
-+        a= LD32(&src1[i*src_stride1+4]);\
-+        b= LD32(&src2[i*src_stride2+4]);\
-+        OP(*((uint32_t*)&dst[i*dst_stride+4]), rnd_avg32(a, b));\
-+    }\
-+}\
-+\
-+void OPNAME ## _pixels4_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
-+                                                int src_stride1, int src_stride2, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        uint32_t a,b;\
-+        a= LD32(&src1[i*src_stride1  ]);\
-+        b= LD32(&src2[i*src_stride2  ]);\
-+        OP(*((uint32_t*)&dst[i*dst_stride  ]), rnd_avg32(a, b));\
-+    }\
-+}\
-+\
-+void OPNAME ## _pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
-+                                                int src_stride1, int src_stride2, int h){\
-+    OPNAME ## _pixels8_l2(dst  , src1  , src2  , dst_stride, src_stride1, src_stride2, h);\
-+    OPNAME ## _pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);\
-+}\
-+
-+#else
-+#define PIXOP2( OPNAME, OP ) \
-+static void OPNAME ## _pixels4_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        OP(*((uint32_t*)(block  )), LD32(pixels  ));\
-+        pixels+=line_size;\
-+        block +=line_size;\
-+    }\
-+}\
-+static void OPNAME ## _pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        OP(*((uint32_t*)(block  )), LD32(pixels  ));\
-+        OP(*((uint32_t*)(block+4)), LD32(pixels+4));\
-+        pixels+=line_size;\
-+        block +=line_size;\
-+    }\
-+}\
-+static void OPNAME ## _pixels16_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        OP(*((uint32_t*)(block  )), LD32(pixels  ));\
-+        OP(*((uint32_t*)(block+4)), LD32(pixels+4));\
-+        OP(*((uint32_t*)(block+8)), LD32(pixels+8));\
-+        OP(*((uint32_t*)(block+12)), LD32(pixels+12));\
-+        pixels+=line_size;\
-+        block +=line_size;\
-+    }\
-+}\
-+static void OPNAME ## _pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
-+                                                int src_stride1, int src_stride2, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        uint32_t a,b;\
-+        a= LD32(&src1[i*src_stride1  ]);\
-+        b= LD32(&src2[i*src_stride2  ]);\
-+        OP(*((uint32_t*)&dst[i*dst_stride  ]), rnd_avg32(a, b));\
-+        a= LD32(&src1[i*src_stride1+4]);\
-+        b= LD32(&src2[i*src_stride2+4]);\
-+        OP(*((uint32_t*)&dst[i*dst_stride+4]), rnd_avg32(a, b));\
-+    }\
-+}\
-+\
-+static void OPNAME ## _pixels4_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
-+                                                int src_stride1, int src_stride2, int h){\
-+    int i;\
-+    for(i=0; i<h; i++){\
-+        uint32_t a,b;\
-+        a= LD32(&src1[i*src_stride1  ]);\
-+        b= LD32(&src2[i*src_stride2  ]);\
-+        OP(*((uint32_t*)&dst[i*dst_stride  ]), rnd_avg32(a, b));\
-+    }\
-+}\
-+\
-+static void OPNAME ## _pixels16_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \
-+                                                int src_stride1, int src_stride2, int h){\
-+    OPNAME ## _pixels8_l2(dst  , src1  , src2  , dst_stride, src_stride1, src_stride2, h);\
-+    OPNAME ## _pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);\
-+}\
-+
-+#endif
-+
-+#define op_avg(a, b) a = rnd_avg32(a, b)
-+#define op_put(a, b) a = b
-+
-+PIXOP2(avg, op_avg)
-+PIXOP2(put, op_put)
-+#undef op_avg
-+#undef op_put
-+
-+
-+
-+static void clear_blocks_avr32(DCTELEM *blocks)
-+{
-+  int n = 12;
-+  uint64_t tmp1, tmp2;
-+  blocks += 6*64;  
-+  asm volatile ( "mov\t%1, 0\n" 
-+                 "mov\t%m1, 0\n" 
-+                 "mov\t%2, 0\n" 
-+                 "mov\t%m2, 0\n" 
-+                 "0:\n" 
-+                 "stm\t--%3, %1, %m1, %2, %m2\n"
-+                 "stm\t--%3, %1, %m1, %2, %m2\n"
-+                 "stm\t--%3, %1, %m1, %2, %m2\n"
-+                 "stm\t--%3, %1, %m1, %2, %m2\n"        
-+                 "sub\t%0, 1\n"        
-+                 "brne\t0b\n"        
-+                 : "+r"(n), "=&r"(tmp1), "=&r"(tmp2), 
-+                 "+r"(blocks));
-+}
-+
-+
-+static void put_h264_chroma_mc2_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
-+  const int A=(8-x)*(8-y);
-+  const int B=(  x)*(8-y);
-+  const int C=(8-x)*(  y);
-+  const int D=(  x)*(  y);
-+  int i;
-+  
-+  PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF0_B, 32);
-+  PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF1_B, 0);
-+  PICO_PUT_W(PICO_COEFF2_A, 0);
-+  PICO_PUT_W(PICO_COEFF2_B, 0);
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE) 
-+             | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(6)
-+             | PICO_OFFSET_FRAC_BITS(6));
-+  
-+  for(i=0; i<h; i++)
-+    {
-+      
-+      int src0 = LD32(src);
-+      int src1 = LD32(src + stride);
-+
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 0, 4, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 1, 5, 0);
-+      src += stride;
-+      ST16(dst,(short)PICO_GET_W(PICO_OUTPIX0));
-+      dst += stride;
-+    }
-+}
-+
-+
-+static void put_h264_chroma_mc4_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
-+  const int A=(8-x)*(8-y);\
-+  const int B=(  x)*(8-y);
-+  const int C=(8-x)*(  y);
-+  const int D=(  x)*(  y);
-+  int i;
-+  
-+  PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF0_B, 32);
-+  PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF1_B, 0);
-+  PICO_PUT_W(PICO_COEFF2_A, 0);
-+  PICO_PUT_W(PICO_COEFF2_B, 0);
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE) 
-+             | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(6)
-+             | PICO_OFFSET_FRAC_BITS(6));
-+
-+  for(i=0; i<h; i++)
-+    {
-+      /*
-+        OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
-+        OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
-+        OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
-+        OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
-+        dst+= stride;
-+        src+= stride;
-+      */
-+      
-+      int src0 = LD32(src);
-+      int src1 = (((int)src[4] << 24) | (int)src[stride]);
-+      int src2 = LD32(src + stride + 1);
-+      
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_MVRC_W(PICO_INPIX2, src2);
-+      PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
-+      src += stride;
-+      ST32(dst, PICO_GET_W(PICO_OUTPIX0));
-+
-+      dst += stride;
-+    }
-+}
-+
-+static void put_h264_chroma_mc8_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
-+  const int A=(8-x)*(8-y);
-+  const int B=(  x)*(8-y);
-+  const int C=(8-x)*(  y);
-+  const int D=(  x)*(  y);
-+  int i;
-+  
-+  PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF0_B, 32);
-+  PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF1_B, 0);
-+  PICO_PUT_W(PICO_COEFF2_A, 0);
-+  PICO_PUT_W(PICO_COEFF2_B, 0);
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE) 
-+             | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(6)
-+             | PICO_OFFSET_FRAC_BITS(6));
-+
-+  for(i=0; i<h; i++)
-+    {
-+      /*
-+        OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
-+        OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
-+        OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
-+        OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
-+        OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));
-+        OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));
-+        OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));
-+        OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));
-+        dst+= stride;
-+        src+= stride;
-+      */  
-+      int src0 = LD32(src);
-+      int src1 = (((int)src[4] << 24) | (int)src[stride]);
-+      int src2 = LD32(src + stride + 1);
-+      
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_MVRC_W(PICO_INPIX2, src2);
-+      PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
-+      ST32(dst, PICO_GET_W(PICO_OUTPIX0));
-+      
-+      src0 = LD32(src + 4);
-+      src1 = (src[8] << 24) | src[stride + 4];
-+      src2 = LD32(src + stride + 5);
-+      
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_MVRC_W(PICO_INPIX2, src2);
-+      PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
-+      src += stride;
-+      ST32(dst + 4, PICO_GET_W(PICO_OUTPIX0));
-+
-+      dst += stride;
-+    }
-+}
-+
-+
-+static void avg_h264_chroma_mc2_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
-+  const int A=(8-x)*(8-y);
-+  const int B=(  x)*(8-y);
-+  const int C=(8-x)*(  y);
-+  const int D=(  x)*(  y);
-+  int i;
-+  
-+  PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF0_B, 32);
-+  PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF1_B, 0);
-+  PICO_PUT_W(PICO_COEFF2_A, 0);
-+  PICO_PUT_W(PICO_COEFF2_B, 0);
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE) 
-+             | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(6)
-+             | PICO_OFFSET_FRAC_BITS(6));
-+  
-+  for(i=0; i<h; i++)
-+    {
-+      int src0 = LD32(src);
-+      int src1 = LD32(src + stride);
-+      
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 0, 4, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 1, 5, 0);
-+      src += stride;
-+      ST16(dst, rnd_avg32(LD16(dst), PICO_GET_W(PICO_OUTPIX0)));
-+      dst += stride;
-+    }
-+}
-+
-+
-+static void avg_h264_chroma_mc4_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
-+  const int A=(8-x)*(8-y);\
-+  const int B=(  x)*(8-y);
-+  const int C=(8-x)*(  y);
-+  const int D=(  x)*(  y);
-+  int i;
-+  
-+  PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF0_B, 32);
-+  PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF1_B, 0);
-+  PICO_PUT_W(PICO_COEFF2_A, 0);
-+  PICO_PUT_W(PICO_COEFF2_B, 0);
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE) 
-+             | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(6)
-+             | PICO_OFFSET_FRAC_BITS(6));
-+
-+  for(i=0; i<h; i++)
-+    {
-+      /*
-+        OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
-+        OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
-+        OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
-+        OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
-+        dst+= stride;
-+        src+= stride;
-+      */
-+      
-+      int src0 = *((int *)src);
-+      int src1 = (int)((src[4] << 24) | src[stride]);
-+      int src2 = *((int *)(src + stride + 1));
-+      
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_MVRC_W(PICO_INPIX2, src2);
-+      PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
-+      src += stride;
-+      ST32(dst, rnd_avg32(LD32(dst), PICO_GET_W(PICO_OUTPIX0)));
-+      dst += stride;
-+    }
-+}
-+
-+static void avg_h264_chroma_mc8_pico(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){
-+  const int A=(8-x)*(8-y);
-+  const int B=(  x)*(8-y);
-+  const int C=(8-x)*(  y);
-+  const int D=(  x)*(  y);
-+  int i;
-+  
-+  PICO_PUT_W(PICO_COEFF0_A, (A << 16) | (B & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF0_B, 32);
-+  PICO_PUT_W(PICO_COEFF1_A, (C << 16) | (D & 0xFFFF));
-+  PICO_PUT_W(PICO_COEFF1_B, 0);
-+  PICO_PUT_W(PICO_COEFF2_A, 0);
-+  PICO_PUT_W(PICO_COEFF2_B, 0);
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE) 
-+             | PICO_INPUT_MODE(PICO_HOR_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(6)
-+             | PICO_OFFSET_FRAC_BITS(6));
-+
-+  for(i=0; i<h; i++)
-+    {
-+      /*
-+        OP(dst[0], (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1]));
-+        OP(dst[1], (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2]));
-+        OP(dst[2], (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3]));
-+        OP(dst[3], (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4]));
-+        OP(dst[4], (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5]));
-+        OP(dst[5], (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6]));
-+        OP(dst[6], (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7]));
-+        OP(dst[7], (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8]));
-+        dst+= stride;
-+        src+= stride;
-+      */  
-+      int src0 = *((int *)src);
-+      int src1 = (volatile int)((src[4] << 24) | src[stride]);
-+      int src2 = *((int *)(src + stride + 1));
-+
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_MVRC_W(PICO_INPIX2, src2);
-+      PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
-+      ST32(dst, rnd_avg32(LD32(dst), PICO_GET_W(PICO_OUTPIX0)));
-+
-+      src0 = *((int *)(src + 4));
-+      src1 = (int)((src[8] << 24) | src[stride + 4]);
-+      src2 = *((int *)(src + stride + 5));
-+      
-+      PICO_MVRC_W(PICO_INPIX0, src0);
-+      PICO_MVRC_W(PICO_INPIX1, src1);
-+      PICO_MVRC_W(PICO_INPIX2, src2);
-+      PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 7, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 8, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 9, 0);
-+      PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 10, 0);
-+      src += stride;
-+      ST32(dst + 4, rnd_avg32(LD32(dst + 4), PICO_GET_W(PICO_OUTPIX0)));
-+      dst += stride;
-+    }
-+}
-+
-+static struct pico_config_t h264_qpel4_h_lowpass_config = { 
-+  .input_mode = PICO_HOR_FILTER_MODE,
-+  .output_mode = PICO_PLANAR_MODE,
-+  .coeff_frac_bits = 5,
-+  .offset_frac_bits = 5,
-+  .coeff0_0 = 1,
-+  .coeff0_1 = -5,
-+  .coeff0_2 = 20,
-+  .coeff0_3 = 16,
-+  .coeff1_0 = 20,
-+  .coeff1_1 = -5,
-+  .coeff1_2 = 1,
-+  .coeff1_3 = 0,
-+  .coeff2_0 = 0,
-+  .coeff2_1 = 0,
-+  .coeff2_2 = 0,
-+  .coeff2_3 = 0 
-+};
-+
-+
-+
-+static void put_h264_qpel4_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  const int h=4;
-+  int i;
-+    
-+  set_pico_config(&h264_qpel4_h_lowpass_config);
-+
-+  for(i=0; i<h; i++){
-+    
-+    /*
-+      OP(dst[0], (src[0]+src[1])*20 - (src[-1]+src[2])*5 + (src[-2]+src[3]));\
-+      OP(dst[1], (src[1]+src[2])*20 - (src[0 ]+src[3])*5 + (src[-1]+src[4]));\
-+      OP(dst[2], (src[2]+src[3])*20 - (src[1 ]+src[4])*5 + (src[0 ]+src[5]));\
-+      OP(dst[3], (src[3]+src[4])*20 - (src[2 ]+src[5])*5 + (src[1 ]+src[6]));\
-+      dst+=dstStride;\
-+      src+=srcStride;\ */
-+    PICO_MVRC_W(PICO_INPIX0, LD32(src - 2));
-+    PICO_MVRC_D(PICO_INPIX2, LD64_UNALIGNED(src + 2));
-+    PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
-+    PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
-+    PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
-+    PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
-+    src += srcStride;
-+    ST32(dst, PICO_GET_W(PICO_OUTPIX0));
-+    dst += dstStride;
-+  }
-+}
-+
-+static void avg_h264_qpel4_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  const int h=4;
-+  int i;
-+    
-+  set_pico_config(&h264_qpel4_h_lowpass_config);
-+  
-+  for(i=0; i<h; i++){
-+    
-+    /*
-+      OP(dst[0], (src[0]+src[1])*20 - (src[-1]+src[2])*5 + (src[-2]+src[3]));\
-+      OP(dst[1], (src[1]+src[2])*20 - (src[0 ]+src[3])*5 + (src[-1]+src[4]));\
-+      OP(dst[2], (src[2]+src[3])*20 - (src[1 ]+src[4])*5 + (src[0 ]+src[5]));\
-+      OP(dst[3], (src[3]+src[4])*20 - (src[2 ]+src[5])*5 + (src[1 ]+src[6]));\
-+      dst+=dstStride;\
-+      src+=srcStride;\ */
-+        
-+    PICO_MVRC_W(PICO_INPIX0, LD32(src - 2));
-+    PICO_MVRC_D(PICO_INPIX2, LD64_UNALIGNED(src + 2));
-+    PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
-+    PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
-+    PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
-+    PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
-+    src += srcStride;
-+    ST32(dst, rnd_avg32(LD32(dst), PICO_GET_W(PICO_OUTPIX0)));
-+    dst += dstStride;
-+  }
-+}
-+
-+static struct pico_config_t h264_qpel4_v_lowpass_config1 = { 
-+  .input_mode = PICO_VERT_FILTER_MODE,
-+  .output_mode = PICO_PACKED_MODE,
-+  .coeff_frac_bits = 5,
-+  .offset_frac_bits = 5,
-+  .coeff0_0 = 1,
-+  .coeff0_1 = -5,
-+  .coeff0_2 = 20,
-+  .coeff0_3 = 16,
-+  .coeff1_0 = 1,
-+  .coeff1_1 = -5,
-+  .coeff1_2 = 20,
-+  .coeff1_3 = 16,
-+  .coeff2_0 = 1,
-+  .coeff2_1 = -5,
-+  .coeff2_2 = 20,
-+  .coeff2_3 = 16 
-+};
-+
-+
-+
-+static struct pico_config_t h264_qpel4_v_lowpass_config2 = { 
-+  .input_mode = PICO_VERT_FILTER_MODE,
-+  .output_mode = PICO_PLANAR_MODE,
-+  .coeff_frac_bits = 5,
-+  .offset_frac_bits = 5,
-+  .coeff0_0 = 1,
-+  .coeff0_1 = -5,
-+  .coeff0_2 = 20,
-+  .coeff0_3 = 16,
-+  .coeff1_0 = 20,
-+  .coeff1_1 = -5,
-+  .coeff1_2 = 1,
-+  .coeff1_3 = 0,
-+  .coeff2_0 = 0,
-+  .coeff2_1 = 0,
-+  .coeff2_2 = 0,
-+  .coeff2_3 = 0 
-+};
-+
-+static void put_h264_qpel4_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+
-+  /*
-+    const int w=4;
-+    uint8_t *cm = cropTbl + MAX_NEG_CROP;
-+    int i;
-+    for(i=0; i<w; i++)
-+    {
-+    const int srcB= src[-2*srcStride];\
-+    const int srcA= src[-1*srcStride];\
-+    const int src0= src[0 *srcStride];\
-+    const int src1= src[1 *srcStride];\
-+    const int src2= src[2 *srcStride];\
-+    const int src3= src[3 *srcStride];\
-+    const int src4= src[4 *srcStride];\
-+    const int src5= src[5 *srcStride];\
-+    const int src6= src[6 *srcStride];\
-+    OP(dst[0*dstStride], (src0+src1)*20 - (srcA+src2)*5 + (srcB+src3));\
-+    OP(dst[1*dstStride], (src1+src2)*20 - (src0+src3)*5 + (srcA+src4));\
-+    OP(dst[2*dstStride], (src2+src3)*20 - (src1+src4)*5 + (src0+src5));\
-+    OP(dst[3*dstStride], (src3+src4)*20 - (src2+src5)*5 + (src1+src6));\
-+    dst++;\
-+    src++;\
-+  */  
-+  
-+  set_pico_config(&h264_qpel4_v_lowpass_config1);
-+  
-+  {
-+    int srcB= LD32(src - 2*srcStride);
-+    int srcA= LD32(src - 1*srcStride);
-+    int src0= LD32(src + 0 *srcStride);
-+    int src1= LD32(src + 1 *srcStride);
-+    int src2= LD32(src + 2 *srcStride);
-+    int src3= LD32(src + 3 *srcStride);
-+    int src4= LD32(src + 4 *srcStride);
-+    int src5= LD32(src + 5 *srcStride);
-+    int src6= LD32(src + 6 *srcStride);
-+    
-+    union wordbytes {
-+      int word;
-+      struct  {
-+        unsigned int t:8;
-+        unsigned int u:8;
-+        unsigned int l:8;
-+        unsigned int b:8;
-+      } bytes;
-+    } tmp1, tmp2, tmp3;
-+
-+    /* First compute the leftmost three colums */
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(dst, PICO_GET_W(PICO_OUTPIX0));
-+    dst += dstStride;
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_MVRC_W(PICO_INPIX1, src3);
-+    PICO_MVRC_W(PICO_INPIX0, src4);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(dst, PICO_GET_W(PICO_OUTPIX0));
-+    dst += dstStride;
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_MVRC_W(PICO_INPIX1, src4);
-+    PICO_MVRC_W(PICO_INPIX0, src5);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(dst, PICO_GET_W(PICO_OUTPIX0));
-+    dst += dstStride;
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src4);
-+    PICO_MVRC_W(PICO_INPIX1, src5);
-+    PICO_MVRC_W(PICO_INPIX0, src6);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(dst, PICO_GET_W(PICO_OUTPIX0));
-+    /* Now compute the last column */
-+ 
-+    tmp1.bytes.t = srcB;
-+    tmp1.bytes.u = src1;
-+    tmp1.bytes.l = src4;
-+    
-+    tmp2.bytes.t = srcA;
-+    tmp2.bytes.u = src2;
-+    tmp2.bytes.l = src5;
-+
-+    tmp3.bytes.t = src0;
-+    tmp3.bytes.u = src3;
-+    tmp3.bytes.l = src6;
-+    
-+    PICO_MVRC_W(PICO_INPIX0, tmp1.word);
-+    PICO_MVRC_W(PICO_INPIX1, tmp2.word);
-+    PICO_MVRC_W(PICO_INPIX2, tmp3.word);
-+    set_pico_config(&h264_qpel4_v_lowpass_config2);
-+
-+    
-+    PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
-+    PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
-+    PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
-+    PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
-+    
-+    PICO_MVCR_W(tmp1.word, PICO_OUTPIX0);
-+    dst[3] = (char)(tmp1.bytes.b);
-+    dst[3 - dstStride] = (char)(tmp1.bytes.l);
-+    dst[3 - 2*dstStride] = (char)(tmp1.bytes.u);
-+    dst[3 - 3*dstStride] = (char)(tmp1.bytes.t);
-+    
-+  }
-+    /*}
-+    
-+
-+    }*/
-+}
-+
-+static void avg_h264_qpel4_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+
-+  /*
-+    const int w=4;
-+    uint8_t *cm = cropTbl + MAX_NEG_CROP;
-+    int i;
-+    for(i=0; i<w; i++)
-+    {
-+    const int srcB= src[-2*srcStride];\
-+    const int srcA= src[-1*srcStride];\
-+    const int src0= src[0 *srcStride];\
-+    const int src1= src[1 *srcStride];\
-+    const int src2= src[2 *srcStride];\
-+    const int src3= src[3 *srcStride];\
-+    const int src4= src[4 *srcStride];\
-+    const int src5= src[5 *srcStride];\
-+    const int src6= src[6 *srcStride];\
-+    OP(dst[0*dstStride], (src0+src1)*20 - (srcA+src2)*5 + (srcB+src3));\
-+    OP(dst[1*dstStride], (src1+src2)*20 - (src0+src3)*5 + (srcA+src4));\
-+    OP(dst[2*dstStride], (src2+src3)*20 - (src1+src4)*5 + (src0+src5));\
-+    OP(dst[3*dstStride], (src3+src4)*20 - (src2+src5)*5 + (src1+src6));\
-+    dst++;\
-+    src++;\
-+  */  
-+  uint8_t tmp_block[4*4];
-+  
-+  set_pico_config(&h264_qpel4_v_lowpass_config1);
-+  
-+  {
-+    int srcB= LD32(src - 2*srcStride);
-+    int srcA= LD32(src - 1*srcStride);
-+    int src0= LD32(src + 0 *srcStride);
-+    int src1= LD32(src + 1 *srcStride);
-+    int src2= LD32(src + 2 *srcStride);
-+    int src3= LD32(src + 3 *srcStride);
-+    int src4= LD32(src + 4 *srcStride);
-+    int src5= LD32(src + 5 *srcStride);
-+    int src6= LD32(src + 6 *srcStride);
-+    
-+    /* First compute the leftmost three colums */
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(tmp_block, PICO_GET_W(PICO_OUTPIX0));
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_MVRC_W(PICO_INPIX1, src3);
-+    PICO_MVRC_W(PICO_INPIX0, src4);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(tmp_block + 4, PICO_GET_W(PICO_OUTPIX0));
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_MVRC_W(PICO_INPIX1, src4);
-+    PICO_MVRC_W(PICO_INPIX0, src5);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(tmp_block + 8, PICO_GET_W(PICO_OUTPIX0));
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(0, 0, 0, 3, 6);
-+    PICO_MVRC_W(PICO_INPIX2, src4);
-+    PICO_MVRC_W(PICO_INPIX1, src5);
-+    PICO_MVRC_W(PICO_INPIX0, src6);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 3, 6);
-+    ST32(tmp_block + 12, PICO_GET_W(PICO_OUTPIX0));
-+    /* Now compute the last column */
-+ 
-+    union wordbytes {
-+      int word;
-+      struct  {
-+        unsigned int t:8;
-+        unsigned int u:8;
-+        unsigned int l:8;
-+        unsigned int b:8; 
-+      } bytes; } tmp1, tmp2, tmp3;
-+    
-+    
-+    tmp1.bytes.t = srcB;
-+    tmp1.bytes.u = src1;
-+    tmp1.bytes.l = src4;
-+    
-+    tmp2.bytes.t = srcA;
-+    tmp2.bytes.u = src2;
-+    tmp2.bytes.l = src5;
-+
-+    tmp3.bytes.t = src0;
-+    tmp3.bytes.u = src3;
-+    tmp3.bytes.l = src6;
-+    
-+    PICO_MVRC_W(PICO_INPIX0, tmp1.word);
-+    PICO_MVRC_W(PICO_INPIX1, tmp2.word);
-+    PICO_MVRC_W(PICO_INPIX2, tmp3.word);
-+    set_pico_config(&h264_qpel4_v_lowpass_config2);
-+
-+    
-+    PICO_OP(PICO_SINGLE_VECTOR, 0, 0, 3, 6);
-+    PICO_OP(PICO_SINGLE_VECTOR, 1, 1, 4, 7);
-+    PICO_OP(PICO_SINGLE_VECTOR, 2, 2, 5, 8);
-+    PICO_OP(PICO_SINGLE_VECTOR, 3, 3, 6, 9);
-+    
-+    PICO_MVCR_W(tmp1.word, PICO_OUTPIX0);
-+    tmp_block[3 + 3*4] = (char)(tmp1.bytes.b);
-+    tmp_block[3 + 2*4] = (char)(tmp1.bytes.l);
-+    tmp_block[3 + 1*4] = (char)(tmp1.bytes.u);
-+    tmp_block[3] = (char)(tmp1.bytes.t);
-+
-+    /* Compute the average */
-+    srcB= LD32(dst);
-+    srcA= LD32(dst + dstStride);
-+    src0= LD32(dst + dstStride*2);
-+    src1= LD32(dst + dstStride*3);
-+          
-+    src2= LD32(tmp_block);
-+    src3= LD32(tmp_block + 4);
-+    src4= LD32(tmp_block + 8);
-+    src5= LD32(tmp_block + 12);
-+
-+    ST32(dst, rnd_avg32(srcB, src2));
-+    ST32(dst + dstStride, rnd_avg32(srcA, src3));
-+    ST32(dst + 2*dstStride, rnd_avg32(src0, src4));
-+    ST32(dst + 3*dstStride, rnd_avg32(src1, src5));    
-+  }
-+}
-+
-+static struct pico_config_t h264_qpel4_hv_lowpass_config = { 
-+  .input_mode = PICO_HOR_FILTER_MODE,
-+  .output_mode = PICO_PACKED_MODE,
-+  .coeff_frac_bits = 10,
-+  .offset_frac_bits = 10,
-+  .coeff0_0 = 1,
-+  .coeff0_1 = -5,
-+  .coeff0_2 = 20,
-+  .coeff0_3 = 512,
-+  .coeff1_0 = -5,
-+  .coeff1_1 = 25,
-+  .coeff1_2 = -100,
-+  .coeff1_3 = 0,
-+  .coeff2_0 = 20,
-+  .coeff2_1 = -100,
-+  .coeff2_2 = 400,
-+  .coeff2_3 = 0 
-+};
-+
-+static void put_h264_qpel4_hv_lowpass_pico(uint8_t *dst,  uint8_t *src, int dstStride, int srcStride){
-+
-+  int32_t tmp_block[48];
-+  int32_t *tmp = tmp_block;
-+  int i;
-+  
-+  set_pico_config(&h264_qpel4_hv_lowpass_config);
-+
-+  src -= 2;
-+  for ( i = 0; i < 2; i++ ){ 
-+    int srcB= LD32(src - 2*srcStride);
-+    int srcA= LD32(src - 1*srcStride);
-+    int src0= LD32(src + 0 *srcStride);
-+    int src1= LD32(src + 1 *srcStride);
-+    int src2= LD32(src + 2 *srcStride);
-+    int src3= LD32(src + 3 *srcStride);
-+    int src4= LD32(src + 4 *srcStride);
-+    int src5= LD32(src + 5 *srcStride);
-+    int src6= LD32(src + 6 *srcStride);
-+    
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(0, 0, 0, 4, 8);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_OP(0, 0, 4, 8, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_MVRC_W(PICO_INPIX1, src3);
-+    PICO_MVRC_W(PICO_INPIX0, src4);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_MVRC_W(PICO_INPIX0, src2);
-+    PICO_OP(0, 0, 4, 8, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_MVRC_W(PICO_INPIX1, src4);
-+    PICO_MVRC_W(PICO_INPIX0, src5);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(0, 0, 4, 8, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src4);
-+    PICO_MVRC_W(PICO_INPIX1, src5);
-+    PICO_MVRC_W(PICO_INPIX0, src6);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8); 
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;    
-+    src += 2;
-+  }
-+
-+  src -= 1;
-+  tmp -= 48;
-+
-+  
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE)  
-+             | PICO_INPUT_MODE(PICO_VERT_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(10)
-+             | PICO_OFFSET_FRAC_BITS(10));
-+
-+  for ( i = 0; i < 2; i++ ){ 
-+    int srcB= LD32(src - 2*srcStride);
-+    int srcA= LD32(src - 1*srcStride);
-+    int src0= LD32(src + 0 *srcStride);
-+    int src1= LD32(src + 1 *srcStride);
-+    int src2= LD32(src + 2 *srcStride);
-+    int src3= LD32(src + 3 *srcStride);
-+    int src4= LD32(src + 4 *srcStride);
-+    int src5= LD32(src + 5 *srcStride);
-+    int src6= LD32(src + 6 *srcStride);
-+    
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 0, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 1, 9, 6, 3);
-+    
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_MVRC_W(PICO_INPIX1, src3);
-+    PICO_MVRC_W(PICO_INPIX0, src4);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 2, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 3, 9, 6, 3);
-+    
-+    ST16(dst + 0*dstStride, (short)(PICO_GET_W(PICO_OUTPIX0) >> 16)); 
-+    ST16(dst + 1*dstStride, (short)PICO_GET_W(PICO_OUTPIX0)); 
-+    
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_MVRC_W(PICO_INPIX1, src4);
-+    PICO_MVRC_W(PICO_INPIX0, src5);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 0, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 1, 9, 6, 3);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src4);
-+    PICO_MVRC_W(PICO_INPIX1, src5);
-+    PICO_MVRC_W(PICO_INPIX0, src6);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 2, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 3, 9, 6, 3);
-+
-+    ST16(dst + 2*dstStride, (short)(PICO_GET_W(PICO_OUTPIX0) >> 16)); 
-+    ST16(dst + 3*dstStride, (short)PICO_GET_W(PICO_OUTPIX0)); 
-+
-+    dst += 2;
-+    src += 2;
-+  }
-+}
-+
-+
-+
-+
-+static void avg_h264_qpel4_hv_lowpass_pico(uint8_t *dst,  uint8_t *src, int dstStride, int srcStride){
-+
-+  int32_t tmp_block[48];
-+  int32_t *tmp = tmp_block;
-+  int i;
-+  
-+  set_pico_config(&h264_qpel4_hv_lowpass_config);
-+
-+  src -= 2;
-+  for ( i = 0; i < 2; i++ ){ 
-+    int srcB= LD32(src - 2*srcStride);
-+    int srcA= LD32(src - 1*srcStride);
-+    int src0= LD32(src + 0 *srcStride);
-+    int src1= LD32(src + 1 *srcStride);
-+    int src2= LD32(src + 2 *srcStride);
-+    int src3= LD32(src + 3 *srcStride);
-+    int src4= LD32(src + 4 *srcStride);
-+    int src5= LD32(src + 5 *srcStride);
-+    int src6= LD32(src + 6 *srcStride);
-+    
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(0, 0, 0, 4, 8);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_OP(0, 0, 4, 8, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_MVRC_W(PICO_INPIX1, src3);
-+    PICO_MVRC_W(PICO_INPIX0, src4);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_MVRC_W(PICO_INPIX0, src2);
-+    PICO_OP(0, 0, 4, 8, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_MVRC_W(PICO_INPIX1, src4);
-+    PICO_MVRC_W(PICO_INPIX0, src5);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(0, 0, 4, 8, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src4);
-+    PICO_MVRC_W(PICO_INPIX1, src5);
-+    PICO_MVRC_W(PICO_INPIX0, src6);
-+    PICO_OP(PICO_USE_ACC, 0, 0, 4, 8); 
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;
-+    
-+    PICO_OP(0, 0, 1, 5, 9);
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(PICO_USE_ACC, 0, 1, 5, 9);
-+    PICO_STCM_W(tmp, 
-+                PICO_REGVECT_VMU0_OUT, 
-+                PICO_REGVECT_VMU1_OUT, 
-+                PICO_REGVECT_VMU2_OUT);
-+    tmp += 3;    
-+    src += 2;
-+  }
-+
-+  src -= 1;
-+  tmp -= 48;
-+
-+  
-+  PICO_PUT_W(PICO_CONFIG, 
-+             PICO_OUTPUT_MODE(PICO_PLANAR_MODE)  
-+             | PICO_INPUT_MODE(PICO_VERT_FILTER_MODE) 
-+             | PICO_COEFF_FRAC_BITS(10)
-+             | PICO_OFFSET_FRAC_BITS(10));
-+
-+  for ( i = 0; i < 2; i++ ){ 
-+    int srcB= LD32(src - 2*srcStride);
-+    int srcA= LD32(src - 1*srcStride);
-+    int src0= LD32(src + 0 *srcStride);
-+    int src1= LD32(src + 1 *srcStride);
-+    int src2= LD32(src + 2 *srcStride);
-+    int src3= LD32(src + 3 *srcStride);
-+    int src4= LD32(src + 4 *srcStride);
-+    int src5= LD32(src + 5 *srcStride);
-+    int src6= LD32(src + 6 *srcStride);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX0, src3);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 0, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, srcB);
-+    PICO_MVRC_W(PICO_INPIX1, srcA);
-+    PICO_MVRC_W(PICO_INPIX2, src0);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 1, 9, 6, 3);
-+    
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_MVRC_W(PICO_INPIX1, src3);
-+    PICO_MVRC_W(PICO_INPIX0, src4);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 2, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, srcA);
-+    PICO_MVRC_W(PICO_INPIX1, src0);
-+    PICO_MVRC_W(PICO_INPIX2, src1);
-+    PICO_OP(PICO_USE_ACC | PICO_SINGLE_VECTOR, 3, 9, 6, 3);
-+    
-+    ST16(dst + 0*dstStride, rnd_avg32(LD16(dst + 0*dstStride), PICO_GET_W(PICO_OUTPIX0) >> 16)); 
-+    ST16(dst + 1*dstStride, rnd_avg32(LD16(dst + 1*dstStride), PICO_GET_W(PICO_OUTPIX0))); 
-+    
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(PICO_USE_ACC, 0, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_MVRC_W(PICO_INPIX1, src4);
-+    PICO_MVRC_W(PICO_INPIX0, src5);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 0, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 1, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, src0);
-+    PICO_MVRC_W(PICO_INPIX1, src1);
-+    PICO_MVRC_W(PICO_INPIX2, src2);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 1, 9, 6, 3);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(PICO_USE_ACC, 2, 6, 3, 0);
-+    PICO_MVRC_W(PICO_INPIX2, src4);
-+    PICO_MVRC_W(PICO_INPIX1, src5);
-+    PICO_MVRC_W(PICO_INPIX0, src6);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 2, 6, 3, 0);
-+
-+    PICO_LDCM_W_INC(tmp, 
-+                    PICO_REGVECT_VMU0_OUT, 
-+                    PICO_REGVECT_VMU1_OUT, 
-+                    PICO_REGVECT_VMU2_OUT);
-+    PICO_OP(PICO_USE_ACC, 3, 9, 6, 3);
-+    PICO_MVRC_W(PICO_INPIX0, src1);
-+    PICO_MVRC_W(PICO_INPIX1, src2);
-+    PICO_MVRC_W(PICO_INPIX2, src3);
-+    PICO_OP(PICO_USE_ACC| PICO_SINGLE_VECTOR, 3, 9, 6, 3);
-+
-+    ST16(dst + 2*dstStride, rnd_avg32(LD16(dst + 2*dstStride), PICO_GET_W(PICO_OUTPIX0) >> 16)); 
-+    ST16(dst + 3*dstStride, rnd_avg32(LD16(dst + 3*dstStride), PICO_GET_W(PICO_OUTPIX0))); 
-+
-+    dst += 2;
-+    src += 2;
-+  }
-+}
-+
-+
-+static void put_h264_qpel8_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  put_h264_qpel4_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+  src += 4*srcStride;
-+  dst += 4*dstStride;
-+  put_h264_qpel4_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+}
-+
-+static void avg_h264_qpel8_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  avg_h264_qpel4_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+  src += 4*srcStride;
-+  dst += 4*dstStride;
-+  avg_h264_qpel4_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel4_v_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+}
-+
-+static void put_h264_qpel8_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  put_h264_qpel4_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+  src += 4*srcStride;
-+  dst += 4*dstStride;
-+  put_h264_qpel4_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+}
-+
-+static void avg_h264_qpel8_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  avg_h264_qpel4_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+  src += 4*srcStride;
-+  dst += 4*dstStride;
-+  avg_h264_qpel4_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel4_h_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+}
-+
-+static void put_h264_qpel8_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  put_h264_qpel4_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+  src += 4*srcStride;
-+  dst += 4*dstStride;
-+  put_h264_qpel4_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+}
-+
-+static void avg_h264_qpel8_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  avg_h264_qpel4_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+  src += 4*srcStride;
-+  dst += 4*dstStride;
-+  avg_h264_qpel4_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel4_hv_lowpass_pico(dst+4, src+4, dstStride, srcStride);
-+}
-+
-+static void put_h264_qpel16_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  put_h264_qpel8_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+  src += 8*srcStride;
-+  dst += 8*dstStride;
-+  put_h264_qpel8_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+}
-+
-+static void avg_h264_qpel16_v_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  avg_h264_qpel8_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+  src += 8*srcStride;
-+  dst += 8*dstStride;
-+  avg_h264_qpel8_v_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel8_v_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+}
-+
-+static void put_h264_qpel16_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  put_h264_qpel8_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+  src += 8*srcStride;
-+  dst += 8*dstStride;
-+  put_h264_qpel8_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+}
-+
-+static void avg_h264_qpel16_h_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  avg_h264_qpel8_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+  src += 8*srcStride;
-+  dst += 8*dstStride;
-+  avg_h264_qpel8_h_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel8_h_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+}
-+
-+static void put_h264_qpel16_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  put_h264_qpel8_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+  src += 8*srcStride;
-+  dst += 8*dstStride;
-+  put_h264_qpel8_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  put_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+}
-+
-+static void avg_h264_qpel16_hv_lowpass_pico(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){
-+  avg_h264_qpel8_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+  src += 8*srcStride;
-+  dst += 8*dstStride;
-+  avg_h264_qpel8_hv_lowpass_pico(dst  , src  , dstStride, srcStride);
-+  avg_h264_qpel8_hv_lowpass_pico(dst+8, src+8, dstStride, srcStride);
-+}
-+
-+
-+#define H264_MC(OPNAME, SIZE) \
-+static void OPNAME ## h264_qpel ## SIZE ## _mc00_pico (uint8_t *dst, uint8_t *src, int stride){\
-+    OPNAME ## pixels ## SIZE ## _c(dst, src, stride, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc10_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t half[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(half, src, SIZE, stride);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, src, half, stride, stride, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc20_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    OPNAME ## h264_qpel ## SIZE ## _h_lowpass_pico(dst, src, stride, stride);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc30_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t half[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(half, src, SIZE, stride);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, src+1, half, stride, stride, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc01_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t half[SIZE*SIZE];\
-+    copy_block ## SIZE (full, src - stride*2, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(half, full_mid, SIZE, SIZE);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, full_mid, half, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc02_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    copy_block ## SIZE (full, src - stride*2, SIZE,  stride, SIZE + 5);\
-+    OPNAME ## h264_qpel ## SIZE ## _v_lowpass_pico(dst, full_mid, stride, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc03_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t half[SIZE*SIZE];\
-+    copy_block ## SIZE (full, src - stride*2, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(half, full_mid, SIZE, SIZE);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, full_mid+SIZE, half, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc11_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t halfH[SIZE*SIZE];\
-+    uint8_t halfV[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src, SIZE, stride);\
-+    copy_block ## SIZE (full, src - stride*2, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc31_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t halfH[SIZE*SIZE];\
-+    uint8_t halfV[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src, SIZE, stride);\
-+    copy_block ## SIZE (full, src - stride*2 + 1, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc13_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t halfH[SIZE*SIZE];\
-+    uint8_t halfV[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src + stride, SIZE, stride);\
-+    copy_block ## SIZE (full, src - stride*2, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc33_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t halfH[SIZE*SIZE];\
-+    uint8_t halfV[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src + stride, SIZE, stride);\
-+    copy_block ## SIZE (full, src - stride*2 + 1, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfV, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc22_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    OPNAME ## h264_qpel ## SIZE ## _hv_lowpass_pico(dst, src, stride, stride);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc21_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t halfH[SIZE*SIZE];\
-+    uint8_t halfHV[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src, SIZE, stride);\
-+    put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfHV, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc23_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t halfH[SIZE*SIZE];\
-+    uint8_t halfHV[SIZE*SIZE];\
-+    put_h264_qpel ## SIZE ## _h_lowpass_pico(halfH, src + stride, SIZE, stride);\
-+    put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfH, halfHV, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc12_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t halfV[SIZE*SIZE];\
-+    uint8_t halfHV[SIZE*SIZE];\
-+    copy_block ## SIZE (full, src - stride*2, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
-+    put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfV, halfHV, stride, SIZE, SIZE, SIZE);\
-+}\
-+\
-+static void OPNAME ## h264_qpel ## SIZE ## _mc32_pico(uint8_t *dst, uint8_t *src, int stride){\
-+    uint8_t full[SIZE*(SIZE+5)];\
-+    uint8_t * const full_mid= full + SIZE*2;\
-+    uint8_t halfV[SIZE*SIZE];\
-+    uint8_t halfHV[SIZE*SIZE];\
-+    copy_block ## SIZE (full, src - stride*2 + 1, SIZE,  stride, SIZE + 5);\
-+    put_h264_qpel ## SIZE ## _v_lowpass_pico(halfV, full_mid, SIZE, SIZE);\
-+    put_h264_qpel ## SIZE ## _hv_lowpass_pico(halfHV, src, SIZE, stride);\
-+    OPNAME ## pixels ## SIZE ## _l2(dst, halfV, halfHV, stride, SIZE, SIZE, SIZE);\
-+}\
-+
-+H264_MC(put_, 4)
-+H264_MC(put_, 8)
-+H264_MC(put_, 16)
-+H264_MC(avg_, 4)
-+H264_MC(avg_, 8)
-+H264_MC(avg_, 16)
-+
-+
-+
-+#define dspfunc16(PFX) \
-+    void PFX ## _pixels16_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
-+          PFX ## _pixels8_avr32(dst, pixels, line_size, h);\
-+          PFX ## _pixels8_avr32(dst + 8, pixels + 8, line_size, h);\
-+    }\
-+    void PFX ## _pixels16_h_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
-+          PFX ## _pixels8_h_avr32(dst, pixels, line_size, h);\
-+          PFX ## _pixels8_h_avr32(dst + 8, pixels + 8, line_size, h);\
-+    }\
-+    void PFX ## _pixels16_v_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
-+          PFX ## _pixels8_v_avr32(dst, pixels, line_size, h);\
-+          PFX ## _pixels8_v_avr32(dst + 8, pixels + 8, line_size, h);\
-+    }\
-+    void PFX ## _pixels16_hv_avr32(uint8_t *dst, const uint8_t *pixels, int line_size, int h ){ \
-+          PFX ## _pixels8_hv_avr32(dst, pixels, line_size, h);\
-+          PFX ## _pixels8_hv_avr32(dst + 8, pixels + 8, line_size, h);\
-+    }\
-+
-+
-+dspfunc16(put)
-+dspfunc16(put_no_rnd)
-+dspfunc16(avg)
-+dspfunc16(avg_no_rnd)
-+#undef dspfunc16
-+
-+static int pix_sum_avr32(uint8_t * pix, int line_size)
-+{
-+    int s, i;
-+
-+    s = 0;
-+    for (i = 0; i < 16; i++) {
-+      int tmp1,tmp2,tmp3,tmp4,tmp5;
-+      __asm__ volatile ( "ld.w\t%0, %6[0]\n\t"
-+                         "ld.w\t%1, %6[4]\n\t"
-+                         "ld.w\t%2, %6[8]\n\t"
-+                         "ld.w\t%3, %6[12]\n\t"
-+                         "punpckub.h\t%4, %0:t\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         "punpckub.h\t%4, %0:b\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         "punpckub.h\t%4, %1:t\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         "punpckub.h\t%4, %1:b\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         "punpckub.h\t%4, %2:t\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         "punpckub.h\t%4, %2:b\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         "punpckub.h\t%4, %3:t\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         "punpckub.h\t%4, %3:b\n\t"
-+                         "padd.h\t%5, %5, %4\n\t"
-+                         : "=&r"(tmp1),"=&r"(tmp2),"=&r"(tmp3),"=&r"(tmp4),"=&r"(tmp5),"=&r"(s)
-+                         : "r"(pix));
-+      pix += line_size;
-+    }
-+    __asm__ volatile ( "addhh.w\t%0, %0:t, %0:b" : "=&r" (s) );
-+
-+    return s;
-+}
-+
-+
-+//#define op_scale1(x)  block[x] = clip_uint8( (block[x]*weight + offset) >> log2_denom )
-+//#define op_scale2(x)  dst[x] = clip_uint8( (src[x]*weights + dst[x]*weightd + offset) >> (log2_denom+1))
-+//#define H264_WEIGHT(W,H) \
-+//static void weight_h264_pixels ## W ## x ## H ## _c(uint8_t *block, int stride, int log2_denom, int weight, int offset){ \
-+//    int attribute_unused x, y; \
-+//    offset <<= log2_denom; \
-+//    if(log2_denom) offset += 1<<(log2_denom-1); \
-+//    for(y=0; y<H; y++, block += stride){ \
-+//      uint32_t tmp0, tmp1;
-+//      if(W==2) { \
-+//        asm volatile ( "ld.ub\t%[tmp0], %[block][0]\n" \
-+//                       "ld.ub\t%[tmp1], %[block][1]\n" \
-+//                       "mulhh.w\t%[tmp0], %[tmp0]:b, %[weight]:b\n" \
-+//                       "mulhh.w\t%[tmp1], %[tmp1]:b, %[weight]:b\n" \
-+//                       "asr\t%[tmp0], %[log2_denom]\n" \
-+//                       "asr\t%[tmp1], %[log2_denom]\n" \
-+//                       "satu\t%[tmp0] >> 0, 8\n" \
-+//                       "satu\t%[tmp1] >> 0, 8\n" \
-+//                       "st.b\t%[block][0], %[tmp0]\n" \
-+//                       "st.b\t%[block][1], %[tmp1]\n" \
-+//                       : [tmp0] "=&r"(tmp0), [tmp1] "=&r"(tmp1) \
-+//                       : [block] "r"(block), [weight]"r"(weight), [log2_denom]"r"(log2denom) ); \     
-+//      } else if ( W==4 ) { \
-+//        asm volatile ( "ld.w\t%[tmp0], %[block][0]\n" \
-+//                       "punpckub.h\t%[tmp1], %[tmp0]:t\n" \
-+//                       "punpckub.h\t%[tmp0], %[tmp0]:b\n" \
-+//                       "mulhh.w\t%[tmp2], %[tmp1]:t, %[weight]:b\n" \
-+//                       "mulhh.w\t%[tmp1], %[tmp1]:b, %[weight]:b\n" \
-+//                       "asr\t%[tmp0], %[log2_denom]\n" \
-+//                       "asr\t%[tmp1], %[log2_denom]\n" \
-+//                       "satu\t%[tmp0] >> 0, 8\n" \
-+//                       "satu\t%[tmp1] >> 0, 8\n" \
-+//                       "st.b\t%[block][0], %[tmp0]\n" \
-+//                       "st.b\t%[block][1], %[tmp1]\n" \
-+//                       : [tmp0] "=&r"(tmp0), [tmp1] "=&r"(tmp1) \
-+//                       : [block] "r"(block), [weight]"r"(weight), [log2_denom]"r"(log2denom) ); \     
-+//
-+//
-+//
-+//        if(W==4) continue; \
-+//        op_scale1(4); \
-+//        op_scale1(5); \
-+//        op_scale1(6); \
-+//        op_scale1(7); \
-+//        if(W==8) continue; \
-+//        op_scale1(8); \
-+//        op_scale1(9); \
-+//        op_scale1(10); \
-+//        op_scale1(11); \
-+//        op_scale1(12); \
-+//        op_scale1(13); \
-+//        op_scale1(14); \
-+//        op_scale1(15); \
-+//    } \
-+//} \
-+//static void biweight_h264_pixels ## W ## x ## H ## _c(uint8_t *dst, uint8_t *src, int stride, int log2_denom, int weightd, int weights, int offsetd, int offsets){ \
-+//    int attribute_unused x, y; \
-+//    int offset = (offsets + offsetd + 1) >> 1; \
-+//    offset = ((offset << 1) + 1) << log2_denom; \
-+//    for(y=0; y<H; y++, dst += stride, src += stride){ \
-+//        op_scale2(0); \
-+//        op_scale2(1); \
-+//        if(W==2) continue; \
-+//        op_scale2(2); \
-+//        op_scale2(3); \
-+//        if(W==4) continue; \
-+//        op_scale2(4); \
-+//        op_scale2(5); \
-+//        op_scale2(6); \
-+//        op_scale2(7); \
-+//        if(W==8) continue; \
-+//        op_scale2(8); \
-+//        op_scale2(9); \
-+//        op_scale2(10); \
-+//        op_scale2(11); \
-+//        op_scale2(12); \
-+//        op_scale2(13); \
-+//        op_scale2(14); \
-+//        op_scale2(15); \
-+//    } \
-+//}
-+
-+
-+
-+/* Returns zero in each byte where the absolute difference between <a> and <b>
-+   is not less than <compare> */
-+#define PABS_DIFF_LESS_THAN( a, b, compare) \
-+  ({  uint32_t __tmp__, __tmp2__, __mask__; \
-+      asm ( \
-+      /* Check ABS( a - b ) < compare */  \
-+        "psubs.ub\t%[tmp], %[opa], %[opb]\n"  \
-+        "psubs.ub\t%[tmp2], %[opb], %[opa]\n" \
-+        "or\t%[tmp], %[tmp2]\n" /* ABS ( a - b ) */ \
-+        /* This produces 0 for all bytes where the comparison is not true */ \
-+        "psubs.ub\t%[mask], %[cmp], %[tmp]\n" \
-+        : [tmp] "=&r"(__tmp__), [tmp2] "=&r"(__tmp2__), [mask] "=&r"(__mask__)  \
-+        : [opa] "r"(a), [opb] "r"(b), [cmp] "r"(compare)  ); \
-+      __mask__; })
-+
-+/* 
-+   Set all bytes containing zero in <value> to 255 and the rest to zero.
-+   
-+   Add with saturation 254 to all bytes making all bytes different from 
-+   zero become 255. Then add one without saturation to make all bytes 
-+   originally containing zero 255 and the rest 0. */ 
-+#define SET_ALL_BITS_IN_ZERO_BYTES(value) \
-+  ({  uint32_t __tmp__; \
-+      asm ( \
-+        "padds.ub\t%[tmp], %[val], %[max_minus_one]\n"  \
-+        "padd.b\t%[tmp], %[tmp], %[all_ones]\n" \
-+        : [tmp] "=r"(__tmp__) \
-+        : [val] "r"(value), [max_minus_one] "r"(0xFEFEFEFE), [all_ones] "r"(0x01010101) ); \
-+      __tmp__; })
-+
-+#define  PACKW_SH(upper, lower) \
-+  ({  uint32_t __tmp__; \
-+      asm ( \
-+        "packw.sh\t%[tmp], %[u], %[l]\n"  \
-+        : [tmp] "=r"(__tmp__) \
-+        : [u] "r"(upper), [l] "r"(lower) ); \
-+      __tmp__; })
-+
-+#define  PACKSH_UB(upper, lower) \
-+  ({  uint32_t __tmp__; \
-+      asm ( \
-+        "packsh.sb\t%[tmp], %[u], %[l]\n"  \
-+        : [tmp] "=r"(__tmp__) \
-+        : [u] "r"(upper), [l] "r"(lower) ); \
-+      __tmp__; })
-+
-+static  void h264_v_loop_filter_luma_avr32(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0)
-+{
-+  int i;
-+  
-+  if ( alpha == 0 )
-+    return;
-+  
-+  alpha = PACKW_SH(alpha, alpha);
-+  alpha = PACKSH_UB(alpha, alpha);
-+  beta = PACKW_SH(beta, beta);
-+  beta = PACKSH_UB(beta, beta);
-+
-+  for( i = 0; i < 4; i++ ) {
-+    uint32_t p0, p1, p2, q0, q1, q2;
-+    uint32_t mask, mask2;
-+    uint32_t tmp, tmp2, tmp3, tmp4;
-+
-+    if( tc0[i] < 0 ) {
-+      pix += 4;
-+      continue;
-+    }
-+
-+/*    for( d = 0; d < 4; d++ ) {
-+       const int p0 = pix[-1*stride];
-+       const int p1 = pix[-2*stride];
-+       const int p2 = pix[-3*stride];
-+       const int q0 = pix[0];
-+       const int q1 = pix[1*stride];
-+       const int q2 = pix[2*stride];
-+      
-+       if( ABS( p0 - q0 ) < alpha &&
-+           ABS( p1 - p0 ) < beta &&
-+           ABS( q1 - q0 ) < beta ) { */
-+
-+    p0 = LD32(pix - stride);
-+    p1 = LD32(pix - 2*stride);
-+    q0 = LD32(pix);
-+    q1 = LD32(pix + stride);
-+    
-+    /* Check which of the columns should be filtered, if any. */
-+    mask = PABS_DIFF_LESS_THAN(p0, q0, alpha);
-+    mask |= PABS_DIFF_LESS_THAN(p1, p0, beta);
-+    mask |= PABS_DIFF_LESS_THAN(q1, q0, beta);
-+        
-+    if ( !mask )
-+      continue;
-+        
-+    mask = SET_ALL_BITS_IN_ZERO_BYTES(mask);
-+    
-+
-+    int tc =  PACKW_SH(tc0[i], tc0[i]);
-+    int tc0_p = tc;
-+    int tc0_m = PACKW_SH(-tc0[i], -tc0[i]);
-+
-+    /*
-+      int i_delta;
-+      if( ABS( p2 - p0 ) < beta ) {
-+      pix[-2*stride] = p1 + clip( (( p2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - p1, -tc0[i], tc0[i] );
-+      tc++;
-+      }*/ 
-+
-+    p2 = LD32(pix - 3*stride);
-+    mask2 = PABS_DIFF_LESS_THAN(p2, p0, beta) & ~mask;
-+    
-+    if ( mask2 ){
-+      mask2 = SET_ALL_BITS_IN_ZERO_BYTES(mask2);
-+      asm ("pavg.ub\t%[tmp], %[p0], %[q0]\n"
-+           "paddh.ub\t%[tmp], %[tmp], %[p2]\n"
-+           "punpckub.h\t%[tmp2], %[tmp]:t\n"
-+           "punpckub.h\t%[tmp], %[tmp]:b\n"
-+           "punpckub.h\t%[tmp3], %[p1]:t\n"
-+           "punpckub.h\t%[tmp4], %[p1]:b\n"
-+           "psub.h\t%[tmp2], %[tmp2], %[tmp3]\n"
-+           "psub.h\t%[tmp], %[tmp], %[tmp4]\n"
-+           "pmin.sh\t%[tmp2], %[tmp2], %[tc0_p]\n"
-+           "pmin.sh\t%[tmp], %[tmp], %[tc0_p]\n"
-+           "pmax.sh\t%[tmp2], %[tmp2], %[tc0_m]\n"
-+           "pmax.sh\t%[tmp], %[tmp], %[tc0_m]\n"
-+           "padd.h\t%[tmp2], %[tmp2], %[tmp3]\n"
-+           "padd.h\t%[tmp], %[tmp], %[tmp4]\n"
-+           "packsh.ub\t%[tmp], %[tmp2], %[tmp]\n"
-+           "andn\t%[tmp], %[mask2]\n"
-+           "and\t%[tmp2], %[q1], %[mask2]\n"
-+           "or\t%[tmp], %[tmp2]\n"
-+           : [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2), [tmp3]"=&r"(tmp3),
-+           [tmp4]"=&r"(tmp4)
-+           : [q0]"r"(q0), [p2]"r"(p2), [p1]"r"(p1), [p0]"r"(p0), [q1]"r"(q1), [tc0_p]"r"(tc0_p),
-+           [tc0_m]"r"(tc0_m), [mask2]"r"(mask2));
-+      ST32(pix - 2*stride, tmp);      
-+      tc += 0x00010001;
-+    }
-+
-+        
-+    q2 = LD32(pix + 2*stride);
-+
-+    /*
-+      if( ABS( q2 - q0 ) < beta ) {
-+      pix[   stride] = q1 + clip( (( q2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - q1, -tc0[i], tc0[i] );
-+      tc++;
-+      }
-+    */
-+    mask2 = PABS_DIFF_LESS_THAN(q2, q0, beta) & ~mask;
-+
-+    if ( mask2 ){
-+      mask2 = SET_ALL_BITS_IN_ZERO_BYTES(mask2);
-+      asm ("pavg.ub\t%[tmp], %[p0], %[q0]\n"
-+           "paddh.ub\t%[tmp], %[tmp], %[q2]\n"
-+           "punpckub.h\t%[tmp2], %[tmp]:t\n"
-+           "punpckub.h\t%[tmp], %[tmp]:b\n"
-+           "punpckub.h\t%[tmp3], %[q1]:t\n"
-+           "punpckub.h\t%[tmp4], %[q1]:b\n"
-+           "psub.h\t%[tmp2], %[tmp2], %[tmp3]\n"
-+           "psub.h\t%[tmp], %[tmp], %[tmp4]\n"
-+           "pmin.sh\t%[tmp2], %[tmp2], %[tc0_p]\n"
-+           "pmin.sh\t%[tmp], %[tmp], %[tc0_p]\n"
-+           "pmax.sh\t%[tmp2], %[tmp2], %[tc0_m]\n"
-+           "pmax.sh\t%[tmp], %[tmp], %[tc0_m]\n"
-+           "padd.h\t%[tmp2], %[tmp2], %[tmp3]\n"
-+           "padd.h\t%[tmp], %[tmp], %[tmp4]\n"
-+           "packsh.ub\t%[tmp], %[tmp2], %[tmp]\n"
-+           "andn\t%[tmp], %[mask2]\n"
-+           "and\t%[tmp2], %[q1], %[mask2]\n"
-+           "or\t%[tmp], %[tmp2]\n"
-+           : [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2), [tmp3]"=&r"(tmp3),
-+           [tmp4]"=&r"(tmp4)
-+           : [q0]"r"(q0), [q2]"r"(q2), [q1]"r"(q1), [p0]"r"(p0), [tc0_p]"r"(tc0_p),
-+           [tc0_m]"r"(tc0_m), [mask2]"r"(mask2));
-+      ST32(pix + stride, tmp); 
-+      tc += 0x00010001;
-+    }
-+
-+    uint32_t old_p0 = p0;
-+    uint32_t old_q0 = q0;
-+    
-+    /* i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc );
-+       pix[-stride] = clip_uint8( p0 + i_delta );   
-+       pix[0]        = clip_uint8( q0 - i_delta );  */ 
-+    
-+    asm (
-+         /* Check if the two upper pixels should be filtered */
-+         "lsr\t%[tmp], %[inv_mask], 16\n"
-+         "breq\t0f\n"
-+
-+         "punpckub.h\t%[tmp], %[p1]:t\n"
-+         "punpckub.h\t%[tmp2], %[q1]:t\n"
-+         
-+         /* p1 - q1 */
-+         "psub.h\t%[tmp], %[tmp], %[tmp2]\n"
-+
-+         "punpckub.h\t%[tmp3], %[q0]:t\n"
-+         "punpckub.h\t%[tmp4], %[p0]:t\n"
-+
-+         /* q0 - p0 */
-+         "psub.h\t%[tmp2], %[tmp3], %[tmp4]\n"
-+         
-+         /* (q0 - p0) << 2 */
-+         "plsl.h\t%[tmp2], %[tmp2], 2\n"
-+
-+         /* ((q0 - p0) << 2) + (p1 - q1) */
-+         "padd.h\t%[tmp2], %[tmp2], %[tmp]\n"
-+
-+         "mov\t%[tmp], 0x00040004\n"
-+         /* ((q0 - p0) << 2) + (p1 - q1) + 4*/
-+         "padd.h\t%[tmp2], %[tmp2], %[tmp]\n"
-+
-+         /* (((q0 - p0) << 2) + (p1 - q1) + 4) >> 3*/
-+         "pasr.h\t%[tmp2], %[tmp2], 3\n"
-+
-+         "mov\t%[tmp], 0\n"
-+         "psub.h\t%[tmp], %[tmp], %[tc]\n"
-+
-+         /* i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc ); */
-+         "pmin.sh\t%[tmp2], %[tmp2], %[tc]\n"
-+         "pmax.sh\t%[tmp2], %[tmp2], %[tmp]\n"
-+
-+
-+         /* pix[-stride] = clip_uint8( p0 + i_delta ); */
-+         "padd.h\t%[tmp4], %[tmp4], %[tmp2]\n"
-+
-+         
-+         /* pix[0]        = clip_uint8( q0 - i_delta ); */
-+         "psub.h\t%[tmp3], %[tmp3], %[tmp2]\n"
-+
-+         /* Check if the two lower pixels should be filtered */
-+         "lsl\t%[tmp2], %[inv_mask], 16\n"
-+         "breq\t1f\n"
-+
-+         "0:\n"
-+         "punpckub.h\t%[p1], %[p1]:b\n"
-+         "punpckub.h\t%[q1], %[q1]:b\n"
-+
-+         /* p1 - q1 */
-+         "psub.h\t%[p1], %[p1], %[q1]\n"
-+
-+         "punpckub.h\t%[q0], %[q0]:b\n"
-+         "punpckub.h\t%[p0], %[p0]:b\n"
-+
-+         /* q0 - p0 */
-+         "psub.h\t%[tmp2], %[q0], %[p0]\n"
-+
-+         /* (q0 - p0) << 2 */
-+         "plsl.h\t%[tmp2], %[tmp2], 2\n"
-+
-+         /* ((q0 - p0) << 2) + (p1 - q1) */
-+         "padd.h\t%[tmp2], %[tmp2], %[p1]\n"
-+
-+         "mov\t%[q1], 0x00040004\n"
-+         /* ((q0 - p0) << 2) + (p1 - q1) + 4*/
-+         "padd.h\t%[tmp2], %[tmp2], %[q1]\n"
-+
-+         /* (((q0 - p0) << 2) + (p1 - q1) + 4) >> 3*/
-+         "pasr.h\t%[tmp2], %[tmp2], 3\n"
-+ 
-+         /* i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc ); */
-+         "pmin.sh\t%[tmp2], %[tmp2], %[tc]\n"
-+         "pmax.sh\t%[tmp2], %[tmp2], %[tmp]\n"
-+
-+         /* pix[-stride] = clip_uint8( p0 + i_delta ); */
-+         "padd.h\t%[p0], %[p0], %[tmp2]\n"
-+
-+         /* pix[0]        = clip_uint8( q0 - i_delta ); */
-+         "psub.h\t%[q0], %[q0], %[tmp2]\n"
-+
-+         "1:\n"
-+         "packsh.ub\t%[p0], %[tmp4], %[p0]\n"
-+         "packsh.ub\t%[q0], %[tmp3], %[tmp4]\n"
-+
-+         : [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2), [tmp3]"=&r"(tmp3),
-+         [tmp4]"=&r"(tmp4), [q0]"=&r"(q0), [q1]"=&r"(q1), [p0]"=&r"(p0), [p1]"=&r"(p1)
-+         : [tc]"r"(tc), [inv_mask]"r"(~mask));
-+    
-+    ST32(pix - stride, (mask & old_p0) | (p0 & ~mask));
-+    ST32(pix, (mask & old_q0) | (q0 & ~mask));
-+    
-+  }
-+  pix += 1;
-+}
-+
-+
-+
-+
-+#ifdef CHECK_DSP_FUNCS_AGAINST_C
-+
-+void dump_block8(uint8_t *block, int line_size, int h){
-+  int i, j;
-+
-+  for ( i = 0; i < h ; i++ ){
-+    av_log(NULL, AV_LOG_ERROR, "\t"); 
-+    for ( j = 0; j < 8 ; j++ ){
-+      av_log(NULL, AV_LOG_ERROR, "%d ", block[j + i*line_size]); 
-+    }
-+    av_log(NULL, AV_LOG_ERROR, "\n"); 
-+  }
-+}
-+
-+void dump_block4(uint8_t *block, int line_size, int h){
-+  int i, j;
-+
-+  for ( i = 0; i < h ; i++ ){
-+    av_log(NULL, AV_LOG_ERROR, "\t"); 
-+    for ( j = 0; j < 4 ; j++ ){
-+      av_log(NULL, AV_LOG_ERROR, "%d ", block[j + i*line_size]); 
-+    }
-+    av_log(NULL, AV_LOG_ERROR, "\n"); 
-+  }
-+}
-+
-+void dump_block(uint8_t *block, int line_size, int h, int w){
-+  int i, j;
-+
-+  for ( i = 0; i < h ; i++ ){
-+    av_log(NULL, AV_LOG_ERROR, "\t"); 
-+    for ( j = 0; j < w ; j++ ){
-+      av_log(NULL, AV_LOG_ERROR, "%d ", block[j + i*line_size]); 
-+    }
-+    av_log(NULL, AV_LOG_ERROR, "\n"); 
-+  }
-+}
-+
-+void check_block8(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct, 
-+                  int h, char *name, int max_dev){
-+  int i,j;
-+  for ( i = 0; i < 8 ; i++ ){
-+    for ( j = 0; j < h ; j++ ){
-+      int diff = test[i + line_size_test*j] - correct[i + line_size_correct*j];
-+      diff = diff < 0 ? -diff : diff;
-+      if ( diff > max_dev ){
-+        av_log(NULL, AV_LOG_ERROR, "Error pixel x=%i, y=%i differs. Is 0x%x should be 0x%x\n", 
-+               i, j, test[i + line_size_test*j], correct[i + j*line_size_correct]);        
-+        av_log(NULL, AV_LOG_ERROR, "Error resulting block from %s is:\n", name);
-+        dump_block8(test, line_size_test, h); 
-+        av_log(NULL, AV_LOG_ERROR, "But should be equal to:\n");
-+        dump_block8(correct, line_size_correct, h);         
-+        exit(1);
-+      }
-+    }
-+  }  
-+}
-+
-+void check_block4(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct, 
-+                  int h, char *name, int max_dev){
-+  int i,j;
-+  for ( i = 0; i < 4 ; i++ ){
-+    for ( j = 0; j < h ; j++ ){
-+      int diff = test[i + line_size_test*j] - correct[i + line_size_correct*j];
-+      diff = diff < 0 ? -diff : diff;
-+      if ( diff > max_dev ){
-+        av_log(NULL, AV_LOG_ERROR, "Error pixel x=%i, y=%i differs. Is 0x%x should be 0x%x\n", 
-+               i, j, test[i + line_size_test*j], correct[i + j*line_size_correct]);        
-+        av_log(NULL, AV_LOG_ERROR, "Error resulting block from %s is:\n", name);
-+        dump_block8(test, line_size_test, h); 
-+        av_log(NULL, AV_LOG_ERROR, "But should be equal to:\n");
-+        dump_block4(correct, line_size_correct, h);         
-+        exit(1);
-+      }
-+    }
-+  }  
-+}
-+
-+void check_block(uint8_t *test, uint8_t *correct, int line_size_test, int line_size_correct, 
-+                 int h, int width, char *name, int max_dev){
-+  int i,j;
-+  for ( i = 0; i < width ; i++ ){
-+    for ( j = 0; j < h ; j++ ){
-+      int diff = test[i + line_size_test*j] - correct[i + line_size_correct*j];
-+      diff = diff < 0 ? -diff : diff;
-+      if ( diff > max_dev ){
-+        av_log(NULL, AV_LOG_ERROR, "Error pixel x=%i, y=%i differs. Is 0x%x should be 0x%x\n", 
-+               i, j, test[i + line_size_test*j], correct[i + j*line_size_correct]);        
-+        av_log(NULL, AV_LOG_ERROR, "Error resulting block from %s is:\n", name);
-+        dump_block(test, line_size_test, h, width); 
-+        av_log(NULL, AV_LOG_ERROR, "But should be equal to:\n");
-+        dump_block(correct, line_size_correct, h, width);         
-+        exit(1);
-+      }
-+    }
-+  }  
-+}
-+
-+void dump_dct_block(DCTELEM *block){
-+  int i, j;
-+
-+  for ( i = 0; i < 8 ; i++ ){
-+    av_log(NULL, AV_LOG_ERROR, "\t"); 
-+    for ( j = 0; j < 8 ; j++ ){
-+      av_log(NULL, AV_LOG_ERROR, "0x%x ", block[j + i*8]); 
-+    }
-+    av_log(NULL, AV_LOG_ERROR, "\n"); 
-+  }
-+}
-+
-+void test_idct_avr32(DCTELEM *block){
-+  DCTELEM testBlock[64];
-+  int i, j;
-+
-+  /* Copy transposed block to testBlock */ 
-+  for ( i = 0; i < 8 ; i++ ){
-+    for ( j = 0; j < 8 ; j++ ){
-+      testBlock[i + 8*j] = block[j + i*8]; 
-+    }
-+  }
-+  
-+  idct_avr32(block);
-+  simple_idct(&testBlock);
-+  
-+  for ( i = 0; i < 64 ; i++ ){
-+    if ( block[i] != testBlock[i] ){
-+      av_log(NULL, AV_LOG_ERROR, "Error resulting block from idct is:\n");
-+      dump_dct_block(block); 
-+      av_log(NULL, AV_LOG_ERROR, "But should be equal to the transposed of:\n");
-+      dump_dct_block(testBlock);         
-+      exit(1);
-+    }
-+  }
-+}
-+
-+void test_idct_put_avr32(uint8_t *dest, int line_size, DCTELEM *block){
-+  uint8_t testBlock[64];
-+  DCTELEM blockCopy[64];
-+  int i, j;
-+
-+  /* Copy transposed block to blockCopy */ 
-+  for ( i = 0; i < 8 ; i++ ){
-+    for ( j = 0; j < 8 ; j++ ){
-+      blockCopy[i + 8*j] = block[j + i*8]; 
-+    }
-+  }
-+
-+  idct_put_avr32(dest, line_size, block);
-+  simple_idct_put(&testBlock, 8, blockCopy);
-+  
-+  check_block8(dest, testBlock, line_size, 8, 8, "idct_put", 1);
-+}
-+
-+
-+void test_idct_add_avr32(uint8_t *dest, int line_size, DCTELEM *block){
-+  uint8_t testBlock[64];
-+  DCTELEM blockCopy[64];
-+  int i, j;
-+  
-+  /* Copy dest to testBlock */ 
-+  for ( i = 0; i < 8 ; i++ ){
-+    for ( j = 0; j < 8 ; j++ ){
-+      testBlock[i + 8*j] = dest[i + j*line_size]; 
-+    }
-+  }
-+
-+  /* Copy transposed block to blockCopy */ 
-+  for ( i = 0; i < 8 ; i++ ){
-+    for ( j = 0; j < 8 ; j++ ){
-+      blockCopy[i + 8*j] = block[j + i*8]; 
-+    }
-+  }
-+
-+  idct_add_avr32(dest, line_size, block);
-+  simple_idct_add(&testBlock, 8, blockCopy);
-+  
-+  check_block8(dest, testBlock, line_size, 8, 8, "idct_add", 1);
-+}
-+
-+void test_h264_idct_add_avr32(uint8_t *dest, DCTELEM *block, int stride){
-+  uint8_t testBlock[16];
-+  DCTELEM blockCopy[16];
-+  int i, j;
-+  
-+  /* Copy dest to testBlock */ 
-+  for ( i = 0; i < 4 ; i++ ){
-+    for ( j = 0; j < 4 ; j++ ){
-+      testBlock[i + 4*j] = dest[i + j*stride]; 
-+    }
-+  }
-+
-+  /* Copy transposed block to blockCopy */ 
-+  for ( i = 0; i < 16 ; i++ ){
-+    blockCopy[i] = block[i]; 
-+  }
-+
-+  ff_h264_idct_add_c(dest, block, stride);
-+  
-+  h264_idct_add_avr32(testBlock, blockCopy, 4);
-+  
-+  check_block(dest, testBlock, stride, 4, 4, 4, "h264_idct_add", 0);
-+}
-+
-+void test_h264_idct8_add_avr32(uint8_t *dest, DCTELEM *block, int stride){
-+  uint8_t testBlock[8*8];
-+  DCTELEM blockCopy[8*8];
-+  int i, j;
-+  
-+  /* Copy dest to testBlock */ 
-+  for ( i = 0; i < 8 ; i++ ){
-+    for ( j = 0; j < 8 ; j++ ){
-+      testBlock[i + 8*j] = dest[i + j*stride]; 
-+    }
-+  }
-+
-+  /* Copy source block to blockCopy */ 
-+  for ( i = 0; i < 8*8 ; i++ ){
-+    blockCopy[i] = block[i]; 
-+  }
-+
-+  ff_h264_idct8_add_c(dest, block, stride);
-+  h264_idct8_add_avr32(testBlock, blockCopy, 8);
-+  
-+  check_block(dest, testBlock, stride, 8, 8, 8, "h264_idct8_add", 0);
-+}
-+
-+void test_put_pixels_funcs8(op_pixels_func test, op_pixels_func correct, uint8_t *block, 
-+                       const uint8_t *pixels, int line_size, int h, char *name, int in_h_size, int in_v_size){
-+  uint8_t *testBlock, *testBlock2;
-+  int i, j;
-+  int input_v_size = h + in_v_size;
-+  int input_h_size = 8 + in_h_size;
-+
-+  testBlock = alloca(input_h_size*input_v_size);
-+  testBlock2 = alloca(input_h_size*input_v_size);
-+
-+  for ( i = 0; i < input_h_size ; i++ ){
-+    for ( j = 0; j < input_v_size ; j++ ){
-+      testBlock[i + input_h_size*j] = pixels[i + j*line_size]; 
-+    }
-+  }
-+
-+  test(block, pixels, line_size, h);
-+  correct(testBlock2, testBlock, input_h_size, h);
-+  
-+  check_block8(block, testBlock2, line_size, input_h_size, h, name, 0);
-+
-+} 
-+
-+void test_h264_chroma_mc_funcs(h264_chroma_mc_func test, h264_chroma_mc_func correct, uint8_t *dst, 
-+                               uint8_t *src, int stride, int h, int w, int x, int y, char *name){
-+  uint8_t *testBlock, *testBlock2;
-+  int i, j;
-+  int input_v_size = h + 1;
-+  int input_h_size = ((w + 1) + 3) & ~3;
-+
-+  testBlock = alloca(input_h_size*input_v_size);
-+  testBlock2 = alloca(input_h_size*input_v_size);
-+
-+  for ( i = 0; i < w + 1 ; i++ ){
-+    for ( j = 0; j < h + 1 ; j++ ){
-+      testBlock[i + input_h_size*j] = src[i + j*stride]; 
-+    }
-+  }
-+
-+  for ( i = 0; i < w ; i++ ){
-+    for ( j = 0; j < h ; j++ ){
-+      testBlock2[i + input_h_size*j] = dst[i + j*stride]; 
-+    }
-+  }
-+
-+  test(dst, src, stride, h, x, y);
-+  correct(testBlock2, testBlock, input_h_size, h, x, y);
-+  
-+  check_block(dst, testBlock2, stride, input_h_size, h, w, name, 0);
-+
-+} 
-+
-+void test_qpel_mc_funcs(qpel_mc_func test, qpel_mc_func correct, uint8_t *dst, 
-+                        uint8_t *src, int stride, int size, char *name){
-+  uint8_t *testBlock, *testBlock2;
-+  int i, j;
-+  int test_stride = size + 8;
-+
-+  testBlock = alloca(test_stride*(size+8)) + 4 + test_stride*4;
-+  testBlock2 = alloca(test_stride*size);
-+  
-+  for ( i = -4; i < size+4 ; i++ ){
-+    for ( j = -4; j < size+4 ; j++ ){
-+      testBlock[i + test_stride*j] = src[i + j*stride]; 
-+    }
-+  }
-+  
-+  for ( i = 0; i < size ; i++ ){
-+    for ( j = 0; j < size ; j++ ){
-+      testBlock2[i + test_stride*j] = dst[i + j*stride]; 
-+    }
-+  }
-+
-+  correct(dst, src, stride);
-+  test(testBlock2, testBlock, test_stride);
-+  
-+  check_block(testBlock2, dst, test_stride, stride, size, size, name, 0);
-+
-+} 
-+
-+
-+#define test_pixels_funcs(PFX, NUM ) \
-+void test_ ## PFX ## _pixels ## NUM ## _avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
-+  test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _avr32, PFX ## _pixels ## NUM ## _c, \
-+                         block, pixels, line_size, h, "test_" #PFX "_pixels", 0, 0); } \
-+void test_ ## PFX ## _pixels ## NUM ## _h_avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
-+  test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _h_avr32, PFX ## _pixels ## NUM ## _x2_c, \
-+                         block, pixels, line_size, h, "test_" #PFX "_pixels_h", 1, 0); } \
-+void test_ ## PFX ## _pixels ## NUM ## _v_avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
-+  test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _v_avr32, PFX ## _pixels ## NUM ## _y2_c, \
-+                         block, pixels, line_size, h, "test_" #PFX "_pixels_v", 0, 1); } \
-+void test_ ## PFX ## _pixels ## NUM ## _hv_avr32( uint8_t *block, const uint8_t *pixels, int line_size, int h){ \
-+  test_put_pixels_funcs8(PFX ## _pixels ## NUM ## _hv_avr32, PFX ## _pixels ## NUM ## _xy2_c, \
-+                         block, pixels, line_size, h, "test_" #PFX "_pixels_hv", 1, 1); }
-+
-+test_pixels_funcs(put, 8);
-+test_pixels_funcs(put_no_rnd, 8);
-+test_pixels_funcs(put, 16);
-+test_pixels_funcs(put_no_rnd, 16);
-+
-+test_pixels_funcs(avg, 8);
-+test_pixels_funcs(avg_no_rnd, 8);
-+test_pixels_funcs(avg, 16);
-+test_pixels_funcs(avg_no_rnd, 16);
-+
-+#define test_h264_chroma_mc_funcs(PFX, NUM ) \
-+void test_ ## PFX ## _h264_chroma_mc ## NUM ## _pico( uint8_t *dst, uint8_t *src, int stride, int h, int x, int y){ \
-+  test_h264_chroma_mc_funcs(PFX ## _h264_chroma_mc ## NUM ## _pico, PFX ## _h264_chroma_mc ## NUM ## _c, \
-+                         dst, src, stride, h, NUM, x, y, "test_" #PFX "_h264_chroma_mc" #NUM "_pico"); } \
-+
-+test_h264_chroma_mc_funcs(put, 2);
-+test_h264_chroma_mc_funcs(put, 4);
-+test_h264_chroma_mc_funcs(put, 8);
-+test_h264_chroma_mc_funcs(avg, 2);
-+test_h264_chroma_mc_funcs(avg, 4);
-+test_h264_chroma_mc_funcs(avg, 8);
-+
-+#define test_qpel_mc_funcs_type(PFX, NUM, TYPE ) \
-+void test_ ## PFX ## NUM ## _ ## TYPE ## _pico( uint8_t *dst, uint8_t *src, int stride){ \
-+  test_qpel_mc_funcs(PFX ## NUM ## _ ## TYPE ## _pico, PFX ## NUM ## _ ## TYPE ## _c, \
-+                         dst, src, stride, NUM, "test_" #PFX #NUM "_" #TYPE "_pico"); } 
-+
-+#define test_qpel_mc_funcs(PFX, NUM) \
-+  test_qpel_mc_funcs_type(PFX, NUM, mc00);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc10);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc20);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc30);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc01);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc11);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc21);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc31);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc02);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc12);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc22);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc32);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc03);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc13);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc23);\
-+  test_qpel_mc_funcs_type(PFX, NUM, mc33)
-+
-+test_qpel_mc_funcs(put_h264_qpel, 4);
-+test_qpel_mc_funcs(put_h264_qpel, 8);
-+test_qpel_mc_funcs(put_h264_qpel, 16);
-+test_qpel_mc_funcs(avg_h264_qpel, 4);
-+test_qpel_mc_funcs(avg_h264_qpel, 8);
-+test_qpel_mc_funcs(avg_h264_qpel, 16);
-+
-+
-+#define dspfunc(PFX, IDX, NUM) \
-+    c->PFX ## _pixels_tab[IDX][ 0] = DSP_FUNC_NAME( PFX ## NUM ## _mc00_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 1] = DSP_FUNC_NAME( PFX ## NUM ## _mc10_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 2] = DSP_FUNC_NAME( PFX ## NUM ## _mc20_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 3] = DSP_FUNC_NAME( PFX ## NUM ## _mc30_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 4] = DSP_FUNC_NAME( PFX ## NUM ## _mc01_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 5] = DSP_FUNC_NAME( PFX ## NUM ## _mc11_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 6] = DSP_FUNC_NAME( PFX ## NUM ## _mc21_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 7] = DSP_FUNC_NAME( PFX ## NUM ## _mc31_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 8] = DSP_FUNC_NAME( PFX ## NUM ## _mc02_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 9] = DSP_FUNC_NAME( PFX ## NUM ## _mc12_pico ); \
-+    c->PFX ## _pixels_tab[IDX][10] = DSP_FUNC_NAME( PFX ## NUM ## _mc22_pico ); \
-+    c->PFX ## _pixels_tab[IDX][11] = DSP_FUNC_NAME( PFX ## NUM ## _mc32_pico ); \
-+    c->PFX ## _pixels_tab[IDX][12] = DSP_FUNC_NAME( PFX ## NUM ## _mc03_pico ); \
-+    c->PFX ## _pixels_tab[IDX][13] = DSP_FUNC_NAME( PFX ## NUM ## _mc13_pico ); \
-+    c->PFX ## _pixels_tab[IDX][14] = DSP_FUNC_NAME( PFX ## NUM ## _mc23_pico ); \
-+    c->PFX ## _pixels_tab[IDX][15] = DSP_FUNC_NAME( PFX ## NUM ## _mc33_pico )
-+
-+#endif
-+
-+void dsputil_init_avr32(DSPContext* c, AVCodecContext *avctx)
-+{
-+
-+  /* H264 */
-+
-+  if ( 0 /*avr32_use_pico*/ ){
-+    c->put_h264_chroma_pixels_tab[0]= DSP_FUNC_NAME(put_h264_chroma_mc8_pico);
-+    c->put_h264_chroma_pixels_tab[1]= DSP_FUNC_NAME(put_h264_chroma_mc4_pico);
-+    c->put_h264_chroma_pixels_tab[2]= DSP_FUNC_NAME(put_h264_chroma_mc2_pico);
-+    
-+    c->avg_h264_chroma_pixels_tab[0]= DSP_FUNC_NAME(avg_h264_chroma_mc8_pico);
-+    c->avg_h264_chroma_pixels_tab[1]= DSP_FUNC_NAME(avg_h264_chroma_mc4_pico);
-+    c->avg_h264_chroma_pixels_tab[2]= DSP_FUNC_NAME(avg_h264_chroma_mc2_pico);
-+  }
-+
-+#define dspfunc(PFX, IDX, NUM) \
-+    c->PFX ## _pixels_tab[IDX][ 0] = DSP_FUNC_NAME( PFX ## NUM ## _mc00_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 1] = DSP_FUNC_NAME( PFX ## NUM ## _mc10_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 2] = DSP_FUNC_NAME( PFX ## NUM ## _mc20_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 3] = DSP_FUNC_NAME( PFX ## NUM ## _mc30_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 4] = DSP_FUNC_NAME( PFX ## NUM ## _mc01_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 5] = DSP_FUNC_NAME( PFX ## NUM ## _mc11_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 6] = DSP_FUNC_NAME( PFX ## NUM ## _mc21_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 7] = DSP_FUNC_NAME( PFX ## NUM ## _mc31_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 8] = DSP_FUNC_NAME( PFX ## NUM ## _mc02_pico ); \
-+    c->PFX ## _pixels_tab[IDX][ 9] = DSP_FUNC_NAME( PFX ## NUM ## _mc12_pico ); \
-+    c->PFX ## _pixels_tab[IDX][10] = DSP_FUNC_NAME( PFX ## NUM ## _mc22_pico ); \
-+    c->PFX ## _pixels_tab[IDX][11] = DSP_FUNC_NAME( PFX ## NUM ## _mc32_pico ); \
-+    c->PFX ## _pixels_tab[IDX][12] = DSP_FUNC_NAME( PFX ## NUM ## _mc03_pico ); \
-+    c->PFX ## _pixels_tab[IDX][13] = DSP_FUNC_NAME( PFX ## NUM ## _mc13_pico ); \
-+    c->PFX ## _pixels_tab[IDX][14] = DSP_FUNC_NAME( PFX ## NUM ## _mc23_pico ); \
-+    c->PFX ## _pixels_tab[IDX][15] = DSP_FUNC_NAME( PFX ## NUM ## _mc33_pico )
-+
-+  if ( avr32_use_pico ){
-+    dspfunc(put_h264_qpel, 0, 16);
-+    dspfunc(put_h264_qpel, 1, 8);
-+    dspfunc(put_h264_qpel, 2, 4);
-+    dspfunc(avg_h264_qpel, 0, 16);
-+    dspfunc(avg_h264_qpel, 1, 8);
-+    dspfunc(avg_h264_qpel, 2, 4);
-+  }
-+
-+  c->idct_put= DSP_FUNC_NAME(idct_put_avr32);
-+  c->idct_add= DSP_FUNC_NAME(idct_add_avr32);
-+  c->idct    = DSP_FUNC_NAME(idct_avr32);
-+  c->h264_idct_add = DSP_FUNC_NAME(h264_idct_add_avr32);
-+  c->h264_idct8_add = DSP_FUNC_NAME(h264_idct8_add_avr32);
-+
-+  /*c->h264_v_loop_filter_luma= h264_v_loop_filter_luma_avr32;*/
-+  
-+  c->idct_permutation_type= FF_TRANSPOSE_IDCT_PERM;
-+  
-+  c->fdct = fdct_avr32;
-+
-+  c->clear_blocks = clear_blocks_avr32;
-+  
-+#undef dspfunc  
-+#define dspfunc(PFX, IDX, NUM) \
-+    c->PFX ## _pixels_tab[IDX][0] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _avr32 );     \
-+    c->PFX ## _pixels_tab[IDX][1] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _h_avr32);  \
-+    c->PFX ## _pixels_tab[IDX][2] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _v_avr32);  \
-+    c->PFX ## _pixels_tab[IDX][3] = DSP_FUNC_NAME( PFX ## _pixels ## NUM ## _hv_avr32)
-+
-+    dspfunc(put, 0, 16);
-+    dspfunc(put_no_rnd, 0, 16);
-+    dspfunc(put, 1, 8);
-+    dspfunc(put_no_rnd, 1, 8);
-+
-+    dspfunc(avg, 1, 8);
-+    dspfunc(avg_no_rnd, 1, 8);
-+    dspfunc(avg, 0, 16);
-+    dspfunc(avg_no_rnd, 0, 16);
-+#undef dspfunc
-+
-+}
-+
-+
-+
-+#if 0
-+int main(int argc, char *argv[]){
-+  
-+
-+}
-+#endif
-+
---- /dev/null
-+++ b/libavcodec/avr32/fdct.S
-@@ -0,0 +1,541 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+
-+//********************************************************** 
-+//* 2-D fDCT, Based on: 		          		  *
-+//* C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical *
-+//* Fast 1-D DCT Algorithms with 11 Multiplications",      *
-+//* Proc. Int'l. Conf. on Acoustics, Speech, and Signal    *
-+//* Processing 1989 (ICASSP '89), pp. 988-991.             *
-+//*							  *
-+//* Fixed point implementation optimized for the AVR-II	  *	
-+//* instruction set. If a table is used for the 		  *
-+//* coeffisients we can load two and two of them from      *
-+//* This will give a reduction of 
-+//*							  *
-+//*							  *
-+//**********************************************************
-+
-+
-+/* This routine is a slow-but-accurate integer implementation of the
-+ * forward DCT (Discrete Cosine Transform). Taken from the IJG software
-+ *
-+ * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
-+ * on each column.  Direct algorithms are also available, but they are
-+ * much more complex and seem not to be any faster when reduced to code.
-+ *
-+ * This implementation is based on an algorithm described in
-+ *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
-+ *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
-+ *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
-+ * The primary algorithm described there uses 11 multiplies and 29 adds.
-+ * We use their alternate method with 12 multiplies and 32 adds.
-+ * The advantage of this method is that no data path contains more than one
-+ * multiplication; this allows a very simple and accurate implementation in
-+ * scaled fixed-point arithmetic, with a minimal number of shifts.
-+ *
-+ * The poop on this scaling stuff is as follows:
-+ *
-+ * Each 1-D DCT step produces outputs which are a factor of sqrt(N)
-+ * larger than the true DCT outputs.  The final outputs are therefore
-+ * a factor of N larger than desired; since N=8 this can be cured by
-+ * a simple right shift at the end of the algorithm.  The advantage of
-+ * this arrangement is that we save two multiplications per 1-D DCT,
-+ * because the y0 and y4 outputs need not be divided by sqrt(N).
-+ * In the IJG code, this factor of 8 is removed by the quantization step
-+ * (in jcdctmgr.c), here it is removed.
-+ *
-+ * We have to do addition and subtraction of the integer inputs, which
-+ * is no problem, and multiplication by fractional constants, which is
-+ * a problem to do in integer arithmetic.  We multiply all the constants
-+ * by CONST_SCALE and convert them to integer constants (thus retaining
-+ * CONST_BITS bits of precision in the constants).  After doing a
-+ * multiplication we have to divide the product by CONST_SCALE, with proper
-+ * rounding, to produce the correct output.  This division can be done
-+ * cheaply as a right shift of CONST_BITS bits.  We postpone shifting
-+ * as long as possible so that partial sums can be added together with
-+ * full fractional precision.
-+ *
-+ * The outputs of the first pass are scaled up by PASS1_BITS bits so that
-+ * they are represented to better-than-integral precision.  These outputs
-+ * require 8 + PASS1_BITS + 3 bits; this fits in a 16-bit word
-+ * with the recommended scaling.  (For 12-bit sample data, the intermediate
-+ * array is INT32 anyway.)
-+ *
-+ * To avoid overflow of the 32-bit intermediate results in pass 2, we must
-+ * have 8 + CONST_BITS + PASS1_BITS <= 26.  Error analysis
-+ * shows that the values given below are the most effective.
-+ *
-+ * We can gain a little more speed, with a further compromise in accuracy,
-+ * by omitting the addition in a descaling shift.  This yields an incorrectly
-+ * rounded result half the time...
-+ */
-+
-+	.global		fdct_avr32
-+
-+
-+
-+#define CONST_BITS  13
-+#define PASS1_BITS  2
-+
-+#define FIX_0_298631336  2446	/* FIX(0.298631336) */
-+#define FIX_0_390180644  3196	/* FIX(0.390180644) */
-+#define FIX_0_541196100  4433	/* FIX(0.541196100) */
-+#define FIX_0_765366865  6270	/* FIX(0.765366865) */
-+#define FIX_0_899976223  7373	/* FIX(0.899976223) */
-+#define FIX_1_175875602  9633	/* FIX(1.175875602) */
-+#define FIX_1_501321110  12299	/* FIX(1.501321110) */
-+#define FIX_1_847759065  15137	/* FIX(1.847759065) */
-+#define FIX_1_961570560  16069	/* FIX(1.961570560) */
-+#define FIX_2_053119869  16819	/* FIX(2.053119869) */
-+#define FIX_2_562915447  20995	/* FIX(2.562915447) */
-+#define FIX_3_072711026  25172	/* FIX(3.072711026) */
-+
-+
-+/*
-+ * Perform an integer forward DCT on one block of samples.
-+ */
-+
-+//void
-+//fdct_int32(short *const block)
-+//{
-+//	int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-+//	int tmp10, tmp11, tmp12, tmp13;
-+//	int z1, z2, z3, z4, z5;
-+//	short *blkptr;
-+//	int *dataptr;
-+//	int data[64];
-+//	int i;
-+//
-+//       /* Pass 1: process rows. */
-+//       /* Note results are scaled up by sqrt(8) compared to a true DCT; */
-+//       /* furthermore, we scale the results by 2**PASS1_BITS. */
-+//
-+//	dataptr = data;
-+//	blkptr = block;
-+
-+	.text
-+fdct_avr32:
-+	pushm		r0-r3, r4-r7, lr
-+#define		loop_ctr	r0
-+#define		blkptr		r12
-+#define		x0		r1
-+#define		x1		r2
-+#define		x2		r3
-+#define		x3		r4
-+#define		x4		r5
-+#define		x5		r6
-+#define		x6		r7
-+#define		x7		r8
-+#define		tmp0		r5
-+#define		tmp7		r2
-+#define		tmp1		r3
-+#define		tmp6		r4
-+#define		tmp2		r9
-+#define		tmp5		r8
-+#define		tmp3		r7
-+#define		tmp4		r6
-+
-+
-+	mov		loop_ctr, 8
-+//	for (i = 0; i < 8; i++) {
-+ROW_LOOP:
-+
-+	ldm		blkptr, r1, r2, r3, r4 
-+
-+//		tmp2 = blkptr[2] + blkptr[5];
-+//		tmp3 = blkptr[3] + blkptr[4];
-+	paddx.h		r5, r3, r2  
-+//		tmp5 = blkptr[2] - blkptr[5];
-+//		tmp4 = blkptr[3] - blkptr[4];
-+	psubx.h		r6, r3, r2 
-+//		tmp0 = blkptr[0] + blkptr[7];
-+//		tmp1 = blkptr[1] + blkptr[6];
-+	paddx.h		r2, r4, r1
-+//		tmp7 = blkptr[0] - blkptr[7];
-+//		tmp6 = blkptr[1] - blkptr[6];
-+	psubx.h		r3, r4, r1
-+
-+//		/* Even part per LL&M figure 1 --- note that published figure is faulty;
-+//		 * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-+//		 */
-+
-+#define		tmp10		r1
-+#define		tmp13		r5
-+#define		tmp11		r7
-+#define		tmp12		r3
-+#define		z1		r9
-+
-+//		tmp10 = tmp0 + tmp3;
-+//		tmp13 = tmp0 - tmp3;
-+	paddsub.h	r1, r2:t, r5:b	
-+//		tmp11 = tmp1 + tmp2;
-+//		tmp12 = tmp1 - tmp2;
-+	paddsub.h	r4, r2:b, r5:t	
-+	
-+
-+//		dataptr[0] = (tmp10 + tmp11) << PASS1_BITS;
-+//		dataptr[4] = (tmp10 - tmp11) << PASS1_BITS;
-+	paddsub.h	r7, r1:t, r4:t
-+	ld.w		r10, pc[const_table - .] 
-+	plsl.h		r7, r7, PASS1_BITS
-+	
-+//		z1 = (tmp12 + tmp13) * FIX_0_541196100;
-+	addhh.w		r8, r4:b, r1:b
-+	mulhh.w		r8, r8:b, r10:t		
-+	
-+//		dataptr[2] =
-+//			DESCALE(z1 + tmp13 * FIX_0_765366865, CONST_BITS - PASS1_BITS);
-+//		dataptr[6] =
-+//			DESCALE(z1 + tmp12 * (-FIX_1_847759065), CONST_BITS - PASS1_BITS);
-+	mulhh.w		r9, r1:b, r10:b
-+	ld.w		r10, pc[const_table - . + 4]	
-+	add		r1, r8, r9	
-+	satrnds		r1 >> (CONST_BITS - PASS1_BITS), 31	
-+
-+	mulhh.w		r9, r4:b, r10:t
-+	add		r4, r8, r9
-+	satrnds		r4 >> (CONST_BITS - PASS1_BITS), 31	
-+		
-+
-+//		/* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-+//		 * cK represents cos(K*pi/16).
-+//		 * i0..i3 in the paper are tmp4..tmp7 here.
-+//		 */
-+
-+#define		z2		r5
-+#define		z3		r6
-+#define		z4		r7
-+#define		z5		r8
-+
-+//		z4 = tmp5 + tmp7;
-+//		z3 = tmp4 + tmp6;
-+	padd.h		r2, r6, r3 
-+//		z2 = tmp5 + tmp6;
-+//		z1 = tmp4 + tmp7;
-+	paddx.h		r5, r6, r3 	
-+
-+	lddpc		r9, pc[const_table - . + 8]
-+//		z5 = (z3 + z4) * FIX_1_175875602;	/* sqrt(2) * c3 */
-+	addhh.w		r8, r2:t, r2:b
-+	mulhh.w		r8, r8:b, r10:b
-+	lddpc		r10, pc[const_table - . + 12]
-+	
-+
-+//		tmp4 *= FIX_0_298631336;	/* sqrt(2) * (-c1+c3+c5-c7) */
-+	mulhh.w		r11, r6:b, r9:t
-+	
-+//		tmp5 *= FIX_2_053119869;	/* sqrt(2) * ( c1+c3-c5+c7) */
-+	mulhh.w		r6, r6:t, r9:b
-+
-+//		tmp6 *= FIX_3_072711026;	/* sqrt(2) * ( c1+c3+c5-c7) */
-+	lddpc		r9, pc[const_table - . + 20]
-+	mulhh.w		lr, r3:b, r10:t
-+	
-+//		tmp7 *= FIX_1_501321110;	/* sqrt(2) * ( c1+c3-c5-c7) */
-+	mulhh.w		r3, r3:t, r10:b
-+
-+//		z3 *= -FIX_1_961570560;	/* sqrt(2) * (-c3-c5) */
-+	mulhh.w		r10, r2:b, r9:t
-+
-+//		z4 *= -FIX_0_390180644;	/* sqrt(2) * (c5-c3) */
-+	mulhh.w		r2, r2:t, r9:b
-+	lddpc		r9, pc[const_table - . + 16]
-+//		z3 += z5;
-+//		z4 += z5;
-+	add		r10, r8
-+	add		r2, r8
-+	
-+//		z1 *= -FIX_0_899976223;	/* sqrt(2) * (c7-c3) */
-+	mulhh.w		r8, r5:b, r9:t
-+
-+//		z2 *= -FIX_2_562915447;	/* sqrt(2) * (-c1-c3) */
-+	mulhh.w		r5, r5:t, r9:b
-+	
-+//		dataptr[7] = DESCALE(tmp4 + z1 + z3, CONST_BITS - PASS1_BITS);
-+	add		r11, r8
-+	add		r11, r10
-+	satrnds		r11 >> (CONST_BITS - PASS1_BITS), 31	
-+	
-+//		dataptr[5] = DESCALE(tmp5 + z2 + z4, CONST_BITS - PASS1_BITS);
-+	add		r6, r5
-+
-+	sthh.w		blkptr[6*2], r4:b, r11:b  	
-+	add		r6, r2
-+	satrnds		r6 >> (CONST_BITS - PASS1_BITS), 31	
-+
-+//		dataptr[3] = DESCALE(tmp6 + z2 + z3, CONST_BITS - PASS1_BITS);
-+	add		lr, r5
-+	sthh.w		blkptr[4*2], r7:b, r6:b	
-+	add		lr, r10
-+	satrnds		lr >> (CONST_BITS - PASS1_BITS), 31	
-+	
-+//		dataptr[1] = DESCALE(tmp7 + z1 + z4, CONST_BITS - PASS1_BITS);
-+	add		r3, r8
-+	sthh.w		blkptr[2*2], r1:b, lr:b
-+	add		r3, r2
-+	satrnds		r3 >> (CONST_BITS - PASS1_BITS), 31	
-+
-+		
-+
-+//		dataptr += 8;			/* advance pointer to next row */
-+//		blkptr += 8;
-+	sthh.w		blkptr[0], r7:t, r3:b	
-+	sub		blkptr, -16
-+	sub		loop_ctr, 1
-+	brne		ROW_LOOP
-+
-+//	}
-+
-+	/* Pass 2: process columns.
-+	 * We remove the PASS1_BITS scaling, but leave the results scaled up
-+	 * by an overall factor of 8.
-+	 */
-+
-+//	dataptr = data;
-+	sub		blkptr, 128
-+
-+	mov		loop_ctr, 4
-+//	for (i = 0; i < 8; i++) {
-+COLOUMN_LOOP:
-+	ld.w		r1, blkptr[0]
-+	ld.w		r2, blkptr[1*8*2]
-+	ld.w		r3, blkptr[2*8*2]
-+	ld.w		r4, blkptr[3*8*2]
-+	ld.w		r5, blkptr[4*8*2]
-+	ld.w		r6, blkptr[5*8*2]
-+	ld.w		r7, blkptr[6*8*2]
-+	ld.w		r8, blkptr[7*8*2]
-+	
-+//		tmp0 = blkptr[0] + blkptr[7*8];
-+	padds.sh	r9, r1, r8 
-+//		tmp7 = blkptr[0] - blkptr[7*8];
-+	psubs.sh	r1, r1, r8 
-+//		tmp1 = blkptr[1*8] + blkptr[6*8];
-+	padds.sh	r8, r2, r7 
-+//		tmp6 = blkptr[1*8] - blkptr[6*8];
-+	psubs.sh	r2, r2, r7 
-+//		tmp2 = blkptr[2*8] + blkptr[5*8];
-+	padds.sh	r7, r3, r6 
-+//		tmp5 = blkptr[2*8] - blkptr[5*8];
-+	psubs.sh	r3, r3, r6 
-+//		tmp3 = blkptr[3*8] + blkptr[4*8];
-+	padds.sh	r6, r4, r5 
-+//		tmp4 = blkptr[3*8] - blkptr[4*8];
-+	psubs.sh	r4, r4, r5 
-+
-+//		/* even part per ll&m figure 1 --- note that published figure is faulty;
-+//		 * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-+//		 */
-+//
-+//		tmp10 = tmp0 + tmp3;
-+	padds.sh	r5, r9, r6 
-+//		tmp13 = tmp0 - tmp3;
-+	psubs.sh	r9, r9, r6 
-+//		tmp11 = tmp1 + tmp2;
-+	padds.sh	r6, r8, r7 
-+//		tmp12 = tmp1 - tmp2;
-+	psubs.sh	r8, r8, r7 
-+
-+//		dataptr[0] = DESCALE(tmp10 + tmp11, PASS1_BITS);
-+//		dataptr[32] = DESCALE(tmp10 - tmp11, PASS1_BITS);
-+//Might get an overflow here
-+	padds.sh	r7, r5, r6
-+	psubs.sh	r5, r5, r6
-+
-+	//Rounding	
-+	mov		lr,  (1 << (PASS1_BITS + 2))
-+	orh		lr, hi(1 << (16 + PASS1_BITS + 2))	
-+	padds.sh	r7, r7, lr
-+	padds.sh	r5, r5, lr
-+	
-+	pasr.h		r7, r7, PASS1_BITS + 3
-+	pasr.h		r5, r5, PASS1_BITS + 3
-+	st.w		r12[0], r7
-+	st.w		r12[4*8*2], r5
-+				 
-+	lddpc		r10, const_table2
-+
-+
-+//		z1 = (tmp12 + tmp13) * FIX_0_541196100;
-+	padds.sh	r5, r8, r9
-+	mulhh.w		r6, r5:t, r10:t
-+	mulhh.w		r7, r5:b, r10:t
-+
-+//		dataptr[16] =
-+//			DESCALE(z1 + tmp13 * FIX_0_765366865, CONST_BITS + PASS1_BITS);
-+	lddpc		r11, const_table2 + 4
-+	mulhh.w		lr, r9:t, r10:b
-+	mulhh.w		r9, r9:b, r10:b
-+	add		lr, r6
-+	add		r9, r7
-+	satrnds		lr >> (CONST_BITS + PASS1_BITS + 3), 31
-+	satrnds		r9 >> (CONST_BITS + PASS1_BITS + 3), 31
-+	sthh.w		r12[2*8*2], lr:b, r9:b
-+			
-+//		dataptr[48] =
-+//			DESCALE(z1 + tmp12 * (-FIX_1_847759065), CONST_BITS + PASS1_BITS);
-+	mulhh.w		lr, r8:t, r11:t
-+	mulhh.w		r8, r8:b, r11:t
-+	add		lr, r6
-+	add		r8, r7
-+	satrnds		lr >> (CONST_BITS + PASS1_BITS + 3), 31
-+	satrnds		r8 >> (CONST_BITS + PASS1_BITS + 3), 31
-+	sthh.w		r12[6*8*2], lr:b, r8:b
-+
-+//		/* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-+//		 * cK represents cos(K*pi/16).
-+//		 * i0..i3 in the paper are tmp4..tmp7 here.
-+//		 */
-+//
-+//		z2 = tmp5 + tmp6;
-+//		z3 = tmp4 + tmp6;
-+//		z4 = tmp5 + tmp7;
-+	padds.sh	r5, r3, r2
-+	padds.sh	r6, r4, r2
-+	padds.sh	r7, r3, r1
-+	
-+//		z5 = (z3 + z4) * FIX_1_175875602;	/* sqrt(2) * c3 */
-+	padds.sh	r8, r6, r7
-+	mulhh.w		r9, r8:t, r11:b
-+	mulhh.w		r8, r8:b, r11:b
-+	
-+//		z3 *= -FIX_1_961570560;	/* sqrt(2) * (-c3-c5) */
-+//		z3 += z5;
-+	lddpc		r11, const_table2 + 8
-+	mulhh.w		r10, r6:t, r11:t
-+	mulhh.w		r6, r6:b, r11:t
-+	add		r10, r9
-+	add		r6, r8
-+	
-+//		z4 *= -FIX_0_390180644;	/* sqrt(2) * (c5-c3) */
-+//		z4 += z5;
-+	mulhh.w		lr, r7:t, r11:b
-+	mulhh.w		r7, r7:b, r11:b
-+	lddpc		r11, const_table2 + 12
-+	st.w		--sp,r0
-+	add		lr, r9
-+	add		r7, r8
-+
-+//		tmp6 *= FIX_3_072711026;	/* sqrt(2) * ( c1+c3+c5-c7) */
-+	mulhh.w		r0, r2:t, r11:t	  
-+	machh.w		r0, r5:t, r11:b
-+	mulhh.w		r2, r2:b, r11:t	  
-+	machh.w		r2, r5:b, r11:b
-+
-+//		z2 *= -FIX_2_562915447;	/* sqrt(2) * (-c1-c3) */
-+//		dataptr[24] = DESCALE(tmp6 + z2 + z3, CONST_BITS + PASS1_BITS);
-+	add		r0, r10
-+	lddpc		r11, const_table2 + 16
-+	add		r2, r6
-+	satrnds		r0 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	satrnds		r2 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	sthh.w		r12[3*8*2], r0:b, r2:b		
-+//		tmp5 *= FIX_2_053119869;	/* sqrt(2) * ( c1+c3-c5+c7) */
-+	mulhh.w		r0, r3:t, r11:t	  
-+	machh.w		r0, r5:t, r11:b
-+	mulhh.w		r2, r3:b, r11:t	  
-+	machh.w		r2, r5:b, r11:b
-+	add		r0, lr
-+	lddpc		r11, const_table2 + 20
-+	add		r2, r7
-+	
-+//		dataptr[40] = DESCALE(tmp5 + z2 + z4, CONST_BITS + PASS1_BITS);
-+	satrnds		r0 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	satrnds		r2 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	sthh.w		r12[5*8*2], r0:b, r2:b		
-+
-+
-+//		z1 = tmp4 + tmp7;
-+	padds.sh	r2, r4, r1
-+
-+//		tmp4 *= FIX_0_298631336;	/* sqrt(2) * (-c1+c3+c5-c7) */
-+	mulhh.w		r3, r4:t, r11:t
-+	machh.w		r3, r2:t, r11:b
-+	mulhh.w		r4, r4:b, r11:t
-+	machh.w		r4, r2:b, r11:b
-+	add		r3, r10
-+	lddpc		r11, const_table2 + 24
-+	add		r4, r6
-+	
-+//		z1 *= -FIX_0_899976223;	/* sqrt(2) * (c7-c3) */
-+//		dataptr[56] = DESCALE(tmp4 + z1 + z3, CONST_BITS + PASS1_BITS);
-+	satrnds		r3 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	satrnds		r4 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	sthh.w		r12[7*8*2], r3:b, r4:b		
-+
-+
-+//		tmp7 *= FIX_1_501321110;	/* sqrt(2) * ( c1+c3-c5-c7) */
-+	mulhh.w		r3, r1:t, r11:t
-+	machh.w		r3, r2:t, r11:b
-+	mulhh.w		r4, r1:b, r11:t
-+	machh.w		r4, r2:b, r11:b
-+	add		r3, lr
-+	add		r4, r7
-+
-+//		dataptr[8] = DESCALE(tmp7 + z1 + z4, CONST_BITS + PASS1_BITS);
-+	satrnds		r3 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	satrnds		r4 >> (CONST_BITS + PASS1_BITS + 3), 31	
-+	sthh.w		r12[1*8*2], r3:b, r4:b		
-+	ld.w		r0, sp++ 
-+	
-+//		dataptr++;				/* advance pointer to next column */
-+	sub		blkptr, -4
-+	sub		loop_ctr, 1
-+	brne		COLOUMN_LOOP
-+
-+//	}
-+
-+	popm		r0-r3, r4-r7, pc
-+	
-+//	/* descale */
-+//	for (i = 0; i < 64; i++)
-+//		block[i] = (short int) DESCALE(data[i], 3);
-+
-+
-+//}
-+
-+
-+	.align	2
-+const_table:	.short	FIX_0_541196100, FIX_0_765366865, -FIX_1_847759065, FIX_1_175875602
-+		.short	FIX_0_298631336, FIX_2_053119869, FIX_3_072711026, FIX_1_501321110
-+		.short	-FIX_0_899976223,-FIX_2_562915447, -FIX_1_961570560, -FIX_0_390180644
-+	
-+const_table2:	.short	FIX_0_541196100, FIX_0_765366865, -FIX_1_847759065, FIX_1_175875602
-+		.short	-FIX_1_961570560, -FIX_0_390180644, FIX_3_072711026, -FIX_2_562915447
-+		.short	FIX_2_053119869, -FIX_2_562915447, FIX_0_298631336,  -FIX_0_899976223 
-+		.short	FIX_1_501321110, -FIX_0_899976223
-+	
-+
-+
-+
---- /dev/null
-+++ b/libavcodec/avr32/h264idct.S
-@@ -0,0 +1,451 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+
-+	.global	h264_idct_add_avr32
-+
-+	/* Macro for performing the 1-D transform on one row line. 
-+
-+	   The register 'w01' should contain the first two pixels,
-+	   and the register 'w23' should contain the last two pixels
-+	   in the line. The resulting line is placed in p01 and p23
-+	   so that { w01, w23 } = { x0, x1, x3, x2 }.
-+	   'tmp' and 'tmp2' should be scratchpad registers. */ 
-+	.macro	transform_row 	w01, w23, tmp, tmp2 
-+	add		\tmp, \w23, \w01 << 1   /* tmp = { xxxx, 2*w1 + w3 } */
-+	sub		\tmp2, \w01, \w23 << 1  /* tmp2 = { xxxx, w1 - 2*w3 } */ 
-+	bfins		\tmp2, \tmp, 16, 16     /* tmp2 = { 2*w1 + w3, w1 - 2*w3 } */
-+	pasr.h		\tmp2, \tmp2, 1	        /* tmp2 = { w1 + w3/2, w1/2 - w3 } */
-+	paddsub.h	\tmp, \w01:t, \w23:t    /* tmp =  { w0 + w2, w0 - w2 }  */
-+	padd.h		\w01, \tmp, \tmp2	/* w01 =  { w0 + w2 + w1 + w3/2, w0 - w2 + w1/2 - w3 } */
-+	psub.h		\w23, \tmp, \tmp2	/* w23 =  { w0 + w2 - w1 - w3/2, w0 - w2 - w1/2 + w3 } */
-+	.endm			        	
-+
-+	/* Macro for performing the 1-D transform on two columns. 
-+	   
-+	   The registers w0, w1, w2, w3 should each contain two 
-+	   packed samples from the two colomns to transform.
-+	   tmp and tmp2 are scratchpad registers. 
-+	  
-+	   The resulting transformed columns are placed in the
-+	   same positions as the input columns. 
-+	*/ 
-+	.macro	transform_2columns	w0, w1, w2, w3, tmp, tmp2
-+	padd.h		\tmp, \w0, \w2  /* tmp = z0 = w0 + w2 */
-+	psub.h		\w0, \w0, \w2   /* w0 = z1 = w0 - w2 */
-+	pasr.h		\w2, \w1, 1	/* w2 = w1/2 */
-+	pasr.h		\tmp2, \w3, 1	/* tmp2 = w3/2 */
-+	psub.h		\w3, \w2, \w3	/* w3 = z2 = w1/2 - w3 */
-+	padd.h		\tmp2, \w1, \tmp2/* tmp2 = z3 = w1 + w3/2 */
-+	padd.h		\w1, \w0, \w3	/* w1 = x1 = z1 + z2 */
-+	psub.h		\w2, \w0, \w3	/* w2 = x2 = z1 - z2 */
-+	padd.h		\w0, \tmp, \tmp2/* w0 = x0 = z0 + z3 */
-+	psub.h		\w3, \tmp, \tmp2/* w3 = x3 = z0 - z3 */
-+	/* Scale down result. */
-+	pasr.h		\w0, \w0, 6
-+	pasr.h		\w1, \w1, 6
-+	pasr.h		\w2, \w2, 6
-+	pasr.h		\w3, \w3, 6
-+	.endm			        	
-+	
-+/*void h264_idct_add_avr32(uint8_t *dst, DCTELEM *block, int stride)*/
-+
-+h264_idct_add_avr32:
-+		
-+	stm	--sp,r0-r3,r4-r7, lr 
-+
-+	/* Setup rounding factor. */
-+	mov	r0, (1 << 5)
-+	lsl	r0, 16	
-+
-+	/* Load block */
-+        ldm	r11,r2-r9 
-+        /* r9 = { w00, w01 }, 
-+           r8 = { w02, w03 }, 
-+           r7 = { w10, w11 }, 
-+           r6 = { w12, w13 }, 
-+           r5 = { w20, w21 }, 
-+           r4 = { w22, w23 }, 
-+           r3 = { w30, w31 }, 
-+           r2 = { w32, w33 } */
-+
-+	
-+	/* Add the rounding factor to w00. */
-+	add			r9, r0
-+	
-+	/* Transform rows */
-+	transform_row	        r9, r8, r0, r1
-+	transform_row	        r7, r6, r0, r1
-+	transform_row	        r5, r4, r0, r1
-+	transform_row	        r3, r2, r0, r1
-+
-+	/* Transform columns */
-+	transform_2columns	r9, r7, r5, r3, r0, r1
-+	transform_2columns	r8, r6, r4, r2, r0, r1
-+
-+	/* Load predicted pixels.*/
-+	ld.w			lr, r12[0]
-+        ld.w			r11, r12[r10]
-+
-+	/* Unpack to halwords. */
-+        punpckub.h		r0, lr:t
-+        punpckub.h		r1, lr:b
-+
-+	/* Add with transformed row. */
-+        padd.h			r0, r0, r9
-+        paddx.h			r1, r1, r8
-+	/* Pack and saturate back to 8-bit pixels. */
-+        packsh.ub		r0, r0, r1
-+
-+	/* Unpack to halwords. */
-+        punpckub.h		lr, r11:t
-+        punpckub.h		r11, r11:b
-+
-+	/* Add with transformed row. */
-+        padd.h			lr, lr, r7
-+        paddx.h			r11, r11, r6
-+	/* Pack and saturate back to 8-bit pixels. */
-+        packsh.ub		r1, lr, r11
-+
-+	/* Store back to frame. */
-+	st.w			r12[0], r0
-+	st.w			r12[r10], r1
-+
-+	add			r12, r12, r10 << 1
-+
-+	/* Load predicted pixels.*/
-+	ld.w			lr, r12[0]
-+        ld.w			r11, r12[r10]
-+
-+	/* Unpack to halwords. */
-+        punpckub.h		r0, lr:t
-+        punpckub.h		r1, lr:b
-+
-+	/* Add with transformed row. */
-+        padd.h			r0, r0, r5
-+        paddx.h			r1, r1, r4
-+	/* Pack and saturate back to 8-bit pixels. */
-+        packsh.ub		r0, r0, r1
-+
-+	/* Unpack to halwords. */
-+        punpckub.h		lr, r11:t
-+        punpckub.h		r11, r11:b
-+
-+	/* Add with transformed row. */
-+        padd.h			lr, lr, r3
-+        paddx.h			r11, r11, r2
-+	/* Pack and saturate back to 8-bit pixels. */
-+        packsh.ub		r1, lr, r11
-+
-+	/* Store back to frame. */
-+	st.w			r12[0], r0
-+	st.w			r12[r10], r1
-+	
-+	ldm			sp++,r0-r3,r4-r7, pc 
-+
-+
-+	.global	h264_idct8_add_avr32
-+//void ff_h264_idct8_add_c(uint8_t *dst, DCTELEM *block, int stride){
-+
-+h264_idct8_add_avr32:		
-+	stm         --sp,r0-r3,r4-r7, lr 
-+
-+	/* Push dst and stride on stack */
-+	stm         --sp,r10,r12 
-+
-+//    int i;
-+//    DCTELEM (*src)[8] = (DCTELEM(*)[8])block;
-+//    uint8_t *cm = cropTbl + MAX_NEG_CROP;
-+
-+//    block[0] += 32;
-+
-+
-+//    for( i = 0; i < 8; i++ )
-+//    {
-+	mov		lr, 4
-+0:
-+	ld.w		r7, r11[0*(8*2)]
-+	ld.w		r6, r11[1*(8*2)]
-+	ld.w		r5, r11[2*(8*2)]	
-+	ld.w		r4, r11[3*(8*2)]	
-+	ld.w		r3, r11[4*(8*2)]	
-+	ld.w		r2, r11[5*(8*2)]	
-+	ld.w		r1, r11[6*(8*2)]	
-+	ld.w		r0, r11[7*(8*2)]	
-+	
-+/*	
-+
-+        const int a0 =  src[0][i] + src[4][i];
-+        const int a2 =  src[0][i] - src[4][i];
-+        const int a4 = (src[2][i]>>1) - src[6][i];
-+        const int a6 = (src[6][i]>>1) + src[2][i]; 
-+*/
-+	padd.h		r8, r7, r3	/* r8 = a0 */	
-+	psub.h		r7, r7, r3	/* r7 = a2 */	
-+	pasr.h		r3, r5, 1	/* r3 = src[2][i] >> 1 */
-+	pasr.h		r9, r1, 1	/* r9 = src[6][i] >> 1 */
-+	psub.h		r3, r3, r1	/* r3 = a4 */
-+	padd.h		r9, r9, r5	/* r9 = a6 */
-+
-+/*
-+        const int b0 = a0 + a6;
-+        const int b2 = a2 + a4;
-+        const int b4 = a2 - a4;
-+        const int b6 = a0 - a6; 
-+*/
-+	padd.h		r1, r8, r9	/* r1 = b0 */
-+	psub.h		r8, r8, r9	/* r8 = b6 */
-+	padd.h		r5, r7, r3	/* r5 = b2 */
-+	psub.h		r7, r7, r3	/* r7 = b4 */
-+	
-+/*	
-+        const int a1 = -src[3][i] + src[5][i] - src[7][i] - (src[7][i]>>1);
-+        const int a3 =  src[1][i] + src[7][i] - src[3][i] - (src[3][i]>>1);
-+        const int a5 = -src[1][i] + src[7][i] + src[5][i] + (src[5][i]>>1);
-+        const int a7 =  src[3][i] + src[5][i] + src[1][i] + (src[1][i]>>1);
-+*/
-+	pasr.h		r3, r0, 1
-+	padd.h		r3, r3, r0
-+	psub.h		r3, r2, r3
-+	psub.h		r3, r3, r4 /* r3 = a1 */
-+	
-+	pasr.h		r9, r4, 1
-+	padd.h		r9, r9, r4
-+	psub.h		r9, r0, r9
-+	padd.h		r9, r6, r9 /* r9 = a3 */
-+	
-+	pasr.h		r10, r2, 1
-+	padd.h		r10, r10, r2
-+	padd.h		r10, r10, r0
-+	psub.h		r10, r10, r6 /* r10 = a5 */
-+	
-+	pasr.h		r0, r6, 1
-+	padd.h		r0, r0, r6
-+	padd.h		r0, r0, r2
-+	padd.h		r0, r0, r4 /* r0 = a7 */
-+/*
-+        const int b1 = (a7>>2) + a1;
-+        const int b3 =  a3 + (a5>>2);
-+        const int b5 = (a3>>2) - a5;
-+        const int b7 =  a7 - (a1>>2);
-+*/
-+	pasr.h		r2, r0, 2
-+	padd.h		r2, r2, r3 /* r2 = b1 */
-+	pasr.h		r3, r3, 2
-+	psub.h		r3, r0, r3 /* r3 = b7 */
-+
-+	pasr.h		r0, r10, 2
-+	padd.h		r0, r0, r9 /* r0 = b3 */
-+	pasr.h		r9, r9, 2
-+	psub.h		r9, r9, r10 /* r9 = b5 */
-+	
-+	
-+/*	
-+        src[0][i] = b0 + b7;
-+        src[7][i] = b0 - b7;
-+        src[1][i] = b2 + b5;
-+        src[6][i] = b2 - b5;
-+        src[2][i] = b4 + b3;
-+        src[5][i] = b4 - b3;
-+        src[3][i] = b6 + b1;
-+        src[4][i] = b6 - b1; */
-+
-+	padd.h		r4, r1, r3
-+	psub.h		r1, r1, r3
-+	st.w		r11[0*(8*2)], r4
-+	st.w		r11[7*(8*2)], r1
-+		
-+	padd.h		r3, r5, r9
-+	psub.h		r5, r5, r9
-+	st.w		r11[1*(8*2)], r3
-+	st.w		r11[6*(8*2)], r5
-+	
-+	padd.h		r9, r7, r0
-+	psub.h		r7, r7, r0
-+	st.w		r11[2*(8*2)], r9
-+	st.w		r11[5*(8*2)], r7
-+
-+	padd.h		r0, r8, r2
-+	psub.h		r8, r8, r2
-+	st.w		r11[3*(8*2)], r0
-+	st.w		r11[4*(8*2)], r8
-+
-+	sub		r11, -4
-+	sub		lr, 1
-+	brne		0b
-+	
-+//    }
-+
-+	lddsp		r12, sp[0]	/* r12 = dst */ 
-+	sub		r11, 4*4
-+	ldm		r11++, r4-r7
-+	mov		lr, 8
-+	/* Push dst and stride on stack */
-+	
-+1:		
-+//    for( i = 0; i < 8; i++ )
-+//    {
-+
-+	/* r7 = {src[i][0], src[i][1]}  
-+           r6 = {src[i][2], src[i][3]}
-+	   r5 = {src[i][4], src[i][5]}
-+           r4 = {src[i][6], src[i][7]}	*/	
-+
-+/*
-+        const int a0 =  src[i][0] + src[i][4];
-+        const int a2 =  src[i][0] - src[i][4];
-+        const int a4 = (src[i][2]>>1) - src[i][6];
-+        const int a6 = (src[i][6]>>1) + src[i][2]; 
-+*/
-+	pasr.h		r8, r6, 1
-+	pasr.h		r9, r4, 1
-+	addhh.w		r0, r7:t, r5:t	/* r0 = a0 */
-+	subhh.w		r1, r7:t, r5:t	/* r1 = a2 */
-+	subhh.w		r2, r8:t, r4:t	/* r2 = a4 */
-+	addhh.w		r3, r9:t, r6:t	/* r3 = a6 */		
-+		
-+/*
-+        const int b0 = a0 + a6;
-+        const int b2 = a2 + a4;
-+        const int b4 = a2 - a4;
-+        const int b6 = a0 - a6;	
-+*/
-+	add		r10, r0, r3	/* r10 = b0 */ 
-+	sub		r0, r3		/* r0 = b6 */
-+	add		r3, r1, r2	/* r3 = b2 */
-+	sub		r1, r2		/* r1 = b4 */		
-+/*
-+	
-+
-+          const int a7 =  src[i][5] + src[i][3] + src[i][1] + (src[i][1]>>1);
-+          const int a1 =  src[i][5] - src[i][3] - src[i][7] - (src[i][7]>>1);
-+          const int a3 =  src[i][7] + src[i][1] - src[i][3] - (src[i][3]>>1);
-+          const int a5 =  src[i][7] - src[i][1] + src[i][5] + (src[i][5]>>1); */
-+	addhh.w		r8, r8:b, r6:b
-+	addhh.w		r2, r4:b, r7:b
-+	sub		r2, r8		/* r2 = a3 */	
-+
-+	addhh.w		r9, r9:b, r4:b
-+	subhh.w		r8, r5:b, r6:b
-+	sub		r8, r9		/* r8 = a1 */	
-+
-+	pasr.h		r9, r7, 1
-+	addhh.w		r9, r9:b, r7:b
-+	addhh.w		r6, r5:b, r6:b
-+	add		r6, r9		/* r6 = a7 */	
-+		
-+	pasr.h		r9, r5, 1
-+	addhh.w		r9, r9:b, r5:b
-+	subhh.w		r5, r4:b, r7:b
-+	add		r5, r9		/* r5 = a5 */	
-+			
-+/*        const int b1 = (a7>>2) + a1;
-+          const int b3 = (a5>>2) + a3;
-+          const int b5 = (a3>>2) - a5;
-+          const int b7 = -(a1>>2) + a7  ;  */
-+	asr		r4, r6, 2
-+	add		r4, r8		/* r4 = b1 */
-+	asr		r8, 2
-+	rsub		r8, r6		/* r8 = b7 */
-+	
-+	asr		r6, r5, 2
-+	add		r6, r2		/* r6 = b3 */
-+	asr		r2, 2
-+	sub		r2, r5		/* r2 = b5 */
-+	
-+/*
-+        dst[i*stride + 0] = cm[ dst[i*stride + 0] + ((b0 + b7) >> 6) ];
-+        dst[i*stride + 1] = cm[ dst[i*stride + 1] + ((b2 + b5) >> 6) ];
-+        dst[i*stride + 2] = cm[ dst[i*stride + 2] + ((b4 + b3) >> 6) ];
-+        dst[i*stride + 3] = cm[ dst[i*stride + 3] + ((b6 + b1) >> 6) ];
-+        dst[i*stride + 4] = cm[ dst[i*stride + 4] + ((b6 - b1) >> 6) ];
-+        dst[i*stride + 5] = cm[ dst[i*stride + 5] + ((b4 - b3) >> 6) ];
-+        dst[i*stride + 6] = cm[ dst[i*stride + 6] + ((b2 - b5) >> 6) ];
-+        dst[i*stride + 7] = cm[ dst[i*stride + 7] + ((b0 - b7) >> 6) ];
-+*/
-+	add		r5, r10, r8
-+	satrnds		r5 >> 6, 0	/* r5 = (b0 + b7) >> 6 */
-+	sub		r10, r8
-+	satrnds		r10 >> 6, 0	/* r10 = (b0 - b7) >> 6 */
-+	add		r8, r3, r2
-+	satrnds		r8 >> 6, 0	/* r8 = (b2 + b5) >> 6 */
-+	sub		r3, r2
-+	satrnds		r3 >> 6, 0	/* r3 = (b2 - b5) >> 6 */
-+	
-+	add		r2, r1, r6	
-+	satrnds		r2 >> 6, 0	/* r2 = (b4 + b3) >> 6 */
-+	sub		r1, r6	
-+	satrnds		r1 >> 6, 0	/* r1 = (b4 - b3) >> 6 */
-+				
-+	add		r6, r0, r4	
-+	satrnds		r6 >> 6, 0	/* r6 = (b6 + b1) >> 6 */
-+	sub		r0, r4	
-+	satrnds		r0 >> 6, 0	/* r0 = (b6 - b1) >> 6 */
-+
-+	ld.w		r4, r12[0]
-+	
-+	packw.sh	r8, r5, r8
-+	packw.sh	r7, r2, r6
-+	ld.w		r9, r12[4]
-+	packw.sh	r6, r0, r1
-+	packw.sh	r5, r3, r10
-+	
-+	punpckub.h	r10, r4:t
-+	punpckub.h	r4, r4:b
-+	punpckub.h	r3, r9:t
-+	punpckub.h	r9, r9:b
-+
-+	padd.h		r8, r8, r10
-+	padd.h		r7, r7, r4
-+	padd.h		r6, r6, r3
-+	padd.h		r5, r5, r9
-+	
-+	lddsp		r10, sp[4]	/* r10 = stride */
-+	packsh.ub	r0, r8, r7
-+	packsh.ub	r1, r6, r5
-+
-+	st.w		r12[0], r0
-+	st.w		r12[4], r1
-+	
-+	ldm		r11++, r4-r7
-+	add		r12, r10	/* dst += stride */
-+	
-+	sub		lr, 1
-+	brne		1b			
-+			
-+	sub		sp, -8
-+	ldm		sp++,r0-r3,r4-r7, pc
-+
-+
-+		
-+//    }
-+//}
---- /dev/null
-+++ b/libavcodec/avr32/idct.S
-@@ -0,0 +1,829 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+
-+	.global idct_add_avr32
-+	.global idct_put_avr32
-+	.global idct_avr32
-+	
-+
-+#define CONST_BITS  13
-+#define PASS1_BITS  2
-+
-+#define ONE	((INT32) 1)
-+
-+#define CONST_SCALE (ONE << CONST_BITS)
-+
-+#define	LINE_SIZE	32
-+
-+#define FIX_0_298631336  (2446)	/* FIX(0.298631336) */
-+#define FIX_0_390180644  (3196)	/* FIX(0.390180644) */
-+#define FIX_0_541196100  (4433)	/* FIX(0.541196100) */
-+#define FIX_0_765366865  (6270)	/* FIX(0.765366865) */
-+#define FIX_0_899976223  (7373)	/* FIX(0.899976223) */
-+#define FIX_1_175875602  (9633)	/* FIX(1.175875602) */
-+#define FIX_1_501321110  (12299)/* FIX(1.501321110) */
-+#define FIX_1_847759065  (15137)/* FIX(1.847759065) */
-+#define FIX_1_961570560  (16069)/* FIX(1.961570560) */
-+#define FIX_2_053119869  (16819)/* FIX(2.053119869) */
-+#define FIX_2_562915447  (20995)/* FIX(2.562915447) */
-+#define FIX_3_072711026  (25172)/* FIX(3.072711026) */
-+
-+
-+#define loop_cnt	r11	
-+	
-+	.text
-+	
-+idct_add_avr32:
-+	pushm		r0-r3, r4-r7, lr	//Free up registers to use for local variables
-+
-+	// Give room for some variables on the stack
-+	sub		sp, 8
-+	stdsp		SP[0], r12 // rfp
-+	stdsp		SP[4], r11 // iinc
-+		
-+	mov 		loop_cnt, 8		//Initialize loop counter
-+
-+FOR_ROW:
-+
-+	ldm		r10, r0, r1, r2, r3	//Load 8 DCT-coeffisients from the current row in the DCT-block
-+	mov		r6, 0
-+#ifdef USE_PREFETCH
-+	pref		r10[LINE_SIZE]		//Prefetch next line 
-+#endif
-+	or		r4, r2, r3 << 16 
-+	or		r4, r1			//Check if all DCT-coeffisients except the DC is zero
-+	or		r4, r0
-+	brne 		AC_ROW			//If there are non-zero AC coeffisients perform row-transform
-+
-+	paddsub.h	r5, r3:t, r6:b		//Extract the DC-coeff from r5			
-+	plsl.h		r5, r5, PASS1_BITS
-+	mov		r4, r5
-+	st.d		r10++, r4
-+	st.d		r10++, r4
-+	
-+	sub		loop_cnt, 1		//Decrement loop counter
-+	brne		FOR_ROW			//Perform loop one more time if loop_cnt is not zero 
-+
-+	bral		COLOUMN_TRANSFORM	//Perform coloumn transform after row transform is computed 
-+		
-+		
-+AC_ROW:	
-+
-+
-+	ld.w		r12, pc[coef_table - .]
-+	ld.w		r9, pc[coef_table - . + 4]
-+
-+	padd.h		r4, r2, r0 // r4:t = dataptr[2] + dataptr[6],r4:b = dataptr[3] + dataptr[7] 
-+	mulhh.w		r5, r4:t, r12:t
-+	mulhh.w		r6, r0:t, r12:b
-+	ld.w		r12, pc[coef_table - . + 8]
-+	mulhh.w		r7, r2:t, r9:t
-+	add		r6, r5	// tmp2
-+	satrnds		r6 >> (CONST_BITS - PASS1_BITS), 31
-+	add		r7, r5	// tmp3
-+	satrnds		r7 >> (CONST_BITS - PASS1_BITS), 31
-+
-+	paddsub.h	r5, r3:t, r1:t
-+	plsl.h		r5, r5, PASS1_BITS // r5:t = tmp0, r5:b = tmp1
-+	
-+	paddsub.h	r7, r5:t, r7:b // r7:t = tmp10, r7:b = tmp13
-+	paddsub.h	r6, r5:b, r6:b // r6:t = tmp11, r6:b = tmp12
-+	
-+	    
-+	addhh.w		lr, r3:b, r1:b // lr = z4	
-+	addhh.w		r5, r4:b, lr:b
-+	mulhh.w		r5, r5:b, r9:b // r5 = z5
-+	
-+	ld.w		r9, pc[coef_table - . + 12]
-+	mulhh.w		r4, r4:b, r12:t // r4 = z3
-+	mulhh.w		lr, lr:b, r12:b // lr = z4
-+	
-+	add		r4, r5	
-+	add		lr, r5	
-+	
-+	addhh.w		r5, r2:b, r1:b // r5 = z2	
-+	addhh.w		r8, r3:b, r0:b // r8 = z1	
-+
-+	    
-+	mulhh.w		r0, r0:b, r9:t // r0 = tmp0
-+	ld.w		r12, pc[coef_table - . + 16]
-+	mulhh.w		r1, r1:b, r9:b // r1 = tmp1
-+	ld.w		r9, pc[coef_table - . + 20]
-+	mulhh.w		r2, r2:b, r12:t // r2 = tmp2
-+	mulhh.w		r3, r3:b, r12:b // r3 = tmp3
-+	mulhh.w		r8, r8:b, r9:t // r8 = z1	
-+	mulhh.w		r5, r5:b, r9:b // r5 = z2	
-+    
-+    
-+	add		r0, r8
-+	add		r0, r4
-+	add		r1, r5
-+	add		r1, lr
-+	add		r2, r5
-+	add		r2, r4	 
-+	add		r3, r8
-+	add		r3, lr	 
-+
-+	satrnds		r0 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r1 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r2 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r3 >> (CONST_BITS - PASS1_BITS), 31
-+	
-+	paddsub.h	r5, r6:t, r2:b // r5:t = dataptr[1], r5:b = dataptr[6]
-+	paddsub.h	r4, r7:t, r3:b // r4:t = dataptr[0], r4:b = dataptr[7]
-+	paddsub.h	r3, r6:b, r1:b // r3:t = dataptr[2], r3:b = dataptr[5]
-+	paddsub.h	r2, r7:b, r0:b // r2:t = dataptr[3], r2:b = dataptr[4]
-+
-+	sthh.w		r10[0], r4:t, r5:t
-+	sthh.w		r10[4], r3:t, r2:t
-+	sthh.w		r10[8], r2:b, r3:b
-+	sthh.w		r10[12], r5:b, r4:b
-+	
-+	
-+
-+	sub		r10, -16 
-+	sub		loop_cnt, 1
-+	brne		FOR_ROW, e
-+
-+COLOUMN_TRANSFORM:
-+
-+	sub		r10, 128	//Set pointer to start of DCT block
-+
-+
-+	mov		loop_cnt, 8
-+FOR_COLOUMN:	
-+	ldins.h		r3:t,r10[0]    // r3:t = dataptr[0]  
-+	ldins.h		r1:t,r10[1*8*2]// r1:t = dataptr[1] 
-+	ldins.h		r2:t,r10[2*8*2]// r2:t = dataptr[2] 
-+	ldins.h		r0:t,r10[5*8*2]// r0:t = dataptr[5] 
-+	ldins.h		r3:b,r10[4*8*2]// r3:b = dataptr[4] 
-+	ldins.h		r1:b,r10[3*8*2]// r1:b = dataptr[3] 
-+	ldins.h		r2:b,r10[6*8*2]// r2:b = dataptr[6] 
-+	ldins.h		r0:b,r10[7*8*2]// r0:b = dataptr[7] 
-+		
-+	or		r4, r1, r3 << 16
-+	or		r4, r2	
-+	or		r4, r0
-+	brne 		AC_COLOUMN			//If there are non-zero AC coeffisients perform row-transform
-+
-+	lddsp		r12, SP[0]       // rfp
-+	lddsp		r9, SP[4]	// iinc
-+	satrnds		r3 >> ( PASS1_BITS + 3 + 16 ), 9	
-+	ld.d		r0, r12[0]
-+	sub		r10, -2	// Increment the dataptr
-+	bfins		r3, r3, 16, 16
-+	punpckub.h	r2, r1:t
-+	padd.h		r2, r2, r3
-+	punpckub.h	r1, r1:b
-+	padd.h		r1, r1, r3
-+	packsh.ub	r1, r2, r1
-+	punpckub.h	r2, r0:t
-+	padd.h		r2, r2, r3
-+	punpckub.h	r0, r0:b
-+	padd.h		r0, r0, r3
-+	packsh.ub	r0, r2, r0
-+	st.d		r12[0], r0
-+	add		r12, r9	// increment rfp
-+	stdsp		SP[0], r12		
-+			
-+	sub		loop_cnt, 1//Decrement loop counter
-+	brne		FOR_COLOUMN//Perform loop one more time if loop_cnt is not zero 
-+
-+	sub		sp, -8	
-+	popm		r0-r3, r4-r7, pc//Pop back registers and PC 
-+
-+AC_COLOUMN:
-+	
-+	ld.w		r12, pc[coef_table - .]
-+	ld.w		r9, pc[coef_table - . + 4]
-+
-+	addhh.w		r4, r2:t, r2:b
-+	mulhh.w		r4, r4:b, r12:t	// r4 = z1
-+	mulhh.w		r5, r2:b, r12:b
-+	ld.w		r12, pc[coef_table - . + 8]
-+	mulhh.w		r6, r2:t, r9:t
-+	add		r5, r4	// r5 = tmp2
-+	add		r6, r4	// r6 = tmp3
-+
-+	addhh.w		r7, r3:t, r3:b
-+	subhh.w		r8, r3:t, r3:b
-+
-+	lsl		r7, CONST_BITS
-+	lsl		r8, CONST_BITS
-+			
-+	add		r2, r7, r6 // r2 = tmp10
-+	sub		r3, r7, r6 // r3 = tmp13
-+	add		r4, r8, r5 // r4 = tmp11
-+	sub		r5, r8, r5 // r5 = tmp12
-+	   
-+	padd.h		r6, r0, r1 // r6:t = z4, r6:b = z3
-+	addhh.w		r7, r6:t, r6:b
-+	mulhh.w		r7, r7:b, r9:b // r7 = z5
-+	
-+	ld.w		r9, pc[coef_table - . + 12]
-+	mulhh.w		r8, r6:b, r12:t // r8 = z3
-+	mulhh.w		r6, r6:t, r12:b // r6 = z4
-+	
-+	add		r8, r7	
-+	add		r6, r7	
-+	
-+	paddx.h		r7, r0, r1 // r7:t = z2, r7:b = z1
-+
-+	mulhh.w		r12, r0:b, r9:t // r12 = tmp0
-+	mulhh.w		r0, r0:t, r9:b // r0 = tmp1
-+	ld.w		r9, pc[coef_table - . + 16]
-+	add		r12, r8
-+	add		r0, r6
-+		
-+	ld.w		lr, pc[coef_table - . + 20]
-+	machh.w		r8, r1:b, r9:t // r8 = tmp2
-+	machh.w		r6, r1:t, r9:b // r6 = tmp3
-+	mulhh.w		r9, r7:b, lr:t // r9 = z1	
-+	mulhh.w		r7, r7:t, lr:b // r7 = z2	
-+    
-+    
-+	add		r12, r9
-+	add		r0, r7
-+	add		r8, r7
-+	add		r6, r9
-+
-+	add		r1, r2, r6 // r1 = dataptr[DCTSIZE*0]
-+	sub		r2, r2, r6 // r2 = dataptr[DCTSIZE*7]
-+	add		r6, r4, r8 // r6 = dataptr[DCTSIZE*1]
-+	sub		r4, r4, r8 // r4 = dataptr[DCTSIZE*6]
-+	add		r8, r5, r0 // r8 = dataptr[DCTSIZE*2]
-+	sub		r5, r5, r0 // r5 = dataptr[DCTSIZE*5]
-+	add		r0, r3, r12 // r0 = dataptr[DCTSIZE*3]
-+	sub		r3, r3, r12 // r3 = dataptr[DCTSIZE*4]
-+	
-+	satrnds		r1 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r2 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r6 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r4 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r8 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r5 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r0 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r3 >> (CONST_BITS+PASS1_BITS+3), 9
-+
-+	packw.sh	r1, r1, r6
-+	packw.sh	r8, r8, r0
-+	packw.sh	r3, r3, r5
-+	packw.sh	r4, r4, r2
-+		
-+	lddsp		r12, SP[0]       // rfp
-+	lddsp		r9, SP[4]	// iinc
-+	ld.d		r6, r12[0]
-+	sub		r10, -2	// Increment the dataptr
-+	punpckub.h	r0, r7:t
-+	padd.h		r1, r1, r0
-+	punpckub.h	r0, r7:b
-+	padd.h		r8, r8, r0
-+	packsh.ub	r7, r1, r8
-+	punpckub.h	r0, r6:t
-+	padd.h		r3, r3, r0
-+	punpckub.h	r0, r6:b
-+	padd.h		r4, r4, r0
-+	packsh.ub	r6, r3, r4
-+	st.d		r12[0], r6
-+	add		r12, r9	// increment rfp
-+	stdsp		SP[0], r12		
-+				
-+	sub		loop_cnt, 1		//Decrement loop counter
-+	brne		FOR_COLOUMN			//Perform loop one more time if loop_cnt is not zero 
-+	
-+	sub		sp, -8	
-+	popm		r0-r3, r4-r7, pc	//Pop back registers and PC 
-+	
-+
-+
-+//Coeffisient Table:
-+	.align	2
-+coef_table:	
-+	.short	FIX_0_541196100, -FIX_1_847759065, FIX_0_765366865, FIX_1_175875602 
-+	.short	- FIX_1_961570560, - FIX_0_390180644, FIX_0_298631336, FIX_2_053119869
-+	.short	FIX_3_072711026, FIX_1_501321110, - FIX_0_899976223, - FIX_2_562915447
-+
-+
-+idct_put_avr32:
-+	pushm		r0-r3, r4-r7, lr	//Free up registers to use for local variables
-+
-+		//; Give room for some variables on the stack
-+	sub		sp, 8
-+	stdsp		SP[0], r12 // rfp
-+	stdsp		SP[4], r11 // iinc
-+		
-+	mov 		loop_cnt, 8		//Initialize loop counter
-+
-+0:
-+
-+	ldm		r10, r0, r1, r2, r3	//Load 8 DCT-coeffisients from the current row in the DCT-block
-+	mov		r6, 0
-+#ifdef USE_PREFETCH
-+	pref		r10[LINE_SIZE]		//Prefetch next line 
-+#endif
-+	or		r4, r2, r3 << 16 
-+	or		r4, r1			//Check if all DCT-coeffisients except the DC is zero
-+	or		r4, r0
-+	brne 		1f			//If there are non-zero AC coeffisients perform row-transform
-+
-+	paddsub.h	r5, r3:t, r6:b		//Extract the DC-coeff from r5			
-+	plsl.h		r5, r5, PASS1_BITS
-+	mov		r4, r5
-+	st.d		r10++, r4
-+	st.d		r10++, r4
-+	
-+	sub		loop_cnt, 1		//Decrement loop counter
-+	brne		0b			//Perform loop one more time if loop_cnt is not zero 
-+
-+	bral		2f	                //Perform coloumn transform after row transform is computed 
-+		
-+1:	
-+
-+	ld.w		r12, pc[coef_table_copy - .]
-+	ld.w		r9, pc[coef_table_copy - . + 4]
-+
-+	padd.h		r4, r2, r0 // r4:t = dataptr[2] + dataptr[6],r4:b = dataptr[3] + dataptr[7] 
-+	mulhh.w		r5, r4:t, r12:t
-+	mulhh.w		r6, r0:t, r12:b
-+	ld.w		r12, pc[coef_table_copy - . + 8]
-+	mulhh.w		r7, r2:t, r9:t
-+	add		r6, r5	// tmp2
-+	satrnds		r6 >> (CONST_BITS - PASS1_BITS), 31
-+	add		r7, r5	// tmp3
-+	satrnds		r7 >> (CONST_BITS - PASS1_BITS), 31
-+
-+	paddsub.h	r5, r3:t, r1:t
-+	plsl.h		r5, r5, PASS1_BITS // r5:t = tmp0, r5:b = tmp1
-+	
-+	paddsub.h	r7, r5:t, r7:b // r7:t = tmp10, r7:b = tmp13
-+	paddsub.h	r6, r5:b, r6:b // r6:t = tmp11, r6:b = tmp12
-+	
-+	    
-+
-+	addhh.w		lr, r3:b, r1:b // lr = z4	
-+	addhh.w		r5, r4:b, lr:b
-+	mulhh.w		r5, r5:b, r9:b // r5 = z5
-+	
-+	ld.w		r9, pc[coef_table_copy - . + 12]
-+	mulhh.w		r4, r4:b, r12:t // r4 = z3
-+	mulhh.w		lr, lr:b, r12:b // lr = z4
-+	
-+	add		r4, r5	
-+	add		lr, r5	
-+	
-+	addhh.w		r5, r2:b, r1:b // r5 = z2	
-+	addhh.w		r8, r3:b, r0:b // r8 = z1	
-+
-+	    
-+	mulhh.w		r0, r0:b, r9:t // r0 = tmp0
-+	ld.w		r12, pc[coef_table_copy - . + 16]
-+	mulhh.w		r1, r1:b, r9:b // r1 = tmp1
-+	ld.w		r9, pc[coef_table_copy - . + 20]
-+	mulhh.w		r2, r2:b, r12:t // r2 = tmp2
-+	mulhh.w		r3, r3:b, r12:b // r3 = tmp3
-+	mulhh.w		r8, r8:b, r9:t // r8 = z1	
-+	mulhh.w		r5, r5:b, r9:b // r5 = z2	
-+    
-+    
-+	add		r0, r8
-+	add		r0, r4
-+	add		r1, r5
-+	add		r1, lr
-+	add		r2, r5
-+	add		r2, r4	 
-+	add		r3, r8
-+	add		r3, lr	 
-+
-+	satrnds		r0 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r1 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r2 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r3 >> (CONST_BITS - PASS1_BITS), 31
-+	
-+	paddsub.h	r5, r6:t, r2:b // r5:t = dataptr[1], r5:b = dataptr[6]
-+	paddsub.h	r4, r7:t, r3:b // r4:t = dataptr[0], r4:b = dataptr[7]
-+	paddsub.h	r3, r6:b, r1:b // r3:t = dataptr[2], r3:b = dataptr[5]
-+	paddsub.h	r2, r7:b, r0:b // r2:t = dataptr[3], r2:b = dataptr[4]
-+
-+	sthh.w		r10[0], r4:t, r5:t
-+	sthh.w		r10[4], r3:t, r2:t
-+	sthh.w		r10[8], r2:b, r3:b
-+	sthh.w		r10[12], r5:b, r4:b
-+	
-+	
-+
-+	sub		r10, -16 
-+	sub		loop_cnt, 1
-+	brne		0b
-+
-+2:
-+
-+	sub		r10, 128	//Set pointer to start of DCT block
-+
-+	mov		loop_cnt, 8
-+
-+0:	
-+	ldins.h		r3:t,r10[0]    // r3:t = dataptr[0]  
-+	ldins.h		r1:t,r10[1*8*2]// r1:t = dataptr[1] 
-+	ldins.h		r2:t,r10[2*8*2]// r2:t = dataptr[2] 
-+	ldins.h		r0:t,r10[5*8*2]// r0:t = dataptr[5] 
-+	ldins.h		r3:b,r10[4*8*2]// r3:b = dataptr[4] 
-+	ldins.h		r1:b,r10[3*8*2]// r1:b = dataptr[3] 
-+	ldins.h		r2:b,r10[6*8*2]// r2:b = dataptr[6] 
-+	ldins.h		r0:b,r10[7*8*2]// r0:b = dataptr[7] 
-+		
-+	or		r4, r1, r3 << 16
-+	or		r4, r2	
-+	or		r4, r0
-+	brne 		1f			//If there are non-zero AC coeffisients perform row-transform
-+
-+	lddsp		r12, SP[0]       // rfp
-+	lddsp		r9, SP[4]	// iinc
-+	satrnds		r3 >> ( PASS1_BITS + 3 + 16 ), 31	
-+	packw.sh	r3, r3, r3
-+	packsh.ub	r3, r3, r3
-+	mov		r2, r3
-+	st.d		r12[0], r2
-+	add		r12, r9	// increment rfp
-+	sub		r10, -2	// Increment the dataptr
-+	stdsp		SP[0], r12		
-+			
-+	sub		loop_cnt, 1//Decrement loop counter
-+	brne		0b         //Perform loop one more time if loop_cnt is not zero 
-+
-+	sub		sp, -8	
-+	popm		r0-r3, r4-r7, pc//Pop back registers and PC 
-+
-+1:
-+	
-+	ld.w		r12, pc[coef_table_copy - .]
-+	ld.w		r9, pc[coef_table_copy - . + 4]
-+
-+	addhh.w		r4, r2:t, r2:b
-+	mulhh.w		r4, r4:b, r12:t	// r4 = z1
-+	mulhh.w		r5, r2:b, r12:b
-+	ld.w		r12, pc[coef_table_copy - . + 8]
-+	mulhh.w		r6, r2:t, r9:t
-+	add		r5, r4	// r5 = tmp2
-+	add		r6, r4	// r6 = tmp3
-+
-+	addhh.w		r7, r3:t, r3:b
-+	subhh.w		r8, r3:t, r3:b
-+
-+	lsl		r7, CONST_BITS
-+	lsl		r8, CONST_BITS
-+			
-+	add		r2, r7, r6 // r2 = tmp10
-+	sub		r3, r7, r6 // r3 = tmp13
-+	add		r4, r8, r5 // r4 = tmp11
-+	sub		r5, r8, r5 // r5 = tmp12
-+	   
-+
-+	padd.h		r6, r0, r1 // r6:t = z4, r6:b = z3
-+	addhh.w		r7, r6:t, r6:b
-+	mulhh.w		r7, r7:b, r9:b // r7 = z5
-+	
-+	ld.w		r9, pc[coef_table_copy - . + 12]
-+	mulhh.w		r8, r6:b, r12:t // r8 = z3
-+	mulhh.w		r6, r6:t, r12:b // r6 = z4
-+	
-+	add		r8, r7	
-+	add		r6, r7	
-+	
-+	paddx.h		r7, r0, r1 // r7:t = z2, r7:b = z1
-+
-+	mulhh.w		r12, r0:b, r9:t // r12 = tmp0
-+	mulhh.w		r0, r0:t, r9:b // r0 = tmp1
-+	ld.w		r9, pc[coef_table_copy - . + 16]
-+	add		r12, r8
-+	add		r0, r6
-+		
-+	ld.w		lr, pc[coef_table_copy - . + 20]
-+	machh.w		r8, r1:b, r9:t // r8 = tmp2
-+	machh.w		r6, r1:t, r9:b // r6 = tmp3
-+	mulhh.w		r9, r7:b, lr:t // r9 = z1	
-+	mulhh.w		r7, r7:t, lr:b // r7 = z2	
-+    
-+    
-+	add		r12, r9
-+	add		r0, r7
-+	add		r8, r7
-+	add		r6, r9
-+
-+	add		r1, r2, r6 // r1 = dataptr[DCTSIZE*0]
-+	sub		r2, r2, r6 // r2 = dataptr[DCTSIZE*7]
-+	add		r6, r4, r8 // r6 = dataptr[DCTSIZE*1]
-+	sub		r4, r4, r8 // r4 = dataptr[DCTSIZE*6]
-+	add		r8, r5, r0 // r8 = dataptr[DCTSIZE*2]
-+	sub		r5, r5, r0 // r5 = dataptr[DCTSIZE*5]
-+	add		r0, r3, r12 // r0 = dataptr[DCTSIZE*3]
-+	sub		r3, r3, r12 // r3 = dataptr[DCTSIZE*4]
-+	
-+	satrnds		r1 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r2 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r6 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r4 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r8 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r5 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r0 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r3 >> (CONST_BITS+PASS1_BITS+3), 9
-+
-+	packw.sh	r1, r1, r6
-+	packw.sh	r8, r8, r0
-+	packw.sh	r3, r3, r5
-+	packw.sh	r4, r4, r2
-+
-+	packsh.ub	r1, r1, r8
-+	packsh.ub	r0, r3, r4		
-+	lddsp		r12, SP[0]       // rfp
-+	lddsp		r9, SP[4]	// iinc
-+	st.d		r12[0], r0
-+	sub		r10, -2	// Increment the dataptr
-+	add		r12, r9	// increment rfp
-+	stdsp		SP[0], r12		
-+				
-+	sub		loop_cnt, 1		//Decrement loop counter
-+	brne		0b			//Perform loop one more time if loop_cnt is not zero 
-+	
-+	sub		sp, -8	
-+	popm		r0-r3, r4-r7, pc	//Pop back registers and PC 
-+	
-+
-+
-+	.align 2
-+coef_table_copy:	
-+	.short	FIX_0_541196100, -FIX_1_847759065, FIX_0_765366865, FIX_1_175875602 
-+	.short	- FIX_1_961570560, - FIX_0_390180644, FIX_0_298631336, FIX_2_053119869
-+	.short	FIX_3_072711026, FIX_1_501321110, - FIX_0_899976223, - FIX_2_562915447
-+	
-+
-+idct_avr32:
-+	pushm		r0-r3, r4-r7, lr	//Free up registers to use for local variables
-+
-+		//; Give room for a temporary block on the stack
-+	sub		sp, 8*8*2
-+		
-+	mov 		loop_cnt, 8		//Initialize loop counter
-+
-+0:
-+
-+	ldm		r12++, r0, r1, r2, r3	//Load 8 DCT-coeffisients from the current row in the DCT-block
-+	mov		r6, 0
-+#ifdef USE_PREFETCH
-+	pref		r12[LINE_SIZE]		//Prefetch next line 
-+#endif
-+	or		r4, r2, r3 << 16 
-+	or		r4, r1			//Check if all DCT-coeffisients except the DC is zero
-+	or		r4, r0
-+	brne 		1f			//If there are non-zero AC coeffisients perform row-transform
-+
-+	paddsub.h	r5, r3:t, r6:b		//Extract the DC-coeff from r5			
-+	plsl.h		r5, r5, PASS1_BITS
-+	mov		r4, r5
-+	st.d		sp++, r4
-+	st.d		sp++, r4
-+	
-+	sub		loop_cnt, 1		//Decrement loop counter
-+	brne		0b			//Perform loop one more time if loop_cnt is not zero 
-+
-+	bral		2f	                //Perform coloumn transform after row transform is computed 
-+		
-+1:	
-+
-+	ld.w		r10, pc[coef_table_idct - .]
-+	ld.w		r9, pc[coef_table_idct - . + 4]
-+
-+	padd.h		r4, r2, r0 // r4:t = dataptr[2] + dataptr[6],r4:b = dataptr[3] + dataptr[7] 
-+	mulhh.w		r5, r4:t, r10:t
-+	mulhh.w		r6, r0:t, r10:b
-+	ld.w		r10, pc[coef_table_idct - . + 8]
-+	mulhh.w		r7, r2:t, r9:t
-+	add		r6, r5	// tmp2
-+	satrnds		r6 >> (CONST_BITS - PASS1_BITS), 31
-+	add		r7, r5	// tmp3
-+	satrnds		r7 >> (CONST_BITS - PASS1_BITS), 31
-+
-+	paddsub.h	r5, r3:t, r1:t
-+	plsl.h		r5, r5, PASS1_BITS // r5:t = tmp0, r5:b = tmp1
-+	
-+	paddsub.h	r7, r5:t, r7:b // r7:t = tmp10, r7:b = tmp13
-+	paddsub.h	r6, r5:b, r6:b // r6:t = tmp11, r6:b = tmp12
-+	
-+	    
-+
-+	addhh.w		lr, r3:b, r1:b // lr = z4	
-+	addhh.w		r5, r4:b, lr:b
-+	mulhh.w		r5, r5:b, r9:b // r5 = z5
-+	
-+	ld.w		r9, pc[coef_table_idct - . + 12]
-+	mulhh.w		r4, r4:b, r10:t // r4 = z3
-+	mulhh.w		lr, lr:b, r10:b // lr = z4
-+	
-+	add		r4, r5	
-+	add		lr, r5	
-+	
-+	addhh.w		r5, r2:b, r1:b // r5 = z2	
-+	addhh.w		r8, r3:b, r0:b // r8 = z1	
-+
-+	    
-+	mulhh.w		r0, r0:b, r9:t // r0 = tmp0
-+	ld.w		r10, pc[coef_table_idct - . + 16]
-+	mulhh.w		r1, r1:b, r9:b // r1 = tmp1
-+	ld.w		r9, pc[coef_table_idct - . + 20]
-+	mulhh.w		r2, r2:b, r10:t // r2 = tmp2
-+	mulhh.w		r3, r3:b, r10:b // r3 = tmp3
-+	mulhh.w		r8, r8:b, r9:t // r8 = z1	
-+	mulhh.w		r5, r5:b, r9:b // r5 = z2	
-+    
-+    
-+	add		r0, r8
-+	add		r0, r4
-+	add		r1, r5
-+	add		r1, lr
-+	add		r2, r5
-+	add		r2, r4	 
-+	add		r3, r8
-+	add		r3, lr	 
-+
-+	satrnds		r0 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r1 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r2 >> (CONST_BITS - PASS1_BITS), 31
-+	satrnds		r3 >> (CONST_BITS - PASS1_BITS), 31
-+	
-+	paddsub.h	r5, r6:t, r2:b // r5:t = dataptr[1], r5:b = dataptr[6]
-+	paddsub.h	r4, r7:t, r3:b // r4:t = dataptr[0], r4:b = dataptr[7]
-+	paddsub.h	r3, r6:b, r1:b // r3:t = dataptr[2], r3:b = dataptr[5]
-+	paddsub.h	r2, r7:b, r0:b // r2:t = dataptr[3], r2:b = dataptr[4]
-+
-+	sthh.w		sp[0], r4:t, r5:t
-+	sthh.w		sp[4], r3:t, r2:t
-+	sthh.w		sp[8], r2:b, r3:b
-+	sthh.w		sp[12], r5:b, r4:b
-+	
-+	
-+
-+	sub		sp, -16 
-+	sub		loop_cnt, 1
-+	brne		0b
-+
-+2:
-+
-+	sub		sp, 8*8*2	//Set pointer to start of DCT block
-+	sub		r12, 8*8*2	//Set pointer to start of DCT block
-+
-+	mov		loop_cnt, 8
-+
-+0:	
-+	ldins.h		r3:t,sp[0]    // r3:t = dataptr[0]  
-+	ldins.h		r1:t,sp[1*8*2]// r1:t = dataptr[1] 
-+	ldins.h		r2:t,sp[2*8*2]// r2:t = dataptr[2] 
-+	ldins.h		r0:t,sp[5*8*2]// r0:t = dataptr[5] 
-+	ldins.h		r3:b,sp[4*8*2]// r3:b = dataptr[4] 
-+	ldins.h		r1:b,sp[3*8*2]// r1:b = dataptr[3] 
-+	ldins.h		r2:b,sp[6*8*2]// r2:b = dataptr[6] 
-+	ldins.h		r0:b,sp[7*8*2]// r0:b = dataptr[7] 
-+		
-+	or		r4, r1, r3 << 16
-+	or		r4, r2	
-+	or		r4, r0
-+	brne 		1f			//If there are non-zero AC coeffisients perform row-transform
-+
-+	satrnds		r3 >> ( PASS1_BITS + 3 + 16 ), 31	
-+	packw.sh	r3, r3, r3
-+	mov		r2, r3
-+	st.d		r12++, r2
-+	st.d		r12++, r2
-+	sub		sp, -2	// Increment the dataptr
-+			
-+	sub		loop_cnt, 1//Decrement loop counter
-+	brne		0b         //Perform loop one more time if loop_cnt is not zero 
-+
-+	sub		sp, -(8*8*2 - 8)	
-+	popm		r0-r3, r4-r7, pc//Pop back registers and PC 
-+
-+1:
-+	
-+	ld.w		r10, pc[coef_table_idct - .]
-+	ld.w		r9, pc[coef_table_idct - . + 4]
-+
-+	addhh.w		r4, r2:t, r2:b
-+	mulhh.w		r4, r4:b, r10:t	// r4 = z1
-+	mulhh.w		r5, r2:b, r10:b
-+	ld.w		r10, pc[coef_table_idct - . + 8]
-+	mulhh.w		r6, r2:t, r9:t
-+	add		r5, r4	// r5 = tmp2
-+	add		r6, r4	// r6 = tmp3
-+
-+	addhh.w		r7, r3:t, r3:b
-+	subhh.w		r8, r3:t, r3:b
-+
-+	lsl		r7, CONST_BITS
-+	lsl		r8, CONST_BITS
-+			
-+	add		r2, r7, r6 // r2 = tmp10
-+	sub		r3, r7, r6 // r3 = tmp13
-+	add		r4, r8, r5 // r4 = tmp11
-+	sub		r5, r8, r5 // r5 = tmp12
-+	   
-+
-+	padd.h		r6, r0, r1 // r6:t = z4, r6:b = z3
-+	addhh.w		r7, r6:t, r6:b
-+	mulhh.w		r7, r7:b, r9:b // r7 = z5
-+	
-+	ld.w		r9, pc[coef_table_idct - . + 12]
-+	mulhh.w		r8, r6:b, r10:t // r8 = z3
-+	mulhh.w		r6, r6:t, r10:b // r6 = z4
-+	
-+	add		r8, r7	
-+	add		r6, r7	
-+	
-+	paddx.h		r7, r0, r1 // r7:t = z2, r7:b = z1
-+
-+	mulhh.w		r10, r0:b, r9:t // r10 = tmp0
-+	mulhh.w		r0, r0:t, r9:b // r0 = tmp1
-+	ld.w		r9, pc[coef_table_idct - . + 16]
-+	add		r10, r8
-+	add		r0, r6
-+		
-+	ld.w		lr, pc[coef_table_idct - . + 20]
-+	machh.w		r8, r1:b, r9:t // r8 = tmp2
-+	machh.w		r6, r1:t, r9:b // r6 = tmp3
-+	mulhh.w		r9, r7:b, lr:t // r9 = z1	
-+	mulhh.w		r7, r7:t, lr:b // r7 = z2	
-+    
-+    
-+	add		r10, r9
-+	add		r0, r7
-+	add		r8, r7
-+	add		r6, r9
-+
-+	add		r1, r2, r6 // r1 = dataptr[DCTSIZE*0]
-+	sub		r2, r2, r6 // r2 = dataptr[DCTSIZE*7]
-+	add		r6, r4, r8 // r6 = dataptr[DCTSIZE*1]
-+	sub		r4, r4, r8 // r4 = dataptr[DCTSIZE*6]
-+	add		r8, r5, r0 // r8 = dataptr[DCTSIZE*2]
-+	sub		r5, r5, r0 // r5 = dataptr[DCTSIZE*5]
-+	add		r0, r3, r10 // r0 = dataptr[DCTSIZE*3]
-+	sub		r3, r3, r10 // r3 = dataptr[DCTSIZE*4]
-+	
-+	satrnds		r1 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r2 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r6 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r4 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r8 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r5 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r0 >> (CONST_BITS+PASS1_BITS+3), 9
-+	satrnds		r3 >> (CONST_BITS+PASS1_BITS+3), 9
-+
-+	packw.sh	r7, r1, r6
-+	packw.sh	r6, r8, r0
-+	packw.sh	r5, r3, r5
-+	packw.sh	r4, r4, r2
-+
-+	stm		r12, r4-r7
-+	sub		sp, -2	// Increment the dataptr
-+	sub		r12, -16
-+					
-+	sub		loop_cnt, 1		//Decrement loop counter
-+	brne		0b			//Perform loop one more time if loop_cnt is not zero 
-+	
-+	sub		sp, -(8*8*2 - 8)	
-+	popm		r0-r3, r4-r7, pc	//Pop back registers and PC 
-+	
-+
-+
-+	.align 2
-+coef_table_idct:	
-+	.short	FIX_0_541196100, -FIX_1_847759065, FIX_0_765366865, FIX_1_175875602 
-+	.short	- FIX_1_961570560, - FIX_0_390180644, FIX_0_298631336, FIX_2_053119869
-+	.short	FIX_3_072711026, FIX_1_501321110, - FIX_0_899976223, - FIX_2_562915447
-+	
---- /dev/null
-+++ b/libavcodec/avr32/mc.S
-@@ -0,0 +1,434 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+		
-+	
-+	/* Macro for masking the lowest bit of each byte in a
-+	   packed word */
-+	.macro	packedmask1	reg, round
-+	.if	\round
-+	and	\reg, \reg, r8 >> 1
-+	.else
-+	and	\reg, r8
-+	.endif
-+	.endm		
-+
-+	/* Macro for 8 pixel wide horizontal and vertical interpolation functions */	
-+	.macro	pixels8_hv	round, put		
-+
-+
-+	pushm	r0-r7, lr
-+
-+	/* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
-+	
-+	/* Rounding immediate */
-+	.if	\round
-+	mov	r8, lo(0x02020202)
-+	orh	r8, hi(0x02020202) 
-+	.else
-+	mov	r8, lo(0x01010101)
-+	orh	r8, hi(0x01010101) 
-+	.endif
-+	mov	r7, 2
-+	
-+	/* Pixel naming convention :	 
-+	
-+		|-----------------------------------------------------|
-+		| s00 | s01 | s02 | s03 | s04 | s05 | s06 | s07 | s08 |
-+		|----d00---d01---d02---d03---d04---d05---d06---d07----|
-+		| s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 |
-+		|-----------------------------------------------------|
-+	*/
-+1:	
-+	ld.w	r0, r11[0]		// r0 = { s00, s01, s02, s03 } 
-+	ld.w	r1, r11[1]		// r1 = { s01, s02, s03, s04 }
-+	mov	lr, r9
-+	eor	r2, r0, r1	 	
-+	packedmask1	r2, \round		 	 
-+	add	r2, r8
-+
-+	paddh.ub	r0, r0, r1	// r0 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
-+	
-+	add		r11, r10	// pixels += line_size
-+	ld.w	r1, r11[0]		// r1 = { s10, s11, s12, s13 } 
-+	ld.w	r3, r11[1]		// r3 = { s11, s12, s13, s14 }
-+0:
-+	eor	r5, r1, r3	 	
-+	packedmask1	r5, \round		 	 
-+	add	r2, r5
-+	
-+	paddh.ub	r1, r1, r3	// r1 = {(s10+s11)/2,(s11+s12)/2,(s12+s13)/2,(s13+s14)/2}
-+	eor	r6, r0, r1		
-+	packedmask1	r6, \round		 	 
-+	add	r2, r2, r6 << 1	
-+						
-+	ld.w	r3, r11[r10]		// r3 = { s00, s01, s02, s03 } 
-+	add	r11, r10		// pixels += line_size
-+	ld.w	r4, r11[1]		// r4 = { s01, s02, s03, s04 }
-+
-+	paddh.ub	r0, r0, r1
-+	plsr.b		r2, r2, 2
-+	padd.b		r0, r0, r2	// r0 = { d00, d01, d02, d03 }
-+	
-+	/* Next row */
-+	.if	\put
-+	eor	r2, r3, r4	 	
-+	packedmask1	r2, \round		 	 
-+	add	r2, r8
-+	.else
-+	ld.w	r6, r12[0]
-+	eor	r2, r3, r4	 	
-+	packedmask1	r2, \round		 	 
-+	add	r2, r8
-+	pavg.ub	r0, r0, r6
-+	.endif
-+	st.w	r12[0], r0		// Put data into the block
-+		
-+	add	r5, r2
-+	paddh.ub	r0, r3, r4	// r0 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
-+				
-+	eor	r6, r0, r1		
-+	packedmask1	r6, \round		 	 
-+	add	r5, r5, r6 << 1	
-+
-+	.if	\put
-+	paddh.ub	r1, r0, r1
-+	plsr.b		r5, r5, 2
-+	padd.b		r1, r1, r5	// r1 = { d10, d11, d12, d13 }
-+	.else
-+	ld.w		r3, r12[r10]
-+	paddh.ub	r1, r0, r1
-+	plsr.b		r5, r5, 2
-+	padd.b		r1, r1, r5	// r1 = { d10, d11, d12, d13 }
-+	pavg.ub		r1, r1, r3
-+	.endif
-+		
-+	st.w	r12[r10], r1		// Put data into the block
-+	
-+	
-+	ld.w	r1, r11[r10]		// r1 = { s10, s11, s12, s13 } 
-+	add	r11, r10		// pixels += line_size
-+	ld.w	r3, r11[1]		// r3 = { s11, s12, s13, s14 }
-+	add	r12, r12, r10 << 1	// block += 2*line_size
-+	sub	lr, 2
-+	brne	0b
-+
-+	mul	r0, r10, r9		// r0 = line_size * h
-+	rsub	r0, r0, 4		// r0 = 4 - (line_size * h)  
-+	add	r11, r0
-+	sub	r11, r10		// pixels += 4 - (line_size * (h+1))
-+	add	r12, r0			// pixels += 4 - (line_size * (h))
-+	sub	r7, 1
-+	brne	1b
-+	
-+	popm	r0-r7, pc
-+	.endm
-+
-+
-+	/* Macro for 8 pixel wide vertical interpolation functions */	
-+
-+	.macro	pixels8_v	round, put		
-+	pushm	r4-r7,lr	
-+	/* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
-+
-+	/* 
-+		Pixel Naming Convention :	
-+		|-----------------------------------------------|
-+		| s00 | s01 | s02 | s03 | s04 | s05 | s06 | s07 |
-+		|-d00---d01---d02---d03---d04---d05---d06---d07-|
-+		| s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 |
-+		|-----------------------------------------------|
-+	*/
-+	ld.w	r8, r11[r10]		// r8 = { s10, s11, s12, s13 }
-+	ld.w	lr, r11++		// lr = { s00, s01, s02, s03 }, src += 4
-+	ld.w	r7, r11[0]		// r7 = { s04, s05, s06, s07 }
-+	ld.w	r6, r11[r10]		// r6 = { s14, s15, s16, s17 }
-+	sub	r10, 4			// stride -= 4 
-+	add	r11, r11, r10 << 1	// src += 2*stride 
-+	sub	r11, -4			// src += 4                               
-+	
-+0:	
-+	.if	\round
-+	pavg.ub r5, r8, lr		// r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
-+	pavg.ub r4, r6, r7		// r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
-+	.else
-+	paddh.ub r5, r8, lr		// r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
-+	paddh.ub r4, r6, r7		// r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
-+	.endif
-+
-+	.if	\put
-+	st.w	r12++, r5		// *dst++ = { d00, d01, d02, d03 } 
-+	ld.w	lr, r11++		// lr = { s10, s11, s12, s13 }, src += 4 
-+	st.w	r12[0], r4		// *dst = { d04, d05, d06, d07 }
-+	ld.w	r7, r11[0]		// r7 = { s14, s15, s16, s17 }
-+	.else
-+	ld.w	lr, r12[0]		
-+	ld.w	r7, r12[4]	
-+	pavg.ub	r5, r5, lr	 
-+	pavg.ub	r4, r4, r7	 
-+	st.w	r12++, r5		// *dst++ = { d00, d01, d02, d03 } 
-+	ld.w	lr, r11++		// lr = { s10, s11, s12, s13 }, src += 4 
-+	st.w	r12[0], r4		// *dst = { d04, d05, d06, d07 }
-+	ld.w	r7, r11[0]		// r7 = { s14, s15, s16, s17 }
-+	.endif
-+	add	r11, r10		// src += stride							
-+#ifdef USE_PREFETCH
-+	pref		r11[0]
-+#endif		
-+	add	r12, r10		// dst += stride
-+
-+	.if	\round
-+	pavg.ub r5, r8, lr		// r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
-+	pavg.ub r4, r6, r7		// r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
-+	.else
-+	paddh.ub r5, r8, lr		// r5 = {(s10+s00)/2,(s11+s01)/2,(s12+s02)/2,(s13+s03)/2}
-+	paddh.ub r4, r6, r7		// r4 = {(s14+s04)/2,(s15+s05)/2,(s16+s06)/2,(s17+s07)/2}
-+	.endif
-+	.if	\put
-+	st.w	r12++, r5		// *dst++ = { d00, d01, d02, d03 }                       
-+	ld.w	r8, r11++		// r8 = { s10, s11, s12, s13 }, src += 4                 
-+	st.w	r12[0], r4		// *dst = { d04, d05, d06, d07 }                         
-+	ld.w	r6, r11[0]		// r6 = { s14, s15, s16, s17 }                           
-+	.else
-+	ld.w	r8, r12[0]		
-+	ld.w	r6, r12[4]	
-+	pavg.ub	r5, r5, r8	 
-+	pavg.ub	r4, r4, r6	 
-+	st.w	r12++, r5		// *dst++ = { d00, d01, d02, d03 }                       
-+	ld.w	r8, r11++		// r8 = { s10, s11, s12, s13 }, src += 4                 
-+	st.w	r12[0], r4		// *dst = { d04, d05, d06, d07 }                         
-+	ld.w	r6, r11[0]		// r6 = { s14, s15, s16, s17 }                           
-+	.endif
-+	
-+	add	r11, r10		// src += stride                                         
-+#ifdef USE_PREFETCH
-+	pref		r11[0]
-+#endif		
-+	add	r12, r10		// dst += stride                                         
-+	sub	r9, 2
-+	brne	0b
-+		
-+	popm	r4-r7,pc
-+	.endm
-+
-+	/* Macro for 8 pixel wide horizontal interpolation functions */	
-+
-+	.macro	pixels8_h	round, put
-+	pushm	r4-r7, lr	
-+
-+	/* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
-+	/*
-+		 Pixel Naming Convention:	
-+		|--------------------------------------------------------------------|
-+		| s00 d00 s01 d01 s02 d02 s03 d03 s04 d04 s05 d05 s06 d06 s07 d07 s08|
-+		|------|-------|-------|-------|-------|-------|-------|-------|-----|
-+		| s10 d10 s11 d11 s12 d12 s13 d13 s14 d14 s15 d15 s16 d16 s17 d17 s18|
-+		|--------------------------------------------------------------------|
-+	*/
-+
-+	ld.w	lr, r11[0]	// lr = { s00, s01, s02, s03 }
-+	ld.w	r8, r11[1]	// r8 = { s01, s02, s03, s04 }
-+	ld.w	r7, r11[4]	// r7 = { s04, s05, s06, s07 }
-+	ld.w	r6, r11[5]	// r6 = { s05, s06, s07, s08 }
-+	add	r11, r10	// src += stride			
-+
-+0:	
-+	.if	\round
-+	pavg.ub lr, r8, lr	// lr = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
-+	pavg.ub r7, r6, r7	// r7 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
-+	.else
-+	paddh.ub lr, r8, lr	// lr = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
-+	paddh.ub r7, r6, r7	// r7 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
-+	.endif
-+	.if	\put
-+	ld.w	r5, r11[0]	// r5 = { s00, s01, s02, s03 }
-+	ld.w	r4, r11[1]	// r4 = { s01, s02, s03, s04 }
-+	.else
-+	ld.w	r8, r12[0]
-+	ld.w	r6, r12[4]
-+	ld.w	r5, r11[0]	// r5 = { s00, s01, s02, s03 }
-+	ld.w	r4, r11[1]	// r4 = { s01, s02, s03, s04 }
-+	pavg.ub	lr, lr, r8
-+	pavg.ub	r7, r7, r6
-+	.endif
-+	st.w	r12[0], lr	// dst = { d00, d01, d02, d03 }
-+	st.w	r12[4], r7	// dst = { d04, d05, d06, d07 }
-+	ld.w	r8, r11[4]	// r8 = { s04, s05, s06, s07 }
-+	ld.w	r6, r11[5]	// r6 = { s05, s06, s07, s08 }
-+	add	r11, r10	// src += stride						
-+#ifdef USE_PREFETCH
-+	pref		r11[0]
-+#endif		
-+	add	r12, r10	// dst += stride
-+
-+	.if	\round
-+	pavg.ub r5, r4, r5	// r5 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
-+	pavg.ub r4, r6, r8	// r4 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
-+	.else
-+	paddh.ub r5, r4, r5	// r5 = {(s00+s01)/2,(s01+s02)/2,(s02+s03)/2,(s03+s04)/2}
-+	paddh.ub r4, r6, r8	// r4 = {(s04+s05)/2,(s05+s06)/2,(s06+s07)/2,(s07+s08)/2}
-+	.endif
-+	.if	\put
-+	ld.w	lr, r11[0]	// lr = { s00, s01, s02, s03 }                           
-+	ld.w	r8, r11[1]	// r8 = { s01, s02, s03, s04 }                           
-+	.else
-+	ld.w	r7, r12[0]
-+	ld.w	r6, r12[4]
-+	ld.w	lr, r11[0]	// lr = { s00, s01, s02, s03 }                           
-+	ld.w	r8, r11[1]	// r8 = { s01, s02, s03, s04 }                           
-+	pavg.ub	r5, r5, r7
-+	pavg.ub	r4, r4, r6
-+	.endif
-+	st.w	r12[0], r5	// dst = { d00, d01, d02, d03 }                          
-+	st.w	r12[4], r4	// dst = { d04, d05, d06, d07 }                          
-+	ld.w	r7, r11[4]	// r7 = { s04, s05, s06, s07 }                           
-+	ld.w	r6, r11[5]	// r6 = { s05, s06, s07, s08 }                           
-+	add	r11, r10	// src += stride						                                         
-+#ifdef USE_PREFETCH
-+	pref		r11[0]
-+#endif		
-+	add	r12, r10	// dst += stride                                         
-+	sub	r9, 2
-+	brne	0b
-+		
-+	popm	r4-r7, pc
-+	.endm
-+	
-+	/* Macro for 8 pixel wide copy functions */	
-+	.macro	pixels8	put
-+	stm		--sp, r3-r7,lr
-+	/* R12 = uint8_t *block, R11 = uint8_t pixels, R10 = int line_size, R9 = int h */
-+	mov		lr, r9
-+	sub		r3, r10, 2	        // stride2 = stride - 2 
-+0:	
-+	.if	\put
-+	ld.w		r9, r11[r10]	        // r9 = { s10, s11, s12, s13 }
-+	ld.w		r7, r11++	        // r7 = { s00, s01, s02, s03 }, src += 4
-+	ld.w		r6, r11[0]	        // r6 = { s04, s05, s06, s07 }
-+	ld.w		r8, r11[r10]	        // r8 = { s14, s15, s16, s17 }
-+	.else
-+	ld.w		r9, r11[r10]	        // r9 = { s10, s11, s12, s13 }
-+	ld.d		r4, r12[0]
-+	ld.w		r7, r11++	        // r7 = { s00, s01, s02, s03 }, src += 4
-+	ld.w		r6, r11[0]	        // r6 = { s04, s05, s06, s07 }
-+	ld.w		r8, r11[r10]	        // r8 = { s14, s15, s16, s17 }
-+	pavg.ub		r6, r6, r4
-+	pavg.ub		r7, r7, r5
-+	ld.d		r4, r12[r10]
-+	.endif
-+	st.d		r12, r6			// *dst = { s00, s01, s02, s03, s04, s05, s06, s07 }   
-+	add		r11, r11, r3 << 1	// src += stride2 * 2
-+	.ifeq	\put
-+	pavg.ub		r8, r8, r4
-+	pavg.ub		r9, r9, r5	
-+	.endif	
-+	st.d		r12[r10 << 0], r8	// *(dst + stride) = { s10, s11, s12, s13, s14, s15, s16, s17 } 
-+	add		r12, r12, r10 << 1	// dst += 2*stride
-+	sub		lr, 2
-+	brne		0b
-+	ldm		sp++, r3-r7,pc
-+
-+	.endm	
-+	
-+	.global	put_no_rnd_pixels8_hv_avr32
-+	.text
-+put_no_rnd_pixels8_hv_avr32:
-+	pixels8_hv	0, 1	
-+
-+	.global	put_pixels8_hv_avr32
-+	.text
-+put_pixels8_hv_avr32:
-+	pixels8_hv	1, 1	
-+
-+	.global	avg_no_rnd_pixels8_hv_avr32
-+	.text
-+avg_no_rnd_pixels8_hv_avr32:
-+	pixels8_hv	0, 0	
-+
-+	.global	avg_pixels8_hv_avr32
-+	.text
-+avg_pixels8_hv_avr32:
-+	pixels8_hv	1, 0	
-+
-+	.global	put_no_rnd_pixels8_v_avr32
-+	.text
-+put_no_rnd_pixels8_v_avr32:
-+	pixels8_v	0, 1	
-+
-+	.global	put_pixels8_v_avr32
-+	.text
-+put_pixels8_v_avr32:
-+	pixels8_v	1, 1	
-+
-+	.global	avg_no_rnd_pixels8_v_avr32
-+	.text
-+avg_no_rnd_pixels8_v_avr32:
-+	pixels8_v	0, 0	
-+
-+	.global	avg_pixels8_v_avr32
-+	.text
-+avg_pixels8_v_avr32:
-+	pixels8_v	1, 0	
-+
-+	.global	put_no_rnd_pixels8_h_avr32
-+	.text
-+put_no_rnd_pixels8_h_avr32:
-+	pixels8_h	0, 1	
-+
-+	.global	put_pixels8_h_avr32
-+	.text
-+put_pixels8_h_avr32:
-+	pixels8_h	1, 1	
-+
-+	.global	avg_no_rnd_pixels8_h_avr32
-+	.text
-+avg_no_rnd_pixels8_h_avr32:
-+	pixels8_h	0, 0	
-+
-+	.global	avg_pixels8_h_avr32
-+	.text
-+avg_pixels8_h_avr32:
-+	pixels8_h	1, 0	
-+
-+	.global	put_pixels8_avr32
-+	.global	put_no_rnd_pixels8_avr32
-+	.text
-+put_pixels8_avr32:
-+put_no_rnd_pixels8_avr32:
-+	pixels8	1	
-+
-+	.global	avg_no_rnd_pixels8_avr32
-+	.global	avg_pixels8_avr32
-+	.text
-+avg_pixels8_avr32:
-+avg_no_rnd_pixels8_avr32:
-+	pixels8	0	
---- /dev/null
-+++ b/libavcodec/avr32/pico.h
-@@ -0,0 +1,260 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+#ifndef __PICO_H__
-+#define __PICO_H__
-+
-+
-+
-+/* Coprocessor Number */
-+#define PICO_CPNO  1
-+
-+/* Pixel Coprocessor Register file */
-+#define PICO_REGVECT_INPIX2  cr0
-+#define PICO_REGVECT_INPIX1  cr1
-+#define PICO_REGVECT_INPIX0  cr2
-+#define PICO_REGVECT_OUTPIX2 cr3
-+#define PICO_REGVECT_OUTPIX1 cr4
-+#define PICO_REGVECT_OUTPIX0 cr5
-+#define PICO_REGVECT_COEFF0_A cr6
-+#define PICO_REGVECT_COEFF0_B cr7
-+#define PICO_REGVECT_COEFF1_A cr8
-+#define PICO_REGVECT_COEFF1_B cr9
-+#define PICO_REGVECT_COEFF2_A cr10
-+#define PICO_REGVECT_COEFF2_B cr11
-+#define PICO_REGVECT_VMU0_OUT cr12
-+#define PICO_REGVECT_VMU1_OUT cr13
-+#define PICO_REGVECT_VMU2_OUT cr14
-+#define PICO_REGVECT_CONFIG   cr15
-+
-+#define PICO_INPIX2  0
-+#define PICO_INPIX1  1
-+#define PICO_INPIX0  2
-+#define PICO_OUTPIX2 3
-+#define PICO_OUTPIX1 4
-+#define PICO_OUTPIX0 5
-+#define PICO_COEFF0_A 6
-+#define PICO_COEFF0_B 7
-+#define PICO_COEFF1_A 8
-+#define PICO_COEFF1_B 9
-+#define PICO_COEFF2_A 10
-+#define PICO_COEFF2_B 11
-+#define PICO_VMU0_OUT 12
-+#define PICO_VMU1_OUT 13
-+#define PICO_VMU2_OUT 14
-+#define PICO_CONFIG   15
-+
-+/* Config Register */
-+#define PICO_COEFF_FRAC_BITS_OFFSET  0
-+#define PICO_COEFF_FRAC_BITS_SIZE  4
-+#define PICO_OFFSET_FRAC_BITS_OFFSET  4
-+#define PICO_OFFSET_FRAC_BITS_SIZE  4
-+#define PICO_INPUT_MODE_OFFSET  8
-+#define PICO_INPUT_MODE_SIZE  2
-+#define PICO_OUTPUT_MODE_OFFSET 10
-+#define PICO_OUTPUT_MODE_SIZE 1
-+
-+struct pico_config_t {
-+  unsigned int          : 32 - PICO_OUTPUT_MODE_OFFSET - PICO_OUTPUT_MODE_SIZE;
-+  unsigned int          output_mode : PICO_OUTPUT_MODE_SIZE;
-+  unsigned int          input_mode : PICO_INPUT_MODE_SIZE;
-+  unsigned int          offset_frac_bits : PICO_OFFSET_FRAC_BITS_SIZE;
-+  unsigned int          coeff_frac_bits : PICO_COEFF_FRAC_BITS_SIZE;
-+  int                   vmu2_out;
-+  int                   vmu1_out;
-+  int                   vmu0_out;
-+  short                 coeff2_2;
-+  short                 coeff2_3;
-+  short                 coeff2_0;
-+  short                 coeff2_1;
-+  short                 coeff1_2;
-+  short                 coeff1_3;
-+  short                 coeff1_0;
-+  short                 coeff1_1;
-+  short                 coeff0_2;
-+  short                 coeff0_3;
-+  short                 coeff0_0;
-+  short                 coeff0_1;
-+};
-+
-+
-+#define PICO_COEFF_FRAC_BITS(x) (x << PICO_COEFF_FRAC_BITS_OFFSET)
-+#define PICO_OFFSET_FRAC_BITS(x) (x << PICO_OFFSET_FRAC_BITS_OFFSET)
-+#define PICO_INPUT_MODE(x) (x << PICO_INPUT_MODE_OFFSET)
-+#define PICO_OUTPUT_MODE(x) (x << PICO_OUTPUT_MODE_OFFSET)
-+
-+#define GET_PICO_COEFF_FRAC_BITS(x) ((x >> PICO_COEFF_FRAC_BITS_OFFSET)&((1 << PICO_COEFF_FRAC_BITS_SIZE)-1))
-+#define GET_PICO_OFFSET_FRAC_BITS(x) ((x >> PICO_OFFSET_FRAC_BITS_OFFSET)&((1 << PICO_OFFSET_FRAC_BITS_SIZE)-1))
-+#define GET_PICO_INPUT_MODE(x) ((x >> PICO_INPUT_MODE_OFFSET)&((1 << PICO_INPUT_MODE_SIZE)-1))
-+#define GET_PICO_OUTPUT_MODE(x) ((x >> PICO_OUTPUT_MODE_OFFSET)&((1 << PICO_OUTPUT_MODE_SIZE)-1))
-+
-+enum pico_input_mode { PICO_TRANSFORMATION_MODE,
-+                       PICO_HOR_FILTER_MODE,
-+                       PICO_VERT_FILTER_MODE };
-+
-+enum pico_output_mode { PICO_PACKED_MODE,
-+                        PICO_PLANAR_MODE };
-+
-+/* Bits in coefficients */
-+#define PICO_COEFF_BITS 12
-+
-+/* Operation bits */
-+#define PICO_MATRIX (0)
-+#define PICO_USE_ACC (1 << 2)
-+#define PICO_SINGLE_VECTOR (1 << 3)
-+
-+
-+#define __str(x...) #x
-+#define __xstr(x...) __str(x)
-+
-+#define PICO_PUT_W(pico_reg, x) \
-+  __builtin_mvrc_w(PICO_CPNO, pico_reg, x);
-+#define PICO_GET_W(pico_reg) \
-+  __builtin_mvcr_w(PICO_CPNO, pico_reg)
-+
-+#define PICO_MVCR_W(x, pico_reg) \
-+  asm ("mvcr.w\tcp" __xstr(PICO_CPNO) ", %0, cr" __xstr(pico_reg) : "=r"(x));
-+
-+#define PICO_MVRC_W(pico_reg, x) \
-+  asm  ("mvrc.w\tcp" __xstr(PICO_CPNO) ", cr" __xstr(pico_reg) ", %0" :: "r"(x));
-+
-+#define PICO_PUT_D(pico_reg, x) \
-+  __builtin_mvrc_d(PICO_CPNO, pico_reg, x);
-+#define PICO_GET_D(pico_reg) \
-+  __builtin_mvcr_d(PICO_CPNO, pico_reg)
-+
-+#define PICO_MVCR_D(x, pico_reg) \
-+  asm volatile ("mvcr.d\tcp" __xstr(PICO_CPNO) ", %0, cr" __xstr(pico_reg) : "=r"(x));
-+#define PICO_MVRC_D(pico_reg, x) \
-+  asm volatile ("mvrc.d\tcp" __xstr(PICO_CPNO) ", cr" __xstr(pico_reg) ", %0" :: "r"(x));
-+
-+#define PICO_STCM_W(ptr, pico_regs...) \
-+  asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+#define PICO_STCM_D(ptr, pico_regs...) \
-+  asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+
-+#define PICO_STCM_W_DEC(ptr, pico_regs...) \
-+  asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs)  : "+r"(ptr)); 
-+#define PICO_STCM_D_DEC(ptr, pico_regs...) \
-+  asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs)  : "+r"(ptr)); 
-+
-+#define PICO_LDCM_W(ptr, pico_regs...) \
-+  asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+#define PICO_LDCM_D(ptr, pico_regs...) \
-+  asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+
-+#define PICO_LDCM_W_INC(ptr, pico_regs...) \
-+  asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs)  : "+r"(ptr)); 
-+#define PICO_LDCM_D_INC(ptr, pico_regs...) \
-+  asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs)  : "+r"(ptr)); 
-+
-+#define PICO_OP(op, dst_addr, addr0, addr1, addr2) \
-+  __builtin_cop(PICO_CPNO, addr0, addr1, addr2, op | dst_addr);
-+
-+static inline void set_pico_config(struct pico_config_t *config){
-+  PICO_LDCM_D(config, 
-+              PICO_REGVECT_COEFF0_A, PICO_REGVECT_COEFF0_B, 
-+              PICO_REGVECT_COEFF1_A, PICO_REGVECT_COEFF1_B,
-+              PICO_REGVECT_COEFF2_A, PICO_REGVECT_COEFF2_B,
-+              PICO_REGVECT_VMU0_OUT, PICO_REGVECT_VMU1_OUT,
-+              PICO_REGVECT_VMU2_OUT, PICO_REGVECT_CONFIG);              
-+}
-+
-+static inline void get_pico_config(struct pico_config_t *config){
-+  PICO_STCM_D(config, 
-+              PICO_REGVECT_COEFF0_A, PICO_REGVECT_COEFF0_B, 
-+              PICO_REGVECT_COEFF1_A, PICO_REGVECT_COEFF1_B,
-+              PICO_REGVECT_COEFF2_A, PICO_REGVECT_COEFF2_B,
-+              PICO_REGVECT_VMU0_OUT, PICO_REGVECT_VMU1_OUT,
-+              PICO_REGVECT_VMU2_OUT, PICO_REGVECT_CONFIG);              
-+}
-+
-+static inline void dump_pico_config(){
-+  struct pico_config_t pico_config;
-+  char *input_mode, *output_mode;
-+  get_pico_config(&pico_config);
-+
-+  
-+  av_log(NULL, AV_LOG_INFO, "Dumping pico configuration:\n\n"); 
-+  av_log(NULL, AV_LOG_INFO, "\tcoeff_frac_bits = %d\n", pico_config.coeff_frac_bits); 
-+  av_log(NULL, AV_LOG_INFO, "\toffset_frac_bits = %d\n", pico_config.offset_frac_bits); 
-+
-+  switch ( pico_config.input_mode ){
-+  case PICO_TRANSFORMATION_MODE:
-+    input_mode = "Transformation Mode"; 
-+    break;
-+  case PICO_HOR_FILTER_MODE:
-+    input_mode = "Horisontal Filter Mode"; 
-+    break;
-+  case PICO_VERT_FILTER_MODE:
-+    input_mode = "Vertical Filter Mode"; 
-+    break;
-+  default:
-+    input_mode = "Unknown Mode!!"; 
-+    break;    
-+  }
-+  av_log(NULL, AV_LOG_INFO, "\tinput_mode = %s\n", input_mode); 
-+
-+  switch ( pico_config.output_mode ){
-+  case PICO_PLANAR_MODE:
-+    output_mode = "Planar Mode"; 
-+    break;
-+  case PICO_PACKED_MODE:
-+    output_mode = "Packed Mode"; 
-+    break;
-+  default:
-+    output_mode = "Unknown Mode!!"; 
-+    break;    
-+  }
-+
-+  av_log(NULL, AV_LOG_INFO, "\toutput_mode = %s\n", output_mode); 
-+
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff0_0 = %f\n", (float)pico_config.coeff0_0/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff0_1 = %f\n", (float)pico_config.coeff0_1/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff0_2 = %f\n", (float)pico_config.coeff0_2/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff0_3 = %f\n", (float)pico_config.coeff0_3/(float)(1 << pico_config.offset_frac_bits)); 
-+                                   
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff1_0 = %f\n", (float)pico_config.coeff1_0/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff1_1 = %f\n", (float)pico_config.coeff1_1/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff1_2 = %f\n", (float)pico_config.coeff1_2/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff1_3 = %f\n", (float)pico_config.coeff1_3/(float)(1 << pico_config.offset_frac_bits)); 
-+                                   
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff2_0 = %f\n", (float)pico_config.coeff2_0/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff2_1 = %f\n", (float)pico_config.coeff2_1/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff2_2 = %f\n", (float)pico_config.coeff2_2/(float)(1 << pico_config.coeff_frac_bits)); 
-+  av_log(NULL, AV_LOG_INFO, "\tCoeff2_3 = %f\n", (float)pico_config.coeff2_3/(float)(1 << pico_config.offset_frac_bits)); 
-+}
-+
-+
-+
-+#endif
-+
---- a/libavcodec/bitstream.h
-+++ b/libavcodec/bitstream.h
-@@ -178,7 +178,7 @@ typedef struct RL_VLC_ELEM {
- #endif
- 
- /* used to avoid misaligned exceptions on some archs (alpha, ...) */
--#if defined(ARCH_X86)
-+#if defined(ARCH_X86) || defined(ARCH_AVR32)
- #    define unaligned16(a) (*(const uint16_t*)(a))
- #    define unaligned32(a) (*(const uint32_t*)(a))
- #    define unaligned64(a) (*(const uint64_t*)(a))
-@@ -810,6 +810,44 @@ void free_vlc(VLC *vlc);
-  * if the vlc code is invalid and max_depth>1 than the number of bits removed
-  * is undefined
-  */
-+
-+#if defined(ARCH_AVR32)
-+#define GET_VLC(code, name, gb, table, bits, max_depth)\
-+{\
-+    int n, index, nb_bits;\
-+    union { VLC_TYPE vlc[2];\
-+            uint32_t u32; } table_elem;\
-+\
-+    index= SHOW_UBITS(name, gb, bits);\
-+    table_elem.u32 = unaligned32(&table[index]); \
-+    code = table_elem.vlc[0];\
-+    n    = table_elem.vlc[1];\
-+\
-+    if(max_depth > 1 && n < 0 ){\
-+        LAST_SKIP_BITS(name, gb, bits)\
-+        UPDATE_CACHE(name, gb)\
-+\
-+        nb_bits = -n;\
-+\
-+        index= SHOW_UBITS(name, gb, nb_bits) + code;\
-+        table_elem.u32 = unaligned32(&table[index]); \
-+        code = table_elem.vlc[0];\
-+        n    = table_elem.vlc[1];\
-+        if(max_depth > 2 && n < 0){\
-+            LAST_SKIP_BITS(name, gb, nb_bits)\
-+            UPDATE_CACHE(name, gb)\
-+\
-+            nb_bits = -n;\
-+\
-+            index= SHOW_UBITS(name, gb, nb_bits) + code;\
-+            code = table[index][0];\
-+            n    = table[index][1];\
-+        }\
-+    }\
-+    SKIP_BITS(name, gb, n)\
-+}
-+
-+#else
- #define GET_VLC(code, name, gb, table, bits, max_depth)\
- {\
-     int n, index, nb_bits;\
-@@ -818,7 +856,7 @@ void free_vlc(VLC *vlc);
-     code = table[index][0];\
-     n    = table[index][1];\
- \
--    if(max_depth > 1 && n < 0){\
-+    if(max_depth > 1 && n < 0 ){\
-         LAST_SKIP_BITS(name, gb, bits)\
-         UPDATE_CACHE(name, gb)\
- \
-@@ -840,7 +878,38 @@ void free_vlc(VLC *vlc);
-     }\
-     SKIP_BITS(name, gb, n)\
- }
-+#endif
- 
-+#if defined(ARCH_AVR32)
-+#define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\
-+{\
-+    int n, index, nb_bits;\
-+    union { RL_VLC_ELEM vlc;\
-+            uint32_t u32; } table_elem;\
-+\
-+    index= SHOW_UBITS(name, gb, bits);\
-+    table_elem.u32 = unaligned32(&table[index]); \
-+    level = table_elem.vlc.level;\
-+    n     = table_elem.vlc.len;\
-+\
-+    if(max_depth > 1 && n < 0 ){\
-+        SKIP_BITS(name, gb, bits)\
-+        if(need_update){\
-+            UPDATE_CACHE(name, gb)\
-+        }\
-+\
-+        nb_bits = -n;\
-+\
-+        index= SHOW_UBITS(name, gb, nb_bits) + level;\
-+        table_elem.u32 = unaligned32(&table[index]); \
-+        level = table_elem.vlc.level;\
-+        n     = table_elem.vlc.len;\
-+    }\
-+    run= table_elem.vlc.run;\
-+    SKIP_BITS(name, gb, n)\
-+}
-+
-+#else
- #define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\
- {\
-     int n, index, nb_bits;\
-@@ -849,7 +918,7 @@ void free_vlc(VLC *vlc);
-     level = table[index].level;\
-     n     = table[index].len;\
- \
--    if(max_depth > 1 && n < 0){\
-+    if(max_depth > 1 && n < 0 ){\
-         SKIP_BITS(name, gb, bits)\
-         if(need_update){\
-             UPDATE_CACHE(name, gb)\
-@@ -864,7 +933,7 @@ void free_vlc(VLC *vlc);
-     run= table[index].run;\
-     SKIP_BITS(name, gb, n)\
- }
--
-+#endif
- 
- /**
-  * parses a vlc code, faster then get_vlc()
---- a/libavcodec/dsputil.c
-+++ b/libavcodec/dsputil.c
-@@ -4155,6 +4155,7 @@ void dsputil_init(DSPContext* c, AVCodec
- 
-     if (ENABLE_MMX)      dsputil_init_mmx   (c, avctx);
-     if (ENABLE_ARMV4L)   dsputil_init_armv4l(c, avctx);
-+    if (ENABLE_AVR32)    dsputil_init_avr32 (c, avctx);
-     if (ENABLE_MLIB)     dsputil_init_mlib  (c, avctx);
-     if (ENABLE_VIS)      dsputil_init_vis   (c, avctx);
-     if (ENABLE_ALPHA)    dsputil_init_alpha (c, avctx);
---- a/libavcodec/h264.c
-+++ b/libavcodec/h264.c
-@@ -2043,7 +2043,12 @@ static void free_tables(H264Context *h){
- 
- static void init_dequant8_coeff_table(H264Context *h){
-     int i,q,x;
-+#ifdef ARCH_AVR32
-+    const int transpose = 0;
-+#else
-     const int transpose = (h->s.dsp.h264_idct8_add != ff_h264_idct8_add_c); //FIXME ugly
-+#endif
-+
-     h->dequant8_coeff[0] = h->dequant8_buffer[0];
-     h->dequant8_coeff[1] = h->dequant8_buffer[1];
- 
-@@ -2066,7 +2071,13 @@ static void init_dequant8_coeff_table(H2
- 
- static void init_dequant4_coeff_table(H264Context *h){
-     int i,j,q,x;
-+    // Yes this is ugly as hell....
-+#ifdef ARCH_AVR32
-+    const int transpose = 0;
-+#else
-     const int transpose = (h->s.dsp.h264_idct_add != ff_h264_idct_add_c); //FIXME ugly
-+#endif
-+
-     for(i=0; i<6; i++ ){
-         h->dequant4_coeff[i] = h->dequant4_buffer[i];
-         for(j=0; j<i; j++){
-@@ -3710,7 +3721,11 @@ static int init_poc(H264Context *h){
- static void init_scan_tables(H264Context *h){
-     MpegEncContext * const s = &h->s;
-     int i;
-+#ifdef ARCH_AVR32
-+    if(1){
-+#else
-     if(s->dsp.h264_idct_add == ff_h264_idct_add_c){ //FIXME little ugly
-+#endif
-         memcpy(h->zigzag_scan, zigzag_scan, 16*sizeof(uint8_t));
-         memcpy(h-> field_scan,  field_scan, 16*sizeof(uint8_t));
-     }else{
---- a/libavutil/common.h
-+++ b/libavutil/common.h
-@@ -174,23 +174,39 @@ static inline int mid_pred(int a, int b,
-  * @param amax maximum value of the clip range
-  * @return clipped value
-  */
-+#if defined(ARCH_AVR32)
-+#define av_clip(a, amin, amax) \
-+  ({ int __tmp__; \
-+     asm ("min\t%0, %1, %2\n" \
-+          "max\t%0, %0, %3\n" \
-+          : "=&r"(__tmp__) : "r"(a), "r"(amax), "r"(amin)); \
-+     __tmp__; })
-+#else
- static inline int av_clip(int a, int amin, int amax)
- {
-     if (a < amin)      return amin;
-     else if (a > amax) return amax;
-     else               return a;
- }
-+#endif
- 
- /**
-  * clip a signed integer value into the 0-255 range
-  * @param a value to clip
-  * @return clipped value
-  */
-+#if defined(ARCH_AVR32)
-+#define av_clip_uint8(a) \
-+  ({ int __tmp__ = a; \
-+     asm ("satu\t%0 >> 0, 8" : "+r"(__tmp__)); \
-+     __tmp__; })
-+#else
- static inline uint8_t av_clip_uint8(int a)
- {
-     if (a&(~255)) return (-a)>>31;
-     else          return a;
- }
-+#endif
- 
- /**
-  * clip a signed integer value into the -32768,32767 range
---- a/libfaad2/common.h
-+++ b/libfaad2/common.h
-@@ -69,7 +69,7 @@ extern "C" {
- /* Use if target platform has address generators with autoincrement */
- //#define PREFER_POINTERS
- 
--#if defined(_WIN32_WCE) || defined(__arm__)
-+#if defined(_WIN32_WCE) || defined(__arm__) || defined(__avr32__)
- #define FIXED_POINT
- #endif
- 
---- a/libmpcodecs/ad_libmad.c
-+++ b/libmpcodecs/ad_libmad.c
-@@ -86,6 +86,11 @@ static int init(sh_audio_t *sh){
-   sh->channels=(this->frame.header.mode == MAD_MODE_SINGLE_CHANNEL) ? 1 : 2;
-   sh->samplerate=this->frame.header.samplerate;
-   sh->i_bps=this->frame.header.bitrate/8;
-+#ifdef WORDS_BIGENDIAN
-+  sh->sample_format = AF_FORMAT_S16_BE;
-+#else
-+  sh->sample_format = AF_FORMAT_S16_LE;
-+#endif
-   sh->samplesize=2;
-   
-   return 1;
---- /dev/null
-+++ b/libswscale/pico-avr32.h
-@@ -0,0 +1,137 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+#ifndef __PICO_H__
-+#define __PICO_H__
-+
-+/* Coprocessor Number */
-+#define PICO_CPNO  1
-+
-+/* Pixel Coprocessor Register file */
-+#define PICO_REGVECT_INPIX2  cr0
-+#define PICO_REGVECT_INPIX1  cr1
-+#define PICO_REGVECT_INPIX0  cr2
-+#define PICO_REGVECT_OUTPIX2 cr3
-+#define PICO_REGVECT_OUTPIX1 cr4
-+#define PICO_REGVECT_OUTPIX0 cr5
-+#define PICO_REGVECT_COEFF0_A cr6
-+#define PICO_REGVECT_COEFF0_B cr7
-+#define PICO_REGVECT_COEFF1_A cr8
-+#define PICO_REGVECT_COEFF1_B cr9
-+#define PICO_REGVECT_COEFF2_A cr10
-+#define PICO_REGVECT_COEFF2_B cr11
-+#define PICO_REGVECT_VMU0_OUT cr12
-+#define PICO_REGVECT_VMU1_OUT cr13
-+#define PICO_REGVECT_VMU2_OUT cr14
-+#define PICO_REGVECT_CONFIG   cr15
-+
-+#define PICO_INPIX2  0
-+#define PICO_INPIX1  1
-+#define PICO_INPIX0  2
-+#define PICO_OUTPIX2 3
-+#define PICO_OUTPIX1 4
-+#define PICO_OUTPIX0 5
-+#define PICO_COEFF0_A 6
-+#define PICO_COEFF0_B 7
-+#define PICO_COEFF1_A 8
-+#define PICO_COEFF1_B 9
-+#define PICO_COEFF2_A 10
-+#define PICO_COEFF2_B 11
-+#define PICO_VMU0_OUT 12
-+#define PICO_VMU1_OUT 13
-+#define PICO_VMU2_OUT 14
-+#define PICO_CONFIG   15
-+
-+/* Config Register */
-+#define PICO_COEFF_FRAC_BITS  0
-+#define PICO_COEFF_FRAC_BITS_WIDTH  4
-+#define PICO_OFFSET_FRAC_BITS  4
-+#define PICO_OFFSET_FRAC_BITS_WIDTH  4
-+#define PICO_INPUT_MODE  8
-+#define PICO_INPUT_MODE_WIDTH  2
-+#define PICO_OUTPUT_MODE 10
-+
-+#define PICO_TRANSFORMATION_MODE 0 
-+#define PICO_HOR_FILTER_MODE 1 
-+#define PICO_VERT_FILTER_MODE 2 
-+
-+#define PICO_PLANAR_MODE 1
-+#define PICO_PACKED_MODE 0
-+
-+/* Bits in coefficients */
-+#define PICO_COEFF_BITS 12
-+
-+/* Operation bits */
-+#define PICO_USE_ACC (1 << 2)
-+#define PICO_SINGLE_VECTOR (1 << 3)
-+
-+
-+#define __str(x...) #x
-+#define __xstr(x...) __str(x)
-+
-+#define PICO_PUT_W(pico_reg, x) \
-+  __builtin_mvrc_w(PICO_CPNO, pico_reg, x);
-+#define PICO_GET_W(pico_reg) \
-+  __builtin_mvcr_w(PICO_CPNO, pico_reg)
-+
-+#define PICO_PUT_D(pico_reg, x) \
-+  __builtin_mvrc_d(PICO_CPNO, pico_reg, x);
-+#define PICO_GET_D(pico_reg) \
-+  __builtin_mvcr_d(PICO_CPNO, pico_reg)
-+
-+
-+#define PICO_STCM_W(ptr, pico_regs...) \
-+  asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+#define PICO_STCM_D(ptr, pico_regs...) \
-+  asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+
-+#define PICO_STCM_W_DEC(ptr, pico_regs...) \
-+  asm volatile ("stcm.w\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs)  : "+r"(ptr)); 
-+#define PICO_STCM_D_DEC(ptr, pico_regs...) \
-+  asm volatile ("stcm.d\tcp" __xstr(PICO_CPNO) ", --%0," __xstr(pico_regs)  : "+r"(ptr)); 
-+
-+#define PICO_LDCM_W(ptr, pico_regs...) \
-+  asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+#define PICO_LDCM_D(ptr, pico_regs...) \
-+  asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0," __xstr(pico_regs)  :: "r"(ptr)); 
-+
-+#define PICO_LDCM_W_INC(ptr, pico_regs...) \
-+  asm volatile ("ldcm.w\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs)  : "+r"(ptr)); 
-+#define PICO_LDCM_D_INC(ptr, pico_regs...) \
-+  asm volatile ("ldcm.d\tcp" __xstr(PICO_CPNO) ", %0++," __xstr(pico_regs)  : "+r"(ptr)); 
-+
-+#define PICO_OP(op, dst_addr, addr0, addr1, addr2) \
-+  __builtin_cop(PICO_CPNO, addr0, addr1, addr2, op | dst_addr);
-+
-+
-+#endif
-+
---- a/libswscale/swscale_internal.h
-+++ b/libswscale/swscale_internal.h
-@@ -181,7 +181,7 @@ typedef struct SwsContext{
- SwsFunc yuv2rgb_get_func_ptr (SwsContext *c);
- int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation);
- 
--char *sws_format_name(int format);
-+char *sws_format_name(enum PixelFormat format);
- 
- //FIXME replace this with something faster
- #define isPlanarYUV(x)  (           \
---- a/libswscale/yuv2rgb.c
-+++ b/libswscale/yuv2rgb.c
-@@ -47,6 +47,10 @@
- #include "yuv2rgb_mlib.c"
- #endif
- 
-+#ifdef ARCH_AVR32
-+#include "yuv2rgb_avr32.c"
-+#endif
-+
- #define DITHER1XBPP // only for mmx
- 
- const uint8_t  __attribute__((aligned(8))) dither_2x2_4[2][8]={
-@@ -646,6 +650,12 @@ SwsFunc yuv2rgb_get_func_ptr (SwsContext
-         if (t) return t;
-     }
- #endif
-+#ifdef ARCH_AVR32
-+    {
-+      SwsFunc t= yuv2rgb_init_avr32(c);
-+      if(t) return t;
-+    }
-+#endif
- #ifdef HAVE_ALTIVEC
-     if (c->flags & SWS_CPU_CAPS_ALTIVEC)
-     {
-@@ -736,6 +746,10 @@ int yuv2rgb_c_init_tables (SwsContext *c
- //printf("%lld %lld %lld %lld %lld\n", cy, crv, cbu, cgu, cgv);
-     oy -= 256*brightness;
- 
-+#ifdef ARCH_AVR32
-+    yuv2rgb_c_init_tables_avr32 (c, inv_table, fullRange, brightness, contrast, saturation);
-+#endif
-+
-     for (i = 0; i < 1024; i++) {
-         int j;
- 
---- /dev/null
-+++ b/libswscale/yuv2rgb_avr32.c
-@@ -0,0 +1,411 @@
-+/*
-+ * Copyright (c) 2007 Atmel Corporation. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above
-+ * copyright notice, this list of conditions and the following
-+ * disclaimer in the documentation and/or other materials provided
-+ * with the distribution.
-+ *
-+ * 3. The name of ATMEL may not be used to endorse or promote products
-+ * derived from this software without specific prior written
-+ * permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL
-+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-+ * DAMAGE.
-+ */
-+#include "pico-avr32.h"
-+#include "log.h"
-+
-+#define RGB(uv_part)  \
-+      __asm__ volatile (        \
-+                        "ld.w\t%0, %3[%7:" uv_part " << 2]\n\t" /* tmp = c->table_gV[V] */ \
-+                        "ld.w\t%1, %4[%8:" uv_part "  << 2]\n\t" /* g = c->table_gU[U] */  \
-+                        "ld.w\t%2, %5[%8:" uv_part "  << 2]\n\t" /* b = c->table_bU[U] */  \
-+                        "add\t%1, %0\n\t" /* g += tmp */\
-+                        "ld.w\t%0, %6[%7:" uv_part "  << 2]" /* r = c->table_rV[V] */ \
-+                        : "=&r" (r), "=&r" (g), "=&r" (b) \
-+                        : "r" (&c->table_gV[0]), "r" (&c->table_gU[0]),"r" (&c->table_bU[0]), \
-+                        "r" (&c->table_rV[0]), "r" (V), "r" (U));
-+
-+#undef YUV2RGB1
-+#define YUV2RGB1(dst, src, y, idx) \
-+  { int tmp2;    __asm__ volatile (      \
-+                        "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 0], %1\n\t"         /* dst_1[2] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 1], %2\n\t"         /* dst_1[1] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "st.b\t%7[6*%8 + 2], %1\n\t"         /* dst_1[0] = tmp; */   \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 3], %1\n\t"         /* dst_1[5] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 4], %2\n\t"         /* dst_1[4] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 5], %1"         /* dst_1[3] = tmp; */   \
-+                        : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
-+                        : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
-+
-+#undef YUV2RGB2
-+#define YUV2RGB2(dst, src, y, idx) \
-+  { int tmp2;    __asm__ volatile (      \
-+                        "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 0], %1\n\t"         /* dst_1[2] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 1], %2\n\t"         /* dst_1[1] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "st.b\t%7[6*%8 + 2], %1\n\t"         /* dst_1[0] = tmp; */   \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 3], %1\n\t"         /* dst_1[5] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 4], %2\n\t"         /* dst_1[4] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 5], %1"         /* dst_1[3] = tmp; */   \
-+                        : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
-+                        : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
-+
-+
-+#undef YUV2BGR1
-+#define YUV2BGR1(dst, src, y, idx) \
-+  { int tmp2;    __asm__ volatile (      \
-+                        "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 2], %1\n\t"         /* dst_1[2] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 1], %2\n\t"         /* dst_1[1] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "st.b\t%7[6*%8 + 0], %1\n\t"         /* dst_1[0] = tmp; */   \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 5], %1\n\t"         /* dst_1[5] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 4], %2\n\t"         /* dst_1[4] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 3], %1"         /* dst_1[3] = tmp; */   \
-+                        : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
-+                        : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
-+
-+#undef YUV2BGR2
-+#define YUV2BGR2(dst, src, y, idx) \
-+  { int tmp2;    __asm__ volatile (      \
-+                        "ld.ub\t%0, %3[2*%8]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 24) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 2], %1\n\t"         /* dst_1[2] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 1], %2\n\t"         /* dst_1[1] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 24) & 0xFF] */ \
-+                        "ld.ub\t%0, %3[2*%8 + 1]\n\t" /* Y = ((uint32_t*)py_1)[0] */ \
-+                        "st.b\t%7[6*%8 + 0], %1\n\t"         /* dst_1[0] = tmp; */   \
-+                        "ld.ub\t%1, %4[%0]\n\t" /* tmp = r[(Y >> 16) & 0xFF] */ \
-+                        "ld.ub\t%2, %5[%0]\n\t" /* tmp = g[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 5], %1\n\t"         /* dst_1[5] = tmp; */   \
-+                        "ld.ub\t%1, %6[%0]\n\t" /* tmp = b[(Y >> 16) & 0xFF] */ \
-+                        "st.b\t%7[6*%8 + 4], %2\n\t"         /* dst_1[4] = tmp; */   \
-+                        "st.b\t%7[6*%8 + 3], %1"         /* dst_1[3] = tmp; */   \
-+                        : "=&r" (y), "=&r" (tmp), "=&r" (tmp2) \
-+                        : "r" (src), "r" (r), "r" (g), "r" (b), "r" (dst), "i" (idx)); }
-+
-+int yuv2bgr24_avr32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
-+                    int srcSliceH, uint8_t* dst[], int dstStride[]){
-+  int y;
-+
-+  if(c->srcFormat == PIX_FMT_YUV422P){
-+    srcStride[1] *= 2;
-+    srcStride[2] *= 2;
-+  }
-+
-+
-+  for(y=0; y<srcSliceH; y+=2){
-+    uint8_t *dst_1= (uint8_t*)(dst[0] + (y+srcSliceY  )*dstStride[0]);
-+    uint8_t *dst_2= (uint8_t*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);
-+    uint32_t *r, *g, *b;
-+    uint8_t *py_1= src[0] + y*srcStride[0];
-+    uint8_t *py_2= py_1 + srcStride[0];
-+    uint8_t *pu= src[1] + (y>>1)*srcStride[1];
-+    uint8_t *pv= src[2] + (y>>1)*srcStride[2];
-+    unsigned int h_size= c->dstW>>3;
-+    while (h_size--) {
-+      uint32_t U, V, Y1, Y2, tmp;
-+      U = ((uint32_t*)pu)[0];
-+      V = ((uint32_t*)pv)[0];
-+
-+      RGB("t")
-+        YUV2BGR1(dst_1, py_1, Y1, 0)
-+        YUV2BGR1(dst_2, py_2, Y2, 0)
-+
-+      RGB("u")
-+        YUV2BGR2(dst_1, py_1, Y1, 1)
-+        YUV2BGR2(dst_2, py_2, Y2, 1)
-+
-+      RGB("l")
-+        YUV2BGR1(dst_1, py_1, Y1, 2)
-+        YUV2BGR1(dst_2, py_2, Y2, 2)
-+
-+      RGB("b")
-+        YUV2BGR2(dst_1, py_1, Y1, 3)
-+        YUV2BGR2(dst_2, py_2, Y2, 3)
-+
-+      pu += 4;
-+      pv += 4;
-+      py_1 += 8;
-+      py_2 += 8;
-+      dst_1 += 24;
-+      dst_2 += 24;
-+    }
-+  }
-+  return srcSliceH;
-+}
-+
-+
-+
-+static int yuv2rgb24_avr32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
-+                             int srcSliceH, uint8_t* dst[], int dstStride[]){
-+  int y;
-+
-+  if(c->srcFormat == PIX_FMT_YUV422P){
-+    srcStride[1] *= 2;
-+    srcStride[2] *= 2;
-+  }
-+  for(y=0; y<srcSliceH; y+=2){
-+    uint8_t *dst_1= (uint8_t*)(dst[0] + (y+srcSliceY  )*dstStride[0]);
-+    uint8_t *dst_2= (uint8_t*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);
-+    uint8_t *r, *g, *b;
-+    uint8_t *py_1= src[0] + y*srcStride[0];
-+    uint8_t *py_2= py_1 + srcStride[0];
-+    uint8_t *pu= src[1] + (y>>1)*srcStride[1];
-+    uint8_t *pv= src[2] + (y>>1)*srcStride[2];
-+    unsigned int h_size= c->dstW>>3;
-+    while (h_size--) {
-+      uint32_t U, V, Y1, Y2, tmp;
-+      U = ((uint32_t*)pu)[0];
-+      V = ((uint32_t*)pv)[0];
-+
-+      RGB("t")
-+        YUV2RGB1(dst_1, py_1, Y1, 0)
-+        YUV2RGB1(dst_2, py_2, Y2, 0)
-+
-+      RGB("u")
-+        YUV2RGB2(dst_1, py_1, Y1, 1)
-+        YUV2RGB2(dst_2, py_2, Y2, 1)
-+
-+      RGB("l")
-+        YUV2RGB1(dst_1, py_1, Y1, 2)
-+        YUV2RGB1(dst_2, py_2, Y2, 2)
-+
-+      RGB("b")
-+        YUV2RGB2(dst_1, py_1, Y1, 3)
-+        YUV2RGB2(dst_2, py_2, Y2, 3)
-+
-+      pu += 4;
-+      pv += 4;
-+      py_1 += 8;
-+      py_2 += 8;
-+      dst_1 += 24;
-+      dst_2 += 24;
-+    }
-+  }
-+  return srcSliceH;
-+}
-+
-+#define SCALE(x, bits) (((x) + ( 1 << (bits - 1))) >> bits)
-+#define COEFF_FRAC_BITS  9
-+#define OFFSET_FRAC_BITS  2
-+
-+/* Coefficients used in the pico */
-+static struct {
-+  short coeff2_2;
-+  short coeff2_3;
-+  short coeff2_0;
-+  short coeff2_1;
-+  short coeff1_2;
-+  short coeff1_3;
-+  short coeff1_0;
-+  short coeff1_1;
-+  short coeff0_2;
-+  short coeff0_3;
-+  short coeff0_0;
-+  short coeff0_1;
-+} pico_coeff;
-+
-+
-+static int yuv2bgr24_avr32_pico(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
-+                                int srcSliceH, uint8_t* dst[], int dstStride[]){
-+  int y;
-+  static int first_time = 1;
-+
-+  /* Initialize pico */
-+  PICO_LDCM_D(&pico_coeff,
-+              PICO_REGVECT_COEFF0_A, PICO_REGVECT_COEFF0_B,
-+              PICO_REGVECT_COEFF1_A, PICO_REGVECT_COEFF1_B,
-+              PICO_REGVECT_COEFF2_A, PICO_REGVECT_COEFF2_B);
-+
-+  PICO_PUT_W(PICO_CONFIG,
-+             (PICO_PACKED_MODE << PICO_OUTPUT_MODE
-+              | PICO_TRANSFORMATION_MODE << PICO_INPUT_MODE
-+              | OFFSET_FRAC_BITS << PICO_OFFSET_FRAC_BITS
-+              | COEFF_FRAC_BITS << PICO_COEFF_FRAC_BITS));
-+
-+
-+  if(c->srcFormat == PIX_FMT_YUV422P){
-+    srcStride[1] *= 2;
-+    srcStride[2] *= 2;
-+  }
-+
-+  for(y=0; y<srcSliceH; y+=2){
-+    uint8_t *dst_1= (uint8_t*)(dst[0] + (y+srcSliceY  )*dstStride[0]);
-+    uint8_t *dst_2= (uint8_t*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);
-+    uint8_t *r, *g, *b;
-+    uint8_t *py_1= src[0] + y*srcStride[0];
-+    uint8_t *py_2= py_1 + srcStride[0];
-+    uint8_t *pu= src[1] + (y>>1)*srcStride[1];
-+    uint8_t *pv= src[2] + (y>>1)*srcStride[2];
-+    unsigned int h_size= c->dstW>>3;
-+    int *py_1_int = (int *)py_1;
-+    int *py_2_int = (int *)py_2;
-+    int *pu_int = (int *)pu;
-+    int *pv_int = (int *)pv;
-+    while (h_size--) {
-+      PICO_PUT_W(PICO_INPIX0, *py_1_int++);
-+      PICO_PUT_W(PICO_INPIX1, *pu_int++);
-+      PICO_PUT_W(PICO_INPIX2, *pv_int++);
-+      PICO_OP(0, 0, 0, 4, 8);
-+      PICO_OP(0, 1, 1, 4, 8);
-+      PICO_OP(0, 2, 2, 5, 9);
-+      PICO_OP(0, 3, 3, 5, 9);
-+      PICO_PUT_W(PICO_INPIX0, *py_1_int++);
-+      PICO_STCM_W(dst_1, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
-+      PICO_OP(0, 0, 0, 6, 10);
-+      PICO_OP(0, 1, 1, 6, 10);
-+      PICO_OP(0, 2, 2, 7, 11);
-+      PICO_OP(0, 3, 3, 7, 11);
-+      PICO_PUT_W(PICO_INPIX0, *py_2_int++);
-+      PICO_STCM_W(dst_1 + 12, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
-+
-+      PICO_OP(0, 0, 0, 4, 8);
-+      PICO_OP(0, 1, 1, 4, 8);
-+      PICO_OP(0, 2, 2, 5, 9);
-+      PICO_OP(0, 3, 3, 5, 9);
-+      PICO_PUT_W(PICO_INPIX0, *py_2_int++);
-+      PICO_STCM_W(dst_2, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
-+      PICO_OP(0, 0, 0, 6, 10);
-+      PICO_OP(0, 1, 1, 6, 10);
-+      PICO_OP(0, 2, 2, 7, 11);
-+      PICO_OP(0, 3, 3, 7, 11);
-+      PICO_STCM_W(dst_2 + 12, PICO_REGVECT_OUTPIX2, PICO_REGVECT_OUTPIX1, PICO_REGVECT_OUTPIX0);
-+
-+      dst_1 += 24;
-+      dst_2 += 24;
-+    }
-+  }
-+  return srcSliceH;
-+}
-+
-+extern int avr32_use_pico;
-+
-+SwsFunc yuv2rgb_init_avr32 (SwsContext *c){
-+  switch(c->dstFormat){
-+  case PIX_FMT_BGR24:
-+    {
-+      if ( avr32_use_pico ){
-+        av_log(c, AV_LOG_INFO, "AVR32 BGR24: Using PICO for color space conversion\n");
-+        return yuv2bgr24_avr32_pico;
-+      } else {
-+        av_log(c, AV_LOG_INFO, "AVR32 BGR24: Using optimized color space conversion\n");
-+        return yuv2bgr24_avr32;
-+      }
-+    }
-+    break;
-+  case PIX_FMT_RGB24:
-+    {
-+      if ( avr32_use_pico ){
-+        av_log(c, AV_LOG_INFO, "AVR32 RGB24: Using PICO for color space conversion\n");
-+        return yuv2bgr24_avr32_pico;
-+      } else {
-+        av_log(c, AV_LOG_INFO, "AVR32 RGB24: Using optimized color space conversion\n");
-+        return yuv2rgb24_avr32;
-+      }
-+    }
-+  }
-+  return NULL;
-+}
-+
-+
-+int yuv2rgb_c_init_tables_avr32 (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation){
-+  const int isRgb = (c->dstFormat == PIX_FMT_RGB24);
-+
-+  int64_t crv =  inv_table[0];
-+  int64_t cbu =  inv_table[1];
-+  int64_t cgu = -inv_table[2];
-+  int64_t cgv = -inv_table[3];
-+  int64_t cy  = 1<<16;
-+  int64_t oy  = 0;
-+
-+  if(!fullRange){
-+    cy= (cy*255) / 219;
-+    oy= 16<<16;
-+  }
-+
-+  cy = (cy *contrast             )>>16;
-+  crv= (crv*contrast * saturation)>>32;
-+  cbu= (cbu*contrast * saturation)>>32;
-+  cgu= (cgu*contrast * saturation)>>32;
-+  cgv= (cgv*contrast * saturation)>>32;
-+
-+  oy -= 256*brightness;
-+
-+  pico_coeff.coeff1_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* G <- Y */
-+  pico_coeff.coeff1_1 = SCALE(cgu, 16 - COEFF_FRAC_BITS); /* G <- U */
-+  pico_coeff.coeff1_2 = SCALE(cgv, 16 - COEFF_FRAC_BITS); /* G <- V */
-+  pico_coeff.coeff1_3 = (SCALE(-128*cgu - 128*cgv - 16*cy, 16 - OFFSET_FRAC_BITS)
-+                         + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* G offset */
-+
-+  if ( isRgb ){
-+    pico_coeff.coeff0_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* R <- Y */
-+    pico_coeff.coeff0_1 = 0; /* R <- U */
-+    pico_coeff.coeff0_2 = SCALE(crv, 16 - COEFF_FRAC_BITS); /* R <- V */
-+    pico_coeff.coeff0_3 = (SCALE(-128*crv - 16*cy, 16 - OFFSET_FRAC_BITS)
-+                           + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* R offset */
-+
-+    pico_coeff.coeff2_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* B <- Y */
-+    pico_coeff.coeff2_1 = SCALE(cbu, 16 - COEFF_FRAC_BITS); /* B <- U */
-+    pico_coeff.coeff2_2 = 0; /* B <- V */
-+    pico_coeff.coeff2_3 = (SCALE(-128*cbu - 16*cy, 16 - OFFSET_FRAC_BITS)
-+                           + /*0.5*/(1 << (OFFSET_FRAC_BITS-1)));/* B offset */
-+  } else {
-+    pico_coeff.coeff2_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* R <- Y */
-+    pico_coeff.coeff2_1 = 0; /* R <- U */
-+    pico_coeff.coeff2_2 = SCALE(crv, 16 - COEFF_FRAC_BITS); /* R <- V */
-+    pico_coeff.coeff2_3 = (SCALE(-128*crv - 16*cy, 16 - OFFSET_FRAC_BITS)
-+                           + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* R offset */
-+
-+    pico_coeff.coeff0_0 = SCALE(cy, 16 - COEFF_FRAC_BITS); /* B <- Y */
-+    pico_coeff.coeff0_1 = SCALE(cbu, 16 - COEFF_FRAC_BITS); /* B <- U */
-+    pico_coeff.coeff0_2 = 0; /* B <- V */
-+    pico_coeff.coeff0_3 = (SCALE(-128*cbu - 16*cy, 16 - OFFSET_FRAC_BITS)
-+                           + /*0.5*/(1 << (OFFSET_FRAC_BITS-1))); /* B offset */
-+  }
-+
-+}
-+
-+
-+#undef RGB
---- a/libvo/vo_fbdev2.c
-+++ b/libvo/vo_fbdev2.c
-@@ -22,6 +22,9 @@
- #include "sub.h"
- #include "mp_msg.h"
- 
-+/* Draw directly to framebuffer */
-+#define USE_CONVERT2FB
-+
- static vo_info_t info = {
- 	"Framebuffer Device",
- 	"fbdev2",
-@@ -178,6 +181,15 @@ static int fb_preinit(int reset)
- 	}
- 	fb_orig_vinfo = fb_vinfo;
- 
-+	/* Reset panning offset */
-+	fb_vinfo.yoffset = 0;
-+	if (ioctl(fb_dev_fd, FBIOPAN_DISPLAY, &fb_vinfo)) {
-+		mp_msg(MSGT_VO, MSGL_ERR,
-+		       "[fbdev2] FBIOPAN_DISPLAY failed: %s\n",
-+		       strerror(errno));
-+		return 0;
-+	}
-+
- 	fb_bpp = fb_vinfo.bits_per_pixel;
- 
- 	/* 16 and 15 bpp is reported as 16 bpp */
-@@ -289,6 +301,10 @@ static int config(uint32_t width, uint32
- 		mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't malloc next_frame: %s\n", strerror(errno));
- 		return 1;
- 	}
-+#else
-+	if ((fb_line_len * fb_vinfo.yres) <= (fb_finfo.smem_len / 2)
-+	    && fb_vinfo.yoffset == 0)
-+		center += fb_line_len * fb_vinfo.yres;
- #endif
- 	if (fs) memset(frame_buffer, '\0', fb_line_len * fb_vinfo.yres);
- 
-@@ -299,14 +315,22 @@ static int query_format(uint32_t format)
- {
- 	// open the device, etc.
- 	if (fb_preinit(0)) return 0;
--	if ((format & IMGFMT_BGR_MASK) == IMGFMT_BGR) {
-+	if ((format & IMGFMT_RGB_MASK) == IMGFMT_RGB) {
- 		int fb_target_bpp = format & 0xff;
- 		set_bpp(&fb_vinfo, fb_target_bpp);
- 		fb_vinfo.xres_virtual = fb_vinfo.xres;
--		fb_vinfo.yres_virtual = fb_vinfo.yres;
-+		fb_vinfo.yres_virtual = fb_vinfo.yres * 2;
- 		if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_vinfo)) {
--			mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't put VSCREENINFO: %s\n", strerror(errno));
--			return 0;
-+			mp_msg(MSGT_VO, MSGL_WARN,
-+			       "[fbdev2] Can't double virtual y resolution: %s\n",
-+			       strerror(errno));
-+			fb_vinfo.yres_virtual = fb_vinfo.yres;
-+			if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_vinfo)) {
-+				mp_msg(MSGT_VO, MSGL_ERR,
-+				       "[fbdev2] Can't put VSCREENINFO: %s\n",
-+				       strerror(errno));
-+				return -1;
-+			}
- 		}
- 		fb_pixel_size = fb_vinfo.bits_per_pixel / 8;
- 		fb_bpp = fb_vinfo.red.length + fb_vinfo.green.length +
-@@ -367,16 +391,67 @@ static void check_events(void)
- 
- static void flip_page(void)
- {
--#ifndef USE_CONVERT2FB
- 	int i, out_offset = 0, in_offset = 0;
- 
--	for (i = 0; i < in_height; i++) {
--		fast_memcpy(center + out_offset, next_frame + in_offset,
--				in_width * fb_pixel_size);
--		out_offset += fb_line_len;
--		in_offset += in_width * fb_pixel_size;
--	}
-+#ifndef USE_CONVERT2FB
-+	if (1) {
-+#else
-+	if (fb_vinfo.yres_virtual == fb_vinfo.yres) {
- #endif
-+		for (i = 0; i < in_height; i++) {
-+			fast_memcpy(center + out_offset, next_frame + in_offset,
-+			       in_width * fb_pixel_size);
-+			out_offset += fb_line_len;
-+			in_offset += in_width * fb_pixel_size;
-+		}
-+	} else {
-+		if (fb_vinfo.yoffset == 0) {
-+			fb_vinfo.yoffset += fb_vinfo.yres;
-+			center -= fb_line_len * fb_vinfo.yres;
-+		} else {
-+			fb_vinfo.yoffset = 0;
-+			center += fb_line_len * fb_vinfo.yres;
-+		}
-+
-+		if (ioctl(fb_dev_fd, FBIOPAN_DISPLAY, &fb_vinfo)) {
-+			mp_msg(MSGT_VO, MSGL_ERR,
-+			       "[fbdev2] Can't FBIOPAN_DISPLAY: %s\n",
-+			       strerror(errno));
-+		}
-+	}
-+}
-+
-+static uint32_t get_image(mp_image_t *mpi)
-+{
-+	if(mpi->flags&MP_IMGFLAG_READABLE)
-+		return VO_FALSE; // slow video ram
-+	if(mpi->type==MP_IMGTYPE_STATIC)
-+		return VO_FALSE; // it is not static
-+
-+	if (mpi->flags & (MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_ACCEPT_WIDTH)) {
-+		// we're lucky or codec accepts stride => ok, let's go!
-+
-+		//YUY2 and RGB formats
-+		mpi->planes[0] = center;
-+		mpi->width = in_width;
-+		mpi->stride[0] = fb_line_len;
-+
-+		// center image
-+
-+		mpi->flags |= MP_IMGFLAG_DIRECT;
-+
-+		return VO_TRUE;
-+	}
-+
-+	return VO_FALSE;
-+}
-+
-+static uint32_t put_image(mp_image_t *mpi)
-+{
-+	// already out?
-+	if ((mpi->flags & (MP_IMGFLAG_DIRECT | MP_IMGFLAG_DRAW_CALLBACK)))
-+		return VO_TRUE;
-+	return VO_FALSE;
- }
- 
- static void uninit(void)
-@@ -403,6 +478,10 @@ static int control(uint32_t request, voi
-   switch (request) {
-   case VOCTRL_QUERY_FORMAT:
-     return query_format(*((uint32_t*)data));
-+  case VOCTRL_GET_IMAGE:
-+    return get_image(data);
-+  case VOCTRL_DRAW_IMAGE:
-+    return put_image(data);
-   }
-   return VO_NOTIMPL;
- }
---- a/version.sh
-+++ b/version.sh
-@@ -1,3 +1,3 @@
- #!/bin/sh
--echo "#define VERSION \"1.0rc2-$1\"" > version.h
--echo "#define MP_TITLE \"MPlayer 1.0rc2-$1 (C) 2000-2007 MPlayer Team\"" >> version.h
-+echo "#define VERSION \"1.0rc2.atmel.1-$1\"" > version.h
-+echo "#define MP_TITLE \"MPlayer 1.0rc2.atmel.1-$1 (C) 2000-2007 MPlayer Team\"" >> version.h
diff --git a/package/multimedia/mplayer/mplayer-1.0rc2-largefile.patch b/package/multimedia/mplayer/mplayer-1.0rc2-largefile.patch
deleted file mode 100644
index bcba2ff..0000000
--- a/package/multimedia/mplayer/mplayer-1.0rc2-largefile.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-mplayer: don't unconditionally force largefile support for libraries
----
- common.mak |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: MPlayer-1.0rc1/common.mak
-===================================================================
---- MPlayer-1.0rc1.orig/common.mak
-+++ MPlayer-1.0rc1/common.mak
-@@ -5,7 +5,7 @@
- SRC_DIR = $(SRC_PATH)/lib$(NAME)
- VPATH = $(SRC_DIR)
- 
--CFLAGS += -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
-+CFLAGS += -DHAVE_AV_CONFIG_H \
-           -D_ISOC9X_SOURCE -I$(BUILD_ROOT) -I$(SRC_PATH) \
-           -I$(SRC_PATH)/libavutil $(OPTFLAGS)
- SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S) $(CPPOBJS:.o=.cpp)
diff --git a/package/multimedia/mplayer/mplayer-1.0rc2-remove-sys-timeb.patch b/package/multimedia/mplayer/mplayer-1.0rc2-remove-sys-timeb.patch
deleted file mode 100644
index 369aa70..0000000
--- a/package/multimedia/mplayer/mplayer-1.0rc2-remove-sys-timeb.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-win32.c:67:23: error: sys/timeb.h: No such file or directory
-
---- a/loader/win32.c	2009-01-26 01:53:20.000000000 +0100
-+++ b/loader/win32.c	2009-01-26 01:53:39.000000000 +0100
-@@ -64,7 +64,6 @@
- #include <sys/types.h>
- #include <dirent.h>
- #include <sys/time.h>
--#include <sys/timeb.h>
- #ifdef	HAVE_KSTAT
- #include <kstat.h>
- #endif
diff --git a/package/multimedia/mplayer/mplayer-1.0rc3-disable-install-strip.patch b/package/multimedia/mplayer/mplayer-1.0rc3-disable-install-strip.patch
new file mode 100644
index 0000000..644d292
--- /dev/null
+++ b/package/multimedia/mplayer/mplayer-1.0rc3-disable-install-strip.patch
@@ -0,0 +1,24 @@
+Disable stripping on installation
+
+Using the -s option of install does not work, as it uses the host
+strip instead of the cross strip. So, get rid of it, and let Buildroot
+handle the stripping.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ configure |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: mplayer-32710/configure
+===================================================================
+--- mplayer-32710.orig/configure
++++ mplayer-32710/configure
+@@ -2519,7 +2519,7 @@
+ 
+ 
+ # Checking for CFLAGS
+-_install_strip="-s"
++_install_strip=
+ if test "$_profile" != "" || test "$_debug" != "" ; then
+   CFLAGS="-O2 $_march $_mcpu $_pipe $_debug $_profile"
+   WARNFLAGS="-W -Wall"
diff --git a/package/multimedia/mplayer/mplayer-1.0rc2-fix-cc-parsing.patch b/package/multimedia/mplayer/mplayer-1.0rc3-fix-cc-parsing.patch
similarity index 53%
rename from package/multimedia/mplayer/mplayer-1.0rc2-fix-cc-parsing.patch
rename to package/multimedia/mplayer/mplayer-1.0rc3-fix-cc-parsing.patch
index 770e145..a3ba03f 100644
--- a/package/multimedia/mplayer/mplayer-1.0rc2-fix-cc-parsing.patch
+++ b/package/multimedia/mplayer/mplayer-1.0rc3-fix-cc-parsing.patch
@@ -7,16 +7,16 @@ Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
  configure |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-Index: MPlayer-1.0rc2/configure
+Index: mplayer-32710/configure
 ===================================================================
---- MPlayer-1.0rc2.orig/configure
-+++ MPlayer-1.0rc2/configure
-@@ -761,7 +761,7 @@ for ac_option do
-     _target=`echo $ac_option | cut -d '=' -f 2`
+--- mplayer-32710.orig/configure
++++ mplayer-32710/configure
+@@ -870,7 +870,7 @@
+     _target=$(echo $ac_option | cut -d '=' -f 2)
      ;;
    --cc=*)
--    _cc=`echo $ac_option | cut -d '=' -f 2`
-+    _cc=`echo $ac_option | cut -d '=' -f 2-`
+-    _cc=$(echo $ac_option | cut -d '=' -f 2)
++    _cc=$(echo $ac_option | cut -d '=' -f 2-)
      ;;
    --host-cc=*)
-     _host_cc=`echo $ac_option | cut -d '=' -f 2`
+     _host_cc=$(echo $ac_option | cut -d '=' -f 2)
diff --git a/package/multimedia/mplayer/mplayer.mk b/package/multimedia/mplayer/mplayer.mk
index 93e38da..b2ff7ba 100644
--- a/package/multimedia/mplayer/mplayer.mk
+++ b/package/multimedia/mplayer/mplayer.mk
@@ -3,128 +3,136 @@
 # mplayer
 #
 #############################################################
-MPLAYER_VERSION:=1.0rc2
-MPLAYER_SOURCE:=MPlayer-$(MPLAYER_VERSION).tar.bz2
-MPLAYER_SITE:=http://www7.mplayerhq.hu/MPlayer/releases
-MPLAYER_DIR:=$(BUILD_DIR)/MPlayer-$(MPLAYER_VERSION)
-MPLAYER_CAT:=$(BZCAT)
-MPLAYER_BINARY:=mplayer
-MPLAYER_TARGET_BINARY:=usr/bin/$(MPLAYER_BINARY)
-
-MPLAYER_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBMAD),libmad)
+MPLAYER_VERSION = 32710
+# MPLAYER_SOURCE = MPlayer-$(MPLAYER_VERSION).tar.bz2
+# MPLAYER_SITE = http://www.mplayerhq.hu/MPlayer/releases
+MPLAYER_SITE = svn://svn.mplayerhq.hu/mplayer/trunk
 
 # mplayer needs pcm+mixer support, but configure fails to check for it
 ifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yyy)
 MPLAYER_DEPENDENCIES += alsa-lib
-MPLAYER_ALSA:=--enable-alsa
+MPLAYER_CONF_OPTS    += --enable-alsa
 else
-MPLAYER_ALSA:=--disable-alsa
+MPLAYER_CONF_OPTS    += --disable-alsa
 endif
 
 ifeq ($(BR2_ENDIAN),"BIG")
-MPLAYER_ENDIAN:=--enable-big-endian
+MPLAYER_CONF_OPTS += --enable-big-endian
 else
-MPLAYER_ENDIAN:=--disable-big-endian
+MPLAYER_CONF_OPTS += --disable-big-endian
 endif
 
-# mplayer unfortunately uses --disable-largefileS, so we cannot use
+# mplayer unfortunately uses --disable-largefiles, so we cannot use
 # DISABLE_LARGEFILE
 ifeq ($(BR2_LARGEFILE),y)
-MPLAYER_LARGEFILE:=--enable-largefiles
+MPLAYER_CONF_OPTS += --enable-largefiles
 else
 # dvdread/dvdcss requires largefile support
-MPLAYER_LARGEFILE:=--disable-largefiles \
-		   --disable-dvdread-internal \
-		   --disable-libdvdcss-internal
+MPLAYER_CONF_OPTS += 			\
+	--disable-largefiles 		\
+	--disable-dvdread-internal 	\
+	--disable-libdvdcss-internal
 endif
 
 ifeq ($(BR2_PACKAGE_SDL),y)
-MPLAYER_SDL:=--enable-sdl --with-sdl-config=$(STAGING_DIR)/usr/bin/sdl-config
+MPLAYER_CONF_OPTS += \
+	--enable-sdl \
+	--with-sdl-config=$(STAGING_DIR)/usr/bin/sdl-config
 MPLAYER_DEPENDENCIES += sdl
 else
-MPLAYER_SDL:=--disable-sdl
+MPLAYER_CONF_OPTS += --disable-sdl
 endif
 
 ifeq ($(BR2_PACKAGE_FREETYPE),y)
-MPLAYER_FREETYPE:= \
+MPLAYER_CONF_OPTS +=  \
 	--enable-freetype \
 	--with-freetype-config=$(STAGING_DIR)/usr/bin/freetype-config
 MPLAYER_DEPENDENCIES += freetype
 else
-MPLAYER_FREETYPE:=--disable-freetype
+MPLAYER_CONF_OPTS += --disable-freetype
+endif
+
+ifeq ($(BR2_PACKAGE_MPLAYER_MPLAYER),y)
+MPLAYER_CONF_OPTS += --enable-mplayer
+else
+MPLAYER_CONF_OPTS += --disable-mplayer
+endif
+
+ifeq ($(BR2_PACKAGE_MPLAYER_MENCODER),y)
+MPLAYER_CONF_OPTS += --enable-mencoder
+else
+MPLAYER_CONF_OPTS += --disable-mencoder
+endif
+
+ifeq ($(BR2_PACKAGE_TREMOR),y)
+MPLAYER_DEPENDENCIES += tremor
+MPLAYER_CONF_OPTS += --disable-tremor-internal --enable-tremor
+endif
+
+ifeq ($(BR2_PACKAGE_MAD),y)
+MPLAYER_DEPENDENCIES += libmad
+else
+MPLAYER_CONF_OPTS += --disable-mad
 endif
 
-ifeq ($(BR2_i386),y)
-# This seems to be required to compile some of the inline asm
-MPLAYER_CFLAGS:=-fomit-frame-pointer
+MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBTHEORA),libtheora)
+MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBPNG),libpng)
+MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_JPEG),jpeg)
+MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_XLIB_LIBX11),xlib_libX11)
+MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_XLIB_LIBXV),xlib_libXv)
+
+# ARM optimizations
+ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv5te)
+MPLAYER_CONF_OPTS += --enable-armv5te
 endif
 
-$(DL_DIR)/$(MPLAYER_SOURCE):
-	$(call DOWNLOAD,$(MPLAYER_SITE),$(MPLAYER_SOURCE))
+ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv6j)
+MPLAYER_CONF_OPTS += --enable-armv6
+endif
 
-$(MPLAYER_DIR)/.unpacked: $(DL_DIR)/$(MPLAYER_SOURCE)
-	$(MPLAYER_CAT) $(DL_DIR)/$(MPLAYER_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(MPLAYER_DIR) package/multimedia/mplayer/ mplayer-$(MPLAYER_VERSION)\*.patch\*
-	$(CONFIG_UPDATE) $(MPLAYER_DIR)
-	touch $@
+ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv7-a)
+MPLAYER_CONF_OPTS += --enable-neon
+endif
 
-$(MPLAYER_DIR)/.configured: $(MPLAYER_DIR)/.unpacked
-	(cd $(MPLAYER_DIR); rm -rf config.cache; \
+define MPLAYER_CONFIGURE_CMDS
+	(cd $(@D); rm -rf config.cache; \
 		$(TARGET_CONFIGURE_OPTS) \
 		$(TARGET_CONFIGURE_ARGS) \
-		CFLAGS="$(TARGET_CFLAGS) $(MPLAYER_CFLAGS)" \
-		LDFLAGS="$(TARGET_LDFLAGS)" \
 		./configure \
 		--prefix=/usr \
 		--confdir=/etc \
 		--target=$(GNU_TARGET_NAME) \
-		--host-cc=$(HOSTCC) \
+		--host-cc="$(HOSTCC)" \
 		--cc="$(TARGET_CC)" \
-		--as=$(TARGET_CROSS)as \
-		--with-extraincdir=$(STAGING_DIR)/usr/include \
-		--with-extralibdir=$(STAGING_DIR)/lib \
+		--as="$(TARGET_AS)" \
 		--charset=UTF-8 \
+		--extra-cflags="$(TARGET_CFLAGS)" \
+		--extra-ldflags="$(TARGET_LDFLAGS)" \
 		--enable-mad \
 		--enable-fbdev \
-		$(MPLAYER_ENDIAN) \
-		$(MPLAYER_LARGEFILE) \
-		$(MPLAYER_SDL) \
-		$(MPLAYER_FREETYPE) \
-		$(MPLAYER_ALSA) \
+		$(MPLAYER_CONF_OPTS) \
 		--enable-cross-compile \
 		--disable-ivtv \
 		--disable-tv \
 		--disable-live \
 		--enable-dynamic-plugins \
 	)
-	touch $@
-
-$(MPLAYER_DIR)/$(MPLAYER_BINARY): $(MPLAYER_DIR)/.configured
-	$(MAKE1) -C $(MPLAYER_DIR)
-	touch -c $@
-
-$(TARGET_DIR)/$(MPLAYER_TARGET_BINARY): $(MPLAYER_DIR)/$(MPLAYER_BINARY)
-	$(INSTALL) -m 0755 -D $(MPLAYER_DIR)/$(MPLAYER_BINARY) $(TARGET_DIR)/$(MPLAYER_TARGET_BINARY)
-	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/$(MPLAYER_TARGET_BINARY)
-	touch -c $@
+endef
 
-mplayer: $(MPLAYER_DEPENDENCIES) $(TARGET_DIR)/$(MPLAYER_TARGET_BINARY)
+define MPLAYER_BUILD_CMDS
+	$(MAKE) -C $(@D)
+endef
 
-mplayer-source: $(DL_DIR)/$(MPLAYER_SOURCE)
+define MPLAYER_INSTALL_TARGET_CMDS
+	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
+endef
 
-mplayer-unpacked: $(MPLAYER_DIR)/.unpacked
+define MPLAYER_UNINSTALL_TARGET_CMDS
+	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) uninstall
+endef
 
-mplayer-clean:
-	rm -f $(TARGET_DIR)/$(MPLAYER_TARGET_BINARY)
-	-$(MAKE) -C $(MPLAYER_DIR) clean
+define MPLAYER_CLEAN_CMDS
+	$(MAKE) -C $(@D) clean
+endef
 
-mplayer-dirclean:
-	rm -rf $(MPLAYER_DIR)
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_MPLAYER),y)
-TARGETS+=mplayer
-endif
+$(eval $(call GENTARGETS,package/multimedia,mplayer))
-- 
1.7.0.4

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

* [Buildroot] [PATCH 18/19] libtheora: bump version to 1.1.1
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (16 preceding siblings ...)
  2010-12-12 21:54 ` [Buildroot] [PATCH 17/19] mplayer: convert to gentargets, bump to a recent SVN version Thomas Petazzoni
@ 2010-12-12 21:54 ` Thomas Petazzoni
  2010-12-12 21:54 ` [Buildroot] [PATCH 19/19] l2tp: convert to gentargets and change to xl2tp Thomas Petazzoni
  2010-12-14  0:36 ` [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Peter Korsgaard
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:54 UTC (permalink / raw)
  To: buildroot

This allows to disable the build of the format specification
documentation, which was causing issues in cross-compiling mode.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/multimedia/libtheora/libtheora.mk |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/package/multimedia/libtheora/libtheora.mk b/package/multimedia/libtheora/libtheora.mk
index 81eb83f..e572d1a 100644
--- a/package/multimedia/libtheora/libtheora.mk
+++ b/package/multimedia/libtheora/libtheora.mk
@@ -3,7 +3,7 @@
 # libtheora
 #
 #############################################################
-LIBTHEORA_VERSION = 1.0
+LIBTHEORA_VERSION = 1.1.1
 LIBTHEORA_SOURCE = libtheora-$(LIBTHEORA_VERSION).tar.bz2
 LIBTHEORA_SITE = http://downloads.xiph.org/releases/theora
 LIBTHEORA_INSTALL_STAGING = YES
@@ -12,7 +12,8 @@ LIBTHEORA_CONF_OPT = \
 		--disable-oggtest \
 		--disable-vorbistest \
 		--disable-sdltest \
-		--disable-examples
+		--disable-examples \
+		--disable-spec
 
 LIBTHEORA_DEPENDENCIES = libogg libvorbis host-pkg-config
 
-- 
1.7.0.4

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

* [Buildroot] [PATCH 19/19] l2tp: convert to gentargets and change to xl2tp
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (17 preceding siblings ...)
  2010-12-12 21:54 ` [Buildroot] [PATCH 18/19] libtheora: bump version to 1.1.1 Thomas Petazzoni
@ 2010-12-12 21:54 ` Thomas Petazzoni
  2010-12-14  0:36 ` [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Peter Korsgaard
  19 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2010-12-12 21:54 UTC (permalink / raw)
  To: buildroot

From: Martin Banky <martin.banky@gmail.com>

l2tp is no longer being developed, and xl2tpd is forked from l2tpd and is
maintained by Xelerance Corporation.

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Config.in                                  |    2 +-
 package/l2tp/Config.in                             |    7 --
 package/l2tp/l2tp-no-gnu-extensions.patch          |   33 -----------
 package/l2tp/l2tp-sanity.patch                     |   49 ----------------
 package/l2tp/l2tp.mk                               |   60 --------------------
 package/xl2tp/Config.in                            |   11 ++++
 .../xl2tp-1.2.7-legacy.patch}                      |    3 +
 package/xl2tp/xl2tp-1.2.7-makefile-flags.patch     |   33 +++++++++++
 package/xl2tp/xl2tp.mk                             |   33 +++++++++++
 package/{l2tp/l2tpd => xl2tp/xl2tpd}               |    6 +-
 10 files changed, 84 insertions(+), 153 deletions(-)
 delete mode 100644 package/l2tp/Config.in
 delete mode 100644 package/l2tp/l2tp-no-gnu-extensions.patch
 delete mode 100644 package/l2tp/l2tp-sanity.patch
 delete mode 100644 package/l2tp/l2tp.mk
 create mode 100644 package/xl2tp/Config.in
 rename package/{l2tp/l2tp-legacy.patch => xl2tp/xl2tp-1.2.7-legacy.patch} (86%)
 create mode 100644 package/xl2tp/xl2tp-1.2.7-makefile-flags.patch
 create mode 100644 package/xl2tp/xl2tp.mk
 rename package/{l2tp/l2tpd => xl2tp/xl2tpd} (76%)

diff --git a/package/Config.in b/package/Config.in
index 1d85af1..bf78baa 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -379,7 +379,7 @@ source "package/ipsec-tools/Config.in"
 source "package/iptables/Config.in"
 source "package/iw/Config.in"
 source "package/kismet/Config.in"
-source "package/l2tp/Config.in"
+source "package/xl2tp/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 source "package/lighttpd/Config.in"
 endif
diff --git a/package/l2tp/Config.in b/package/l2tp/Config.in
deleted file mode 100644
index da4f589..0000000
--- a/package/l2tp/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_L2TP
-	bool "l2tp"
-	help
-	  Layer 2 Tunnelling Protocol (RFC2661).
-
-	  http://sourceforge.net/projects/l2tpd/
-
diff --git a/package/l2tp/l2tp-no-gnu-extensions.patch b/package/l2tp/l2tp-no-gnu-extensions.patch
deleted file mode 100644
index ef07e26..0000000
--- a/package/l2tp/l2tp-no-gnu-extensions.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- l2tpd-0.70-pre20031121.oorig/avpsend.c	2006-12-28 16:00:26.000000000 +0100
-+++ l2tpd-0.70-pre20031121/avpsend.c	2006-12-28 16:21:06.000000000 +0100
-@@ -98,19 +98,26 @@ int add_hostname_avp(struct buffer *buf,
- 	int sz = 0;
- 	if(t->lac && t->lac->hostname[0]) {
- 		strncpy(n,t->lac->hostname, sizeof(n));
--		sz = strnlen(t->lac->hostname, sizeof(t->lac->hostname));
-+		sz = strlen(t->lac->hostname);
-+		if (sz > sizeof(t->lac->hostname))
-+			sz = sizeof(t->lac->hostname);
- 	}
- 	else if(t->lns && t->lns->hostname[0]) {
- 		strncpy(n,t->lns->hostname, sizeof(n));
--		sz = strnlen(t->lns->hostname, sizeof(t->lns->hostname));
-+		sz = strlen(t->lns->hostname);
-+		if (sz > sizeof(t->lns->hostname))
-+			sz = sizeof(t->lns->hostname);
- 	}
- 	else {
- 		if(gethostname(n, STRLEN)) {
- 			strcpy(n,"eriwan");
- 			sz = 6;
- 		}
--		else
--			sz = strnlen(n, sizeof(n));
-+		else {
-+			sz = strlen(n);
-+			if (sz > sizeof(n))
-+				sz = sizeof(n);
-+		}
- 	}
- 	if(add_avp(buf, HOSTNAME_AVP, n, sz, 1))
- 		return 1;
diff --git a/package/l2tp/l2tp-sanity.patch b/package/l2tp/l2tp-sanity.patch
deleted file mode 100644
index 1d0533d..0000000
--- a/package/l2tp/l2tp-sanity.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff -rdup l2tpd-0.70-pre20031121.oorig/avp.c l2tpd-0.70-pre20031121/avp.c
---- l2tpd-0.70-pre20031121.oorig/avp.c	2006-12-28 16:00:26.000000000 +0100
-+++ l2tpd-0.70-pre20031121/avp.c	2006-12-28 16:06:43.000000000 +0100
-@@ -146,6 +146,7 @@ int validate_msgtype_avp(int attr,  stru
- 	u_int8_t *p = data + sizeof(struct avp_hdr);
- 	c->msgtype = get16(p);
- 
-+#ifdef SANITY
-     if (t->sanity)
-     {
-         /*
-@@ -293,6 +294,7 @@ int validate_msgtype_avp(int attr,  stru
-             return -EINVAL;
-         }
-     }
-+#endif
- 	return 0;
- }
- 
-@@ -301,7 +303,7 @@ int validate_gen_avp(int attr,  struct t
- 					 void *data, int datalen) {
- 	(void)data; (void)datalen;
- 	int i = 0, found = 0;
--
-+#ifdef SANITY
-     if(t->sanity) {
- 		for(i = 0; i < 8; i++) {
- 			if(c->msgtype == avps[attr].allowed_states[i])
-@@ -310,6 +312,7 @@ int validate_gen_avp(int attr,  struct t
- 		if(!found) 
- 			return -EINVAL;
- 	}
-+#endif
- 	return 0;
- }
- 
-diff -rdup l2tpd-0.70-pre20031121.oorig/l2tpd.c l2tpd-0.70-pre20031121/l2tpd.c
---- l2tpd-0.70-pre20031121.oorig/l2tpd.c	2006-12-28 16:00:26.000000000 +0100
-+++ l2tpd-0.70-pre20031121/l2tpd.c	2006-12-28 16:04:15.000000000 +0100
-@@ -748,7 +748,9 @@ struct tunnel *new_tunnel ()
-     tmp->peer.sin_family = AF_INET;
-     tmp->peer.sin_port = 0;
-     bzero (&(tmp->peer.sin_addr), sizeof (tmp->peer.sin_addr));
-+#ifdef SANITY
-     tmp->sanity = -1;
-+#endif
-     tmp->qtid = -1;
-     tmp->ourfc = ASYNC_FRAMING | SYNC_FRAMING;
-     tmp->ourbc = 0;
diff --git a/package/l2tp/l2tp.mk b/package/l2tp/l2tp.mk
deleted file mode 100644
index e8b4c79..0000000
--- a/package/l2tp/l2tp.mk
+++ /dev/null
@@ -1,60 +0,0 @@
-#############################################################
-#
-# l2tp
-#
-#############################################################
-L2TP_VERSION:=0.70-pre20031121
-L2TP_SOURCE:=l2tpd_$(L2TP_VERSION).orig.tar.gz
-L2TP_PATCH:=l2tpd_$(L2TP_VERSION)-2.2.diff.gz
-L2TP_SITE:=$(BR2_DEBIAN_MIRROR)/debian/pool/main/l/l2tpd/
-L2TP_DIR:=$(BUILD_DIR)/l2tpd-$(L2TP_VERSION)
-L2TP_CAT:=$(ZCAT)
-L2TP_BINARY:=l2tpd
-L2TP_TARGET_BINARY:=usr/sbin/l2tpd
-
-$(DL_DIR)/$(L2TP_SOURCE):
-	$(call DOWNLOAD,$(L2TP_SITE),$(L2TP_SOURCE))
-
-$(DL_DIR)/$(L2TP_PATCH):
-	$(call DOWNLOAD,$(L2TP_SITE),$(L2TP_PATCH))
-
-l2tp-source: $(DL_DIR)/$(L2TP_SOURCE) $(DL_DIR)/$(L2TP_PATCH)
-
-$(L2TP_DIR)/.unpacked: $(DL_DIR)/$(L2TP_SOURCE) $(DL_DIR)/$(L2TP_PATCH)
-	$(L2TP_CAT) $(DL_DIR)/$(L2TP_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	-mv -f $(L2TP_DIR).orig $(L2TP_DIR)
-ifneq ($(L2TP_PATCH),)
-	(cd $(L2TP_DIR) && $(L2TP_CAT) $(DL_DIR)/$(L2TP_PATCH) | patch -p1)
-	if [ -d $(L2TP_DIR)/debian/patches ]; then \
-		toolchain/patch-kernel.sh $(L2TP_DIR) $(L2TP_DIR)/debian/patches \*.patch; \
-	fi
-endif
-	toolchain/patch-kernel.sh $(L2TP_DIR) package/l2tp/ l2tp\*.patch
-	touch $(L2TP_DIR)/.unpacked
-
-$(L2TP_DIR)/$(L2TP_BINARY): $(L2TP_DIR)/.unpacked
-	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(L2TP_DIR) \
-		DFLAGS= \
-		OSFLAGS="-DLINUX -UUSE_KERNEL $(TARGET_CFLAGS) -USANITY"
-
-$(TARGET_DIR)/$(L2TP_TARGET_BINARY): $(L2TP_DIR)/$(L2TP_BINARY)
-	cp -dpf $(L2TP_DIR)/$(L2TP_BINARY) $@
-	cp -dpf package/l2tp/l2tpd $(TARGET_DIR)/etc/init.d/
-	$(STRIPCMD) $@
-
-l2tp: $(TARGET_DIR)/$(L2TP_TARGET_BINARY)
-
-l2tp-clean:
-	-$(MAKE) -C $(L2TP_DIR) clean
-	rm -f $(TARGET_DIR)/$(L2TP_TARGET_BINARY)
-
-l2tp-dirclean:
-	rm -rf $(L2TP_DIR)
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_L2TP),y)
-TARGETS+=l2tp
-endif
diff --git a/package/xl2tp/Config.in b/package/xl2tp/Config.in
new file mode 100644
index 0000000..8f9d9b1
--- /dev/null
+++ b/package/xl2tp/Config.in
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_XL2TP
+	bool "xl2tp"
+	select BR2_PACKAGE_LIBPCAP
+	help
+	  Layer 2 Tunnelling Protocol (RFC2661).
+
+	  xl2tpd is an open source implementation of the L2TP tunneling
+	  protocol. xl2tpd is forked from l2tpd and is maintained by
+	  Xelerance Corporation.
+
+	  http://www.xelerance.com/software/xl2tpd/
diff --git a/package/l2tp/l2tp-legacy.patch b/package/xl2tp/xl2tp-1.2.7-legacy.patch
similarity index 86%
rename from package/l2tp/l2tp-legacy.patch
rename to package/xl2tp/xl2tp-1.2.7-legacy.patch
index 39506d8..5279fd7 100644
--- a/package/l2tp/l2tp-legacy.patch
+++ b/package/xl2tp/xl2tp-1.2.7-legacy.patch
@@ -1,3 +1,6 @@
+Replace SUSV3-specific functions index, bcopy, bzero and bcmp by their
+POSIX variants.
+
 --- l2tpd-0.70-pre20031121.oorig/osport.h	2004-07-08 22:47:52.000000000 +0200
 +++ l2tpd-0.70-pre20031121/osport.h	2006-12-28 15:32:50.000000000 +0100
 @@ -37,4 +37,11 @@
diff --git a/package/xl2tp/xl2tp-1.2.7-makefile-flags.patch b/package/xl2tp/xl2tp-1.2.7-makefile-flags.patch
new file mode 100644
index 0000000..68a56a6
--- /dev/null
+++ b/package/xl2tp/xl2tp-1.2.7-makefile-flags.patch
@@ -0,0 +1,33 @@
+Make sure that the CFLAGS passed on the command line are taken into
+account.
+
+--- xl2tp-1.2.7/Makefile-orig	2010-08-05 15:33:46.000000000 -0700
++++ xl2tp-1.2.7/Makefile	2010-09-30 22:34:54.000000000 -0700
+@@ -90,7 +90,7 @@ OSFLAGS?= -DLINUX -I$(KERNELSRC)/include
+ 
+ IPFLAGS?= -DIP_ALLOCATION
+ 
+-CFLAGS+= $(DFLAGS) -O2 -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
++COMPILE_FLAGS+= $(DFLAGS) -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
+ HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h md5.h
+ OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o md5.o
+ SRCS=${OBJS:.o=.c} ${HDRS}
+@@ -105,6 +105,9 @@ MANDIR?=$(DESTDIR)${PREFIX}/share/man
+ 
+ all: $(EXEC) pfc
+ 
++%.o: %.c
++	$(CC) $(COMPILE_FLAGS) $(CFLAGS) -c -o $@ -shared $<
++
+ clean:
+ 	rm -f $(OBJS) $(EXEC) pfc.o pfc
+ 
+@@ -112,7 +115,7 @@ $(EXEC): $(OBJS) $(HDRS)
+ 	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
+ 
+ pfc:
+-	$(CC) $(CFLAGS) -c contrib/pfc.c
++	$(CC) $(COMPILE_FLAGS) $(CFLAGS) -c contrib/pfc.c
+ 	$(CC) $(LDFLAGS) -lpcap $(LDLIBS) -o pfc pfc.o
+ 
+ romfs:
diff --git a/package/xl2tp/xl2tp.mk b/package/xl2tp/xl2tp.mk
new file mode 100644
index 0000000..fcde559
--- /dev/null
+++ b/package/xl2tp/xl2tp.mk
@@ -0,0 +1,33 @@
+#############################################################
+#
+# xl2tp
+#
+#############################################################
+XL2TP_VERSION = 1.2.7
+XL2TP_SOURCE = xl2tpd-$(XL2TP_VERSION).tar.gz
+XL2TP_SITE = ftp://ftp.xelerance.com/xl2tpd/
+
+XL2TP_DEPENDENCIES = pppd libpcap
+
+define XL2TP_BUILD_CMDS
+	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
+endef
+
+define XL2TP_INSTALL_TARGET_CMDS
+	$(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install
+endef
+
+define XL2TP_UNINSTALL_TARGET_CMDS
+	rm -f $(TARGET_DIR)/usr/bin/pfc
+	rm -f $(TARGET_DIR)/usr/sbin/xl2tpd
+	rm -f $(TARGET_DIR)/usr/share/man/man1/pfc.1
+	rm -f $(TARGET_DIR)/usr/share/man/man8/xl2tpd.8
+	rm -f $(TARGET_DIR)/usr/share/man/man5/xl2tpd.conf.5
+	rm -f $(TARGET_DIR)/usr/share/man/man5/l2tp-secrets.5
+endef
+
+define XL2TP_CLEAN_CMDS
+	-$(MAKE) -C $(@D) clean
+endef
+
+$(eval $(call GENTARGETS,package,xl2tp))
diff --git a/package/l2tp/l2tpd b/package/xl2tp/xl2tpd
similarity index 76%
rename from package/l2tp/l2tpd
rename to package/xl2tp/xl2tpd
index 8bed72d..36c12a2 100755
--- a/package/l2tp/l2tpd
+++ b/package/xl2tp/xl2tpd
@@ -1,8 +1,8 @@
 #!/bin/sh
 #
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
-DAEMON=/usr/sbin/l2tpd
-PIDFILE=/var/run/l2tpd.pid
+DAEMON=/usr/sbin/xl2tpd
+PIDFILE=/var/run/xl2tpd.pid
 
 test -f $DAEMON || exit 0
 
@@ -19,7 +19,7 @@ case "$1" in
     start-stop-daemon -S  -p $PIDFILE -x $DAEMON
     ;;
   *)
-    echo "Usage: /etc/init.d/l2tdp {start|stop|restart|force-reload}"
+    echo "Usage: /etc/init.d/xl2tdp {start|stop|restart|force-reload}"
     exit 1
     ;;
 esac
-- 
1.7.0.4

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

* [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages
  2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
                   ` (18 preceding siblings ...)
  2010-12-12 21:54 ` [Buildroot] [PATCH 19/19] l2tp: convert to gentargets and change to xl2tp Thomas Petazzoni
@ 2010-12-14  0:36 ` Peter Korsgaard
  19 siblings, 0 replies; 21+ messages in thread
From: Peter Korsgaard @ 2010-12-14  0:36 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> Hello,
 Thomas> Here is a set of patches that merges most of Martin Banky's pending
 Thomas> patches. I've taken Martin patches for input-tools, mii-diag, mrouted,
 Thomas> sysklogd, sysinit, lsof, lvm2, memtester, alsa-utils, netplug and
 Thomas> l2tp. I tested all of them, and fixed various issues.

 Thomas> I also include some other patches to :
 Thomas>  * remove deprecated packages
 Thomas>  * bump mplayer and add many more options to mplayer
 Thomas>  * bump libtheora
 Thomas>  * fix libaio on AVR32

Thanks (both) - Committed with a few fixes.

-- 
Bye, Peter Korsgaard

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

end of thread, other threads:[~2010-12-14  0:36 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-12 21:53 [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 01/19] input-tools: convert to gentargets Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 02/19] mii-diag: convert to gentargets and bump to 2.11.3 Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 03/19] mrouted: convet to gentargets and bump to version 3.9.4 Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 04/19] sysklogd: convert to gentargets and bump to 1.5 Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 05/19] sysvint: convert to gentargets and bump to 2.88 Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 06/19] target: support generic getty with sysvinit inittabs Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 07/19] lsof: convert to gentargets and bump to 4.84 Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 08/19] lvm2: convert to autotargets and bump to 2.02.78 Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 09/19] memtester: convert to gentargets and bump to 4.2.1 Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 10/19] microcom: remove package Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 11/19] ng-spice-rework: " Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 12/19] libfloat: " Thomas Petazzoni
2010-12-12 21:53 ` [Buildroot] [PATCH 13/19] hotplug: " Thomas Petazzoni
2010-12-12 21:54 ` [Buildroot] [PATCH 14/19] alsa-utils: convert to autotargets and bump to 1.0.23 Thomas Petazzoni
2010-12-12 21:54 ` [Buildroot] [PATCH 15/19] netplug: convert to gentargets and bump to 1.2.9.2 Thomas Petazzoni
2010-12-12 21:54 ` [Buildroot] [PATCH 16/19] libaio: add patch to support AVR32 Thomas Petazzoni
2010-12-12 21:54 ` [Buildroot] [PATCH 17/19] mplayer: convert to gentargets, bump to a recent SVN version Thomas Petazzoni
2010-12-12 21:54 ` [Buildroot] [PATCH 18/19] libtheora: bump version to 1.1.1 Thomas Petazzoni
2010-12-12 21:54 ` [Buildroot] [PATCH 19/19] l2tp: convert to gentargets and change to xl2tp Thomas Petazzoni
2010-12-14  0:36 ` [Buildroot] [pull request] Pull request for branch for-2011.02/martin-packages Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox