summaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
authorStefan Reinauer <stepan@coresystems.de>2009-03-06 19:54:15 +0000
committerStefan Reinauer <stepan@openbios.org>2009-03-06 19:54:15 +0000
commit45cc550c3ab24e6c68fd0f9dd5ea2f96cf9afc38 (patch)
tree76ea74af4b67128fade77f25479020e274814eb9 /src/cpu
parent3b387458b57f369056b0a45bf4f17e5e074c13ce (diff)
Some updates for core/core duo/core2/core2 duo cpus.
The microcode is from Intel's Linux microcode file, so it's unproblematic. Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Peter Stuge <peter@stuge.se> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3983 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/cpu')
-rw-r--r--src/cpu/intel/model_6ex/model_6ex_init.c94
-rw-r--r--src/cpu/intel/model_6fx/microcode_m206f257.h291
-rw-r--r--src/cpu/intel/model_6fx/microcode_m206f6c7.h291
-rw-r--r--src/cpu/intel/model_6fx/model_6fx_init.c146
4 files changed, 817 insertions, 5 deletions
diff --git a/src/cpu/intel/model_6ex/model_6ex_init.c b/src/cpu/intel/model_6ex/model_6ex_init.c
index 169b908901..6ecaca6d15 100644
--- a/src/cpu/intel/model_6ex/model_6ex_init.c
+++ b/src/cpu/intel/model_6ex/model_6ex_init.c
@@ -52,6 +52,76 @@ static void fill_processor_name(char *processor_name)
strcpy(processor_name, processor_name_start);
}
+#define IA32_FEATURE_CONTROL 0x003a
+
+#define CPUID_VMX (1 << 5)
+#define CPUID_SMX (1 << 6)
+static void enable_vmx(void)
+{
+ struct cpuid_result regs;
+ msr_t msr;
+
+ msr = rdmsr(IA32_FEATURE_CONTROL);
+
+ if (msr.lo & (1 << 0)) {
+ /* VMX locked. If we set it again we get an illegal
+ * instruction
+ */
+ return;
+ }
+
+ regs = cpuid(1);
+ if (regs.ecx & CPUID_VMX) {
+ msr.lo |= (1 << 2);
+ if (regs.ecx & CPUID_SMX)
+ msr.lo |= (1 << 1);
+ }
+
+ wrmsr(IA32_FEATURE_CONTROL, msr);
+
+ msr.lo |= (1 << 0); /* Set lock bit */
+
+ wrmsr(IA32_FEATURE_CONTROL, msr);
+}
+
+#define PMG_CST_CONFIG_CONTROL 0xe2
+static void configure_c_states(void)
+{
+ msr_t msr;
+
+ msr = rdmsr(PMG_CST_CONFIG_CONTROL);
+ msr.lo &= ~(1 << 9); // Issue a single stop grant cycle upon stpclk
+
+ // TODO Do we want Deep C4 and Dynamic L2 shrinking?
+ wrmsr(PMG_CST_CONFIG_CONTROL, msr);
+}
+
+#define IA32_MISC_ENABLE 0x1a0
+static void configure_misc(void)
+{
+ msr_t msr;
+
+ msr = rdmsr(IA32_MISC_ENABLE);
+ msr.lo |= (1 << 3); /* TM1 enable */
+ msr.lo |= (1 << 13); /* TM2 enable */
+ msr.lo |= (1 << 17); /* Bidirectional PROCHOT# */
+
+ msr.lo |= (1 << 10); /* FERR# multiplexing */
+
+ // TODO: Only if IA32_PLATFORM_ID[17] = 0 and IA32_PLATFORM_ID[50] = 1
+ msr.lo |= (1 << 16); /* Enhanced SpeedStep Enable */
+
+ // TODO Do we want Deep C4 and Dynamic L2 shrinking?
+ wrmsr(IA32_MISC_ENABLE, msr);
+
+ msr.lo |= (1 << 20); /* Lock Enhanced SpeedStep Enable */
+ wrmsr(IA32_MISC_ENABLE, msr);
+}
+
+#if CONFIG_USBDEBUG_DIRECT
+static unsigned ehci_debug_addr;
+#endif
+
static void model_6ex_init(device_t cpu)
{
char processor_name[49];
@@ -66,13 +136,35 @@ static void model_6ex_init(device_t cpu)
fill_processor_name(processor_name);
printk_info("CPU: %s.\n", processor_name);
+#if CONFIG_USBDEBUG_DIRECT
+ // Is this caution really needed?
+ if(!ehci_debug_addr)
+ ehci_debug_addr = get_ehci_debug();
+ set_ehci_debug(0);
+#endif
+
/* Setup MTRRs */
x86_setup_mtrrs(36);
x86_mtrr_check();
-
+
+#if CONFIG_USBDEBUG_DIRECT
+ set_ehci_debug(ehci_debug_addr);
+#endif
+
/* Enable the local cpu apics */
setup_lapic();
+ /* Enable virtualization */
+ enable_vmx();
+
+ /* Configure C States */
+ configure_c_states();
+
+ /* Configure Enhanced SpeedStep and Thermal Sensors */
+ configure_misc();
+
+ /* TODO: PIC thermal sensor control */
+
/* Start up my cpu siblings */
intel_sibling_init(cpu);
}
diff --git a/src/cpu/intel/model_6fx/microcode_m206f257.h b/src/cpu/intel/model_6fx/microcode_m206f257.h
new file mode 100644
index 0000000000..96977667b5
--- /dev/null
+++ b/src/cpu/intel/model_6fx/microcode_m206f257.h
@@ -0,0 +1,291 @@
+//+++
+// Copyright (c) <1995-2008>, Intel Corporation.
+// All rights reserved.
+//
+// Redistribution. Redistribution and use in binary form, without modification, are
+// permitted provided that the following conditions are met:
+// .Redistributions must reproduce the above copyright notice and the following
+// disclaimer in the documentation and/or other materials provided with the
+// distribution.
+// .Neither the name of Intel Corporation nor the names of its suppliers may be used
+// to endorse or promote products derived from this software without specific prior
+// written permission.
+// .No reverse engineering, decompilation, or disassembly of this software is
+// permitted.
+// ."Binary form" includes any format commonly used for electronic conveyance
+// which is a reversible, bit-exact translation of binary representation to ASCII or
+// ISO text, for example, "uuencode."
+//
+// DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+// HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+//---
+/* Wed Sep 10 11:53:28 CST 2008 */
+/* 2129-m206f257.inc */
+0x00000001, 0x00000057, 0x03152007, 0x000006f2,
+0x07e77759, 0x00000001, 0x00000020, 0x00000fd0,
+0x00001000, 0x00000000, 0x00000000, 0x00000000,
+0xf0aefac0, 0x7c38e188, 0xba5a013f, 0xdfb167bf,
+0x3c3fed5c, 0x9a7527d0, 0x7f3ae5a3, 0x8ab688d1,
+0x348436ab, 0xdc4756d5, 0xfc2a0a22, 0x9f11b7bf,
+0xa47e1335, 0xc1e04f7c, 0xdaaf86cf, 0xa870c161,
+0x072e2279, 0x87ee60b8, 0x3e4b0622, 0x326b4d89,
+0x0652f8e1, 0x2ea0c801, 0xbeaa5953, 0xdc1b6573,
+0x701f392e, 0xed0630f9, 0xbc9b3dfa, 0x1640fe65,
+0x571a23c1, 0x9d913021, 0x895d7d30, 0xd2d2d7d4,
+0xd605ed58, 0x254a7575, 0x0cac66a8, 0xcfe8bbe5,
+0xcdd30390, 0xbb2236d2, 0x4c5c5bee, 0x5aee0bec,
+0xc7ccb2ce, 0x02e4a983, 0xc5920bf7, 0x4ce10d1f,
+0x3fc17820, 0xda1b4e54, 0x3de20b4d, 0x5ff322d2,
+0xd6de8959, 0xe35d9fbb, 0x7b450c74, 0xcdc09449,
+0x25bb7745, 0x056e0ec0, 0x05c27088, 0xeece366b,
+0xd99a08bd, 0xbf7aa5ff, 0xb99fb54a, 0x1e620294,
+0x5498c8b6, 0x7e9feeb8, 0x0bd593db, 0x9ae9d723,
+0xaf9ef586, 0xcf6b95a7, 0x8eb34bd2, 0x378c817a,
+0xc0a0b5a8, 0xd92c8ec3, 0x756277de, 0x6c023ab6,
+0x982be06c, 0xb8a70610, 0x7f5a8718, 0xa677cfa8,
+0x2e7ade57, 0x3978eec5, 0xc34a97d1, 0x37733521,
+0x5692ce95, 0x7b9fc090, 0x0d111e36, 0x6d9fb551,
+0xc48f3b9e, 0x6a1b2dfc, 0x8ba4b179, 0xb00f6962,
+0xfa149366, 0xbb1dc1b3, 0x23a921c0, 0xb96d73b7,
+0xcd4dc6da, 0xfc5e8abb, 0xdb5fe0f2, 0xcb33f9dc,
+0xaf75f866, 0x3dfd2478, 0xe7a5b475, 0x54a611b2,
+0x73994c7d, 0x161b27bc, 0x7f810ba5, 0x8dd5733c,
+0x72fe4c72, 0x2e76dbe3, 0x9f9f0c64, 0x0e21bdbd,
+0x4331bf86, 0x879b1ddc, 0x40c84fce, 0x7c5d11c0,
+0x3faf10ab, 0x3550eae6, 0x26996e67, 0x00ef27d2,
+0xccda83ed, 0x11030e92, 0x757074d7, 0xc5a517dd,
+0xfc3e7fd4, 0xc16d81ed, 0x9044cd87, 0x2d099580,
+0xb25b9d47, 0x5b610359, 0x0e59eeb5, 0x7d19f029,
+0x4cf9706f, 0x0f5c8597, 0xecf7aedb, 0x86d1ee8b,
+0x2c85f041, 0x3015ac75, 0xa0db24d8, 0xa9f07271,
+0xb78ec67e, 0xeca00670, 0xf7d05fe5, 0xdff30312,
+0x6ae19969, 0x63375a04, 0x466a01f5, 0xc171c0da,
+0x93ce8528, 0x703c1aed, 0xcd42cced, 0x32819c8d,
+0xeb642286, 0x72723b25, 0x86c46d68, 0xb64d3c67,
+0x3d3bb64c, 0x60eaf2be, 0x924b7f3d, 0x0bb38768,
+0xaf2deef9, 0x2fa43b64, 0xdb0823ee, 0x7ddb339c,
+0xea1cbf8a, 0xb19895d0, 0x1d6fd197, 0xb9a9343e,
+0x31ce5f2e, 0x9399fc36, 0x14d6f1dd, 0xdd6ed0ac,
+0xd9e8f45a, 0x56dba12c, 0xf5ef138a, 0x981a6eaf,
+0x74fe5839, 0x370aab6a, 0x717df9f6, 0xa4dbc8d1,
+0x3c665e8a, 0x07711522, 0x58911dfd, 0x9276384e,
+0x70dd2327, 0x2613f4ad, 0x67043d57, 0x085bc73e,
+0x13399b60, 0x28b0d7e3, 0xc7101b20, 0xa29550aa,
+0x8177a1dc, 0x5bcc83b2, 0x1cf50fbc, 0x448c109a,
+0x09288db1, 0x1700bdcf, 0xa119bf8e, 0xdaeb3c27,
+0xf21a1004, 0x3490c7e4, 0x6562906d, 0x732225be,
+0x4ca41b48, 0x9807ec37, 0x82c2c81a, 0x182ae052,
+0x337f2a6c, 0x177a866f, 0xb0397a1e, 0x8aa9e3d2,
+0xb596cae5, 0x52630925, 0x069e969f, 0xb8a6cf5d,
+0xe206c823, 0x95768639, 0xeb9ef6c1, 0xdc879822,
+0x805b7540, 0xdbdca41e, 0x92daf8aa, 0x2855131d,
+0x98537e07, 0xf9f437ff, 0x4fd88be0, 0x07cadd26,
+0x61c5f34a, 0xbb6a19cd, 0xc113d97e, 0xc2097fa8,
+0x93df4c5c, 0x71f49496, 0xeeb280b9, 0xd8b31a12,
+0x8c68fe2a, 0x6c85e6c5, 0x665d8833, 0xbf7ca2d8,
+0x8ec9d5fb, 0x2d8ada4b, 0x1112da86, 0x1eadb344,
+0x72bb72b4, 0x1146c42e, 0x9c4a1796, 0x103a8aa2,
+0x4e22694d, 0xdabb9fb9, 0xa643d98b, 0xa1e82adb,
+0x5e1f20ec, 0xc1179fc2, 0xdf5791d1, 0x1071ced5,
+0x940a595b, 0x9d575c0c, 0x572a6eb6, 0x68866e0b,
+0x2cc54642, 0xa0b47fe9, 0xd53f7591, 0x40c57980,
+0x7e927dfc, 0xad644a5e, 0x2f6b3a0a, 0xb4c788d4,
+0x59131505, 0xdf982aa7, 0x7eed9890, 0xc7a79316,
+0xa390c1e8, 0xb6a81315, 0x8b6ecc2f, 0xa18d162e,
+0xa96a54a1, 0xf9801a9e, 0x763aa20d, 0xfcba9e42,
+0x1d8f9e51, 0xb63608fe, 0xd0bca8d5, 0xc05b6fc3,
+0x1dabad44, 0x864011c5, 0x92a94ac3, 0x7e2bdb44,
+0xf1e0e0a4, 0x4e988af4, 0x51934b03, 0xc2eb8a5d,
+0xf58b0dfe, 0x88c9c264, 0xe81e0809, 0xb3087c8c,
+0x1f0cdd31, 0xcab43925, 0x02120053, 0xd4d308cb,
+0x5727a77a, 0xc0a58a07, 0x45b8004e, 0x4b887559,
+0xd5a6cfbd, 0x096d6b43, 0x8f7c3cf9, 0x10a9f009,
+0x8b55e8c8, 0x286cd461, 0x5d340d0f, 0x2e071f42,
+0x3c156062, 0x4a2ba5ed, 0x466f979d, 0x36ad6534,
+0x432a28d6, 0x23dd3681, 0xb782ecfd, 0x4ac65284,
+0x190c3fe3, 0x32371293, 0x1b4a968c, 0x4d140c3b,
+0xe9602892, 0xaa61bb7f, 0x87d82028, 0x833b076d,
+0xf5dfc16a, 0xe7e7e8cc, 0x9b9b123d, 0xe55f7f06,
+0x019ca425, 0x8c2ad978, 0x6e53312e, 0x4c68cc59,
+0x1505573b, 0xe50246c3, 0xe13f8925, 0xb40d8c6a,
+0x6df7688e, 0x64ddc299, 0xfa2de5ee, 0x8e22c09b,
+0xfc43e080, 0x27bdf731, 0xbd811f19, 0x50eb4114,
+0x33aefa80, 0x0dd5a922, 0xcb087d89, 0xf594aaaf,
+0x469590d5, 0xc2610f7e, 0x357f27f1, 0xe30b5697,
+0x744a47d4, 0x18703bcc, 0xbd00cbb4, 0x859b13b1,
+0x83259929, 0x71700966, 0xa6586c05, 0x70a61cb9,
+0x67af2d49, 0xbc1a3e58, 0xf6f3b5c7, 0x916983f3,
+0x3b99438f, 0x993ea084, 0xd2e842ab, 0xaae24c93,
+0x38902c9c, 0xcdcaa742, 0x1407900f, 0x4fa9a83f,
+0x0d87845e, 0x3dab31dc, 0xd1f773ee, 0x0b5181b9,
+0x0dd327f1, 0x9de29e99, 0x11d78ea2, 0xc66b0639,
+0xc97fae80, 0xd352bbe1, 0xfc19afbc, 0x713381a9,
+0x51b9502a, 0x355de567, 0x040ee678, 0xf4085bdf,
+0xc8b52da4, 0x7b851dfd, 0x94f53879, 0x936c3596,
+0x005b0eda, 0xb17d6d52, 0xf576900a, 0x99234c3d,
+0xdd2388f3, 0x3920a2eb, 0xce320776, 0xbaa6bb20,
+0x82ccef09, 0x15f3fa80, 0x30e218d5, 0x9f7c35f6,
+0xfc422ad6, 0x697ba237, 0xe9bd989a, 0x20573da5,
+0x526140be, 0x54023897, 0xd9ff4fbe, 0xee0c4495,
+0xe62410a3, 0x5150c878, 0x9a2c671c, 0xf76de5ad,
+0xd3eb74b4, 0x0688ec67, 0x7d4f12b3, 0x4fcbeb96,
+0x81b9489b, 0x257b67a2, 0x0538b984, 0x4aeb1a19,
+0xb3632b9f, 0x42148957, 0x71801f3e, 0x3ed494f4,
+0xe1591118, 0xa4542eeb, 0xca3d0445, 0x03b948a9,
+0x767a31b4, 0x090f62e1, 0x701890e7, 0x1cdf23f4,
+0xaba00984, 0x1b42b0e0, 0xb5369d19, 0x0e582a3d,
+0x079fc09d, 0x0a6b1256, 0x166e21c0, 0x4dfbf861,
+0x68d90df7, 0x1392544f, 0x52e420f2, 0xaa437eb1,
+0x355fe827, 0x5e5a497f, 0xb06b9003, 0x118c85ed,
+0x7c8b1f9b, 0x710f30bf, 0xf42ad4e0, 0x70a17971,
+0x3321840d, 0xebf2f3ca, 0x6820d080, 0xe5987997,
+0xf1bcc9b5, 0x9357765e, 0x317884cf, 0x3449efff,
+0x641d249c, 0x8dae0eec, 0xa5db1774, 0x1c06f4c6,
+0x0dbd7c38, 0x18dd265a, 0x206eed23, 0x1b1f3780,
+0x4e6b063c, 0x07169a13, 0x1b16ed6e, 0x87de6f65,
+0xfe05eeca, 0xd3e6958f, 0xef53638e, 0xb8fa5b3a,
+0xed4aa69c, 0xf229c96b, 0x922efea9, 0xf2e9f8d6,
+0x7626207d, 0xac94bddd, 0xa055f4d1, 0x7cf49e93,
+0xb68191fd, 0x5d1e0522, 0xb778bc1a, 0x667773ab,
+0x0547d582, 0xb990ca6f, 0xae44199e, 0x090f8cbb,
+0x66909346, 0x990b0a60, 0x866f804e, 0xafb29f1d,
+0x85635204, 0x5531bc16, 0x766099af, 0x3128bdc5,
+0x564838ac, 0x0f6a5d39, 0xc560f67b, 0xc7820c23,
+0x05bb1328, 0x6f9484ee, 0x319809ab, 0xc0dead11,
+0x30928a58, 0xcea6f365, 0xae4c63e2, 0x375bb2f5,
+0x0d7b1cdb, 0x6777d042, 0x70d56f28, 0xa67ebccb,
+0x1f02a61b, 0x148f5044, 0xa2ff3cd5, 0xdacfcf0e,
+0xcec94c27, 0xee4af516, 0x0cddc248, 0x018cda30,
+0x9d70143d, 0x197a6a8e, 0x6f651d33, 0x6faa4e8e,
+0x8ebf8215, 0xead609df, 0xfd2f388b, 0xccb70ecc,
+0x4a670925, 0xdd621f46, 0xb9e0bae9, 0xc9937471,
+0x0a4232eb, 0xc7ba26cb, 0x8c3a7e17, 0xcef032c2,
+0x73b75440, 0xcca87896, 0xb544c0d8, 0xcadfa89e,
+0x3392961d, 0x5d99f95a, 0x00974612, 0xc5b871c6,
+0x9336a0b2, 0x9dc01d28, 0xcf6f39e6, 0x847c7351,
+0x0b990971, 0x70184dd8, 0xe5257c82, 0x721e7ef4,
+0x8922a618, 0xacc61d52, 0xa31cb090, 0xec6e46bf,
+0x0e22d152, 0x88c3a2f8, 0xd4cb10f6, 0x1e2bd43f,
+0x67d26f37, 0xf6a2b4d3, 0xd4229cef, 0x89626856,
+0x81400377, 0xa80b84d0, 0x1f5b6e64, 0xb5def54f,
+0x8db7711e, 0x69b7f916, 0x1d3dda64, 0xe5c6d920,
+0x6b3459ab, 0x5dc96ae2, 0x083308d7, 0xfa84b8a6,
+0xb8f0a688, 0xa806c32f, 0x04d3a1a8, 0x58f5f04c,
+0xf0233835, 0x7f5cb42f, 0x5eceef54, 0x577374c5,
+0x51aa783b, 0x8ffe6da8, 0xc118f745, 0xe881675f,
+0xb1e02bf3, 0x63db76ef, 0x8b0848ac, 0x0e0573ec,
+0x1d4fc251, 0xf430354c, 0x38b5b60e, 0x0c942f9c,
+0x67f1905c, 0x7428f8b0, 0x79297d7e, 0xa93f388c,
+0x051e8616, 0x48e03984, 0x04d97406, 0x7413b6d4,
+0x6a3f6f8d, 0xfaed5a44, 0xdc89c0a1, 0x1b2611d1,
+0x21ca7dd6, 0x9c9d1448, 0xab3687c2, 0xc275130d,
+0xbeec53d3, 0x93e05b62, 0xd164a9d6, 0x1418ada5,
+0xcbb235da, 0x01cde834, 0x16d895fb, 0x5d916eeb,
+0x2f8a4045, 0x671dd425, 0xab40ec3b, 0xed3eefda,
+0xc1a93fd2, 0x348066fe, 0x538e9697, 0x3a73512a,
+0x0eded14d, 0x7cc7085a, 0x1a769924, 0x8e11533c,
+0xb961df1e, 0x73db50a8, 0xfe625496, 0x79b0bef6,
+0x712f024b, 0x997a8bd8, 0x3009ce33, 0x38a922fa,
+0x2f1b74d9, 0x70342c80, 0x587b1639, 0x9f02fd01,
+0x5c8c4977, 0x6b0d1be1, 0xed9fb8fe, 0x0d1c9fa4,
+0x3e51d08a, 0x2ecdd796, 0x71768e1b, 0x803c8b2d,
+0xc009ac20, 0x242dc6ee, 0x6c9cfe25, 0x8cd3dbc4,
+0xb35832db, 0x4613ba88, 0xab1274dd, 0xda19e833,
+0x49c0fb40, 0xeb37ba33, 0xdf06e975, 0x90ad6d1b,
+0x8aef380d, 0xa4cfb894, 0x107819ab, 0x01f89df1,
+0x1ea242cc, 0x17626b76, 0x9568d1a8, 0x3e584238,
+0x9c0ba10f, 0x3de6d8b8, 0xbcff277e, 0x94ba4d60,
+0x24f88a80, 0x7d336afe, 0x04f4af38, 0xa435ae27,
+0x82c5de40, 0x28b78b43, 0x5f4f3836, 0x809d1a13,
+0xdb95ee3a, 0xacc8e9b4, 0xd0d6cf98, 0x9ba813cc,
+0x6e89a462, 0x2afbe3c3, 0x5d662eef, 0x5365d477,
+0x98bd0b86, 0x81c1601f, 0x15cd7693, 0x8b3d7ef9,
+0xaf25331e, 0x49c24e40, 0xe6e8a26c, 0x0f083b65,
+0xdcaa15a9, 0x26101687, 0x9dd1cad9, 0x80a9b15b,
+0xac16e5e1, 0xb85861bd, 0x78c59bbe, 0x284648f0,
+0x1f1af2cf, 0xbb834fbf, 0xd7d71460, 0xcf44c671,
+0x573bd611, 0x76e94cde, 0x17c03286, 0x02621543,
+0x705d0c85, 0x2b6d6b0f, 0xa8f17a22, 0xbde3ed1e,
+0x09afd9cc, 0xf84955f8, 0xa7d1dabb, 0x82343b59,
+0xa3fbc5f1, 0xfcdce701, 0xd600158c, 0x71262e33,
+0xcb257268, 0xf3f17de9, 0x257ec37e, 0x366552f6,
+0xd39c706d, 0x1372a7ef, 0x84fb48ea, 0xf1c4776a,
+0x182f548f, 0xa5499971, 0x488e7904, 0x4167ba8d,
+0x796aa238, 0x41eedf0e, 0xe65e7ffc, 0x7352ab66,
+0x7ea8d981, 0x93c717f5, 0xc8124404, 0xa7447a65,
+0x231dd863, 0x17581b25, 0xd10a9250, 0x5807994a,
+0x12b18ae5, 0x80d03bbb, 0x7595c1b1, 0x6e878a42,
+0xbc2db045, 0xde5c7e5d, 0x8f096855, 0x82dc150c,
+0x7afd3dca, 0xf274e65a, 0x2abbe67f, 0x0145568c,
+0x014dba37, 0x9a182028, 0xd71618ac, 0xc87934bd,
+0xe96101d1, 0x55d1976c, 0x471c8505, 0x7a36d839,
+0x5d62a9ee, 0xf3c54a8a, 0xa2be15d9, 0x244087c9,
+0x042c8037, 0x23224689, 0x281c5d73, 0x2139ecfc,
+0xffb8bc8a, 0x834fdd11, 0x9cd5a5bd, 0xa3368319,
+0x7e5bef0c, 0x4ae2dbda, 0x86d90089, 0x6675dfce,
+0x48876262, 0xcec72538, 0x11dc5c80, 0x86a730f9,
+0x313565c9, 0xe3e5be11, 0x106d7cce, 0x752b8be2,
+0x3d00a5bc, 0xe6f70e95, 0x44447ac8, 0x600df30c,
+0x8335ac3b, 0x8816ddee, 0x700982fe, 0xee495741,
+0x48c7e81c, 0xa3d55da2, 0xb0172982, 0x70ab2158,
+0xd4460621, 0x3a9e528b, 0x59b18a7b, 0xf4dabc4c,
+0xa8454763, 0x70877bb6, 0x66005c97, 0xaf292c06,
+0x7b843db1, 0xf343b59b, 0x25cdc7b5, 0xa41da617,
+0x9e9d895e, 0xc936f475, 0x7270925a, 0x30024230,
+0x8e72f53d, 0x2b6c1b6f, 0x1a69732c, 0x7ed5aff5,
+0xfc18a2a3, 0xaf377cc1, 0xbff09a78, 0x4b4e0814,
+0x95a0b2c1, 0x270398de, 0x201fca94, 0x2a032a4f,
+0x131542b4, 0x0d7306da, 0x2d1c3496, 0xcc3c6d8d,
+0xa814ddc9, 0xa3b3a991, 0x17ee60c2, 0x852c0b8d,
+0x11e5853a, 0x762002a7, 0x92c5311d, 0x0d4bf7e1,
+0xfffec870, 0xe3d35e5b, 0xff6ecfb9, 0xdedae6ff,
+0x0111a772, 0x9808e780, 0x29c336e8, 0xe9bc05df,
+0x5bedde11, 0x945565af, 0xaff808fe, 0x87e3423d,
+0x4de6f98f, 0x93b4adef, 0xbf704fa4, 0x09120e91,
+0xd54f3692, 0xdf8eab1e, 0xfabbf59c, 0xe74318be,
+0xaab87ffc, 0x29fa791c, 0xe3915552, 0xa652cb9b,
+0xa1252e74, 0xb35b723b, 0x542aa28b, 0x12fcc5b0,
+0x3941f962, 0x82bcc6cc, 0x47b11974, 0xb821611f,
+0x78b34250, 0xf1be5659, 0x561b9e61, 0x6f3bd501,
+0x584e6f5c, 0xd54ed547, 0xacebcd21, 0x7b5ff816,
+0xb64ad233, 0x9f2f330d, 0x69fb1ece, 0xac8710dd,
+0x58dc6c60, 0x9bee6139, 0xbb10ad0e, 0xbd8cd5dd,
+0xebc0ce9d, 0xa733274f, 0x884d9b55, 0x42b08b63,
+0xafa54a74, 0x1c7ccf64, 0x93a20191, 0xaaa3132e,
+0xc69831d1, 0x54634889, 0xfbfe3efc, 0xd3cf68d4,
+0x302e3117, 0xf5693131, 0xc3ce8c6c, 0x1f03cd89,
+0x6243334c, 0xf16bc80f, 0xdca5f130, 0xcb2cd956,
+0x4c1bb421, 0xe8de533c, 0x7f86703a, 0x29aa897e,
+0xdd54acad, 0x76b2f2ae, 0x7ef82b71, 0x2e30970b,
+0xba402597, 0x9a653ab4, 0xd68fcf53, 0x2d9f0d15,
+0x7f9efd1c, 0x2363d147, 0x5327289a, 0xe89229f3,
+0xd63a535c, 0x7efe9273, 0x64f2e3a3, 0x9bdf65a7,
+0x26b6edfb, 0x1b9c7bfe, 0x5d14b3de, 0x54d575fb,
+0x6d65db4c, 0x95648b7f, 0xa8a3b8f0, 0x7cc7ad46,
+0xe20e6dbb, 0x8488a45f, 0x8ebc2932, 0xd4767316,
+0x3e8c4b8a, 0xbab7402c, 0xfc1e217e, 0xe5c5bf82,
+0x6928fe2e, 0xc88528e9, 0x4b2e4e8f, 0xdd938b86,
+0x0c964f98, 0xfc88d480, 0x35fcaf9e, 0xdd7bbe9d,
+0x197d005a, 0x4d40b3b3, 0xcf203155, 0x0d2fa621,
+0x752d2c58, 0xb12bac12, 0x1e7e8c23, 0x94215d54,
+0x9854a71c, 0x4de63c64, 0x7a012529, 0x9c171f8d,
+0x9e71def7, 0x3bd17d50, 0x11f175d9, 0xec78abf3,
+0x7b529eee, 0xd3a69fc3, 0x5b718676, 0x58214d29,
+0xa8bd2c34, 0x41ea00ab, 0xa03f64d6, 0x4ee342b0,
+0x32b1e444, 0x1c1801a4, 0xc8424702, 0x334a7e35,
+0x50cf1543, 0x3b22b495, 0x88683776, 0x8e2e0154,
+0x6155c033, 0x4e2fa6ac, 0x42ace700, 0x8d64f97c,
+0xaf9ced17, 0xb2a5cb92, 0xa558582d, 0x88705de7,
+0x9e528d59, 0x84bd45e4, 0x5cb680c0, 0xcd48fa5c,
diff --git a/src/cpu/intel/model_6fx/microcode_m206f6c7.h b/src/cpu/intel/model_6fx/microcode_m206f6c7.h
new file mode 100644
index 0000000000..12e58b2166
--- /dev/null
+++ b/src/cpu/intel/model_6fx/microcode_m206f6c7.h
@@ -0,0 +1,291 @@
+//+++
+// Copyright (c) <1995-2008>, Intel Corporation.
+// All rights reserved.
+//
+// Redistribution. Redistribution and use in binary form, without modification, are
+// permitted provided that the following conditions are met:
+// .Redistributions must reproduce the above copyright notice and the following
+// disclaimer in the documentation and/or other materials provided with the
+// distribution.
+// .Neither the name of Intel Corporation nor the names of its suppliers may be used
+// to endorse or promote products derived from this software without specific prior
+// written permission.
+// .No reverse engineering, decompilation, or disassembly of this software is
+// permitted.
+// ."Binary form" includes any format commonly used for electronic conveyance
+// which is a reversible, bit-exact translation of binary representation to ASCII or
+// ISO text, for example, "uuencode."
+//
+// DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+// HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+//---
+/* Wed Sep 10 11:53:28 CST 2008 */
+/* 2127-m206f6c7.inc */
+0x00000001, 0x000000c7, 0x03152007, 0x000006f6,
+0xd863aca5, 0x00000001, 0x00000020, 0x00000fd0,
+0x00001000, 0x00000000, 0x00000000, 0x00000000,
+0xf135893c, 0x4c42e3f3, 0xb73a55b6, 0x351ee5de,
+0xb62b15d8, 0xa4b7a683, 0x15e59363, 0xb5a88344,
+0x83cb3484, 0x27b18c8d, 0x94d04ac1, 0x8f1f77db,
+0x13b4b7fe, 0xa649fe2c, 0xb24e07e8, 0x1599f3a0,
+0xb3769963, 0xa12ac372, 0x250722b3, 0x9d15fb7d,
+0x9813a1b2, 0x117335fd, 0x8c1230f9, 0x81968e27,
+0x05a86156, 0x9b82a393, 0x9169c94d, 0x31b89d77,
+0x973c1fb2, 0x8f75d325, 0x6386e9f8, 0xa8df1a90,
+0xea70b02b, 0x5eb51ed7, 0x8c97f33c, 0xf9c1b8a6,
+0x5eb80126, 0xbec523d7, 0xb974f767, 0x73b44b82,
+0xf832f648, 0x8d196107, 0x7c0879bf, 0xcd6d630c,
+0x22466897, 0x4816ea2d, 0x6efda835, 0x25832e9b,
+0x7898d668, 0x59131743, 0x0f5c9772, 0x6f5a9ec7,
+0xbe40da64, 0x2d376de9, 0x85fdddd4, 0x9721c351,
+0x12a9d1de, 0xbfb37d7c, 0xb21a779f, 0x2593f254,
+0xa1737d77, 0x9aa94919, 0x314de914, 0xb56a3111,
+0x82a98637, 0x15fcc11e, 0x882e1550, 0x9dc71080,
+0x2effb94c, 0xaca5f479, 0xaa2db04b, 0x2ec75a37,
+0x80c324c1, 0xb387798a, 0x092e24c6, 0x82f54f78,
+0x2799d295, 0x010b6198, 0x38d497ab, 0x255044a9,
+0x28f09f9f, 0x12e3669b, 0x2937f975, 0x21332882,
+0x2a0c3de4, 0x127b6e06, 0x196c4c4a, 0x339de5f3,
+0x2d1952eb, 0x11b661e9, 0x38c5a4d9, 0x08d02b39,
+0x07714640, 0x14394d59, 0x3e2f5bbd, 0x0898e888,
+0x3ebde0c8, 0x11078f3c, 0x32e047cd, 0x3b8a1671,
+0x3d5400a2, 0x1ee97d92, 0x057760c9, 0x31ddc483,
+0x6b672bb1, 0x0239c65b, 0x5168de3c, 0x57da3987,
+0x0a411c03, 0x6ac8c9c3, 0x38c1814d, 0x138ae982,
+0x17fe9610, 0x22c1b2c2, 0x0f64d62b, 0x292f29a6,
+0x172bd3a3, 0x2660983f, 0x3f34706f, 0x17ddc325,
+0x3be7c056, 0x24297b2c, 0x0d7b4a97, 0x1ccace5e,
+0x362c300c, 0x2d8a24c7, 0x40a8b209, 0x27e2b212,
+0x51f58204, 0x47291d65, 0x049de5d0, 0x620f697e,
+0x4a407809, 0x2c8afcc9, 0x3adb22f4, 0x4dec3b92,
+0x46981a3b, 0x379b774c, 0x7f3ab853, 0x7d8d941d,
+0x35d5717b, 0x4865f240, 0x657ae90a, 0x38db767f,
+0x5ba5af85, 0x624bde90, 0x27ca5b94, 0x7d6de192,
+0x74752869, 0x1aa685e2, 0x626ac31b, 0x78db6d6c,
+0x10924be8, 0x7f5fa69a, 0x70b7ba13, 0x35ea4627,
+0x6e8d8ce0, 0x5a36f924, 0x368ab401, 0x7271a3bb,
+0x5a552eaa, 0x32d42181, 0x6db87723, 0x6459b69e,
+0x3b7f2229, 0x516935fe, 0x7af35a05, 0x34d6f025,
+0x4fb65637, 0x7f9446c9, 0x29279aae, 0x630458d9,
+0x7d91017f, 0x12138189, 0x670175f5, 0x79410f28,
+0x10096979, 0x6c00509a, 0x65007291, 0x231b6f99,
+0x6c086043, 0x4bb85e3c, 0x2a14b537, 0x75ac8df6,
+0x50f5171f, 0x3872a743, 0x624efe16, 0x654ede16,
+0x388a9b3a, 0x52e4d776, 0x7875c3b4, 0x2487fd53,
+0x468cd150, 0x6d323e69, 0x2ce7e3c2, 0x695c3c62,
+0x77e824a3, 0x11756de6, 0x7bf7c901, 0x74e5c26d,
+0x1afa9675, 0x69b9df37, 0x73b86637, 0x24e87f5d,
+0x7c0e8526, 0x4901376c, 0x31fb6e1b, 0x660dbe1a,
+0x53170be5, 0x21c35688, 0x73503139, 0x6064b5df,
+0x29ba71f5, 0x53bdb0d1, 0x6536739e, 0x3a25f143,
+0x443e2b84, 0x73bb1a43, 0x3711fbe7, 0x7c6e4a38,
+0x7780f574, 0x16901e72, 0x69e9671d, 0x60ec9c20,
+0x06890195, 0x7bb14d4b, 0x6292324e, 0x32c9abed,
+0x799488db, 0x50b9af33, 0x299b8a16, 0x7209f8e0,
+0x5add0439, 0x28f8fc56, 0x7f63fe6b, 0x71275304,
+0x20b6a475, 0x4c9bdbbe, 0x662f84b0, 0x3d6cc2d1,
+0x47d6afa4, 0x7ad1c011, 0x2ead22c5, 0x7d908a65,
+0x6e6ccec4, 0x1d7689f7, 0x6ee48904, 0x733ccb6f,
+0x1da0fb77, 0x7bb09d43, 0x7321dd51, 0x2701892c,
+0x7d84793d, 0x4d6492cc, 0x2fa9a321, 0x76b7e6e2,
+0x465dbd1c, 0x33b7fe03, 0x6282c0fc, 0x6301d671,
+0x08afdd4b, 0x521c30f9, 0x165202e8, 0x0401a7ed,
+0x32d4bdcd, 0x37002f6e, 0x29e0b079, 0x3b8f70e6,
+0x1f32ea74, 0x17ca355f, 0x19c8eceb, 0x109551cd,
+0x046136e7, 0x0d1b04c2, 0x3599e1f5, 0x3abb8250,
+0x1bfa131d, 0x12193715, 0x77cdde86, 0x065f6895,
+0x51718435, 0x4731e28b, 0x285fdb8c, 0x4fa6e3cc,
+0x6aa41e77, 0x18cc12b7, 0x3d9bd449, 0x68254258,
+0x41e7cb3e, 0x25b2eb61, 0x42133e78, 0x64f82d73,
+0x112e4c48, 0x798379b6, 0x5f33622d, 0x14d4b234,
+0x6325e99e, 0x524dd17f, 0x04ecf1c3, 0x49e60429,
+0x7065602d, 0x2b0d9ae7, 0x5e7c9b5a, 0x780d283b,
+0x0c835bcc, 0x6721511f, 0x75b36f07, 0x134145d7,
+0x0e814738, 0x4e0aa44d, 0x51a96127, 0x188d63ea,
+0x463147c0, 0x7477864c, 0x220d2e93, 0x4eca7e2f,
+0xc1de753e, 0x078e240c, 0x80b8951a, 0xcd8c655b,
+0x6157aed4, 0xbf7a4cbb, 0xeedfff8d, 0x6b6efec2,
+0x3918ac62, 0xd2154ed5, 0x9d7ef787, 0x3cd4ca4d,
+0x83cfb39b, 0xb2e41461, 0x177ed847, 0x979b8263,
+0x063e5288, 0x25686303, 0x6ac4c002, 0x1daaee7b,
+0x44a872f5, 0x6920fad9, 0x1615e22f, 0x7ee6b668,
+0x46a20eca, 0x3f70299f, 0x6804ec4f, 0x438f3d2b,
+0x21981b39, 0x56c56c26, 0x790e53f9, 0x3d075619,
+0x73ec2706, 0x461887a3, 0x3289a477, 0x6dc41ff3,
+0x7f5575d9, 0x15c41603, 0x5b529716, 0x75fe042a,
+0x1ad545a3, 0x6c3bda68, 0x63a22b88, 0x0c762a66,
+0x6414a225, 0x4211a57d, 0x3ee18677, 0x70672a56,
+0x2263d25f, 0x147a0102, 0x2abb0809, 0x36d405a0,
+0x370f7ebd, 0x3a633ec6, 0x21f35ed3, 0x0eaa0a9c,
+0x18776376, 0x0d7cb3ae, 0x0c317ba7, 0x0e7f0abc,
+0x04259abe, 0x02f52088, 0x030df095, 0x20c29d81,
+0x882c52ea, 0x2d580ecc, 0xa92564dc, 0x802796ac,
+0x3219a158, 0x9f257e87, 0x9cc10ff5, 0x34274f65,
+0x83ee1c46, 0xa0220012, 0x1dde176a, 0x8bfbd3cf,
+0xc1205b06, 0x3bd2cafc, 0xfb023b16, 0xca0dfb9b,
+0x0a339312, 0xce3891c9, 0xd5f95269, 0x01011bc3,
+0xda50d4a6, 0xe4bb68a0, 0x38a2d750, 0xcfea1bc8,
+0x8f5e797c, 0x013aadfa, 0xf591d8c8, 0x8ee4aa28,
+0x7355b612, 0xee0428b4, 0x9ae443a0, 0x6feac10a,
+0xfd4339ca, 0x846da8fc, 0x0502cee5, 0xf4257dfc,
+0xc9da3d3e, 0x3b300835, 0xde8627da, 0xcd8bea50,
+0x1c8e4efc, 0xeb473eae, 0xe55d5e4b, 0x1627425e,
+0xc596048d, 0xc625faa2, 0x1320a228, 0xc49aec7f,
+0xeec906ce, 0x353f3489, 0xdfc5495e, 0xefa721f4,
+0x35be9794, 0xe644add2, 0xd48800ba, 0x26d27892,
+0xfac89ec0, 0xf876f427, 0x06861fa0, 0xe89c1407,
+0xad86305a, 0x0031d329, 0xaec58f29, 0x9ded7311,
+0x0f535848, 0x89751f81, 0x9453a5bd, 0x0593b715,
+0x9cfb5340, 0x8f8cc387, 0x0ba81c6b, 0xab249d09,
+0x47b98128, 0x3a59a622, 0x6bcc7e6d, 0x490d3f9e,
+0x194d7172, 0x43bc0d54, 0x476d5302, 0x0e79ab9d,
+0x043a2e4e, 0x6e23d982, 0x4f9275a2, 0x13482aaf,
+0x4cd88767, 0x417af7bf, 0x2670b7b6, 0x6e3159e1,
+0x7ee5fb88, 0x1690d436, 0x7c204b0c, 0x7f7bd21e,
+0x1c44e6bd, 0x72aa216e, 0x762740e1, 0x3195f0af,
+0x68f7a632, 0x405a48de, 0x4f47cf2b, 0x74802579,
+0x306f294c, 0x5c40b9a2, 0x44882623, 0x1bc24415,
+0x57479859, 0x77f1f9b6, 0x75e1d617, 0x5c0f58e0,
+0x09ea315f, 0x439d0666, 0x7c896e85, 0x02a7bb07,
+0x6faf5510, 0x4d84a791, 0x27fe2b91, 0x68aa7491,
+0x52973597, 0x0222a1a1, 0x621446c4, 0x4e8a2246,
+0x018f0189, 0x52fe91c5, 0x5c1dc78b, 0x0f3df43e,
+0x46b83eca, 0x5ec0e882, 0x0794307d, 0x6fc5de80,
+0x49d5654e, 0x354ee67c, 0x710ff7c0, 0x4ea654ae,
+0x1c6b7d3b, 0x6e8a2a53, 0x77a83c55, 0x3876439d,
+0x6c9b745e, 0x6caf0739, 0x5cdbcbb5, 0x2476ae0e,
+0x0bb3d90e, 0xa6bfe765, 0x5ea2df7b, 0xf0787223,
+0xce1d2f30, 0xe3f585a9, 0x862936aa, 0x760f8e61,
+0xbe83028a, 0xe8b5836a, 0x3f511b31, 0xc14765f3,
+0xcb58aca3, 0xcba6b2cd, 0xe4663a5d, 0x306d3a63,
+0x9f92084b, 0x9ede4973, 0x782c5d7e, 0xff753f56,
+0xe863b9fe, 0xb48dae56, 0x926718e6, 0x3f2df5a7,
+0xb96e9045, 0xa7ffe8e3, 0x3d712112, 0x96a37460,
+0xcf6d2da6, 0xb453af2f, 0xe2738a18, 0x46eab1c6,
+0xb33f26c8, 0xacfaa37e, 0x5545aef9, 0xf6ee57bc,
+0x9ab32696, 0x60f08210, 0xc6a68785, 0xbe0f8a26,
+0x6ec47920, 0x6fd6f0d2, 0xbe21a54b, 0xc1ed9f13,
+0x779b8ab2, 0x601e0135, 0xd707f98a, 0xbe8ba28c,
+0x490cf7d2, 0xdabad447, 0x8e0447e3, 0x5aa97c13,
+0xe0fa4ffc, 0x87c56421, 0x744c8d5d, 0xff38fc68,
+0xeeb31201, 0x5183cc8b, 0x8cf20994, 0xd8043432,
+0x5d9fe6c1, 0x5e1874f0, 0xc2955a2f, 0x84390ab0,
+0x3ef119f8, 0x84f1a150, 0xedfd1684, 0x6b244bce,
+0xef6b8b37, 0xd2b4b735, 0x0aabcb89, 0xc50ab6b6,
+0xe99f0600, 0x016503fb, 0xeac92d6b, 0xe17828bb,
+0x6f54ab62, 0xe442ad55, 0x8ac94c9c, 0x7fbd6462,
+0x95fbbc51, 0x4312f35f, 0x15f95b03, 0x4b376589,
+0x30054b1f, 0x4f93b30f, 0x3f893784, 0x7b1fe40d,
+0x302a042a, 0xa7b52297, 0x1baf4c24, 0xb2d8045d,
+0xc59c87e5, 0x6182bfae, 0xc0177c03, 0xa07f2b7d,
+0x6d3c9042, 0xe119b6c0, 0xb95000e4, 0x5ef06018,
+0xe329fddd, 0xb6c351e9, 0x561a9f22, 0x0e3d0ee5,
+0xb1d82fa7, 0x24e5a591, 0x0f877f43, 0xc7fbf6dd,
+0x2bd640c4, 0xac411744, 0xc0572fb3, 0x814e269f,
+0xbff658b7, 0xa6fb6709, 0x8eb94c8a, 0xdd59b669,
+0xaec2ec83, 0x0f975d58, 0xc007e63e, 0x34f1ef97,
+0x1093e9ae, 0xf10306c2, 0x371d2ba6, 0x06d529e5,
+0xcc5ba006, 0x62720191, 0x2760d5d9, 0xbcf9f2ef,
+0x6cf26009, 0x3cc648ba, 0xad069852, 0x79d86abd,
+0x2bd13a45, 0x6c59ab96, 0x7fe93fa9, 0xf4f9c8c4,
+0x6659306e, 0x4ceb3f8e, 0xf8f3b54f, 0x22d47284,
+0x25f00ac3, 0xdf42abde, 0x48232afe, 0x6b12c85a,
+0xd3689402, 0x439533cc, 0x699ed29c, 0xc8579683,
+0x4083f273, 0xc0133829, 0xcb4319da, 0xef666889,
+0xdd90130f, 0xd6b42043, 0xfea82ce5, 0xc974a1c8,
+0xc16fa70d, 0xf704cc46, 0xdde80293, 0xd19e56a5,
+0xe92cc8b6, 0x50e56bf3, 0xc7c8b490, 0x7824c8ac,
+0x49e11bfd, 0x5b430d40, 0x73b0ca71, 0x24d265ae,
+0xab0c7b5b, 0x26f970b0, 0xc6ef1791, 0xe04eb2a0,
+0x85f9948b, 0xde0bf679, 0x4a7dfccb, 0x93201bf0,
+0x8a5898ba, 0xa2c8afb0, 0xdc169dda, 0x62eaa056,
+0xbee610e4, 0xcfe62b41, 0x683c035e, 0xb154a8ff,
+0x5bc3c6e1, 0x7f72f3f8, 0x2634ae89, 0x4dfab058,
+0x0ecbcc90, 0x73948eaf, 0x2002cc46, 0x402c28ea,
+0x316ee39e, 0x3491bc24, 0x05f329d3, 0x3e1b39ed,
+0x8f939791, 0x3e8081e0, 0x9e3471fc, 0xb768956e,
+0xf5001d85, 0xdd6a5d5f, 0x72f9ac8b, 0xa39e90b7,
+0xda690817, 0x699362ea, 0xb1611e17, 0xd44046c6,
+0x33771d3e, 0xe884be2f, 0x8c7a72d7, 0x7e51529d,
+0xe1807e89, 0xa07cdfde, 0x64e8c668, 0xd3774939,
+0xe8261a25, 0x430c6240, 0x991408e5, 0xd01517e0,
+0xacfe1fbb, 0xd7aeeb57, 0x22ccc0c2, 0xfd449c99,
+0x2d3f390f, 0x30f54c8c, 0x0dde0c1d, 0x3cb3c009,
+0x5729d223, 0x6a25e468, 0x44eb6c4e, 0x3e5863e9,
+0xa9639ce4, 0x096bf738, 0xea20cefb, 0xe187f5c8,
+0x418ccab3, 0x4bc370ca, 0xa1200b64, 0xebcfc110,
+0xeb942278, 0x4ba5d196, 0x48a7b4d0, 0x07aeaf38,
+0xb7b71ee5, 0x59184abf, 0xfa2b23bc, 0xbcc9da17,
+0xd846d1fc, 0x214f1278, 0x2bf7e99f, 0x1a04261a,
+0xd7f6e905, 0x86ea57d7, 0xd71618ac, 0xc87934bd,
+0xe96101d1, 0x55d1976c, 0x471c8505, 0x7a36d839,
+0x5d62a9ee, 0xf3c54a8a, 0xa2be15d9, 0x244087c9,
+0x042c8037, 0x23224689, 0x281c5d73, 0x2139ecfc,
+0xffb8bc8a, 0x834fdd11, 0x9cd5a5bd, 0xa3368319,
+0x7e5bef0c, 0x4ae2dbda, 0x86d90089, 0x6675dfce,
+0x48876262, 0xcec72538, 0x11dc5c80, 0x86a730f9,
+0x313565c9, 0xe3e5be11, 0x106d7cce, 0x752b8be2,
+0x3d00a5bc, 0xe6f70e95, 0x44447ac8, 0x600df30c,
+0x8335ac3b, 0x8816ddee, 0x700982fe, 0xee495741,
+0x48c7e81c, 0xa3d55da2, 0xb0172982, 0x70ab2158,
+0xd4460621, 0x3a9e528b, 0x59b18a7b, 0xf4dabc4c,
+0xa8454763, 0x70877bb6, 0x66005c97, 0xaf292c06,
+0x7b843db1, 0xf343b59b, 0x25cdc7b5, 0xa41da617,
+0x9e9d895e, 0xc936f475, 0x7270925a, 0x30024230,
+0x8e72f53d, 0x2b6c1b6f, 0x1a69732c, 0x7ed5aff5,
+0xfc18a2a3, 0xaf377cc1, 0xbff09a78, 0x4b4e0814,
+0x95a0b2c1, 0x270398de, 0x201fca94, 0x2a032a4f,
+0x131542b4, 0x0d7306da, 0x2d1c3496, 0xcc3c6d8d,
+0xa814ddc9, 0xa3b3a991, 0x17ee60c2, 0x852c0b8d,
+0x11e5853a, 0x762002a7, 0x92c5311d, 0x0d4bf7e1,
+0xfffec870, 0xe3d35e5b, 0xff6ecfb9, 0xdedae6ff,
+0x0111a772, 0x9808e780, 0x29c336e8, 0xe9bc05df,
+0x5bedde11, 0x945565af, 0xaff808fe, 0x87e3423d,
+0x4de6f98f, 0x93b4adef, 0xbf704fa4, 0x09120e91,
+0xd54f3692, 0xdf8eab1e, 0xfabbf59c, 0xe74318be,
+0xaab87ffc, 0x29fa791c, 0xe3915552, 0xa652cb9b,
+0xa1252e74, 0xb35b723b, 0x542aa28b, 0x12fcc5b0,
+0x3941f962, 0x82bcc6cc, 0x47b11974, 0xb821611f,
+0x78b34250, 0xf1be5659, 0x561b9e61, 0x6f3bd501,
+0x584e6f5c, 0xd54ed547, 0xacebcd21, 0x7b5ff816,
+0xb64ad233, 0x9f2f330d, 0x69fb1ece, 0xac8710dd,
+0x58dc6c60, 0x9bee6139, 0xbb10ad0e, 0xbd8cd5dd,
+0xebc0ce9d, 0xa733274f, 0x884d9b55, 0x42b08b63,
+0xafa54a74, 0x1c7ccf64, 0x93a20191, 0xaaa3132e,
+0xc69831d1, 0x54634889, 0xfbfe3efc, 0xd3cf68d4,
+0x302e3117, 0xf5693131, 0xc3ce8c6c, 0x1f03cd89,
+0x6243334c, 0xf16bc80f, 0xdca5f130, 0xcb2cd956,
+0x4c1bb421, 0xe8de533c, 0x7f86703a, 0x29aa897e,
+0xdd54acad, 0x76b2f2ae, 0x7ef82b71, 0x2e30970b,
+0xba402597, 0x9a653ab4, 0xd68fcf53, 0x2d9f0d15,
+0x7f9efd1c, 0x2363d147, 0x5327289a, 0xe89229f3,
+0xd63a535c, 0x7efe9273, 0x64f2e3a3, 0x9bdf65a7,
+0x26b6edfb, 0x1b9c7bfe, 0x5d14b3de, 0x54d575fb,
+0x6d65db4c, 0x95648b7f, 0xa8a3b8f0, 0x7cc7ad46,
+0xe20e6dbb, 0x8488a45f, 0x8ebc2932, 0xd4767316,
+0x3e8c4b8a, 0xbab7402c, 0xfc1e217e, 0xe5c5bf82,
+0x6928fe2e, 0xc88528e9, 0x4b2e4e8f, 0xdd938b86,
+0x0c964f98, 0xfc88d480, 0x35fcaf9e, 0xdd7bbe9d,
+0x197d005a, 0x4d40b3b3, 0xcf203155, 0x0d2fa621,
+0x752d2c58, 0xb12bac12, 0x1e7e8c23, 0x94215d54,
+0x9854a71c, 0x4de63c64, 0x7a012529, 0x9c171f8d,
+0x9e71def7, 0x3bd17d50, 0x11f175d9, 0xec78abf3,
+0x7b529eee, 0xd3a69fc3, 0x5b718676, 0x58214d29,
+0xa8bd2c34, 0x41ea00ab, 0xa03f64d6, 0x4ee342b0,
+0x32b1e444, 0x1c1801a4, 0xc8424702, 0x334a7e35,
+0x50cf1543, 0x3b22b495, 0x88683776, 0x8e2e0154,
+0x6155c033, 0x4e2fa6ac, 0x42ace700, 0x8d64f97c,
+0xaf9ced17, 0xb2a5cb92, 0xa558582d, 0x88705de7,
+0x9e528d59, 0x84bd45e4, 0x5cb680c0, 0xcd48fa5c,
diff --git a/src/cpu/intel/model_6fx/model_6fx_init.c b/src/cpu/intel/model_6fx/model_6fx_init.c
index 2ee950bfa0..64f77410aa 100644
--- a/src/cpu/intel/model_6fx/model_6fx_init.c
+++ b/src/cpu/intel/model_6fx/model_6fx_init.c
@@ -12,7 +12,8 @@
#include <cpu/x86/mtrr.h>
static const uint32_t microcode_updates[] = {
- // #include "microcode_m206e839.h"
+ #include "microcode_m206f257.h"
+ #include "microcode_m206f6c7.h"
/* Dummy terminator */
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
@@ -52,7 +53,121 @@ static void fill_processor_name(char *processor_name)
strcpy(processor_name, processor_name_start);
}
-static void model_6ex_init(device_t cpu)
+#define IA32_FEATURE_CONTROL 0x003a
+
+#define CPUID_VMX (1 << 5)
+#define CPUID_SMX (1 << 6)
+static void enable_vmx(void)
+{
+ struct cpuid_result regs;
+ msr_t msr;
+
+ msr = rdmsr(IA32_FEATURE_CONTROL);
+
+ if (msr.lo & (1 << 0)) {
+ /* VMX locked. If we set it again we get an illegal
+ * instruction
+ */
+ return;
+ }
+
+ regs = cpuid(1);
+ if (regs.ecx & CPUID_VMX) {
+ msr.lo |= (1 << 2);
+ if (regs.ecx & CPUID_SMX)
+ msr.lo |= (1 << 1);
+ }
+
+ wrmsr(IA32_FEATURE_CONTROL, msr);
+
+ msr.lo |= (1 << 0); /* Set lock bit */
+
+ wrmsr(IA32_FEATURE_CONTROL, msr);
+}
+
+#define PMG_CST_CONFIG_CONTROL 0xe2
+#define PMG_IO_BASE_ADDR 0xe3
+#define PMG_IO_CAPTURE_ADDR 0xe4
+
+#define PMB0_BASE 0x580
+#define PMB1_BASE 0x800
+#define CST_RANGE 2
+static void configure_c_states(void)
+{
+ msr_t msr;
+
+ msr = rdmsr(PMG_CST_CONFIG_CONTROL);
+
+ msr.lo |= (1 << 15); // config lock until next reset
+ msr.lo |= (1 << 14); // Deeper Sleep
+ msr.lo |= (1 << 10); // Enable IO MWAIT redirection
+ msr.lo &= ~(1 << 9); // Issue a single stop grant cycle upon stpclk
+ msr.lo |= (1 << 3); // Dynamic L2
+
+ wrmsr(PMG_CST_CONFIG_CONTROL, msr);
+
+ /* Set Processor MWAIT IO BASE */
+ msr.hi = 0;
+ msr.lo = ((PMB0_BASE + 4) & 0xffff) | (((PMB1_BASE + 9) & 0xffff) << 16);
+ wrmsr(PMG_IO_BASE_ADDR, msr);
+
+ /* Set IO Capture Address */
+ msr.hi = 0;
+ msr.lo = ((PMB0_BASE + 4) & 0xffff) | (( CST_RANGE & 0xffff) << 16);
+ wrmsr(PMG_IO_CAPTURE_ADDR, msr);
+}
+
+#define IA32_MISC_ENABLE 0x1a0
+static void configure_misc(void)
+{
+ msr_t msr;
+
+ msr = rdmsr(IA32_MISC_ENABLE);
+ msr.lo |= (1 << 3); /* TM1 enable */
+ msr.lo |= (1 << 13); /* TM2 enable */
+ msr.lo |= (1 << 17); /* Bidirectional PROCHOT# */
+
+ msr.lo |= (1 << 10); /* FERR# multiplexing */
+
+ // TODO: Only if IA32_PLATFORM_ID[17] = 0 and IA32_PLATFORM_ID[50] = 1
+ msr.lo |= (1 << 16); /* Enhanced SpeedStep Enable */
+
+ /* Enable C2E */
+ msr.lo |= (1 << 26);
+
+ /* Enable C4E */
+ /* TODO This should only be done on mobile CPUs, see cpuid 5 */
+ msr.hi |= (1 << (32 - 32)); // C4E
+ msr.hi |= (1 << (33 - 32)); // Hard C4E
+
+ /* Enable EMTTM. */
+ /* NOTE: We leave the EMTTM_CR_TABLE0-5 at their default values */
+ msr.hi |= (1 << (36 - 32));
+
+ wrmsr(IA32_MISC_ENABLE, msr);
+
+ msr.lo |= (1 << 20); /* Lock Enhanced SpeedStep Enable */
+ wrmsr(IA32_MISC_ENABLE, msr);
+}
+
+#define PIC_SENS_CFG 0x1aa
+static void configure_pic_thermal_sensors(void)
+{
+ msr_t msr;
+
+ msr = rdmsr(PIC_SENS_CFG);
+
+ msr.lo |= (1 << 21); // inter-core lock TM1
+ msr.lo |= (1 << 4); // Enable bypass filter
+
+ wrmsr(PIC_SENS_CFG, msr);
+}
+
+#if CONFIG_USBDEBUG_DIRECT
+static unsigned ehci_debug_addr;
+#endif
+
+static void model_6fx_init(device_t cpu)
{
char processor_name[49];
@@ -66,19 +181,42 @@ static void model_6ex_init(device_t cpu)
fill_processor_name(processor_name);
printk_info("CPU: %s.\n", processor_name);
+#if CONFIG_USBDEBUG_DIRECT
+ // Is this caution really needed?
+ if(!ehci_debug_addr)
+ ehci_debug_addr = get_ehci_debug();
+ set_ehci_debug(0);
+#endif
+
/* Setup MTRRs */
x86_setup_mtrrs(36);
x86_mtrr_check();
-
+
+#if CONFIG_USBDEBUG_DIRECT
+ set_ehci_debug(ehci_debug_addr);
+#endif
+
/* Enable the local cpu apics */
setup_lapic();
+ /* Enable virtualization */
+ enable_vmx();
+
+ /* Configure C States */
+ configure_c_states();
+
+ /* Configure Enhanced SpeedStep and Thermal Sensors */
+ configure_misc();
+
+ /* PIC thermal sensor control */
+ configure_pic_thermal_sensors();
+
/* Start up my cpu siblings */
intel_sibling_init(cpu);
}
static struct device_operations cpu_dev_ops = {
- .init = model_6ex_init,
+ .init = model_6fx_init,
};
static struct cpu_device_id cpu_table[] = {