Index: rpm-4.4.2.2/Makefile.am
===================================================================
--- rpm-4.4.2.2.orig/Makefile.am
+++ rpm-4.4.2.2/Makefile.am
@@ -159,8 +159,11 @@ install-data-local:
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4l ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4tl ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tel ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tevl ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tejl ;\
-		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6l ;;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tejvl ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6l ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6vl ;;\
 	sparc*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparc ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv8 ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv9 ;\
Index: rpm-4.4.2.2/Makefile.in
===================================================================
--- rpm-4.4.2.2.orig/Makefile.in
+++ rpm-4.4.2.2/Makefile.in
@@ -1212,8 +1212,11 @@ install-data-local:
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4l ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv4tl ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tel ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tevl ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tejl ;\
-		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6l ;;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv5tejvl ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6l ;\
+		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/armv6vl ;;\
 	sparc*) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparc ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv8 ;\
 		$(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/sparcv9 ;\
Index: rpm-4.4.2.2/installplatform
===================================================================
--- rpm-4.4.2.2.orig/installplatform
+++ rpm-4.4.2.2/installplatform
@@ -32,7 +32,7 @@ target="`$RPM --eval '%{_target}'|sed -e
 case "$arch" in
   i[3456]86|pentium[34]|athlon) SUBSTS='s_i386_i386_ s_i386_i486_ s_i386_i586_ s_i386_i686_ s_i386_pentium3_ s_i386_pentium4_ s_i386_athlon_' ;;
   alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;;
-  arm*) SUBSTS='s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tejl_ s_arm_armv6l_' ;;
+  arm*) SUBSTS='s_arm_armv3l_ s_arm_armv4l_ s_arm_armv4tl_ s_arm_armv5tel_ s_arm_armv5tevl_ s_arm_armv5tejl_ s_arm_armv5tejvl_ s_arm_armv6l_ s_arm_armv6vl_' ;;
   sparc*) SUBSTS='s_sparc\(64\|64v\|v9v\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;;
   powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6ip]\|$\)_ppc64\1_ s_ppc\([^6ip]\|$\)_ppciseries_ s_ppc\([^6ip]\|$\)_ppcpseries_ s_ppc\([^6ip]\|$\)_ppc64iseries_ s_ppc\([^6ip]\|$\)_ppc64pseries_' ;;
   s390*) SUBSTS='s_s390x_s390_ s_s390\([^x]\|$\)_s390x\1_' ;;
Index: rpm-4.4.2.2/lib/rpmrc.c
===================================================================
--- rpm-4.4.2.2.orig/lib/rpmrc.c
+++ rpm-4.4.2.2/lib/rpmrc.c
@@ -1084,6 +1084,42 @@ static int is_pentium4()
 
 #endif
 
+#if defined(__linux__) && defined(__arm__) && defined(__ARM_EABI__)
+#include <elf.h>
+
+#define HWCAP_VFP	64
+
+unsigned long at_hwcap(void)
+{
+    unsigned long hwcap = 0;
+    FILE *fp;
+
+    fp = fopen("/proc/self/auxv", "r");
+    if (fp != NULL) {
+	while (1) {
+	    unsigned long auxv[2];
+
+	    if (fread(auxv, sizeof(auxv[0]), 2, fp) != 2)
+		break;
+
+	    if (auxv[0] == AT_HWCAP) {
+		hwcap = auxv[1];
+		break;
+	    }
+	}
+
+	fclose(fp);
+    }
+
+    return hwcap;
+}
+
+static int cpu_has_vfp(void)
+{
+    return !!(at_hwcap() & HWCAP_VFP);
+}
+#endif
+
 #if defined(__linux__) && defined(__powerpc__)
 static jmp_buf mfspr_jmpbuf;
 
@@ -1293,6 +1329,18 @@ static void defaultMachine(/*@out@*/ con
 	}
 #	endif	/* sparc*-linux */
 
