File rpmrctests.diff of Package rpm

Patch machine detection code: detect transmeta, rename parisc to hppa. [#52713]

--- ./lib/rpmrc.c.orig	2010-12-03 12:11:57.000000000 +0000
+++ ./lib/rpmrc.c	2011-05-11 12:48:02.000000000 +0000
@@ -1,9 +1,6 @@
 #include "system.h"
 
 #include <stdarg.h>
-#if defined(__linux__) && defined(__powerpc__)
-#include <setjmp.h>
-#endif
 
 #if HAVE_SYS_UTSNAME_H
 #include <sys/utsname.h>
@@ -788,6 +785,14 @@ static inline int RPMClass(void)
 	
 	cpu = (tfms>>8)&15;
 	
+	if (cpu == 5
+	    && cpuid_ecx(0)=='68xM'
+	    && cpuid_edx(0)=='Teni'
+	    && (cpuid_edx(1) & ((1<<8)|(1<<15))) == ((1<<8)|(1<<15))) {
+		sigaction(SIGILL, &oldsa, NULL);
+		return 6;       /* has CX8 and CMOV */
+	}
+
 	sigaction(SIGILL, &oldsa, NULL);
 
 	if (cpu < 6)
@@ -924,15 +929,6 @@ static int is_geode()
 }
 #endif
 
-#if defined(__linux__) && defined(__powerpc__)
-static jmp_buf mfspr_jmpbuf;
-
-static void mfspr_ill(int notused)
-{
-    longjmp(mfspr_jmpbuf, -1);
-}
-#endif
-
 /**
  */
 static void defaultMachine(const char ** arch,
@@ -1059,6 +1055,11 @@ static void defaultMachine(const char **
 	   /* big endian */
 		strcpy(un.machine, "mips");
 #	endif
+	/* in linux, lets rename parisc to hppa */
+#if defined(__linux__)
+	if (!strcmp(un.machine,"parisc"))
+	    strcpy(un.machine,"hppa");
+#endif
 
 #	if defined(__hpux) && defined(_SC_CPU_VERSION)
 	{