# HG changeset patch # User Marco Bodrato # Date 1338104524 -7200 # Node ID ffdad0cda019a912c0cbb4e159595c34a176139f # Parent 5e296f996b87f5bd747fc7075313911b42494d1e mpn/x86_64/fat/fat.c: abort iff longmode-capable-bit is turned off. diff -r 5e296f996b87 -r ffdad0cda019 mpn/x86_64/fat/fat.c --- a/mpn/x86_64/fat/fat.c Thu May 24 14:26:27 2012 +0200 +++ b/mpn/x86_64/fat/fat.c Sun May 27 09:42:04 2012 +0200 @@ -1,4 +1,4 @@ -/* x86 fat binary initializers. +/* x86_64 fat binary initializers. Contributed to the GNU project by Kevin Ryde (original x86_32 code) and Torbjorn Granlund (port to x86_64) @@ -7,7 +7,7 @@ THEY'RE ALMOST CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES OR DISAPPEAR COMPLETELY IN FUTURE GNU MP RELEASES. -Copyright 2003, 2004, 2009, 2011 Free Software Foundation, Inc. +Copyright 2003, 2004, 2009, 2011, 2012 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -187,6 +187,11 @@ family = ((fms >> 8) & 0xf) + ((fms >> 20) & 0xff); model = ((fms >> 4) & 0xf) + ((fms >> 12) & 0xf0); + /* Check extended feature flags */ + __gmpn_cpuid (dummy_string, 0x80000001); + if ((dummy_string[4 + 29 / 8] & (1 << (29 - 3 * 8))) == 0) + abort (); /* longmode-capable-bit turned off! */ + /*********************************************************/ /*** WARNING: keep this list in sync with config.guess ***/ /*********************************************************/ @@ -194,30 +199,9 @@ { switch (family) { - case 4: - case 5: - abort (); /* 32-bit processors */ - case 6: switch (model) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: /* Banias */ - case 0x0a: - case 0x0b: - case 0x0c: - case 0x0d: /* Dothan */ - case 0x0e: /* Yonah */ - abort (); /* 32-bit processors */ - case 0x0f: /* Conroe Merom Kentsfield Allendale */ case 0x10: case 0x11: @@ -276,10 +260,6 @@ { switch (family) { - case 5: - case 6: - abort (); - case 15: /* k8 */ case 16: /* k10 */ /* CPUVEC_SETUP_athlon */ @@ -290,14 +270,9 @@ { switch (family) { - case 5: - abort (); /* 32-bit processors */ - case 6: - if (model < 15) - abort (); /* 32-bit processors */ - - CPUVEC_SETUP_nano; + if (model >= 15) + CPUVEC_SETUP_nano; break; } }