From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KzLDP-0004KG-V3 for qemu-devel@nongnu.org; Sun, 09 Nov 2008 20:05:16 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KzLDP-0004K4-Jn for qemu-devel@nongnu.org; Sun, 09 Nov 2008 20:05:15 -0500 Received: from [199.232.76.173] (port=57469 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KzLDP-0004K1-CN for qemu-devel@nongnu.org; Sun, 09 Nov 2008 20:05:15 -0500 Received: from savannah.gnu.org ([199.232.41.3]:52668 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KzLDP-0005w6-6C for qemu-devel@nongnu.org; Sun, 09 Nov 2008 20:05:15 -0500 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1KzLDL-0004Sf-Kd for qemu-devel@nongnu.org; Mon, 10 Nov 2008 01:05:14 +0000 Received: from balrog by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1KzLDC-0004R3-9Z for qemu-devel@nongnu.org; Mon, 10 Nov 2008 01:05:03 +0000 MIME-Version: 1.0 Errors-To: balrog Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Andrzej Zaborowski Message-Id: Date: Mon, 10 Nov 2008 01:05:02 +0000 Subject: [Qemu-devel] [5664] x86 CPUID extended family/model (Andre Przywara). Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 5664 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5664 Author: balrog Date: 2008-11-10 01:05:01 +0000 (Mon, 10 Nov 2008) Log Message: ----------- x86 CPUID extended family/model (Andre Przywara). x86 CPUs feature extended family/model bits in CPUID leaf 0000_0001|EAX. Refer to page 10 in: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25481.pdf Those bits are necessary to model newer AMD CPUs: -cpu qemu64,family=15,model=65,stepping=3 or -cpu qemu64,family=16,model=4,stepping=2 Signed-off-by: Andre Przywara Modified Paths: -------------- trunk/target-i386/helper.c Modified: trunk/target-i386/helper.c =================================================================== --- trunk/target-i386/helper.c 2008-11-09 19:52:36 UTC (rev 5663) +++ trunk/target-i386/helper.c 2008-11-10 01:05:01 UTC (rev 5664) @@ -337,7 +337,7 @@ } else if (!strcmp(featurestr, "model")) { char *err; model = strtol(val, &err, 10); - if (!*val || *err || model < 0 || model > 0xf) { + if (!*val || *err || model < 0 || model > 0xff) { fprintf(stderr, "bad numerical value %s\n", val); goto error; } @@ -416,7 +416,12 @@ env->cpuid_vendor3 = CPUID_VENDOR_INTEL_3; } env->cpuid_level = def->level; - env->cpuid_version = (def->family << 8) | (def->model << 4) | def->stepping; + if (def->family > 0x0f) + env->cpuid_version = 0xf00 | ((def->family - 0x0f) << 20); + else + env->cpuid_version = def->family << 8; + env->cpuid_version |= ((def->model & 0xf) << 4) | ((def->model >> 4) << 16); + env->cpuid_version |= def->stepping; env->cpuid_features = def->features; env->pat = 0x0007040600070406ULL; env->cpuid_ext_features = def->ext_features;