2 * This file is part of the Palacios Virtual Machine Monitor developed
3 * by the V3VEE Project with funding from the United States National
4 * Science Foundation and the Department of Energy.
6 * The V3VEE Project is a joint project between Northwestern University
7 * and the University of New Mexico. You can find out more at
10 * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu>
11 * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org>
12 * All rights reserved.
14 * Author: Jack Lange <jarusl@cs.northwestern.edu>
16 * This is free software. You are permitted to use,
17 * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
28 } __attribute__((packed));
29 } __attribute__((packed));
30 } __attribute__((packed));
40 uint_t ext_reg_present : 1;
41 } __attribute__((packed));
42 } __attribute__((packed));
43 } __attribute__((packed));
46 struct ext_apic_ctrl_reg {
51 uint_t seoi_enable : 1;
52 uint_t ext_id_enable : 1;
54 } __attribute__((packed));
55 } __attribute__((packed));
56 } __attribute__((packed));
60 struct local_vec_tbl_reg {
67 uint_t del_status : 1;
74 } __attribute__((packed));
75 } __attribute__((packed));
76 } __attribute__((packed));
79 struct tmr_vec_tbl_reg {
85 uint_t del_status : 1;
88 #define APIC_TMR_ONESHOT 0
89 #define APIC_TMR_PERIODIC 1
92 } __attribute__((packed));
93 } __attribute__((packed));
94 } __attribute__((packed));
97 struct tmr_div_cfg_reg {
98 #define APIC_TMR_DIV1 0xb // 1011
99 #define APIC_TMR_DIV2 0x0 // 0000
100 #define APIC_TMR_DIV4 0x1 // 0001
101 #define APIC_TMR_DIV8 0x2 // 0010
102 #define APIC_TMR_DIV16 0x3 // 0011
103 #define APIC_TMR_DIV32 0x8 // 1000
104 #define APIC_TMR_DIV64 0x9 // 1001
105 #define APIC_TMR_DIV128 0xa // 1010
113 } __attribute__((packed));
114 } __attribute__((packed));
115 } __attribute__((packed));
118 struct lint_vec_tbl_reg {
125 uint_t del_status : 1;
128 uint_t trig_mode : 1;
131 } __attribute__((packed));
132 } __attribute__((packed));
133 } __attribute__((packed));
136 struct perf_ctr_loc_vec_tbl_reg {
143 uint_t del_status : 1;
147 } __attribute__((packed));
148 } __attribute__((packed));
149 } __attribute__((packed));
152 struct therm_loc_vec_tbl_reg {
159 uint_t del_status : 1;
163 } __attribute__((packed));
164 } __attribute__((packed));
165 } __attribute__((packed));
167 struct err_vec_tbl_reg {
174 uint_t del_status : 1;
178 } __attribute__((packed));
179 } __attribute__((packed));
180 } __attribute__((packed));
183 struct err_status_reg {
188 uint_t sent_acc_err : 1;
189 uint_t recv_acc_err : 1;
191 uint_t sent_ill_err : 1;
192 uint_t recv_ill_err : 1;
193 uint_t ill_reg_addr : 1;
195 } __attribute__((packed));
196 } __attribute__((packed));
197 } __attribute__((packed));
200 struct spurious_int_reg {
205 uint_t apic_soft_en : 1;
206 uint_t foc_cpu_chk : 1;
208 } __attribute__((packed));
209 } __attribute__((packed));
210 } __attribute__((packed));
219 } __attribute__((packed));
225 uint_t del_status : 1;
228 uint_t trig_mode : 1;
229 uint_t rem_rd_status : 2;
230 uint_t dst_shorthand : 2;
233 } __attribute__((packed));
234 } __attribute__((packed));
235 } __attribute__((packed));
243 uint_t dst_log_id : 8;
244 } __attribute__((packed));
245 } __attribute__((packed));
246 } __attribute__((packed));
255 } __attribute__((packed));
256 } __attribute__((packed));
257 } __attribute__((packed));
260 struct arb_prio_reg {
264 uint_t arb_prio_sub : 4;
267 } __attribute__((packed));
268 } __attribute__((packed));
269 } __attribute__((packed));
274 struct task_prio_reg {
278 uint_t task_prio_sub : 4;
279 uint_t task_prio : 4;
281 } __attribute__((packed));
282 } __attribute__((packed));
283 } __attribute__((packed));
287 struct proc_prio_reg {
291 uint_t proc_prio_sub : 4;
292 uint_t proc_prio : 4;
294 } __attribute__((packed));
295 } __attribute__((packed));
296 } __attribute__((packed));
298 struct ext_apic_feature_reg {
302 uint_t int_en_reg_cap : 1;
303 uint_t spec_eoi_cap : 1;
304 uint_t ext_apic_id_cap: 1;
306 uint_t ext_lvt_cnt : 8;
308 } __attribute__((packed));
309 } __attribute__((packed));
310 } __attribute__((packed));
313 struct spec_eoi_reg {
319 } __attribute__((packed));
320 } __attribute__((packed));
321 } __attribute__((packed));