1 #include <console/console.h>
2 #include <device/device.h>
3 #include <device/device.h>
4 #include <device/pci.h>
7 #include <cpu/x86/mtrr.h>
8 #include <cpu/x86/msr.h>
9 #include <cpu/x86/lapic.h>
10 #include <cpu/intel/microcode.h>
11 #include <cpu/x86/cache.h>
12 #include <cpu/x86/mtrr.h>
14 static uint32_t microcode_updates[] = {
15 /* WARNING - Intel has a new data structure that has variable length
16 * microcode update lengths. They are encoded in int 8 and 9. A
17 * dummy header of nulls must terminate the list.
19 #include "microcode-534-MU16810d.h"
20 #include "microcode-535-MU16810e.h"
21 #include "microcode-536-MU16810f.h"
22 #include "microcode-538-MU168111.h"
24 #include "microcode-550-MU168307.h"
25 #include "microcode-551-MU168308.h"
26 #include "microcode-727-MU168313.h"
27 #include "microcode-728-MU168314.h"
29 /* Dummy terminator */
37 static void model_6xx_init(device_t dev)
39 /* Turn on caching if we haven't already */
44 /* Update the microcode */
45 intel_update_microcode(microcode_updates);
47 /* Enable the local cpu apics */
51 static struct device_operations cpu_dev_ops = {
52 .init = model_6xx_init,
54 static struct cpu_device_id cpu_table[] = {
55 { X86_VENDOR_INTEL, 0x0650 },
56 { X86_VENDOR_INTEL, 0x0652 },
57 { X86_VENDOR_INTEL, 0x0660 }, /* Celeron (Mendocino) */
58 { X86_VENDOR_INTEL, 0x0665 },
59 { X86_VENDOR_INTEL, 0x0672 },
60 { X86_VENDOR_INTEL, 0x0673 },
61 { X86_VENDOR_INTEL, 0x0680 },
62 { X86_VENDOR_INTEL, 0x0681 },
63 { X86_VENDOR_INTEL, 0x0683 },
64 { X86_VENDOR_INTEL, 0x0686 },
65 { X86_VENDOR_INTEL, 0x06A0 },
66 { X86_VENDOR_INTEL, 0x06A1 },
67 { X86_VENDOR_INTEL, 0x06A4 },
71 static const struct cpu_driver driver __cpu_driver = {
73 .id_table = cpu_table,