blob: 4e941721c0d1afccdc80e3c21d811666233b7ec0 [file] [log] [blame]
Peter Orubad4ee3662008-07-28 18:44:18 +02001struct microcode_header_intel {
Peter Oruba9a56a0f2008-07-28 18:44:13 +02002 unsigned int hdrver;
3 unsigned int rev;
4 unsigned int date;
5 unsigned int sig;
6 unsigned int cksum;
7 unsigned int ldrver;
8 unsigned int pf;
9 unsigned int datasize;
10 unsigned int totalsize;
11 unsigned int reserved[3];
12};
13
Peter Orubad4ee3662008-07-28 18:44:18 +020014struct microcode_intel {
15 struct microcode_header_intel hdr;
Peter Oruba9a56a0f2008-07-28 18:44:13 +020016 unsigned int bits[0];
17};
18
Peter Oruba9a56a0f2008-07-28 18:44:13 +020019/* microcode format is extended from prescott processors */
20struct extended_signature {
21 unsigned int sig;
22 unsigned int pf;
23 unsigned int cksum;
24};
25
26struct extended_sigtable {
27 unsigned int count;
28 unsigned int cksum;
29 unsigned int reserved[3];
30 struct extended_signature sigs[0];
31};
Peter Orubac3b71bc2008-07-28 18:44:15 +020032
Peter Oruba9835fd42008-07-28 18:44:19 +020033struct equiv_cpu_entry {
34 unsigned int installed_cpu;
35 unsigned int fixed_errata_mask;
36 unsigned int fixed_errata_compare;
37 unsigned int equiv_cpu;
38};
39
40struct microcode_header_amd {
41 unsigned int data_code;
42 unsigned int patch_id;
43 unsigned char mc_patch_data_id[2];
44 unsigned char mc_patch_data_len;
45 unsigned char init_flag;
46 unsigned int mc_patch_data_checksum;
47 unsigned int nb_dev_id;
48 unsigned int sb_dev_id;
49 unsigned char processor_rev_id[2];
50 unsigned char nb_rev_id;
51 unsigned char sb_rev_id;
52 unsigned char bios_api_rev;
53 unsigned char reserved1[3];
54 unsigned int match_reg[8];
55};
56
57struct microcode_amd {
58 struct microcode_header_amd hdr;
59 unsigned int mpb[0];
60};
61
Peter Orubac3b71bc2008-07-28 18:44:15 +020062struct ucode_cpu_info {
63 int valid;
64 unsigned int sig;
65 unsigned int pf;
66 unsigned int rev;
Peter Orubad4ee3662008-07-28 18:44:18 +020067 union {
68 struct microcode_intel *mc_intel;
Peter Oruba9835fd42008-07-28 18:44:19 +020069 struct microcode_amd *mc_amd;
Peter Orubad4ee3662008-07-28 18:44:18 +020070 } mc;
Peter Orubac3b71bc2008-07-28 18:44:15 +020071};