From: H.J. Lu Date: Wed, 20 May 2009 13:32:14 +0000 (+0000) Subject: driver-i386.c (host_detect_local_cpu): Check extended family and model for Intel... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=37c5043589c8a28e3e2dc64bdc78fa22be5f96e1;p=platform%2Fupstream%2Fgcc.git driver-i386.c (host_detect_local_cpu): Check extended family and model for Intel processors. 2009-05-20 H.J. Lu * config/i386/driver-i386.c (host_detect_local_cpu): Check extended family and model for Intel processors. Support Intel Atom. From-SVN: r147736 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59721f4..4ac176d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-05-20 H.J. Lu + + * config/i386/driver-i386.c (host_detect_local_cpu): Check + extended family and model for Intel processors. Support Intel + Atom. + 2009-05-20 Olivier Hainque * gstab.h (stab_code_type): Define, to be used instead of the diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index cb66937..d4ba466 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -395,9 +395,22 @@ const char *host_detect_local_cpu (int argc, const char **argv) __cpuid (1, eax, ebx, ecx, edx); - /* We don't care for extended family. */ model = (eax >> 4) & 0x0f; family = (eax >> 8) & 0x0f; + if (vendor == SIG_INTEL) + { + unsigned int extended_model, extended_family; + + extended_model = (eax >> 12) & 0xf0; + extended_family = (eax >> 20) & 0xff; + if (family == 0x0f) + { + family += extended_family; + model += extended_model; + } + else if (family == 0x06) + model += extended_model; + } has_sse3 = ecx & bit_SSE3; has_ssse3 = ecx & bit_SSSE3; @@ -496,8 +509,8 @@ const char *host_detect_local_cpu (int argc, const char **argv) break; case PROCESSOR_PENTIUMPRO: if (has_longmode) - /* It is Core 2 Duo. */ - cpu = "core2"; + /* It is Core 2 or Atom. */ + cpu = (model == 28) ? "atom" : "core2"; else if (arch) { if (has_sse3)