- Add new cvs code to cvs
[coreboot.git] / src / cpu / p6 / cpufixup.c
1 /* microcode.c: Microcode update for PIII and later CPUS
2  *
3  */
4 #include <console/console.h>
5 #include <mem.h>
6 #include <cpu/p6/msr.h>
7 #include <cpu/p5/cpuid.h>
8 #include <cpu/k8/mtrr.h>
9 #include <device/device.h>
10 #include <device/chip.h>
11
12 struct microcode {
13         unsigned int hdrver;
14         unsigned int rev;
15         unsigned int date;
16         unsigned int sig;
17         
18         unsigned int cksum;
19         unsigned int ldrver;
20         unsigned int pf;
21
22         unsigned int reserved[5];
23         unsigned int bits[500];
24 };
25
26 unsigned int microcode_updates [] = {
27         /*
28           Copyright  Intel Corporation, 1995, 96, 97, 98, 99, 2000. 
29
30           These microcode updates are distributed for the sole purpose of 
31           installation in the BIOS or Operating System of computer systems
32           which include an Intel P6 family microprocessor sold or distributed
33           to or by you.  You are authorized to copy and install this material
34           on such systems.  You are not authorized to use this material for
35           any other purpose.  
36         */
37
38 /*  MU16830c.inc  */
39         0x00000001,     0x0000000c,     0x01102000,     0x00000683,
40         0xb1605bca,     0x00000001,     0x00000001,     0x00000000,
41         0x00000000,     0x00000000,     0x00000000,     0x00000000,
42         0x7d021266,     0xd3890df1,     0x08a3a61b,     0x3c9bd396,
43         0x516b77d0,     0xf119ce39,     0xd63a44b0,     0x523efada,
44         0x1a0c3ed7,     0x04711f21,     0x515f945e,     0xbb5f13ba,
45         0x254eabfc,     0x5bd1e959,     0x67373898,     0x61605a8f,
46         0x6ea7c5a9,     0x5e64a058,     0xc0a019ee,     0x56af4cfe,
47         0x1acd6406,     0x4e7eb040,     0xf2ebd7ef,     0xc659db4f,
48         0xfe77108b,     0xfdceb47b,     0xf0757eb8,     0xb1622949,
49         0xdceb744b,     0x19e2ad26,     0xe9c745ab,     0xb385f196,
50         0x9ecc3483,     0x0a126045,     0x5320d6be,     0x8557a583,
51         0x7faf0073,     0x5ab281b4,     0x34dbbac6,     0x8a0bc7cd,
52         0x52584248,     0x3c3ef309,     0x41403737,     0x8200991d,
53         0x7e0dfb86,     0xea1e3a8f,     0x5b87ca8a,     0x004be481,
54         0x74e9fd6f,     0x80d518d6,     0xf10672c8,     0x2b8936b5,
55         0xd7092242,     0xbaa950a4,     0xaa6a2305,     0xeccbb48b,
56         0x43f6b561,     0x8607570a,     0x6143ba7b,     0x4c534447,
57         0x45d97f76,     0x0ccf7b83,     0xd89482bd,     0x32c46a60,
58         0x6db7b842,     0x0f7ad008,     0x4ce4968c,     0x2af52761,
59         0x26a2a653,     0x5806f996,     0xfe844901,     0x6164e754,
60         0xaf9287ab,     0x1f495a8d,     0x6cd70b5e,     0x681df673,
61         0xc94dc88f,     0x4b9650f8,     0xdfc826d9,     0xb5710e59,
62         0x80ed0f08,     0x615ce9c2,     0x0864130d,     0xc604520e,
63         0x9be149db,     0xeefb463f,     0x15b7e000,     0xc3bf13ab,
64         0x29d75556,     0x99420678,     0x505b5858,     0x6dadaeae,
65         0xf87f8f56,     0xe9be5867,     0xd772475a,     0x0a4642c0,
66         0xc59b2b86,     0x9e0f0a7f,     0x4c54834f,     0xb39f1d7c,
67         0xd52dac56,     0x1fdde74b,     0x60fddc1c,     0x367321f1,
68         0x98a7c9bd,     0x9a7896d2,     0x8d1f200b,     0x7975e907,
69         0x0e7d4411,     0x1671c027,     0x438550a2,     0x385dfc21,
70         0xb26c638d,     0x9b43b0d2,     0x03a0512d,     0x6b195c14,
71         0x9db53322,     0x78512b73,     0x86714a5b,     0x9b900bb3,
72         0xdbd702f9,     0xcdb985cb,     0x1033fd1e,     0xc75ed099,
73         0x8a8c99fc,     0x12c5b949,     0x913249a0,     0xbd40f4b1,
74         0x87406189,     0x977927e0,     0x76915a37,     0x79ffa5f2,
75         0x5e1812b8,     0x8e7eb819,     0x6bfc46a5,     0x8d80c798,
76         0x56d5a7ec,     0x5904350a,     0x82a1b59a,     0x27c64a52,
77         0x4effaac0,     0x8e1519ec,     0x29ffed29,     0x3eaccc55,
78         0x823e79c1,     0xdb5f2295,     0xb6ab9c23,     0xb301f2c5,
79         0xe17f14f3,     0xf4e8892a,     0x107c9db8,     0x6a8a8ff4,
80         0xaf9df422,     0xb14bd8f4,     0x00fa2a4c,     0x15324701,
81         0x95e86a3b,     0xf74566e1,     0x386a788f,     0x9333e875,
82         0xdea61190,     0x307a5338,     0xd9cec152,     0xe77165da,
83         0x54187a14,     0x9a7d99bf,     0x4b31e986,     0x7d7ed557,
84         0x626bb548,     0x434c4a78,     0x562b1588,     0xe0d15f63,
85         0x524473f7,     0x484459e1,     0xbe617125,     0xb96f7eb8,
86         0xb86620f7,     0xcc1e09b1,     0x7ad3b154,     0xae1f697e,
87         0x11d0bfb1,     0xb1218568,     0x83a44b34,     0xeecec8bc,
88         0xa06b01d8,     0xccadf143,     0xe1f9702c,     0x1e7c3d0d,
89         0xd907d836,     0x780b3a02,     0x9a5e81fa,     0x0015cf61,
90         0xbd148c0c,     0x84a65389,     0x99e77502,     0x0d630a94,
91         0xd7f97779,     0x75567907,     0xa859be05,     0x8baab7b7,
92         0x4f1a8101,     0x9992f951,     0xdd918c8a,     0x12b3ca17,
93         0x117358b4,     0xf27a4783,     0xe3363be6,     0x3847f05d,
94         0xb642595a,     0x4fbb98ae,     0xd6259c55,     0x3c72ff94,
95         0xa9c3e102,     0x256e26c1,     0x2faf190b,     0xaaa1d198,
96         0x8e25fc06,     0x8aa6fc5d,     0x9b994d46,     0x15045f23,
97         0x23813558,     0x0173ef1b,     0xe4198a76,     0x36aa0de4,
98         0x341d7595,     0xe186740f,     0xec371375,     0x1a4cabbe,
99         0x6241897f,     0x388bd888,     0x2542e1f7,     0x61620df5,
100         0x209f9d94,     0xca90f89b,     0x286a3e92,     0xea1cc30f,
101         0x838ba96f,     0x4f0239d3,     0xf295395e,     0xb3c38631,
102         0x7ea7a143,     0x157a4e43,     0x46f8173f,     0xfbc18d4a,
103         0xc401e17a,     0xc4620358,     0xd2ab5437,     0xa01db06f,
104         0x58ce91fc,     0x850de1a3,     0x9b542dba,     0xee77f038,
105         0xddd3ced6,     0xc225d2ce,     0x63a3f765,     0x3342a06c,
106         0x6a780c2f,     0xfaa925b2,     0x366ebeec,     0xbcc9abea,
107         0xc7b3fa4e,     0xf4f1123d,     0x5198702c,     0x3e3458b7,
108         0x0b1ce9a1,     0x51b1bd7f,     0x711e791e,     0x927d8bed,
109         0x91dbaea9,     0x7eefbda9,     0x7a19edd9,     0xdf7b8dce,
110         0x5bb40613,     0x0b0c1e0f,     0x85b82c98,     0x18da4dc1,
111         0xc5fd78ac,     0x57c1e31d,     0x4c4001b5,     0xe31d2643,
112         0xa6afbf58,     0xad200e68,     0xf0114ba4,     0xd6a620f2,
113         0xc753a720,     0xac9022a0,     0x28a41f01,     0x22a4ba95,
114         0xc00b7531,     0x23d42795,     0xcd836a86,     0x90262708,
115         0x3292cad0,     0x40022e39,     0xc1581b0a,     0xe5101550,
116         0x6538096b,     0x208c549d,     0x3ce2bf88,     0xa71df38e,
117         0x3dec3685,     0xca3949f1,     0x79f3ad1b,     0x3ee8b300,
118         0x9d305fc6,     0x7a2e5288,     0xbe81a2f2,     0x7ada0c06,
119         0x191c7f01,     0x58dfcbd1,     0xc78dee72,     0x72364226,
120         0x1866de12,     0x8d22305c,     0x943a0f0e,     0xc81967ff,
121         0x4d55fb0f,     0xaf199be1,     0x90bbda61,     0x4e7c234f,
122         0x90cfec16,     0x9b4bcf26,     0x21622023,     0x0926f0fa,
123         0x1d504377,     0xa58db427,     0x8d93ce2b,     0x90bfe900,
124         0x29e67397,     0x2c1261ed,     0x4ace9474,     0xd5c60282,
125         0xe53fb300,     0x8a61a0ab,     0xa7aa0918,     0x4389d7c5,
126         0xd09d605c,     0x6c5bedb5,     0xd6d54c51,     0x433dea21,
127         0x7ad9e677,     0x813bff76,     0x5a162c75,     0x1ee0661f,
128         0x9b6c2030,     0x8e8dc989,     0xcd4bc9fc,     0x4454675b,
129         0x8d583c9c,     0xe3400094,     0x116ebb83,     0xe847bc9a,
130         0x2a4622dd,     0x2a901e6f,     0xd789b1c0,     0x094e2bbb,
131         0x056e563f,     0x9f17e606,     0x8bc79b8d,     0xd2c535c1,
132         0x06a45a27,     0x9dc56771,     0xa06649e2,     0x5ff25ac8,
133         0x6554961e,     0x98e583d9,     0x38ba93da,     0xdee1de18,
134         0x037cb9d5,     0x6b17f195,     0x3431faaf,     0x13860a0d,
135         0x28bca10d,     0x0a54c011,     0x9957cdb6,     0x3aa1f429,
136         0x9d41b7b3,     0x9aea5be2,     0x60c7ce6b,     0x4cd1c10b,
137         0x24ddddcd,     0xe28412ba,     0xa03a5466,     0xa1896879,
138         0x59edcb87,     0x1b241765,     0x157bf161,     0xf219f950,
139         0xe86ff526,     0x262005d9,     0x11769531,     0xbca15d95,
140         0x28f5ef17,     0x1f27e725,     0xc32631d2,     0x07249e61,
141         0x1ba851e3,     0x4f49b577,     0xe2a1df5e,     0x826fa7ff,
142         0xc34e1e2e,     0x7fe26024,     0xbc19800f,     0x0d368dc9,
143         0xe03da0c6,     0xadaa4f9c,     0x9ad1e43c,     0x96f84e44,
144         0x0b6cd695,     0x1bb46971,     0x942d6e5b,     0x6316170d,
145         0x3164509f,     0xc6659450,     0xb2a0370a,     0xabc208e8,
146         0x6d479811,     0x3684bc0e,     0x80b7b101,     0xa50b7bb5,
147         0x43d21233,     0xb423559d,     0xf41dcd16,     0xdfd3c276,
148         0x3e586469,     0xd9b7630a,     0xb88f9e44,     0x0cda6f4d,
149         0xe5bf5844,     0x8709f788,     0xdae37da6,     0x1fb41777,
150         0x1d903f69,     0x34383b69,     0xd409ae70,     0xd1c99758,
151         0xdedfd7a4,     0xa4bdf018,     0xf4058202,     0x8565d66f,
152         0x5365aed9,     0xfa69742e,     0x2cfbfbcf,     0x88a00b60,
153         0x506c0713,     0x2866475b,     0x3e1df573,     0xb86f7feb,
154         0x31d23a7f,     0xc6320e6a,     0x3ebbc2a5,     0x83a1d4ef,
155         0x15169f5f,     0x42a61753,     0x893e553e,     0x4ddbc66d,
156         0x7449ec1f,     0x76f65d22,     0x0622e13b,     0x32986f89,
157         0x21181b4b,     0x99a80c0a,     0xd6fe00b0,     0x282c0e81,
158         0x9fc1cf88,     0x919b855d,     0x618257d8,     0x82c448b8,
159         0xe22537a1,     0xa90de388,     0xba73b90c,     0xd765eeb0,
160         0x62b2727e,     0xa08dfe20,     0x70b3c8c5,     0x3ef04007,
161         0x9f73732b,     0x2201edd7,     0xb836219c,     0xf913af7c,
162         0xf50f64ca,     0x93ac107a,     0xf509f84a,     0x6f6026f6,
163         0xd9bb8eac,     0x4b268cfa,     0xa65a3fa6,     0x9837cb75,
164         0x784fb835,     0x2060576d,     0xb1604cae,     0xb9da4116,
165         0xab320cf2,     0x60a1b501,     0x0c73fa79,     0x8d5a6f1e,
166         0x57688086,     0x218e4005,     0xca054e3d,     0xc1a3c3ec,
167 /*  MU16810d.inc  */
168         0x00000001,     0x0000000d,     0x09211999,     0x00000681,
169         0x31708166,     0x00000001,     0x00000001,     0x00000000,
170         0x00000000,     0x00000000,     0x00000000,     0x00000000,
171         0x710e5240,     0xab8bc2df,     0x6e652d5a,     0xcc16718b,
172         0xaa5c7d1a,     0x43ac1ba0,     0xbdf8684e,     0x82565fa7,
173         0x1d108edc,     0x96d2d5a2,     0x85f783a0,     0x16e4cba1,
174         0xbc311213,     0xc36c45a2,     0x443b8d2b,     0xfdc5e9ce,
175         0xbb6f8637,     0x47011b8b,     0xf3898e4a,     0xb3e90f68,
176         0x60af6e3a,     0xff9d3de4,     0x9fb2333c,     0x5a1a39ce,
177         0xffd75d72,     0xa60cc2c0,     0x5729267c,     0xfc6d2da7,
178         0x8a2c8ae7,     0x71aba5ba,     0xb639ff31,     0x8d1642b8,
179         0x3aa67efc,     0x9f786473,     0xaedec560,     0x1acb694f,
180         0x97582a6f,     0x8dc17ea5,     0x19636cfe,     0xb5032243,
181         0xc46f764f,     0x3a5d3833,     0xf3d1a2b9,     0xc22e59be,
182         0x15e0b2f3,     0xe58eff24,     0xc679600d,     0x21a3a845,
183         0xc11cc921,     0xed2f5061,     0x2d4db0d1,     0xcc0cc78f,
184         0x80197c08,     0x20739d8a,     0xc92ec866,     0xacef343b,
185         0x47c0913a,     0xee8a69e4,     0xa7b0157e,     0x4c3607a9,
186         0xcc7ff7ea,     0xb0a36667,     0x41d1bcf0,     0xf54c42d2,
187         0x946c590e,     0x6da18fe9,     0xf20df0e6,     0x984a2160,
188         0x479becd3,     0xfb11dd36,     0xbb816653,     0x60c605c2,
189         0xf52efe8b,     0x90a9f863,     0x69654bfa,     0xf0f03f7c,
190         0xbf0498d5,     0x68708d82,     0xdab94924,     0x92371217,
191         0x603feed7,     0xf0ff8329,     0x9c8769df,     0x6d40ab73,
192         0xd8fd132a,     0x9335543f,     0x40fd3abb,     0xf25665a0,
193         0x93fe56a6,     0x682a3b24,     0xf3a0f14a,     0x97e92084,
194         0x4e8736a3,     0xf322db48,     0xb65de2ad,     0x6af68474,
195         0xfd6dae0d,     0x953afb0e,     0x6ef22a82,     0xfa7a3d7b,
196         0xb5fe683f,     0x647579c3,     0xd184e7db,     0x99ec7c97,
197         0x66486a26,     0xf08c8290,     0x94eb3fce,     0x6305e16e,
198         0xd61dd210,     0x9b8bdbba,     0x41a4b4f5,     0xfca38a75,
199         0x9c55c7a4,     0x6a4b1f02,     0xf277077a,     0x900e3d03,
200         0x4f173146,     0xf6fbf7c8,     0xb2636cb2,     0x6329a9d7,
201         0xf2697eb4,     0x90f80f6f,     0x65de6167,     0xfc6cd065,
202         0xb4326188,     0x67507c3a,     0xdf3179ff,     0x91207c0b,
203         0x6408ad58,     0xf7e7d2fe,     0x999af7c0,     0x6a994828,
204         0xdaecedf4,     0x93cba457,     0x4d924b31,     0xf12b5ae1,
205         0x9563d541,     0x65bd28f8,     0xfa87a363,     0x983adc3d,
206         0x45c4f64d,     0xfae3e1ef,     0xb2eb287f,     0x6050f699,
207         0xfb28cfb6,     0x999b1d45,     0x65027980,     0xf4e507d0,
208         0xbbd059b7,     0x64cb2688,     0xd29dff15,     0x90927c2c,
209         0x6d52471a,     0xf64fc745,     0x9e4050ff,     0x68b66e3f,
210         0xd0a1dd96,     0x9fe8a5a3,     0x454c936b,     0xf926115d,
211         0x9bfb60ff,     0x604049aa,     0xf3509e5c,     0x9d6cf26f,
212         0x4d777c5a,     0xfd7cd5ff,     0xb15d4f35,     0x6b1aa6e3,
213         0xfa279f20,     0x94916fae,     0x9b04dbcc,     0x600defd9,
214         0xf2977cd8,     0x65fa64be,     0x968feaee,     0xc11681af,
215         0x66568af6,     0xa539a4ee,     0xcfed5cb1,     0x108445de,
216         0xa603dfdd,     0xbf5ada02,     0x14b868c5,     0xb2d3b8d2,
217         0xbabf3637,     0x0c25bfbc,     0xb7a4c247,     0xf2837e05,
218         0x062ce963,     0xfcb65c46,     0xc6d190e7,     0x4dfce123,
219         0xcb0bf4c7,     0x8bff9d9d,     0x6794e002,     0x2879661e,
220         0xa5e93199,     0x77be4be8,     0x22fe3324,     0xb943e4ef,
221         0x73463d52,     0x31471050,     0xb68fd63f,     0x84cad24f,
222         0x343d922b,     0x42b9ab31,     0x88ee1549,     0xe913e2ab,
223         0x4a127048,     0x5057f79f,     0x636eb512,     0x42e02f9c,
224         0xd3a8b863,     0x9bc40609,     0x4a18edb5,     0x86a4bdaa,
225         0x91819a4b,     0x12a11e17,     0x8a6d7f21,     0xf42998d9,
226         0x132b6bbd,     0xe3239feb,     0xf52519d7,     0xada08128,
227         0xe6febacf,     0x44e15a80,     0xa977610a,     0xf56a8665,
228         0x4693b6f0,     0xb8386320,     0xfcf7d071,     0xb8a1128d,
229         0xb2a45d18,     0x075a2095,     0x98ebde53,     0xe8762eaf,
230         0x838ba96f,     0x4f0239d3,     0xf295395e,     0xb3c38631,
231         0x7ea7a143,     0x157a4e43,     0x46f8173f,     0xfbc18d4a,
232         0xc401e17a,     0xc4620358,     0xd2ab5437,     0xa01db06f,
233         0x58ce91fc,     0x850de1a3,     0x9b542dba,     0xee77f038,
234         0xddd3ced6,     0xc225d2ce,     0x63a3f765,     0x3342a06c,
235         0x6a780c2f,     0xfaa925b2,     0x366ebeec,     0xbcc9abea,
236         0xc7b3fa4e,     0xf4f1123d,     0x5198702c,     0x3e3458b7,
237         0x0b1ce9a1,     0x51b1bd7f,     0x711e791e,     0x927d8bed,
238         0x91dbaea9,     0x7eefbda9,     0x7a19edd9,     0xdf7b8dce,
239         0x5bb40613,     0x0b0c1e0f,     0x85b82c98,     0x18da4dc1,
240         0xc5fd78ac,     0x57c1e31d,     0x4c4001b5,     0xe31d2643,
241         0xa6afbf58,     0xad200e68,     0xf0114ba4,     0xd6a620f2,
242         0xc753a720,     0xac9022a0,     0x28a41f01,     0x22a4ba95,
243         0xc00b7531,     0x23d42795,     0xcd836a86,     0x90262708,
244         0x3292cad0,     0x40022e39,     0xc1581b0a,     0xe5101550,
245         0x6538096b,     0x208c549d,     0x3ce2bf88,     0xa71df38e,
246         0x3dec3685,     0xca3949f1,     0x79f3ad1b,     0x3ee8b300,
247         0x9d305fc6,     0x7a2e5288,     0xbe81a2f2,     0x7ada0c06,
248         0x191c7f01,     0x58dfcbd1,     0xc78dee72,     0x72364226,
249         0x1866de12,     0x8d22305c,     0x943a0f0e,     0xc81967ff,
250         0x4d55fb0f,     0xaf199be1,     0x90bbda61,     0x4e7c234f,
251         0x90cfec16,     0x9b4bcf26,     0x21622023,     0x0926f0fa,
252         0x1d504377,     0xa58db427,     0x8d93ce2b,     0x90bfe900,
253         0x29e67397,     0x2c1261ed,     0x4ace9474,     0xd5c60282,
254         0xe53fb300,     0x8a61a0ab,     0xa7aa0918,     0x4389d7c5,
255         0xd09d605c,     0x6c5bedb5,     0xd6d54c51,     0x433dea21,
256         0x7ad9e677,     0x813bff76,     0x5a162c75,     0x1ee0661f,
257         0x9b6c2030,     0x8e8dc989,     0xcd4bc9fc,     0x4454675b,
258         0x8d583c9c,     0xe3400094,     0x116ebb83,     0xe847bc9a,
259         0x2a4622dd,     0x2a901e6f,     0xd789b1c0,     0x094e2bbb,
260         0x056e563f,     0x9f17e606,     0x8bc79b8d,     0xd2c535c1,
261         0x06a45a27,     0x9dc56771,     0xa06649e2,     0x5ff25ac8,
262         0x6554961e,     0x98e583d9,     0x38ba93da,     0xdee1de18,
263         0x037cb9d5,     0x6b17f195,     0x3431faaf,     0x13860a0d,
264         0x28bca10d,     0x0a54c011,     0x9957cdb6,     0x3aa1f429,
265         0x9d41b7b3,     0x9aea5be2,     0x60c7ce6b,     0x4cd1c10b,
266         0x24ddddcd,     0xe28412ba,     0xa03a5466,     0xa1896879,
267         0x59edcb87,     0x1b241765,     0x157bf161,     0xf219f950,
268         0xe86ff526,     0x262005d9,     0x11769531,     0xbca15d95,
269         0x28f5ef17,     0x1f27e725,     0xc32631d2,     0x07249e61,
270         0x1ba851e3,     0x4f49b577,     0xe2a1df5e,     0x826fa7ff,
271         0xc34e1e2e,     0x7fe26024,     0xbc19800f,     0x0d368dc9,
272         0xe03da0c6,     0xadaa4f9c,     0x9ad1e43c,     0x96f84e44,
273         0x0b6cd695,     0x1bb46971,     0x942d6e5b,     0x6316170d,
274         0x3164509f,     0xc6659450,     0xb2a0370a,     0xabc208e8,
275         0x6d479811,     0x3684bc0e,     0x80b7b101,     0xa50b7bb5,
276         0x43d21233,     0xb423559d,     0xf41dcd16,     0xdfd3c276,
277         0x3e586469,     0xd9b7630a,     0xb88f9e44,     0x0cda6f4d,
278         0xe5bf5844,     0x8709f788,     0xdae37da6,     0x1fb41777,
279         0x1d903f69,     0x34383b69,     0xd409ae70,     0xd1c99758,
280         0xdedfd7a4,     0xa4bdf018,     0xf4058202,     0x8565d66f,
281         0x5365aed9,     0xfa69742e,     0x2cfbfbcf,     0x88a00b60,
282         0x506c0713,     0x2866475b,     0x3e1df573,     0xb86f7feb,
283         0x31d23a7f,     0xc6320e6a,     0x3ebbc2a5,     0x83a1d4ef,
284         0x15169f5f,     0x42a61753,     0x893e553e,     0x4ddbc66d,
285         0x7449ec1f,     0x76f65d22,     0x0622e13b,     0x32986f89,
286         0x21181b4b,     0x99a80c0a,     0xd6fe00b0,     0x282c0e81,
287         0x9fc1cf88,     0x919b855d,     0x618257d8,     0x82c448b8,
288         0xe22537a1,     0xa90de388,     0xba73b90c,     0xd765eeb0,
289         0x62b2727e,     0xa08dfe20,     0x70b3c8c5,     0x3ef04007,
290         0x9f73732b,     0x2201edd7,     0xb836219c,     0xf913af7c,
291         0xf50f64ca,     0x93ac107a,     0xf509f84a,     0x6f6026f6,
292         0xd9bb8eac,     0x4b268cfa,     0xa65a3fa6,     0x9837cb75,
293         0x784fb835,     0x2060576d,     0xb1604cae,     0xb9da4116,
294         0xab320cf2,     0x60a1b501,     0x0c73fa79,     0x8d5a6f1e,
295         0x57688086,     0x218e4005,     0xca054e3d,     0xc1a3c3ec,
296 };
297
298
299 static void display_cpuid_update_microcode(void)
300 {
301         unsigned int eax, ebx, ecx, edx;
302         unsigned int pf, rev, sig, val[2];
303         unsigned int x86_model, x86_family, i;
304         struct microcode *m;
305         msr_t msr;
306         /* cpuid sets msr 0x8B iff a microcode update has been loaded. */
307         //wrmsr(0x8B, 0, 0);
308         msr.lo = msr.hi = 0;
309         wrmsr(0x8b, msr);
310         cpuid(1, &eax, &ebx, &ecx, &edx);
311         //rdmsr(0x8B, val[0], rev);
312         msr = rdmsr(0x8b);
313         val[0] = msr.lo;
314         rev = msr.hi;
315         x86_model = (eax >>4) & 0x0f;
316         x86_family = (eax >>8) & 0x0f;
317         sig = eax;
318
319         pf = 0;
320         if ((x86_model >= 5)||(x86_family>6)) {
321           //rdmsr(0x17, val[0], val[1]);
322           msr = rdmsr(0x17);
323           val[0] = msr.lo;
324           val[1] = msr.hi;
325                 pf = 1 << ((val[1] >> 18) & 7);
326         }
327         printk_debug("microcode_info: sig = 0x%08x pf=0x%08x rev = 0x%08x\n",
328                 sig, pf, rev);
329
330         m = (void *)&microcode_updates;
331         for(i = 0; i < sizeof(microcode_updates)/sizeof(struct microcode); i++) {
332                 if ((m[i].sig == sig) && (m[i].pf == pf)) {
333                   //wrmsr(0x79, (unsigned int)&m[i].bits, 0);
334                   msr.lo = (unsigned int)&m[i].bits;
335                   msr.hi = 0;
336                   wrmsr(0x79, msr);
337
338                         __asm__ __volatile__ ("cpuid" : : : "ax", "bx", "cx", "dx");
339                         //rdmsr(0x8B, val[0], val[1]);
340                         msr = rdmsr(0x8b);
341                         val[0] = msr.lo;
342                         val[1] = msr.hi;
343                         printk_info("microcode updated from revision %d to %d\n",
344                                rev, val[1]);
345                 }
346         }
347 }
348
349 void p6_cpufixup(struct mem_range *mem)
350 {
351         printk_debug("Updating microcode\n");
352         display_cpuid_update_microcode();
353 }
354
355
356 static
357 void p6_enable(struct chip *chip, enum chip_pass pass)
358 {
359
360         struct cpu_p6_config *conf = (struct cpu_p6_config *)chip->chip_info;
361
362         switch (pass) {
363         case CONF_PASS_PRE_CONSOLE:
364                 break;
365         case CONF_PASS_PRE_PCI:
366                 init_timer();
367                 break;
368         default:
369                 /* nothing yet */
370                 break;
371         }
372 }
373
374 struct chip_control cpu_p6_control = {
375         .enable = p6_enable,
376         .name   = "Intel P6  CPU",
377 };