forked from ia32-doc/ia32-doc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAPIC.yml
More file actions
362 lines (314 loc) · 11.4 KB
/
APIC.yml
File metadata and controls
362 lines (314 loc) · 11.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
- short_name: APIC
long_name: LOCAL_APIC
children_name_with_prefix: APIC
short_description: Advanced Programmable Interrupt Controller (APIC)
long_description: |
Software interacts with the local APIC by reading
and writing its registers. APIC registers are memory-mapped to a 4-KByte region of the processor’s physical
address space with an initial starting address of FEE00000H. For correct APIC operation, this address space must
be mapped to an area of memory that has been designated as strong uncacheable (UC).
remarks: |
Registers are 32 bits,
64 bits, or 256 bits in width; all are aligned on 128-bit boundaries. All 32-bit registers should be accessed using
128-bit aligned 32-bit loads or stores. Some processors may support loads and stores of less than 32 bits to some
of the APIC registers. This is model specific behavior and is not guaranteed to work on all processors. Any
FP/MMX/SSE access to an APIC register, or any access that touches bytes 4 through 15 of an APIC register may
cause undefined behavior and must not be executed. This undefined behavior could include hangs, incorrect results
or unexpected exceptions, including machine checks, and may vary between implementations. Wider registers
(64-bit or 256-bit) must be accessed using multiple 32-bit loads or stores, with all accesses being 128-bit aligned.
type: group
size: 32
reference: Vol3A[10.4.1(The Local APIC Block Diagram)]
fields:
- value: 0xFEE00000
short_name: BASE
long_name: BASE_ADDRESS
description: Local APIC Base Address.
remarks: Reserved.
#
# Offsets.
#
- value: 0x20
short_name: ID
long_name: ID_REGISTER
alternative_name: ID
description: Local APIC ID Register.
access: Read/Write
- value: 0x30
short_name: VERSION
long_name: VERSION_REGISTER
alternative_name: VERSION
description: Local APIC Version Register.
access: Read Only
- value: 0x80
short_name: TPR
long_name: TASK_PRIORITY_REGISTER
alternative_name: TASK_PRIORITY
description: Task Priority Register (TPR).
access: Read/Write
- value: 0x90
short_name: APR
long_name: ARBITRATION_PRIORITY_REGISTER
alternative_name: ARBITRATION_PRIORITY
description: Arbitration Priority Register (APR).
access: Read Only
- value: 0xA0
short_name: PPR
long_name: PROCESSOR_PRIORITY_REGISTER
alternative_name: PROCESSOR_PRIORITY
description: Processor Priority Register (PPR).
access: Read Only
- value: 0xB0
short_name: EOI
long_name: EOI_REGISTER
alternative_name: EOI
description: EOI Register.
access: Write Only
- value: 0xC0
short_name: REMOTE_READ
long_name: REMOTE_READ_REGISTER
alternative_name: REMOTE_READ
description: Remote Read Register (RRD).
access: Read Only
- value: 0xD0
short_name: LOGICAL_DESTINATION
long_name: LOGICAL_DESTINATION_REGISTER
alternative_name: LOGICAL_DESTINATION
description: Logical Destination Register.
access: Read/Write
- value: 0xE0
short_name: DESTINATION_FORMAT
long_name: DESTINATION_FORMAT_REGISTER
alternative_name: DESTINATION_FORMAT
description: Destination Format Register.
access: Read/Write
see: Vol3A[10.6.2.2(Logical Destination Mode)]
- value: 0xF0
short_name: SIV
long_name: SPURIOUS_INTERRUPT_VECTOR_REGISTER
alternative_name: SPURIOUS_INTERRUPT_VECTOR
description: Spurious Interrupt Vector Register.
access: Read/Write
see: Vol3A[10.9(SPURIOUS INTERRUPT)]
- value: 0x100
short_name: ISR_31_0
long_name: IN_SERVICE_REGISTER_BITS_31_0
alternative_name: IN_SERVICE_BITS_31_0
description: In-Service Register (ISR); bits 31:0.
access: Read Only
- value: 0x110
short_name: ISR_63_32
long_name: IN_SERVICE_REGISTER_BITS_63_32
alternative_name: IN_SERVICE_BITS_63_32
description: In-Service Register (ISR); bits 63:32.
access: Read Only
- value: 0x120
short_name: ISR_95_64
long_name: IN_SERVICE_REGISTER_BITS_95_64
alternative_name: IN_SERVICE_BITS_95_64
description: In-Service Register (ISR); bits 95:64.
access: Read Only
- value: 0x130
short_name: ISR_127_96
long_name: IN_SERVICE_REGISTER_BITS_127_96
alternative_name: IN_SERVICE_BITS_127_96
description: In-Service Register (ISR); bits 127:96.
access: Read Only
- value: 0x140
short_name: ISR_159_128
long_name: IN_SERVICE_REGISTER_BITS_159_128
alternative_name: IN_SERVICE_BITS_159_128
description: In-Service Register (ISR); bits 159:128.
access: Read Only
- value: 0x150
short_name: ISR_191_160
long_name: IN_SERVICE_REGISTER_BITS_191_160
alternative_name: IN_SERVICE_BITS_191_160
description: In-Service Register (ISR); bits 191:160.
access: Read Only
- value: 0x160
short_name: ISR_223_192
long_name: IN_SERVICE_REGISTER_BITS_223_192
alternative_name: IN_SERVICE_BITS_223_192
description: In-Service Register (ISR); bits 223:192.
access: Read Only
- value: 0x170
short_name: ISR_255_224
long_name: IN_SERVICE_REGISTER_BITS_255_224
alternative_name: IN_SERVICE_BITS_255_224
description: In-Service Register (ISR); bits 255:224.
access: Read Only
- value: 0x180
short_name: TMR_31_0
long_name: TRIGGER_MODE_REGISTER_BITS_31_0
alternative_name: TRIGGER_MODE_BITS_31_0
description: Trigger Mode Register (TMR); bits 31:0.
access: Read Only
- value: 0x190
short_name: TMR_63_32
long_name: TRIGGER_MODE_REGISTER_BITS_63_32
alternative_name: TRIGGER_MODE_BITS_63_32
description: Trigger Mode Register (TMR); bits 63:32.
access: Read Only
- value: 0x1A0
short_name: TMR_95_64
long_name: TRIGGER_MODE_REGISTER_BITS_95_64
alternative_name: TRIGGER_MODE_BITS_95_64
description: Trigger Mode Register (TMR); bits 95:64.
access: Read Only
- value: 0x1B0
short_name: TMR_127_96
long_name: TRIGGER_MODE_REGISTER_BITS_127_96
alternative_name: TRIGGER_MODE_BITS_127_96
description: Trigger Mode Register (TMR); bits 127:96.
access: Read Only
- value: 0x1C0
short_name: TMR_159_128
long_name: TRIGGER_MODE_REGISTER_BITS_159_128
alternative_name: TRIGGER_MODE_BITS_159_128
description: Trigger Mode Register (TMR); bits 159:128.
access: Read Only
- value: 0x1D0
short_name: TMR_191_160
long_name: TRIGGER_MODE_REGISTER_BITS_191_160
alternative_name: TRIGGER_MODE_BITS_191_160
description: Trigger Mode Register (TMR); bits 191:160.
access: Read Only
- value: 0x1E0
short_name: TMR_223_192
long_name: TRIGGER_MODE_REGISTER_BITS_223_192
alternative_name: TRIGGER_MODE_BITS_223_192
description: Trigger Mode Register (TMR); bits 223:192.
access: Read Only
- value: 0x1F0
short_name: TMR_255_224
long_name: TRIGGER_MODE_REGISTER_BITS_255_224
alternative_name: TRIGGER_MODE_BITS_255_224
description: Trigger Mode Register (TMR); bits 255:224.
access: Read Only
- value: 0x200
short_name: IRR_31_0
long_name: INTERRUPT_REQUEST_REGISTER_BITS_31_0
alternative_name: INTERRUPT_REQUEST_BITS_31_0
description: Interrupt Request Register (IRR); bits 31:0.
access: Read Only
- value: 0x210
short_name: IRR_63_32
long_name: INTERRUPT_REQUEST_REGISTER_BITS_63_32
alternative_name: INTERRUPT_REQUEST_BITS_63_32
description: Interrupt Request Register (IRR); bits 63:32.
access: Read Only
- value: 0x220
short_name: IRR_95_64
long_name: INTERRUPT_REQUEST_REGISTER_BITS_95_64
alternative_name: INTERRUPT_REQUEST_BITS_95_64
description: Interrupt Request Register (IRR); bits 95:64.
access: Read Only
- value: 0x230
short_name: IRR_127_96
long_name: INTERRUPT_REQUEST_REGISTER_BITS_127_96
alternative_name: INTERRUPT_REQUEST_BITS_127_96
description: Interrupt Request Register (IRR); bits 127:96.
access: Read Only
- value: 0x240
short_name: IRR_159_128
long_name: INTERRUPT_REQUEST_REGISTER_BITS_159_128
alternative_name: INTERRUPT_REQUEST_BITS_159_128
description: Interrupt Request Register (IRR); bits 159:128.
access: Read Only
- value: 0x250
short_name: IRR_191_160
long_name: INTERRUPT_REQUEST_REGISTER_BITS_191_160
alternative_name: INTERRUPT_REQUEST_BITS_191_160
description: Interrupt Request Register (IRR); bits 191:160.
access: Read Only
- value: 0x260
short_name: IRR_223_192
long_name: INTERRUPT_REQUEST_REGISTER_BITS_223_192
alternative_name: INTERRUPT_REQUEST_BITS_223_192
description: Interrupt Request Register (IRR); bits 223:192.
access: Read Only
- value: 0x270
short_name: IRR_255_224
long_name: INTERRUPT_REQUEST_REGISTER_BITS_255_224
alternative_name: INTERRUPT_REQUEST_BITS_255_224
description: Interrupt Request Register (IRR); bits 255:224.
access: Read Only
- value: 0x280
short_name: ERROR_STATUS
long_name: ERROR_STATUS_REGISTER
alternative_name: ERROR_STATUS
description: Error Status Register.
access: Read Only
- value: 0x2F0
short_name: CMCI
long_name: LVT_CORRECTED_MACHINE_CHECK_INTERRUPT_REGISTER
alternative_name: LVT_CORRECTED_MACHINE_CHECK_INTERRUPT
description: LVT Corrected Machine Check Interrupt (CMCI) Register.
access: Read/Write
- value: 0x300
short_name: ICR_0_31
long_name: INTERRUPT_COMMAND_REGISTER_BITS_0_31
alternative_name: INTERRUPT_COMMAND_BITS_0_31
description: Interrupt Command Register (ICR); bits 0-31.
access: Read/Write
- value: 0x310
short_name: ICR_32_63
long_name: INTERRUPT_COMMAND_REGISTER_BITS_32_63
alternative_name: INTERRUPT_COMMAND_BITS_32_63
description: Interrupt Command Register (ICR); bits 32-63.
access: Read/Write
- value: 0x320
short_name: LVT_TIMER
long_name: LVT_TIMER_REGISTER
alternative_name: LVT_TIMER
description: LVT Timer Register.
access: Read/Write
- value: 0x330
short_name: LVT_THERMAL_SENSOR
long_name: LVT_THERMAL_SENSOR_REGISTER
alternative_name: LVT_THERMAL_SENSOR
description: LVT Thermal Sensor Register.
access: Read/Write
- value: 0x340
short_name: LVT_PERFORMANCE_MONITORING_COUNTERS
long_name: LVT_PERFORMANCE_MONITORING_COUNTERS_REGISTER
alternative_name: LVT_PERFORMANCE_MONITORING_COUNTERS
description: LVT Performance Monitoring Counters Register.
access: Read/Write
- value: 0x350
short_name: LVT_LINT0
long_name: LVT_LINT0_REGISTER
alternative_name: LVT_LINT0
description: LVT LINT0 Register.
access: Read/Write
- value: 0x360
short_name: LVT_LINT1
long_name: LVT_LINT1_REGISTER
alternative_name: LVT_LINT1
description: LVT LINT1 Register.
access: Read/Write
- value: 0x370
short_name: LVT_ERROR
long_name: LVT_ERROR_REGISTER
alternative_name: LVT_ERROR
description: LVT Error Register.
access: Read/Write
- value: 0x380
short_name: INITIAL_COUNT
long_name: INITIAL_COUNT_REGISTER
alternative_name: INITIAL_COUNT
description: Initial Count Register (for Timer).
access: Read/Write
- value: 0x390
short_name: CURRENT_COUNT
long_name: CURRENT_COUNT_REGISTER
alternative_name: CURRENT_COUNT
description: Current Count Register (for Timer).
access: Read Only
- value: 0x3E0
short_name: DIVIDE_CONFIGURATION
long_name: DIVIDE_CONFIGURATION_REGISTER
alternative_name: DIVIDE_CONFIGURATION
description: Divide Configuration Register (for Timer).
access: Read/Write