+#	if defined(__linux__) && defined(__arm__) && defined(__ARM_EABI__)
+	if (!memcmp(un.machine, "arm", 3)) {
+	    int len = strlen(un.machine);
+
+	    if (len < sizeof(un.machine) - 1 && cpu_has_vfp()) {
+		un.machine[len + 1] = 0;
+		un.machine[len] = un.machine[len - 1];
+		un.machine[len - 1] = 'v';
+	    }
+	}
+#	endif	/* arm*-linux */
+
 #	if defined(__GNUC__) && defined(__alpha__)
 	{
 	    unsigned long amask, implver;
Index: rpm-4.4.2.2/macros.in
===================================================================
--- rpm-4.4.2.2.orig/macros.in
+++ rpm-4.4.2.2/macros.in
@@ -1192,7 +1192,8 @@ done \
 
 #------------------------------------------------------------------------------
 # arch macro for all supported ARM processors
-%arm	armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l
+%arm	armv3l armv4b armv4l armv4tl armv5tel armv5tevl armv5tejl armv5tejvl armv6l armv6vl
+%armvfp	armv5tevl armv5tejvl armv6vl
 
 
 #------------------------------------------------------------------------------
Index: rpm-4.4.2.2/rpmrc.in
===================================================================
--- rpm-4.4.2.2.orig/rpmrc.in
+++ rpm-4.4.2.2/rpmrc.in
@@ -65,8 +65,11 @@ optflags: armv4b -O2 -g -march=armv4
 optflags: armv4l -O2 -g -march=armv4
 optflags: armv4tl -O2 -g -march=armv4t
 optflags: armv5tel -O2 -g -march=armv5te
+optflags: armv5tevl -O2 -g -march=armv5te -mfpu=vfp -mfloat-abi=softfp
 optflags: armv5tejl -O2 -g -march=armv5te
+optflags: armv5tejvl -O2 -g -march=armv5te -mfpu=vfp -mfloat-abi=softfp
 optflags: armv6l -O2 -g -march=armv6
+optflags: armv6vl -O2 -g -march=armv6 -mfpu=vfp -mfloat-abi=softfp
 
 optflags: atarist -O2 -g -fomit-frame-pointer
 optflags: atariste -O2 -g -fomit-frame-pointer
@@ -133,8 +136,11 @@ arch_canon:	armv3l: armv3l	12
 arch_canon:     armv4b:	armv4b 	12
 arch_canon:     armv4l:	armv4l 	12
 arch_canon:     armv5tel: armv5tel 	12
+arch_canon:     armv5tevl: armv5tevl 	12
 arch_canon:     armv5tejl: armv5tejl 	12
+arch_canon:     armv5tejvl: armv5tejvl 	12
 arch_canon:     armv6l: armv6l 	12
+arch_canon:     armv6vl: armv6vl 	12
 
 arch_canon:	m68kmint: m68kmint	13
 arch_canon:	atarist: m68kmint	13
@@ -236,8 +242,11 @@ buildarchtranslate: armv4b: armv4b
 buildarchtranslate: armv4l: armv4l
 buildarchtranslate: armv4tl: armv4tl
 buildarchtranslate: armv5tel: armv5tel
+buildarchtranslate: armv5tevl: armv5tevl
 buildarchtranslate: armv5tejl: armv5tejl
+buildarchtranslate: armv5tejvl: armv5tejvl
 buildarchtranslate: armv6l: armv6l
+buildarchtranslate: armv6vl: armv6vl
 
 buildarchtranslate: atarist: m68kmint
 buildarchtranslate: atariste: m68kmint
@@ -314,8 +323,13 @@ arch_compat: hppa1.0: parisc
 arch_compat: parisc: noarch
 
 arch_compat: armv4b: noarch
+arch_compat: armv6vl: armv6l
+arch_compat: armv6vl: armv5tejvl
 arch_compat: armv6l: armv5tejl
+arch_compat: armv5tejvl: armv5tejl
+arch_compat: armv5tejvl: armv5tevl
 arch_compat: armv5tejl: armv5tel
+arch_compat: armv5tevl: armv5tel
 arch_compat: armv5tel: armv4tl
 arch_compat: armv4tl: armv4l
 arch_compat: armv4l: armv3l
@@ -412,8 +426,13 @@ buildarch_compat: mips: noarch
 buildarch_compat: mipsel: noarch
 
 buildarch_compat: armv4b: noarch
+buildarch_compat: armv6vl: armv6l
+buildarch_compat: armv6vl: armv5tejvl
 buildarch_compat: armv6l: armv5tejl
+buildarch_compat: armv5tejvl: armv5tejl
+buildarch_compat: armv5tejvl: armv5tevl
 buildarch_compat: armv5tejl: armv5tel
+buildarch_compat: armv5tevl: armv5tel
 buildarch_compat: armv5tel: armv4tl
 buildarch_compat: armv4tl: armv4l
 buildarch_compat: armv4l: armv3l
