rpm/rpmrctests.diff

60 lines
1.4 KiB
Diff

Patch machine detection code: detect transmeta, rename parisc to hppa. [#52713]
Index: lib/rpmrc.c
===================================================================
--- lib/rpmrc.c.orig
+++ lib/rpmrc.c
@@ -2,9 +2,6 @@
#include "system.h"
#include <stdarg.h>
-#if defined(__linux__) && defined(__powerpc__)
-#include <setjmp.h>
-#endif
#include <ctype.h> /* XXX for /etc/rpm/platform contents */
@@ -975,6 +972,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)
@@ -1112,15 +1117,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(/*@out@*/ const char ** arch,
@@ -1255,6 +1251,11 @@ static void defaultMachine(/*@out@*/ con
/* 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)
{