1 | /** @file
|
---|
2 | Main PAL API's defined in Intel Itanium Architecture Software Developer's Manual.
|
---|
3 |
|
---|
4 | Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
---|
5 | This program and the accompanying materials
|
---|
6 | are licensed and made available under the terms and conditions of the BSD License
|
---|
7 | which accompanies this distribution. The full text of the license may be found at
|
---|
8 | http://opensource.org/licenses/bsd-license.php
|
---|
9 |
|
---|
10 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
---|
11 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
---|
12 |
|
---|
13 | **/
|
---|
14 |
|
---|
15 | #ifndef __PAL_API_H__
|
---|
16 | #define __PAL_API_H__
|
---|
17 |
|
---|
18 | #define PAL_SUCCESS 0x0
|
---|
19 |
|
---|
20 | ///
|
---|
21 | /// CacheType of PAL_CACHE_FLUSH.
|
---|
22 | ///
|
---|
23 | #define PAL_CACHE_FLUSH_INSTRUCTION_ALL 1
|
---|
24 | #define PAL_CACHE_FLUSH_DATA_ALL 2
|
---|
25 | #define PAL_CACHE_FLUSH_ALL 3
|
---|
26 | #define PAL_CACHE_FLUSH_SYNC_TO_DATA 4
|
---|
27 |
|
---|
28 |
|
---|
29 | ///
|
---|
30 | /// Bitmask of Opearation of PAL_CACHE_FLUSH.
|
---|
31 | ///
|
---|
32 | #define PAL_CACHE_FLUSH_INVALIDATE_LINES BIT0
|
---|
33 | #define PAL_CACHE_FLUSH_NO_INVALIDATE_LINES 0
|
---|
34 | #define PAL_CACHE_FLUSH_POLL_INTERRUPT BIT1
|
---|
35 | #define PAL_CACHE_FLUSH_NO_INTERRUPT 0
|
---|
36 |
|
---|
37 | /**
|
---|
38 | PAL Procedure - PAL_CACHE_FLUSH.
|
---|
39 |
|
---|
40 | Flush the instruction or data caches. It is required by Itanium processors.
|
---|
41 | The PAL procedure supports the Static Registers calling
|
---|
42 | convention. It could be called at virtual mode and physical
|
---|
43 | mode.
|
---|
44 |
|
---|
45 | @param Index Index of PAL_CACHE_FLUSH within the
|
---|
46 | list of PAL procedures.
|
---|
47 | @param CacheType Unsigned 64-bit integer indicating
|
---|
48 | which cache to flush.
|
---|
49 | @param Operation Formatted bit vector indicating the
|
---|
50 | operation of this call.
|
---|
51 | @param ProgressIndicator Unsigned 64-bit integer specifying
|
---|
52 | the starting position of the flush
|
---|
53 | operation.
|
---|
54 |
|
---|
55 | @retval 2 Call completed without error, but a PMI
|
---|
56 | was taken during the execution of this
|
---|
57 | procedure.
|
---|
58 | @retval 1 Call has not completed flushing due to
|
---|
59 | a pending interrupt.
|
---|
60 | @retval 0 Call completed without error
|
---|
61 | @retval -2 Invalid argument
|
---|
62 | @retval -3 Call completed with error
|
---|
63 |
|
---|
64 | @return R9 Unsigned 64-bit integer specifying the vector
|
---|
65 | number of the pending interrupt.
|
---|
66 | @return R10 Unsigned 64-bit integer specifying the
|
---|
67 | starting position of the flush operation.
|
---|
68 | @return R11 Unsigned 64-bit integer specifying the vector
|
---|
69 | number of the pending interrupt.
|
---|
70 |
|
---|
71 | **/
|
---|
72 | #define PAL_CACHE_FLUSH 1
|
---|
73 |
|
---|
74 |
|
---|
75 | ///
|
---|
76 | /// Attributes of PAL_CACHE_CONFIG_INFO1
|
---|
77 | ///
|
---|
78 | #define PAL_CACHE_ATTR_WT 0
|
---|
79 | #define PAL_CACHE_ATTR_WB 1
|
---|
80 |
|
---|
81 | ///
|
---|
82 | /// PAL_CACHE_CONFIG_INFO1.StoreHint
|
---|
83 | ///
|
---|
84 | #define PAL_CACHE_STORE_TEMPORAL 0
|
---|
85 | #define PAL_CACHE_STORE_NONE_TEMPORAL 3
|
---|
86 |
|
---|
87 | ///
|
---|
88 | /// PAL_CACHE_CONFIG_INFO1.StoreHint
|
---|
89 | ///
|
---|
90 | #define PAL_CACHE_STORE_TEMPORAL_LVL_1 0
|
---|
91 | #define PAL_CACHE_STORE_NONE_TEMPORAL_LVL_ALL 3
|
---|
92 |
|
---|
93 | ///
|
---|
94 | /// PAL_CACHE_CONFIG_INFO1.StoreHint
|
---|
95 | ///
|
---|
96 | #define PAL_CACHE_LOAD_TEMPORAL_LVL_1 0
|
---|
97 | #define PAL_CACHE_LOAD_NONE_TEMPORAL_LVL_1 1
|
---|
98 | #define PAL_CACHE_LOAD_NONE_TEMPORAL_LVL_ALL 3
|
---|
99 |
|
---|
100 | ///
|
---|
101 | /// Detail the characteristics of a given processor controlled
|
---|
102 | /// cache in the cache hierarchy.
|
---|
103 | ///
|
---|
104 | typedef struct {
|
---|
105 | UINT64 IsUnified : 1;
|
---|
106 | UINT64 Attributes : 2;
|
---|
107 | UINT64 Associativity:8;
|
---|
108 | UINT64 LineSize:8;
|
---|
109 | UINT64 Stride:8;
|
---|
110 | UINT64 StoreLatency:8;
|
---|
111 | UINT64 StoreHint:8;
|
---|
112 | UINT64 LoadHint:8;
|
---|
113 | } PAL_CACHE_INFO_RETURN1;
|
---|
114 |
|
---|
115 | ///
|
---|
116 | /// Detail the characteristics of a given processor controlled
|
---|
117 | /// cache in the cache hierarchy.
|
---|
118 | ///
|
---|
119 | typedef struct {
|
---|
120 | UINT64 CacheSize:32;
|
---|
121 | UINT64 AliasBoundary:8;
|
---|
122 | UINT64 TagLsBits:8;
|
---|
123 | UINT64 TagMsBits:8;
|
---|
124 | } PAL_CACHE_INFO_RETURN2;
|
---|
125 |
|
---|
126 | /**
|
---|
127 | PAL Procedure - PAL_CACHE_INFO.
|
---|
128 |
|
---|
129 | Return detailed instruction or data cache information. It is
|
---|
130 | required by Itanium processors. The PAL procedure supports the Static
|
---|
131 | Registers calling convention. It could be called at virtual
|
---|
132 | mode and physical mode.
|
---|
133 |
|
---|
134 | @param Index Index of PAL_CACHE_INFO within the list of
|
---|
135 | PAL procedures.
|
---|
136 | @param CacheLevel Unsigned 64-bit integer specifying the
|
---|
137 | level in the cache hierarchy for which
|
---|
138 | information is requested. This value must
|
---|
139 | be between 0 and one less than the value
|
---|
140 | returned in the cache_levels return value
|
---|
141 | from PAL_CACHE_SUMMARY.
|
---|
142 | @param CacheType Unsigned 64-bit integer with a value of 1
|
---|
143 | for instruction cache and 2 for data or
|
---|
144 | unified cache. All other values are
|
---|
145 | reserved.
|
---|
146 | @param Reserved Should be 0.
|
---|
147 |
|
---|
148 | @retval 0 Call completed without error
|
---|
149 | @retval -2 Invalid argument
|
---|
150 | @retval -3 Call completed with error
|
---|
151 |
|
---|
152 | @return R9 Detail the characteristics of a given
|
---|
153 | processor controlled cache in the cache
|
---|
154 | hierarchy. See PAL_CACHE_INFO_RETURN1.
|
---|
155 | @return R10 Detail the characteristics of a given
|
---|
156 | processor controlled cache in the cache
|
---|
157 | hierarchy. See PAL_CACHE_INFO_RETURN2.
|
---|
158 | @return R11 Reserved with 0.
|
---|
159 |
|
---|
160 | **/
|
---|
161 | #define PAL_CACHE_INFO 2
|
---|
162 |
|
---|
163 |
|
---|
164 |
|
---|
165 | ///
|
---|
166 | /// Level of PAL_CACHE_INIT.
|
---|
167 | ///
|
---|
168 | #define PAL_CACHE_INIT_ALL 0xffffffffffffffffULL
|
---|
169 |
|
---|
170 | ///
|
---|
171 | /// CacheType
|
---|
172 | ///
|
---|
173 | #define PAL_CACHE_INIT_TYPE_INSTRUCTION 0x1
|
---|
174 | #define PAL_CACHE_INIT_TYPE_DATA 0x2
|
---|
175 | #define PAL_CACHE_INIT_TYPE_INSTRUCTION_AND_DATA 0x3
|
---|
176 |
|
---|
177 | ///
|
---|
178 | /// Restrict of PAL_CACHE_INIT.
|
---|
179 | ///
|
---|
180 | #define PAL_CACHE_INIT_NO_RESTRICT 0
|
---|
181 | #define PAL_CACHE_INIT_RESTRICTED 1
|
---|
182 |
|
---|
183 | /**
|
---|
184 | PAL Procedure - PAL_CACHE_INIT.
|
---|
185 |
|
---|
186 | Initialize the instruction or data caches. It is required by
|
---|
187 | Itanium processors. The PAL procedure supports the Static Registers calling
|
---|
188 | convention. It could be called at physical mode.
|
---|
189 |
|
---|
190 | @param Index Index of PAL_CACHE_INIT within the list of PAL
|
---|
191 | procedures.
|
---|
192 | @param Level Unsigned 64-bit integer containing the level of
|
---|
193 | cache to initialize. If the cache level can be
|
---|
194 | initialized independently, only that level will
|
---|
195 | be initialized. Otherwise
|
---|
196 | implementation-dependent side-effects will
|
---|
197 | occur.
|
---|
198 | @param CacheType Unsigned 64-bit integer with a value of 1 to
|
---|
199 | initialize the instruction cache, 2 to
|
---|
200 | initialize the data cache, or 3 to
|
---|
201 | initialize both. All other values are
|
---|
202 | reserved.
|
---|
203 | @param Restrict Unsigned 64-bit integer with a value of 0 or
|
---|
204 | 1. All other values are reserved. If
|
---|
205 | restrict is 1 and initializing the specified
|
---|
206 | level and cache_type of the cache would
|
---|
207 | cause side-effects, PAL_CACHE_INIT will
|
---|
208 | return -4 instead of initializing the cache.
|
---|
209 |
|
---|
210 | @retval 0 Call completed without error
|
---|
211 | @retval -2 Invalid argument
|
---|
212 | @retval -3 Call completed with error.
|
---|
213 | @retval -4 Call could not initialize the specified
|
---|
214 | level and cache_type of the cache without
|
---|
215 | side-effects and restrict was 1.
|
---|
216 |
|
---|
217 | **/
|
---|
218 | #define PAL_CACHE_INIT 3
|
---|
219 |
|
---|
220 |
|
---|
221 | ///
|
---|
222 | /// PAL_CACHE_PROTECTION.Method.
|
---|
223 | ///
|
---|
224 | #define PAL_CACHE_PROTECTION_NONE_PROTECT 0
|
---|
225 | #define PAL_CACHE_PROTECTION_ODD_PROTECT 1
|
---|
226 | #define PAL_CACHE_PROTECTION_EVEN_PROTECT 2
|
---|
227 | #define PAL_CACHE_PROTECTION_ECC_PROTECT 3
|
---|
228 |
|
---|
229 |
|
---|
230 |
|
---|
231 | ///
|
---|
232 | /// PAL_CACHE_PROTECTION.TagOrData.
|
---|
233 | ///
|
---|
234 | #define PAL_CACHE_PROTECTION_PROTECT_DATA 0
|
---|
235 | #define PAL_CACHE_PROTECTION_PROTECT_TAG 1
|
---|
236 | #define PAL_CACHE_PROTECTION_PROTECT_TAG_ANDTHEN_DATA 2
|
---|
237 | #define PAL_CACHE_PROTECTION_PROTECT_DATA_ANDTHEN_TAG 3
|
---|
238 |
|
---|
239 | ///
|
---|
240 | /// 32-bit protection information structures.
|
---|
241 | ///
|
---|
242 | typedef struct {
|
---|
243 | UINT32 DataBits:8;
|
---|
244 | UINT32 TagProtLsb:6;
|
---|
245 | UINT32 TagProtMsb:6;
|
---|
246 | UINT32 ProtBits:6;
|
---|
247 | UINT32 Method:4;
|
---|
248 | UINT32 TagOrData:2;
|
---|
249 | } PAL_CACHE_PROTECTION;
|
---|
250 |
|
---|
251 | /**
|
---|
252 | PAL Procedure - PAL_CACHE_PROT_INFO.
|
---|
253 |
|
---|
254 | Return instruction or data cache protection information. It is
|
---|
255 | required by Itanium processors. The PAL procedure supports the Static
|
---|
256 | Registers calling convention. It could be called at physical
|
---|
257 | mode and Virtual mode.
|
---|
258 |
|
---|
259 | @param Index Index of PAL_CACHE_PROT_INFO within the list of
|
---|
260 | PAL procedures.
|
---|
261 | @param CacheLevel Unsigned 64-bit integer specifying the level
|
---|
262 | in the cache hierarchy for which information
|
---|
263 | is requested. This value must be between 0
|
---|
264 | and one less than the value returned in the
|
---|
265 | cache_levels return value from
|
---|
266 | PAL_CACHE_SUMMARY.
|
---|
267 | @param CacheType Unsigned 64-bit integer with a value of 1
|
---|
268 | for instruction cache and 2 for data or
|
---|
269 | unified cache. All other values are
|
---|
270 | reserved.
|
---|
271 |
|
---|
272 | @retval 0 Call completed without error
|
---|
273 | @retval -2 Invalid argument
|
---|
274 | @retval -3 Call completed with error.
|
---|
275 |
|
---|
276 | @return R9 Detail the characteristics of a given
|
---|
277 | processor controlled cache in the cache
|
---|
278 | hierarchy. See PAL_CACHE_PROTECTION[0..1].
|
---|
279 | @return R10 Detail the characteristics of a given
|
---|
280 | processor controlled cache in the cache
|
---|
281 | hierarchy. See PAL_CACHE_PROTECTION[2..3].
|
---|
282 | @return R11 Detail the characteristics of a given
|
---|
283 | processor controlled cache in the cache
|
---|
284 | hierarchy. See PAL_CACHE_PROTECTION[4..5].
|
---|
285 |
|
---|
286 | **/
|
---|
287 | #define PAL_CACHE_PROT_INFO 38
|
---|
288 |
|
---|
289 | typedef struct {
|
---|
290 | UINT64 ThreadId : 16; ///< The thread identifier of the logical
|
---|
291 | ///< processor for which information is being
|
---|
292 | ///< returned. This value will be unique on a per core basis.
|
---|
293 | UINT64 Reserved1: 16;
|
---|
294 | UINT64 CoreId: 16; ///< The core identifier of the logical processor
|
---|
295 | ///< for which information is being returned.
|
---|
296 | ///< This value will be unique on a per physical
|
---|
297 | ///< processor package basis.
|
---|
298 | UINT64 Reserved2: 16;
|
---|
299 | } PAL_PCOC_N_CACHE_INFO1;
|
---|
300 |
|
---|
301 |
|
---|
302 | typedef struct {
|
---|
303 | UINT64 LogicalAddress : 16; ///< Logical address: geographical address
|
---|
304 | ///< of the logical processor for which
|
---|
305 | ///< information is being returned. This is
|
---|
306 | ///< the same value that is returned by the
|
---|
307 | ///< PAL_FIXED_ADDR procedure when it is
|
---|
308 | ///< called on the logical processor.
|
---|
309 | UINT64 Reserved1: 16;
|
---|
310 | UINT64 Reserved2: 32;
|
---|
311 | } PAL_PCOC_N_CACHE_INFO2;
|
---|
312 |
|
---|
313 | /**
|
---|
314 | PAL Procedure - PAL_CACHE_SHARED_INFO.
|
---|
315 |
|
---|
316 | Returns information on which logical processors share caches.
|
---|
317 | It is optional. The PAL procedure supports the Static
|
---|
318 | Registers calling convention. It could be called at physical
|
---|
319 | mode and Virtual mode.
|
---|
320 |
|
---|
321 | @param Index Index of PAL_CACHE_SHARED_INFO within the list
|
---|
322 | of PAL procedures.
|
---|
323 | @param CacheLevel Unsigned 64-bit integer specifying the
|
---|
324 | level in the cache hierarchy for which
|
---|
325 | information is requested. This value must
|
---|
326 | be between 0 and one less than the value
|
---|
327 | returned in the cache_levels return value
|
---|
328 | from PAL_CACHE_SUMMARY.
|
---|
329 | @param CacheType Unsigned 64-bit integer with a value of 1
|
---|
330 | for instruction cache and 2 for data or
|
---|
331 | unified cache. All other values are
|
---|
332 | reserved.
|
---|
333 | @param ProcNumber Unsigned 64-bit integer that specifies for
|
---|
334 | which logical processor information is
|
---|
335 | being requested. This input argument must
|
---|
336 | be zero for the first call to this
|
---|
337 | procedure and can be a maximum value of
|
---|
338 | one less than the number of logical
|
---|
339 | processors sharing this cache, which is
|
---|
340 | returned by the num_shared return value.
|
---|
341 |
|
---|
342 | @retval 0 Call completed without error
|
---|
343 | @retval -1 Unimplemented procedure
|
---|
344 | @retval -2 Invalid argument
|
---|
345 | @retval -3 Call completed with error.
|
---|
346 |
|
---|
347 | @return R9 Unsigned integer that returns the number of
|
---|
348 | logical processors that share the processor
|
---|
349 | cache level and type, for which information was
|
---|
350 | requested.
|
---|
351 | @return R10 The format of PAL_PCOC_N_CACHE_INFO1.
|
---|
352 | @return R11 The format of PAL_PCOC_N_CACHE_INFO2.
|
---|
353 |
|
---|
354 | **/
|
---|
355 | #define PAL_CACHE_SHARED_INFO 43
|
---|
356 |
|
---|
357 |
|
---|
358 | /**
|
---|
359 | PAL Procedure - PAL_CACHE_SUMMARY.
|
---|
360 |
|
---|
361 | Return a summary of the cache hierarchy. It is required by
|
---|
362 | Itanium processors. The PAL procedure supports the Static Registers calling
|
---|
363 | convention. It could be called at physical mode and Virtual
|
---|
364 | mode.
|
---|
365 |
|
---|
366 | @param Index Index of PAL_CACHE_SUMMARY within the list of
|
---|
367 | PAL procedures.
|
---|
368 |
|
---|
369 | @retval 0 Call completed without error
|
---|
370 | @retval -2 Invalid argument
|
---|
371 | @retval -3 Call completed with error.
|
---|
372 |
|
---|
373 | @return R9 CacheLevels Unsigned 64-bit integer denoting the
|
---|
374 | number of levels of cache
|
---|
375 | implemented by the processor.
|
---|
376 | Strictly, this is the number of
|
---|
377 | levels for which the cache
|
---|
378 | controller is integrated into the
|
---|
379 | processor (the cache SRAMs may be
|
---|
380 | external to the processor).
|
---|
381 | @return R10 UniqueCaches Unsigned 64-bit integer denoting the
|
---|
382 | number of unique caches implemented
|
---|
383 | by the processor. This has a maximum
|
---|
384 | of 2*cache_levels, but may be less
|
---|
385 | if any of the levels in the cache
|
---|
386 | hierarchy are unified caches or do
|
---|
387 | not have both instruction and data
|
---|
388 | caches.
|
---|
389 |
|
---|
390 | **/
|
---|
391 | #define PAL_CACHE_SUMMARY 4
|
---|
392 |
|
---|
393 |
|
---|
394 | //
|
---|
395 | // Virtual Memory Attributes implemented by processor.
|
---|
396 | //
|
---|
397 | #define PAL_MEMORY_ATTR_WB 0
|
---|
398 | #define PAL_MEMORY_ATTR_WC 6
|
---|
399 | #define PAL_MEMORY_ATTR_UC 4
|
---|
400 | #define PAL_MEMORY_ATTR_UCE 5
|
---|
401 | #define PAL_MEMORY_ATTR_NATPAGE 7
|
---|
402 |
|
---|
403 | /**
|
---|
404 | PAL Procedure - PAL_MEM_ATTRIB.
|
---|
405 |
|
---|
406 | Return a list of supported memory attributes.. It is required
|
---|
407 | by Itanium processors. The PAL procedure supports the Static Registers calling
|
---|
408 | convention. It could be called at physical mode and Virtual
|
---|
409 | mode.
|
---|
410 |
|
---|
411 | @param Index Index of PAL_MEM_ATTRIB within the list of PAL
|
---|
412 | procedures.
|
---|
413 |
|
---|
414 | @retval 0 Call completed without error
|
---|
415 | @retval -2 Invalid argument
|
---|
416 | @retval -3 Call completed with error.
|
---|
417 |
|
---|
418 | @return R9 Attributes 8-bit vector of memory attributes
|
---|
419 | implemented by processor. See Virtual
|
---|
420 | Memory Attributes above.
|
---|
421 |
|
---|
422 | **/
|
---|
423 |
|
---|
424 | #define PAL_MEM_ATTRIB 5
|
---|
425 |
|
---|
426 | /**
|
---|
427 | PAL Procedure - PAL_PREFETCH_VISIBILITY.
|
---|
428 |
|
---|
429 | Used in architected sequence to transition pages from a
|
---|
430 | cacheable, speculative attribute to an uncacheable attribute.
|
---|
431 | It is required by Itanium processors. The PAL procedure supports the Static
|
---|
432 | Registers calling convention. It could be called at physical
|
---|
433 | mode and Virtual mode.
|
---|
434 |
|
---|
435 | @param Index Index of PAL_PREFETCH_VISIBILITY within the list
|
---|
436 | of PAL procedures.
|
---|
437 | @param TransitionType Unsigned integer specifying the type
|
---|
438 | of memory attribute transition that is
|
---|
439 | being performed.
|
---|
440 |
|
---|
441 | @retval 1 Call completed without error; this
|
---|
442 | call is not necessary on remote
|
---|
443 | processors.
|
---|
444 | @retval 0 Call completed without error
|
---|
445 | @retval -2 Invalid argument
|
---|
446 | @retval -3 Call completed with error.
|
---|
447 |
|
---|
448 | **/
|
---|
449 | #define PAL_PREFETCH_VISIBILITY 41
|
---|
450 |
|
---|
451 | /**
|
---|
452 | PAL Procedure - PAL_PTCE_INFO.
|
---|
453 |
|
---|
454 | Return information needed for ptc.e instruction to purge
|
---|
455 | entire TC. It is required by Itanium processors. The PAL procedure supports
|
---|
456 | the Static Registers calling convention. It could be called at
|
---|
457 | physical mode and Virtual mode.
|
---|
458 |
|
---|
459 | @param Index Index of PAL_PTCE_INFO within the list
|
---|
460 | of PAL procedures.
|
---|
461 |
|
---|
462 | @retval 0 Call completed without error
|
---|
463 | @retval -2 Invalid argument
|
---|
464 | @retval -3 Call completed with error.
|
---|
465 |
|
---|
466 | @return R9 Unsigned 64-bit integer denoting the beginning
|
---|
467 | address to be used by the first PTCE instruction
|
---|
468 | in the purge loop.
|
---|
469 | @return R10 Two unsigned 32-bit integers denoting the loop
|
---|
470 | counts of the outer (loop 1) and inner (loop 2)
|
---|
471 | purge loops. count1 (loop 1) is contained in bits
|
---|
472 | 63:32 of the parameter, and count2 (loop 2) is
|
---|
473 | contained in bits 31:0 of the parameter.
|
---|
474 | @return R11 Two unsigned 32-bit integers denoting the loop
|
---|
475 | strides of the outer (loop 1) and inner (loop 2)
|
---|
476 | purge loops. stride1 (loop 1) is contained in bits
|
---|
477 | 63:32 of the parameter, and stride2 (loop 2) is
|
---|
478 | contained in bits 31:0 of the parameter.
|
---|
479 |
|
---|
480 | **/
|
---|
481 | #define PAL_PTCE_INFO 6
|
---|
482 |
|
---|
483 | typedef struct {
|
---|
484 | UINT64 NumberSets:8; ///< Unsigned 8-bit integer denoting the number
|
---|
485 | ///< of hash sets for the specified level
|
---|
486 | ///< (1=fully associative)
|
---|
487 | UINT64 NumberWays:8; ///< Unsigned 8-bit integer denoting the
|
---|
488 | ///< associativity of the specified level
|
---|
489 | ///< (1=direct).
|
---|
490 | UINT64 NumberEntries:16; ///< Unsigned 16-bit integer denoting the
|
---|
491 | ///< number of entries in the specified TC.
|
---|
492 | UINT64 PageSizeIsOptimized:1; ///< Flag denoting whether the
|
---|
493 | ///< specified level is optimized for
|
---|
494 | ///< the region's preferred page size
|
---|
495 | ///< (1=optimized) tc_pages indicates
|
---|
496 | ///< which page sizes are usable by
|
---|
497 | ///< this translation cache.
|
---|
498 | UINT64 TcIsUnified:1; ///< Flag denoting whether the specified TC is
|
---|
499 | ///< unified (1=unified).
|
---|
500 | UINT64 EntriesReduction:1; ///< Flag denoting whether installed
|
---|
501 | ///< translation registers will reduce
|
---|
502 | ///< the number of entries within the
|
---|
503 | ///< specified TC.
|
---|
504 | } PAL_TC_INFO;
|
---|
505 |
|
---|
506 | /**
|
---|
507 | PAL Procedure - PAL_VM_INFO.
|
---|
508 |
|
---|
509 | Return detailed information about virtual memory features
|
---|
510 | supported in the processor. It is required by Itanium processors. The PAL
|
---|
511 | procedure supports the Static Registers calling convention. It
|
---|
512 | could be called at physical mode and Virtual mode.
|
---|
513 |
|
---|
514 | @param Index Index of PAL_VM_INFO within the list
|
---|
515 | of PAL procedures.
|
---|
516 | @param TcLevel Unsigned 64-bit integer specifying the level
|
---|
517 | in the TLB hierarchy for which information is
|
---|
518 | required. This value must be between 0 and one
|
---|
519 | less than the value returned in the
|
---|
520 | vm_info_1.num_tc_levels return value from
|
---|
521 | PAL_VM_SUMMARY.
|
---|
522 | @param TcType Unsigned 64-bit integer with a value of 1 for
|
---|
523 | instruction translation cache and 2 for data
|
---|
524 | or unified translation cache. All other values
|
---|
525 | are reserved.
|
---|
526 |
|
---|
527 | @retval 0 Call completed without error
|
---|
528 | @retval -2 Invalid argument
|
---|
529 | @retval -3 Call completed with error.
|
---|
530 |
|
---|
531 | @return R9 8-byte formatted value returning information
|
---|
532 | about the specified TC. See PAL_TC_INFO above.
|
---|
533 | @return R10 64-bit vector containing a bit for each page
|
---|
534 | size supported in the specified TC, where bit
|
---|
535 | position n indicates a page size of 2**n.
|
---|
536 |
|
---|
537 | **/
|
---|
538 | #define PAL_VM_INFO 7
|
---|
539 |
|
---|
540 |
|
---|
541 | /**
|
---|
542 | PAL Procedure - PAL_VM_PAGE_SIZE.
|
---|
543 |
|
---|
544 | Return virtual memory TC and hardware walker page sizes
|
---|
545 | supported in the processor. It is required by Itanium processors. The PAL
|
---|
546 | procedure supports the Static Registers calling convention. It
|
---|
547 | could be called at physical mode and Virtual mode.
|
---|
548 |
|
---|
549 | @param Index Index of PAL_VM_PAGE_SIZE within the list
|
---|
550 | of PAL procedures.
|
---|
551 |
|
---|
552 | @retval 0 Call completed without error
|
---|
553 | @retval -2 Invalid argument
|
---|
554 | @retval -3 Call completed with error.
|
---|
555 |
|
---|
556 | @return R9 64-bit vector containing a bit for each
|
---|
557 | architected page size that is supported for
|
---|
558 | TLB insertions and region registers.
|
---|
559 | @return R10 64-bit vector containing a bit for each
|
---|
560 | architected page size supported for TLB purge
|
---|
561 | operations.
|
---|
562 |
|
---|
563 | **/
|
---|
564 | #define PAL_VM_PAGE_SIZE 34
|
---|
565 |
|
---|
566 | typedef struct {
|
---|
567 | UINT64 WalkerPresent:1; ///< 1-bit flag indicating whether a hardware
|
---|
568 | ///< TLB walker is implemented (1 = walker
|
---|
569 | ///< present).
|
---|
570 | UINT64 WidthOfPhysicalAddress: 7; ///< Unsigned 7-bit integer
|
---|
571 | ///< denoting the number of bits of
|
---|
572 | ///< physical address implemented.
|
---|
573 | UINT64 WidthOfKey:8; ///< Unsigned 8-bit integer denoting the number
|
---|
574 | ///< of bits mplemented in the PKR.key field.
|
---|
575 | UINT64 MaxPkrIndex:8; ///< Unsigned 8-bit integer denoting the
|
---|
576 | ///< maximum PKR index (number of PKRs-1).
|
---|
577 | UINT64 HashTagId:8; ///< Unsigned 8-bit integer which uniquely
|
---|
578 | ///< identifies the processor hash and tag
|
---|
579 | ///< algorithm.
|
---|
580 | UINT64 MaxDtrIndex:8; ///< Unsigned 8 bit integer denoting the
|
---|
581 | ///< maximum data translation register index
|
---|
582 | ///< (number of dtr entries - 1).
|
---|
583 | UINT64 MaxItrIndex:8; ///< Unsigned 8 bit integer denoting the
|
---|
584 | ///< maximum instruction translation register
|
---|
585 | ///< index (number of itr entries - 1).
|
---|
586 | UINT64 NumberOfUniqueTc:8; ///< Unsigned 8-bit integer denoting the
|
---|
587 | ///< number of unique TCs implemented.
|
---|
588 | ///< This is a maximum of
|
---|
589 | ///< 2*num_tc_levels.
|
---|
590 | UINT64 NumberOfTcLevels:8; ///< Unsigned 8-bit integer denoting the
|
---|
591 | ///< number of TC levels.
|
---|
592 | } PAL_VM_INFO1;
|
---|
593 |
|
---|
594 | typedef struct {
|
---|
595 | UINT64 WidthOfVirtualAddress:8; ///< Unsigned 8-bit integer denoting
|
---|
596 | ///< is the total number of virtual
|
---|
597 | ///< address bits - 1.
|
---|
598 | UINT64 WidthOfRid:8; ///< Unsigned 8-bit integer denoting the number
|
---|
599 | ///< of bits implemented in the RR.rid field.
|
---|
600 | UINT64 MaxPurgedTlbs:16; ///< Unsigned 16 bit integer denoting the
|
---|
601 | ///< maximum number of concurrent outstanding
|
---|
602 | ///< TLB purges allowed by the processor. A
|
---|
603 | ///< value of 0 indicates one outstanding
|
---|
604 | ///< purge allowed. A value of 216-1
|
---|
605 | ///< indicates no limit on outstanding
|
---|
606 | ///< purges. All other values indicate the
|
---|
607 | ///< actual number of concurrent outstanding
|
---|
608 | ///< purges allowed.
|
---|
609 | UINT64 Reserved:32;
|
---|
610 | } PAL_VM_INFO2;
|
---|
611 |
|
---|
612 | /**
|
---|
613 | PAL Procedure - PAL_VM_SUMMARY.
|
---|
614 |
|
---|
615 | Return summary information about virtual memory features
|
---|
616 | supported in the processor. It is required by Itanium processors. The PAL
|
---|
617 | procedure supports the Static Registers calling convention. It
|
---|
618 | could be called at physical mode and Virtual mode.
|
---|
619 |
|
---|
620 | @param Index Index of PAL_VM_SUMMARY within the list
|
---|
621 | of PAL procedures.
|
---|
622 |
|
---|
623 | @retval 0 Call completed without error
|
---|
624 | @retval -2 Invalid argument
|
---|
625 | @retval -3 Call completed with error.
|
---|
626 |
|
---|
627 | @return R9 8-byte formatted value returning global virtual
|
---|
628 | memory information. See PAL_VM_INFO1 above.
|
---|
629 | @return R10 8-byte formatted value returning global virtual
|
---|
630 | memory information. See PAL_VM_INFO2 above.
|
---|
631 |
|
---|
632 | **/
|
---|
633 | #define PAL_VM_SUMMARY 8
|
---|
634 |
|
---|
635 |
|
---|
636 | //
|
---|
637 | // Bit mask of TR_valid flag.
|
---|
638 | //
|
---|
639 | #define PAL_TR_ACCESS_RIGHT_IS_VALID BIT0
|
---|
640 | #define PAL_TR_PRIVILEGE_LEVEL_IS_VALID BIT1
|
---|
641 | #define PAL_TR_DIRTY_IS_VALID BIT2
|
---|
642 | #define PAL_TR_MEMORY_ATTR_IS_VALID BIT3
|
---|
643 |
|
---|
644 |
|
---|
645 | /**
|
---|
646 | PAL Procedure - PAL_VM_TR_READ.
|
---|
647 |
|
---|
648 | Read contents of a translation register. It is required by
|
---|
649 | Itanium processors. The PAL procedure supports the Stacked Register calling
|
---|
650 | convention. It could be called at physical mode.
|
---|
651 |
|
---|
652 | @param Index Index of PAL_VM_TR_READ within the list
|
---|
653 | of PAL procedures.
|
---|
654 | @param RegNumber Unsigned 64-bit number denoting which TR to
|
---|
655 | read.
|
---|
656 | @param TrType Unsigned 64-bit number denoting whether to
|
---|
657 | read an ITR (0) or DTR (1). All other values
|
---|
658 | are reserved.
|
---|
659 | @param TrBuffer 64-bit pointer to the 32-byte memory buffer in
|
---|
660 | which translation data is returned.
|
---|
661 |
|
---|
662 | @retval 0 Call completed without error
|
---|
663 | @retval -2 Invalid argument
|
---|
664 | @retval -3 Call completed with error.
|
---|
665 |
|
---|
666 | @return R9 Formatted bit vector denoting which fields are
|
---|
667 | valid. See TR_valid above.
|
---|
668 |
|
---|
669 | **/
|
---|
670 | #define PAL_VM_TR_READ 261
|
---|
671 |
|
---|
672 |
|
---|
673 |
|
---|
674 |
|
---|
675 | //
|
---|
676 | // Bit Mask of Processor Bus Fesatures .
|
---|
677 | //
|
---|
678 |
|
---|
679 | /**
|
---|
680 |
|
---|
681 | When 0, bus data errors are detected and single bit errors are
|
---|
682 | corrected. When 1, no error detection or correction is done.
|
---|
683 |
|
---|
684 | **/
|
---|
685 | #define PAL_BUS_DISABLE_DATA_ERROR_SIGNALLING BIT63
|
---|
686 |
|
---|
687 |
|
---|
688 | /**
|
---|
689 |
|
---|
690 | When 0, bus address errors are signalled on the bus. When 1,
|
---|
691 | no bus errors are signalled on the bus. If Disable Bus Address
|
---|
692 | Error Checking is 1, this bit is ignored.
|
---|
693 |
|
---|
694 | **/
|
---|
695 | #define PAL_BUS_DISABLE_ADDRESS_ERROR_SIGNALLING BIT62
|
---|
696 |
|
---|
697 |
|
---|
698 |
|
---|
699 |
|
---|
700 | /**
|
---|
701 |
|
---|
702 | When 0, bus errors are detected, single bit errors are
|
---|
703 | corrected., and a CMCI or MCA is generated internally to the
|
---|
704 | processor. When 1, no bus address errors are detected or
|
---|
705 | corrected.
|
---|
706 |
|
---|
707 | **/
|
---|
708 | #define PAL_BUS_DISABLE_ADDRESS_ERROR_CHECK BIT61
|
---|
709 |
|
---|
710 |
|
---|
711 | /**
|
---|
712 |
|
---|
713 | When 0, bus protocol errors (BINIT#) are signaled by the
|
---|
714 | processor on the bus. When 1, bus protocol errors (BINIT#) are
|
---|
715 | not signaled on the bus. If Disable Bus Initialization Event
|
---|
716 | Checking is 1, this bit is ignored.
|
---|
717 |
|
---|
718 | **/
|
---|
719 | #define PAL_BUS_DISABLE_INITIALIZATION_EVENT_SIGNALLING BIT60
|
---|
720 |
|
---|
721 |
|
---|
722 | /**
|
---|
723 |
|
---|
724 | When 0, bus protocol errors (BINIT#) are detected and sampled
|
---|
725 | and an MCA is generated internally to the processor. When 1,
|
---|
726 | the processor will ignore bus protocol error conditions
|
---|
727 | (BINIT#).
|
---|
728 |
|
---|
729 | **/
|
---|
730 | #define PAL_BUS_DISABLE_INITIALIZATION_EVENT_CHECK BIT59
|
---|
731 |
|
---|
732 |
|
---|
733 |
|
---|
734 | /**
|
---|
735 |
|
---|
736 | When 0, BERR# is signalled if a bus error is detected. When 1,
|
---|
737 | bus errors are not signalled on the bus.
|
---|
738 |
|
---|
739 | **/
|
---|
740 | #define PAL_BUS_DISABLE_ERROR_SIGNALLING BIT58
|
---|
741 |
|
---|
742 |
|
---|
743 |
|
---|
744 |
|
---|
745 | /**
|
---|
746 |
|
---|
747 | When 0, BERR# is signalled when internal processor requestor
|
---|
748 | initiated bus errors are detected. When 1, internal requester
|
---|
749 | bus errors are not signalled on the bus.
|
---|
750 |
|
---|
751 | **/
|
---|
752 | #define PAL_BUS_DISABLE__INTERNAL_ERROR_SIGNALLING BIT57
|
---|
753 |
|
---|
754 |
|
---|
755 | /**
|
---|
756 |
|
---|
757 | When 0, the processor takes an MCA if BERR# is asserted. When
|
---|
758 | 1, the processor ignores the BERR# signal.
|
---|
759 |
|
---|
760 | **/
|
---|
761 | #define PAL_BUS_DISABLE_ERROR_CHECK BIT56
|
---|
762 |
|
---|
763 |
|
---|
764 | /**
|
---|
765 |
|
---|
766 | When 0, the processor asserts BINIT# if it detects a parity
|
---|
767 | error on the signals which identify the transactions to which
|
---|
768 | this is a response. When 1, the processor ignores parity on
|
---|
769 | these signals.
|
---|
770 |
|
---|
771 | **/
|
---|
772 | #define PAL_BUS_DISABLE_RSP_ERROR_CHECK BIT55
|
---|
773 |
|
---|
774 |
|
---|
775 | /**
|
---|
776 |
|
---|
777 | When 0, the in-order transaction queue is limited only by the
|
---|
778 | number of hardware entries. When 1, the processor's in-order
|
---|
779 | transactions queue is limited to one entry.
|
---|
780 |
|
---|
781 | **/
|
---|
782 | #define PAL_BUS_DISABLE_TRANSACTION_QUEUE BIT54
|
---|
783 |
|
---|
784 | /**
|
---|
785 |
|
---|
786 | Enable a bus cache line replacement transaction when a cache
|
---|
787 | line in the exclusive state is replaced from the highest level
|
---|
788 | processor cache and is not present in the lower level processor
|
---|
789 | caches. When 0, no bus cache line replacement transaction will
|
---|
790 | be seen on the bus. When 1, bus cache line replacement
|
---|
791 | transactions will be seen on the bus when the above condition is
|
---|
792 | detected.
|
---|
793 |
|
---|
794 | **/
|
---|
795 | #define PAL_BUS_ENABLE_EXCLUSIVE_CACHE_LINE_REPLACEMENT BIT53
|
---|
796 |
|
---|
797 |
|
---|
798 | /**
|
---|
799 |
|
---|
800 | Enable a bus cache line replacement transaction when a cache
|
---|
801 | line in the shared or exclusive state is replaced from the
|
---|
802 | highest level processor cache and is not present in the lower
|
---|
803 | level processor caches.
|
---|
804 | When 0, no bus cache line replacement transaction will be seen
|
---|
805 | on the bus. When 1, bus cache line replacement transactions
|
---|
806 | will be seen on the bus when the above condition is detected.
|
---|
807 |
|
---|
808 | **/
|
---|
809 | #define PAL_BUS_ENABLE_SHARED_CACHE_LINE_REPLACEMENT BIT52
|
---|
810 |
|
---|
811 |
|
---|
812 |
|
---|
813 | /**
|
---|
814 |
|
---|
815 | When 0, the data bus is configured at the 2x data transfer
|
---|
816 | rate.When 1, the data bus is configured at the 1x data
|
---|
817 | transfer rate, 30 Opt. Req. Disable Bus Lock Mask. When 0, the
|
---|
818 | processor executes locked transactions atomically. When 1, the
|
---|
819 | processor masks the bus lock signal and executes locked
|
---|
820 | transactions as a non-atomic series of transactions.
|
---|
821 |
|
---|
822 | **/
|
---|
823 | #define PAL_BUS_ENABLE_HALF_TRANSFER BIT30
|
---|
824 |
|
---|
825 | /**
|
---|
826 |
|
---|
827 | When 0, the processor will deassert bus request when finished
|
---|
828 | with each transaction. When 1, the processor will continue to
|
---|
829 | assert bus request after it has finished, if it was the last
|
---|
830 | agent to own the bus and if there are no other pending
|
---|
831 | requests.
|
---|
832 |
|
---|
833 | **/
|
---|
834 | #define PAL_BUS_REQUEST_BUS_PARKING BIT29
|
---|
835 |
|
---|
836 |
|
---|
837 | /**
|
---|
838 | PAL Procedure - PAL_BUS_GET_FEATURES.
|
---|
839 |
|
---|
840 | Return configurable processor bus interface features and their
|
---|
841 | current settings. It is required by Itanium processors. The PAL procedure
|
---|
842 | supports the Stacked Register calling convention. It could be
|
---|
843 | called at physical mode.
|
---|
844 |
|
---|
845 | @param Index Index of PAL_BUS_GET_FEATURES within the list
|
---|
846 | of PAL procedures.
|
---|
847 |
|
---|
848 | @retval 0 Call completed without error
|
---|
849 | @retval -2 Invalid argument
|
---|
850 | @retval -3 Call completed with error.
|
---|
851 |
|
---|
852 | @return R9 64-bit vector of features implemented.
|
---|
853 | (1=implemented, 0=not implemented)
|
---|
854 | @return R10 64-bit vector of current feature settings.
|
---|
855 | @return R11 64-bit vector of features controllable by
|
---|
856 | software. (1=controllable, 0= not controllable)
|
---|
857 |
|
---|
858 | **/
|
---|
859 | #define PAL_BUS_GET_FEATURES 9
|
---|
860 |
|
---|
861 | /**
|
---|
862 | PAL Procedure - PAL_BUS_SET_FEATURES.
|
---|
863 |
|
---|
864 | Enable or disable configurable features in processor bus
|
---|
865 | interface. It is required by Itanium processors. The PAL procedure
|
---|
866 | supports the Static Registers calling convention. It could be
|
---|
867 | called at physical mode.
|
---|
868 |
|
---|
869 | @param Index Index of PAL_BUS_SET_FEATURES within the list
|
---|
870 | of PAL procedures.
|
---|
871 | @param FeatureSelect 64-bit vector denoting desired state of
|
---|
872 | each feature (1=select, 0=non-select).
|
---|
873 |
|
---|
874 | @retval 0 Call completed without error
|
---|
875 | @retval -2 Invalid argument
|
---|
876 | @retval -3 Call completed with error.
|
---|
877 |
|
---|
878 | **/
|
---|
879 | #define PAL_BUS_SET_FEATURES 10
|
---|
880 |
|
---|
881 |
|
---|
882 | /**
|
---|
883 | PAL Procedure - PAL_DEBUG_INFO.
|
---|
884 |
|
---|
885 | Return the number of instruction and data breakpoint
|
---|
886 | registers. It is required by Itanium processors. The
|
---|
887 | PAL procedure supports the Static Registers calling
|
---|
888 | convention. It could be called at physical mode and virtual
|
---|
889 | mode.
|
---|
890 |
|
---|
891 | @param Index Index of PAL_DEBUG_INFO within the list of PAL
|
---|
892 | procedures.
|
---|
893 |
|
---|
894 | @retval 0 Call completed without error
|
---|
895 | @retval -2 Invalid argument
|
---|
896 | @retval -3 Call completed with error.
|
---|
897 |
|
---|
898 | @return R9 Unsigned 64-bit integer denoting the number of
|
---|
899 | pairs of instruction debug registers implemented
|
---|
900 | by the processor.
|
---|
901 | @return R10 Unsigned 64-bit integer denoting the number of
|
---|
902 | pairs of data debug registers implemented by the
|
---|
903 | processor.
|
---|
904 |
|
---|
905 | **/
|
---|
906 | #define PAL_DEBUG_INFO 11
|
---|
907 |
|
---|
908 | /**
|
---|
909 | PAL Procedure - PAL_FIXED_ADDR.
|
---|
910 |
|
---|
911 | Return the fixed component of a processor's directed address.
|
---|
912 | It is required by Itanium processors. The PAL
|
---|
913 | procedure supports the Static Registers calling convention. It
|
---|
914 | could be called at physical mode and virtual mode.
|
---|
915 |
|
---|
916 | @param Index Index of PAL_FIXED_ADDR within the list of PAL
|
---|
917 | procedures.
|
---|
918 |
|
---|
919 | @retval 0 Call completed without error
|
---|
920 | @retval -2 Invalid argument
|
---|
921 | @retval -3 Call completed with error.
|
---|
922 |
|
---|
923 | @return R9 Fixed geographical address of this processor.
|
---|
924 |
|
---|
925 | **/
|
---|
926 | #define PAL_FIXED_ADDR 12
|
---|
927 |
|
---|
928 | /**
|
---|
929 | PAL Procedure - PAL_FREQ_BASE.
|
---|
930 |
|
---|
931 | Return the frequency of the output clock for use by the
|
---|
932 | platform, if generated by the processor. It is optinal. The
|
---|
933 | PAL procedure supports the Static Registers calling
|
---|
934 | convention. It could be called at physical mode and virtual
|
---|
935 | mode.
|
---|
936 |
|
---|
937 | @param Index Index of PAL_FREQ_BASE within the list of PAL
|
---|
938 | procedures.
|
---|
939 |
|
---|
940 | @retval 0 Call completed without error
|
---|
941 | @retval -1 Unimplemented procedure
|
---|
942 | @retval -2 Invalid argument
|
---|
943 | @retval -3 Call completed with error.
|
---|
944 |
|
---|
945 | @return R9 Base frequency of the platform if generated by the
|
---|
946 | processor chip.
|
---|
947 |
|
---|
948 | **/
|
---|
949 | #define PAL_FREQ_BASE 13
|
---|
950 |
|
---|
951 |
|
---|
952 | /**
|
---|
953 | PAL Procedure - PAL_FREQ_RATIOS.
|
---|
954 |
|
---|
955 | Return ratio of processor, bus, and interval time counter to
|
---|
956 | processor input clock or output clock for platform use, if
|
---|
957 | generated by the processor. It is required by Itanium processors. The PAL
|
---|
958 | procedure supports the Static Registers calling convention. It
|
---|
959 | could be called at physical mode and virtual mode.
|
---|
960 |
|
---|
961 | @param Index Index of PAL_FREQ_RATIOS within the list of PAL
|
---|
962 | procedures.
|
---|
963 |
|
---|
964 | @retval 0 Call completed without error
|
---|
965 | @retval -2 Invalid argument
|
---|
966 | @retval -3 Call completed with error.
|
---|
967 |
|
---|
968 | @return R9 Ratio of the processor frequency to the input
|
---|
969 | clock of the processor, if the platform clock is
|
---|
970 | generated externally or to the output clock to the
|
---|
971 | platform, if the platform clock is generated by
|
---|
972 | the processor.
|
---|
973 | @return R10 Ratio of the bus frequency to the input clock of
|
---|
974 | the processor, if the platform clock is generated
|
---|
975 | externally or to the output clock to the platform,
|
---|
976 | if the platform clock is generated by the
|
---|
977 | processor.
|
---|
978 | @return R11 Ratio of the interval timer counter rate to input
|
---|
979 | clock of the processor, if the platform clock is
|
---|
980 | generated externally or to the output clock to the
|
---|
981 | platform, if the platform clock is generated by
|
---|
982 | the processor.
|
---|
983 |
|
---|
984 | **/
|
---|
985 | #define PAL_FREQ_RATIOS 14
|
---|
986 |
|
---|
987 | typedef struct {
|
---|
988 | UINT64 NumberOfLogicalProcessors:16; ///< Total number of logical
|
---|
989 | ///< processors on this physical
|
---|
990 | ///< processor package that are
|
---|
991 | ///< enabled.
|
---|
992 | UINT64 ThreadsPerCore:8; ///< Number of threads per core.
|
---|
993 | UINT64 Reserved1:8;
|
---|
994 | UINT64 CoresPerProcessor:8; ///< Total number of cores on this
|
---|
995 | ///< physical processor package.
|
---|
996 | UINT64 Reserved2:8;
|
---|
997 | UINT64 PhysicalProcessorPackageId:8; ///< Physical processor package
|
---|
998 | ///< identifier which was
|
---|
999 | ///< assigned at reset by the
|
---|
1000 | ///< platform or bus
|
---|
1001 | ///< controller. This value may
|
---|
1002 | ///< or may not be unique
|
---|
1003 | ///< across the entire platform
|
---|
1004 | ///< since it depends on the
|
---|
1005 | ///< platform vendor's policy.
|
---|
1006 | UINT64 Reserved3:8;
|
---|
1007 | } PAL_LOGICAL_PROCESSPR_OVERVIEW;
|
---|
1008 |
|
---|
1009 | typedef struct {
|
---|
1010 | UINT64 ThreadId:16; ///< The thread identifier of the logical
|
---|
1011 | ///< processor for which information is being
|
---|
1012 | ///< returned. This value will be unique on a per
|
---|
1013 | ///< core basis.
|
---|
1014 | UINT64 Reserved1:16;
|
---|
1015 | UINT64 CoreId:16; ///< The core identifier of the logical processor
|
---|
1016 | ///< for which information is being returned.
|
---|
1017 | ///< This value will be unique on a per physical
|
---|
1018 | ///< processor package basis.
|
---|
1019 | UINT64 Reserved2:16;
|
---|
1020 | } PAL_LOGICAL_PROCESSORN_INFO1;
|
---|
1021 |
|
---|
1022 | typedef struct {
|
---|
1023 | UINT64 LogicalAddress:16; ///< Geographical address of the logical
|
---|
1024 | ///< processor for which information is being
|
---|
1025 | ///< returned. This is the same value that is
|
---|
1026 | ///< returned by the PAL_FIXED_ADDR procedure
|
---|
1027 | ///< when it is called on the logical processor.
|
---|
1028 | UINT64 Reserved:48;
|
---|
1029 | } PAL_LOGICAL_PROCESSORN_INFO2;
|
---|
1030 |
|
---|
1031 | /**
|
---|
1032 | PAL Procedure - PAL_LOGICAL_TO_PHYSICAL.
|
---|
1033 |
|
---|
1034 | Return information on which logical processors map to a
|
---|
1035 | physical processor die. It is optinal. The PAL procedure
|
---|
1036 | supports the Static Registers calling convention. It could be
|
---|
1037 | called at physical mode and virtual mode.
|
---|
1038 |
|
---|
1039 | @param Index Index of PAL_LOGICAL_TO_PHYSICAL within the list of PAL
|
---|
1040 | procedures.
|
---|
1041 | @param ProcessorNumber Signed 64-bit integer that specifies
|
---|
1042 | for which logical processor
|
---|
1043 | information is being requested. When
|
---|
1044 | this input argument is -1, information
|
---|
1045 | is returned about the logical
|
---|
1046 | processor on which the procedure call
|
---|
1047 | is made. This input argument must be
|
---|
1048 | in the range of 1 up to one less than
|
---|
1049 | the number of logical processors
|
---|
1050 | returned by num_log in the
|
---|
1051 | log_overview return value.
|
---|
1052 |
|
---|
1053 | @retval 0 Call completed without error
|
---|
1054 | @retval -1 Unimplemented procedure
|
---|
1055 | @retval -2 Invalid argument
|
---|
1056 | @retval -3 Call completed with error.
|
---|
1057 |
|
---|
1058 | @return R9 The format of PAL_LOGICAL_PROCESSPR_OVERVIEW.
|
---|
1059 | @return R10 The format of PAL_LOGICAL_PROCESSORN_INFO1.
|
---|
1060 | @return R11 The format of PAL_LOGICAL_PROCESSORN_INFO2.
|
---|
1061 |
|
---|
1062 | **/
|
---|
1063 | #define PAL_LOGICAL_TO_PHYSICAL 42
|
---|
1064 |
|
---|
1065 | typedef struct {
|
---|
1066 | UINT64 NumberOfPmcPairs:8; ///< Unsigned 8-bit number defining the
|
---|
1067 | ///< number of generic PMC/PMD pairs.
|
---|
1068 | UINT64 WidthOfCounter:8; ///< Unsigned 8-bit number in the range
|
---|
1069 | ///< 0:60 defining the number of
|
---|
1070 | ///< implemented counter bits.
|
---|
1071 | UINT64 TypeOfCycleCounting:8; ///< Unsigned 8-bit number defining the
|
---|
1072 | ///< event type for counting processor cycles.
|
---|
1073 | UINT64 TypeOfRetiredInstructionBundle:8; ///< Retired Unsigned 8-bit
|
---|
1074 | ///< number defining the
|
---|
1075 | ///< event type for retired
|
---|
1076 | ///< instruction bundles.
|
---|
1077 | UINT64 Reserved:32;
|
---|
1078 | } PAL_PERFORMANCE_INFO;
|
---|
1079 |
|
---|
1080 | /**
|
---|
1081 | PAL Procedure - PAL_PERF_MON_INFO.
|
---|
1082 |
|
---|
1083 | Return the number and type of performance monitors. It is
|
---|
1084 | required by Itanium processors. The PAL procedure supports the Static
|
---|
1085 | Registers calling convention. It could be called at physical
|
---|
1086 | mode and virtual mode.
|
---|
1087 |
|
---|
1088 | @param Index Index of PAL_PERF_MON_INFO within the list of
|
---|
1089 | PAL procedures.
|
---|
1090 | @param PerformanceBuffer An address to an 8-byte aligned
|
---|
1091 | 128-byte memory buffer.
|
---|
1092 |
|
---|
1093 | @retval 0 Call completed without error
|
---|
1094 | @retval -2 Invalid argument
|
---|
1095 | @retval -3 Call completed with error.
|
---|
1096 |
|
---|
1097 | @return R9 Information about the performance monitors
|
---|
1098 | implemented. See PAL_PERFORMANCE_INFO;
|
---|
1099 |
|
---|
1100 | **/
|
---|
1101 | #define PAL_PERF_MON_INFO 15
|
---|
1102 |
|
---|
1103 | #define PAL_PLATFORM_ADDR_INTERRUPT_BLOCK_TOKEN 0x0
|
---|
1104 | #define PAL_PLATFORM_ADDR_IO_BLOCK_TOKEN 0x1
|
---|
1105 |
|
---|
1106 | /**
|
---|
1107 | PAL Procedure - PAL_PLATFORM_ADDR.
|
---|
1108 |
|
---|
1109 | Specify processor interrupt block address and I/O port space
|
---|
1110 | address. It is required by Itanium processors. The PAL procedure supports the
|
---|
1111 | Static Registers calling convention. It could be called at
|
---|
1112 | physical mode and virtual mode.
|
---|
1113 |
|
---|
1114 | @param Index Index of PAL_PLATFORM_ADDR within the list of
|
---|
1115 | PAL procedures.
|
---|
1116 | @param Type Unsigned 64-bit integer specifying the type of
|
---|
1117 | block. 0 indicates that the processor interrupt
|
---|
1118 | block pointer should be initialized. 1 indicates
|
---|
1119 | that the processor I/O block pointer should be
|
---|
1120 | initialized.
|
---|
1121 | @param Address Unsigned 64-bit integer specifying the address
|
---|
1122 | to which the processor I/O block or interrupt
|
---|
1123 | block shall be set. The address must specify
|
---|
1124 | an implemented physical address on the
|
---|
1125 | processor model, bit 63 is ignored.
|
---|
1126 |
|
---|
1127 | @retval 0 Call completed without error
|
---|
1128 | @retval -1 Unimplemented procedure.
|
---|
1129 | @retval -2 Invalid argument
|
---|
1130 | @retval -3 Call completed with error.
|
---|
1131 |
|
---|
1132 | **/
|
---|
1133 | #define PAL_PLATFORM_ADDR 16
|
---|
1134 |
|
---|
1135 | typedef struct {
|
---|
1136 | UINT64 Reserved1:36;
|
---|
1137 | UINT64 FaultInUndefinedIns:1; ///< Bit36, No Unimplemented
|
---|
1138 | ///< instruction address reported as
|
---|
1139 | ///< fault. Denotes how the processor
|
---|
1140 | ///< reports the detection of
|
---|
1141 | ///< unimplemented instruction
|
---|
1142 | ///< addresses. When 1, the processor
|
---|
1143 | ///< reports an Unimplemented
|
---|
1144 | ///< Instruction Address fault on the
|
---|
1145 | ///< unimplemented address; when 0, it
|
---|
1146 | ///< reports an Unimplemented
|
---|
1147 | ///< Instruction Address trap on the
|
---|
1148 | ///< previous instruction in program
|
---|
1149 | ///< order. This feature may only be
|
---|
1150 | ///< interrogated by
|
---|
1151 | ///< PAL_PROC_GET_FEATURES. It may not
|
---|
1152 | ///< be enabled or disabled by
|
---|
1153 | ///< PAL_PROC_SET_FEATURES. The
|
---|
1154 | ///< corresponding argument is ignored.
|
---|
1155 |
|
---|
1156 | UINT64 NoPresentPmi:1; ///< Bit37, No INIT, PMI, and LINT pins
|
---|
1157 | ///< present. Denotes the absence of INIT,
|
---|
1158 | ///< PMI, LINT0 and LINT1 pins on the
|
---|
1159 | ///< processor. When 1, the pins are absent.
|
---|
1160 | ///< When 0, the pins are present. This
|
---|
1161 | ///< feature may only be interrogated by
|
---|
1162 | ///< PAL_PROC_GET_FEATURES. It may not be
|
---|
1163 | ///< enabled or disabled by
|
---|
1164 | ///< PAL_PROC_SET_FEATURES. The corresponding
|
---|
1165 | ///< argument is ignored.
|
---|
1166 |
|
---|
1167 | UINT64 NoSimpleImpInUndefinedIns:1; ///< Bit38, No Simple
|
---|
1168 | ///< implementation of
|
---|
1169 | ///< unimplemented instruction
|
---|
1170 | ///< addresses. Denotes how an
|
---|
1171 | ///< unimplemented instruction
|
---|
1172 | ///< address is recorded in IIP
|
---|
1173 | ///< on an Unimplemented
|
---|
1174 | ///< Instruction Address trap or
|
---|
1175 | ///< fault. When 1, the full
|
---|
1176 | ///< unimplemented address is
|
---|
1177 | ///< recorded in IIP; when 0, the
|
---|
1178 | ///< address is sign extended
|
---|
1179 | ///< (virtual addresses) or zero
|
---|
1180 | ///< extended (physical
|
---|
1181 | ///< addresses). This feature may
|
---|
1182 | ///< only be interrogated by
|
---|
1183 | ///< PAL_PROC_GET_FEATURES. It
|
---|
1184 | ///< may not be enabled or
|
---|
1185 | ///< disabled by
|
---|
1186 | ///< PAL_PROC_SET_FEATURES. The
|
---|
1187 | ///< corresponding argument is
|
---|
1188 | ///< ignored.
|
---|
1189 |
|
---|
1190 | UINT64 NoVariablePState:1; ///< Bit39, No Variable P-state
|
---|
1191 | ///< performance: A value of 1, indicates
|
---|
1192 | ///< that a processor implements
|
---|
1193 | ///< techniques to optimize performance
|
---|
1194 | ///< for the given P-state power budget
|
---|
1195 | ///< by dynamically varying the
|
---|
1196 | ///< frequency, such that maximum
|
---|
1197 | ///< performance is achieved for the
|
---|
1198 | ///< power budget. A value of 0,
|
---|
1199 | ///< indicates that P-states have no
|
---|
1200 | ///< frequency variation or very small
|
---|
1201 | ///< frequency variations for their given
|
---|
1202 | ///< power budget. This feature may only
|
---|
1203 | ///< be interrogated by
|
---|
1204 | ///< PAL_PROC_GET_FEATURES. it may not be
|
---|
1205 | ///< enabled or disabled by
|
---|
1206 | ///< PAL_PROC_SET_FEATURES. The
|
---|
1207 | ///< corresponding argument is ignored.
|
---|
1208 |
|
---|
1209 | UINT64 NoVM:1; ///< Bit40, No Virtual Machine features implemented.
|
---|
1210 | ///< Denotes whether PSR.vm is implemented. This
|
---|
1211 | ///< feature may only be interrogated by
|
---|
1212 | ///< PAL_PROC_GET_FEATURES. It may not be enabled or
|
---|
1213 | ///< disabled by PAL_PROC_SET_FEATURES. The
|
---|
1214 | ///< corresponding argument is ignored.
|
---|
1215 |
|
---|
1216 | UINT64 NoXipXpsrXfs:1; ///< Bit41, No XIP, XPSR, and XFS
|
---|
1217 | ///< implemented. Denotes whether XIP, XPSR,
|
---|
1218 | ///< and XFS are implemented for machine
|
---|
1219 | ///< check recovery. This feature may only be
|
---|
1220 | ///< interrogated by PAL_PROC_GET_FEATURES.
|
---|
1221 | ///< It may not be enabled or disabled by
|
---|
1222 | ///< PAL_PROC_SET_FEATURES. The corresponding
|
---|
1223 | ///< argument is ignored.
|
---|
1224 |
|
---|
1225 | UINT64 NoXr1ThroughXr3:1; ///< Bit42, No XR1 through XR3 implemented.
|
---|
1226 | ///< Denotes whether XR1 XR3 are
|
---|
1227 | ///< implemented for machine check
|
---|
1228 | ///< recovery. This feature may only be
|
---|
1229 | ///< interrogated by PAL_PROC_GET_FEATURES.
|
---|
1230 | ///< It may not be enabled or disabled by
|
---|
1231 | ///< PAL_PROC_SET_FEATURES. The
|
---|
1232 | ///< corresponding argument is ignored.
|
---|
1233 |
|
---|
1234 | UINT64 DisableDynamicPrediction:1; ///< Bit43, Disable Dynamic
|
---|
1235 | ///< Predicate Prediction. When
|
---|
1236 | ///< 0, the processor may predict
|
---|
1237 | ///< predicate results and
|
---|
1238 | ///< execute speculatively, but
|
---|
1239 | ///< may not commit results until
|
---|
1240 | ///< the actual predicates are
|
---|
1241 | ///< known. When 1, the processor
|
---|
1242 | ///< shall not execute predicated
|
---|
1243 | ///< instructions until the
|
---|
1244 | ///< actual predicates are known.
|
---|
1245 |
|
---|
1246 | UINT64 DisableSpontaneousDeferral:1; ///< Bit44, Disable Spontaneous
|
---|
1247 | ///< Deferral. When 1, the
|
---|
1248 | ///< processor may optionally
|
---|
1249 | ///< defer speculative loads
|
---|
1250 | ///< that do not encounter any
|
---|
1251 | ///< exception conditions, but
|
---|
1252 | ///< that trigger other
|
---|
1253 | ///< implementation-dependent
|
---|
1254 | ///< conditions (e.g., cache
|
---|
1255 | ///< miss). When 0, spontaneous
|
---|
1256 | ///< deferral is disabled.
|
---|
1257 |
|
---|
1258 | UINT64 DisableDynamicDataCachePrefetch:1; ///< Bit45, Disable Dynamic
|
---|
1259 | ///< Data Cache Prefetch.
|
---|
1260 | ///< When 0, the processor
|
---|
1261 | ///< may prefetch into the
|
---|
1262 | ///< caches any data which
|
---|
1263 | ///< has not been accessed
|
---|
1264 | ///< by instruction
|
---|
1265 | ///< execution, but which
|
---|
1266 | ///< is likely to be
|
---|
1267 | ///< accessed. When 1, no
|
---|
1268 | ///< data may be fetched
|
---|
1269 | ///< until it is needed for
|
---|
1270 | ///< instruction execution
|
---|
1271 | ///< or is fetched by an
|
---|
1272 | ///< lfetch instruction.
|
---|
1273 |
|
---|
1274 | UINT64 DisableDynamicInsCachePrefetch:1; ///< Bit46, Disable
|
---|
1275 | ///< DynamicInstruction Cache
|
---|
1276 | ///< Prefetch. When 0, the
|
---|
1277 | ///< processor may prefetch
|
---|
1278 | ///< into the caches any
|
---|
1279 | ///< instruction which has
|
---|
1280 | ///< not been executed, but
|
---|
1281 | ///< whose execution is
|
---|
1282 | ///< likely. When 1,
|
---|
1283 | ///< instructions may not be
|
---|
1284 | ///< fetched until needed or
|
---|
1285 | ///< hinted for execution.
|
---|
1286 | ///< (Prefetch for a hinted
|
---|
1287 | ///< branch is allowed even
|
---|
1288 | ///< when dynamic instruction
|
---|
1289 | ///< cache prefetch is
|
---|
1290 | ///< disabled.)
|
---|
1291 |
|
---|
1292 | UINT64 DisableBranchPrediction:1; ///< Bit47, Disable Dynamic branch
|
---|
1293 | ///< prediction. When 0, the
|
---|
1294 | ///< processor may predict branch
|
---|
1295 | ///< targets and speculatively
|
---|
1296 | ///< execute, but may not commit
|
---|
1297 | ///< results. When 1, the processor
|
---|
1298 | ///< must wait until branch targets
|
---|
1299 | ///< are known to execute.
|
---|
1300 | UINT64 Reserved2:4;
|
---|
1301 | UINT64 DisablePState:1; ///< Bit52, Disable P-states. When 1, the PAL
|
---|
1302 | ///< P-state procedures (PAL_PSTATE_INFO,
|
---|
1303 | ///< PAL_SET_PSTATE, PAL_GET_PSTATE) will
|
---|
1304 | ///< return with a status of -1
|
---|
1305 | ///< (Unimplemented procedure).
|
---|
1306 |
|
---|
1307 | UINT64 EnableMcaOnDataPoisoning:1; ///< Bit53, Enable MCA signaling
|
---|
1308 | ///< on data-poisoning event
|
---|
1309 | ///< detection. When 0, a CMCI
|
---|
1310 | ///< will be signaled on error
|
---|
1311 | ///< detection. When 1, an MCA
|
---|
1312 | ///< will be signaled on error
|
---|
1313 | ///< detection. If this feature
|
---|
1314 | ///< is not supported, then the
|
---|
1315 | ///< corresponding argument is
|
---|
1316 | ///< ignored when calling
|
---|
1317 | ///< PAL_PROC_SET_FEATURES. Note
|
---|
1318 | ///< that the functionality of
|
---|
1319 | ///< this bit is independent of
|
---|
1320 | ///< the setting in bit 60
|
---|
1321 | ///< (Enable CMCI promotion), and
|
---|
1322 | ///< that the bit 60 setting does
|
---|
1323 | ///< not affect CMCI signaling
|
---|
1324 | ///< for data-poisoning related
|
---|
1325 | ///< events. Volume 2: Processor
|
---|
1326 | ///< Abstraction Layer 2:431
|
---|
1327 | ///< PAL_PROC_GET_FEATURES
|
---|
1328 |
|
---|
1329 | UINT64 EnableVmsw:1; ///< Bit54, Enable the use of the vmsw
|
---|
1330 | ///< instruction. When 0, the vmsw instruction
|
---|
1331 | ///< causes a Virtualization fault when
|
---|
1332 | ///< executed at the most privileged level.
|
---|
1333 | ///< When 1, this bit will enable normal
|
---|
1334 | ///< operation of the vmsw instruction.
|
---|
1335 |
|
---|
1336 | UINT64 EnableEnvNotification:1; ///< Bit55, Enable external
|
---|
1337 | ///< notification when the processor
|
---|
1338 | ///< detects hardware errors caused
|
---|
1339 | ///< by environmental factors that
|
---|
1340 | ///< could cause loss of
|
---|
1341 | ///< deterministic behavior of the
|
---|
1342 | ///< processor. When 1, this bit will
|
---|
1343 | ///< enable external notification,
|
---|
1344 | ///< when 0 external notification is
|
---|
1345 | ///< not provided. The type of
|
---|
1346 | ///< external notification of these
|
---|
1347 | ///< errors is processor-dependent. A
|
---|
1348 | ///< loss of processor deterministic
|
---|
1349 | ///< behavior is considered to have
|
---|
1350 | ///< occurred if these
|
---|
1351 | ///< environmentally induced errors
|
---|
1352 | ///< cause the processor to deviate
|
---|
1353 | ///< from its normal execution and
|
---|
1354 | ///< eventually causes different
|
---|
1355 | ///< behavior which can be observed
|
---|
1356 | ///< at the processor bus pins.
|
---|
1357 | ///< Processor errors that do not
|
---|
1358 | ///< have this effects (i.e.,
|
---|
1359 | ///< software induced machine checks)
|
---|
1360 | ///< may or may not be promoted
|
---|
1361 | ///< depending on the processor
|
---|
1362 | ///< implementation.
|
---|
1363 |
|
---|
1364 | UINT64 DisableBinitWithTimeout:1; ///< Bit56, Disable a BINIT on
|
---|
1365 | ///< internal processor time-out.
|
---|
1366 | ///< When 0, the processor may
|
---|
1367 | ///< generate a BINIT on an
|
---|
1368 | ///< internal processor time-out.
|
---|
1369 | ///< When 1, the processor will not
|
---|
1370 | ///< generate a BINIT on an
|
---|
1371 | ///< internal processor time-out.
|
---|
1372 | ///< The event is silently ignored.
|
---|
1373 |
|
---|
1374 | UINT64 DisableDPM:1; ///< Bit57, Disable Dynamic Power Management
|
---|
1375 | ///< (DPM). When 0, the hardware may reduce
|
---|
1376 | ///< power consumption by removing the clock
|
---|
1377 | ///< input from idle functional units. When 1,
|
---|
1378 | ///< all functional units will receive clock
|
---|
1379 | ///< input, even when idle.
|
---|
1380 |
|
---|
1381 | UINT64 DisableCoherency:1; ///< Bit58, Disable Coherency. When 0,
|
---|
1382 | ///< the processor uses normal coherency
|
---|
1383 | ///< requests and responses. When 1, the
|
---|
1384 | ///< processor answers all requests as if
|
---|
1385 | ///< the line were not present.
|
---|
1386 |
|
---|
1387 | UINT64 DisableCache:1; ///< Bit59, Disable Cache. When 0, the
|
---|
1388 | ///< processor performs cast outs on
|
---|
1389 | ///< cacheable pages and issues and responds
|
---|
1390 | ///< to coherency requests normally. When 1,
|
---|
1391 | ///< the processor performs a memory access
|
---|
1392 | ///< for each reference regardless of cache
|
---|
1393 | ///< contents and issues no coherence
|
---|
1394 | ///< requests and responds as if the line
|
---|
1395 | ///< were not present. Cache contents cannot
|
---|
1396 | ///< be relied upon when the cache is
|
---|
1397 | ///< disabled. WARNING: Semaphore
|
---|
1398 | ///< instructions may not be atomic or may
|
---|
1399 | ///< cause Unsupported Data Reference faults
|
---|
1400 | ///< if caches are disabled.
|
---|
1401 |
|
---|
1402 | UINT64 EnableCmciPromotion:1; ///< Bit60, Enable CMCI promotion When
|
---|
1403 | ///< 1, Corrected Machine Check
|
---|
1404 | ///< Interrupts (CMCI) are promoted to
|
---|
1405 | ///< MCAs. They are also further
|
---|
1406 | ///< promoted to BERR if bit 39, Enable
|
---|
1407 | ///< MCA promotion, is also set and
|
---|
1408 | ///< they are promoted to BINIT if bit
|
---|
1409 | ///< 38, Enable MCA to BINIT promotion,
|
---|
1410 | ///< is also set. This bit has no
|
---|
1411 | ///< effect if MCA signalling is
|
---|
1412 | ///< disabled (see
|
---|
1413 | ///< PAL_BUS_GET/SET_FEATURES)
|
---|
1414 |
|
---|
1415 | UINT64 EnableMcaToBinitPromotion:1; ///< Bit61, Enable MCA to BINIT
|
---|
1416 | ///< promotion. When 1, machine
|
---|
1417 | ///< check aborts (MCAs) are
|
---|
1418 | ///< promoted to the Bus
|
---|
1419 | ///< Initialization signal, and
|
---|
1420 | ///< the BINIT pin is assert on
|
---|
1421 | ///< each occurrence of an MCA.
|
---|
1422 | ///< Setting this bit has no
|
---|
1423 | ///< effect if BINIT signalling
|
---|
1424 | ///< is disabled. (See
|
---|
1425 | ///< PAL_BUS_GET/SET_FEATURES)
|
---|
1426 |
|
---|
1427 | UINT64 EnableMcaPromotion:1; ///< Bit62, Enable MCA promotion. When
|
---|
1428 | ///< 1, machine check aborts (MCAs) are
|
---|
1429 | ///< promoted to the Bus Error signal,
|
---|
1430 | ///< and the BERR pin is assert on each
|
---|
1431 | ///< occurrence of an MCA. Setting this
|
---|
1432 | ///< bit has no effect if BERR
|
---|
1433 | ///< signalling is disabled. (See
|
---|
1434 | ///< PAL_BUS_GET/SET_FEATURES)
|
---|
1435 |
|
---|
1436 | UINT64 EnableBerrPromotion:1; ///< Bit63. Enable BERR promotion. When
|
---|
1437 | ///< 1, the Bus Error (BERR) signal is
|
---|
1438 | ///< promoted to the Bus Initialization
|
---|
1439 | ///< (BINIT) signal, and the BINIT pin
|
---|
1440 | ///< is asserted on the occurrence of
|
---|
1441 | ///< each Bus Error. Setting this bit
|
---|
1442 | ///< has no effect if BINIT signalling
|
---|
1443 | ///< is disabled. (See
|
---|
1444 | ///< PAL_BUS_GET/SET_FEATURES)
|
---|
1445 | } PAL_PROCESSOR_FEATURES;
|
---|
1446 |
|
---|
1447 | /**
|
---|
1448 | PAL Procedure - PAL_PROC_GET_FEATURES.
|
---|
1449 |
|
---|
1450 | Return configurable processor features and their current
|
---|
1451 | setting. It is required by Itanium processors. The PAL procedure supports the
|
---|
1452 | Static Registers calling convention. It could be called at
|
---|
1453 | physical mode and virtual mode.
|
---|
1454 |
|
---|
1455 | @param Index Index of PAL_PROC_GET_FEATURES within the list of
|
---|
1456 | PAL procedures.
|
---|
1457 | @param Reserved Reserved parameter.
|
---|
1458 | @param FeatureSet Feature set information is being requested
|
---|
1459 | for.
|
---|
1460 |
|
---|
1461 | @retval 1 Call completed without error; The
|
---|
1462 | feature_set passed is not supported but a
|
---|
1463 | feature_set of a larger value is supported.
|
---|
1464 | @retval 0 Call completed without error
|
---|
1465 | @retval -2 Invalid argument
|
---|
1466 | @retval -3 Call completed with error.
|
---|
1467 | @retval -8 feature_set passed is beyond the maximum
|
---|
1468 | feature_set supported
|
---|
1469 |
|
---|
1470 | @return R9 64-bit vector of features implemented. See
|
---|
1471 | PAL_PROCESSOR_FEATURES.
|
---|
1472 | @return R10 64-bit vector of current feature settings. See
|
---|
1473 | PAL_PROCESSOR_FEATURES.
|
---|
1474 | @return R11 64-bit vector of features controllable by
|
---|
1475 | software.
|
---|
1476 |
|
---|
1477 | **/
|
---|
1478 | #define PAL_PROC_GET_FEATURES 17
|
---|
1479 |
|
---|
1480 |
|
---|
1481 | /**
|
---|
1482 | PAL Procedure - PAL_PROC_SET_FEATURES.
|
---|
1483 |
|
---|
1484 | Enable or disable configurable processor features. It is
|
---|
1485 | required by Itanium processors. The PAL procedure supports the Static
|
---|
1486 | Registers calling convention. It could be called at physical
|
---|
1487 | mode.
|
---|
1488 |
|
---|
1489 | @param Index Index of PAL_PROC_SET_FEATURES within the list of
|
---|
1490 | PAL procedures.
|
---|
1491 | @param FeatureSelect 64-bit vector denoting desired state of
|
---|
1492 | each feature (1=select, 0=non-select).
|
---|
1493 | @param FeatureSet Feature set to apply changes to. See
|
---|
1494 | PAL_PROC_GET_FEATURES for more information
|
---|
1495 | on feature sets.
|
---|
1496 |
|
---|
1497 | @retval 1 Call completed without error; The
|
---|
1498 | feature_set passed is not supported but a
|
---|
1499 | feature_set of a larger value is supported
|
---|
1500 | @retval 0 Call completed without error
|
---|
1501 | @retval -2 Invalid argument
|
---|
1502 | @retval -3 Call completed with error.
|
---|
1503 | @retval -8 feature_set passed is beyond the maximum
|
---|
1504 | feature_set supported
|
---|
1505 |
|
---|
1506 | **/
|
---|
1507 | #define PAL_PROC_SET_FEATURES 18
|
---|
1508 |
|
---|
1509 |
|
---|
1510 | //
|
---|
1511 | // Value of PAL_REGISTER_INFO.InfoRequest.
|
---|
1512 | //
|
---|
1513 | #define PAL_APPLICATION_REGISTER_IMPLEMENTED 0
|
---|
1514 | #define PAL_APPLICATION_REGISTER_READABLE 1
|
---|
1515 | #define PAL_CONTROL_REGISTER_IMPLEMENTED 2
|
---|
1516 | #define PAL_CONTROL_REGISTER_READABLE 3
|
---|
1517 |
|
---|
1518 |
|
---|
1519 | /**
|
---|
1520 | PAL Procedure - PAL_REGISTER_INFO.
|
---|
1521 |
|
---|
1522 | Return AR and CR register information. It is required by Itanium processors.
|
---|
1523 | The PAL procedure supports the Static Registers calling
|
---|
1524 | convention. It could be called at physical mode and virtual
|
---|
1525 | mode.
|
---|
1526 |
|
---|
1527 | @param Index Index of PAL_REGISTER_INFO within the list of
|
---|
1528 | PAL procedures.
|
---|
1529 | @param InfoRequest Unsigned 64-bit integer denoting what
|
---|
1530 | register information is requested. See
|
---|
1531 | PAL_REGISTER_INFO.InfoRequest above.
|
---|
1532 |
|
---|
1533 | @retval 0 Call completed without error
|
---|
1534 | @retval -2 Invalid argument
|
---|
1535 | @retval -3 Call completed with error.
|
---|
1536 |
|
---|
1537 | @return R9 64-bit vector denoting information for registers
|
---|
1538 | 0-63. Bit 0 is register 0, bit 63 is register 63.
|
---|
1539 | @return R10 64-bit vector denoting information for registers
|
---|
1540 | 64-127. Bit 0 is register 64, bit 63 is register
|
---|
1541 | 127.
|
---|
1542 |
|
---|
1543 | **/
|
---|
1544 | #define PAL_REGISTER_INFO 39
|
---|
1545 |
|
---|
1546 | /**
|
---|
1547 | PAL Procedure - PAL_RSE_INFO.
|
---|
1548 |
|
---|
1549 | Return RSE information. It is required by Itanium processors. The PAL
|
---|
1550 | procedure supports the Static Registers calling convention. It
|
---|
1551 | could be called at physical mode and virtual mode.
|
---|
1552 |
|
---|
1553 | @param Index Index of PAL_RSE_INFO within the list of
|
---|
1554 | PAL procedures.
|
---|
1555 | @param InfoRequest Unsigned 64-bit integer denoting what
|
---|
1556 | register information is requested. See
|
---|
1557 | PAL_REGISTER_INFO.InfoRequest above.
|
---|
1558 |
|
---|
1559 | @retval 0 Call completed without error
|
---|
1560 | @retval -2 Invalid argument
|
---|
1561 | @retval -3 Call completed with error.
|
---|
1562 |
|
---|
1563 | @return R9 Number of physical stacked general registers.
|
---|
1564 | @return R10 RSE hints supported by processor.
|
---|
1565 |
|
---|
1566 | **/
|
---|
1567 | #define PAL_RSE_INFO 19
|
---|
1568 |
|
---|
1569 | typedef struct {
|
---|
1570 | UINT64 VersionOfPalB:16; ///< Is a 16-bit binary coded decimal (BCD)
|
---|
1571 | ///< number that provides identification
|
---|
1572 | ///< information about the PAL_B firmware.
|
---|
1573 | UINT64 Reserved1:8;
|
---|
1574 | UINT64 PalVendor:8; ///< Is an unsigned 8-bit integer indicating the
|
---|
1575 | ///< vendor of the PAL code.
|
---|
1576 | UINT64 VersionOfPalA:16; ///< Is a 16-bit binary coded decimal (BCD)
|
---|
1577 | ///< number that provides identification
|
---|
1578 | ///< information about the PAL_A firmware. In
|
---|
1579 | ///< the split PAL_A model, this return value
|
---|
1580 | ///< is the version number of the
|
---|
1581 | ///< processor-specific PAL_A. The generic
|
---|
1582 | ///< PAL_A version is not returned by this
|
---|
1583 | ///< procedure in the split PAL_A model.
|
---|
1584 | UINT64 Reserved2:16;
|
---|
1585 | } PAL_VERSION_INFO;
|
---|
1586 |
|
---|
1587 | /**
|
---|
1588 | PAL Procedure - PAL_VERSION.
|
---|
1589 |
|
---|
1590 | Return version of PAL code. It is required by Itanium processors. The PAL
|
---|
1591 | procedure supports the Static Registers calling convention. It
|
---|
1592 | could be called at physical mode and virtual mode.
|
---|
1593 |
|
---|
1594 | @param Index Index of PAL_VERSION within the list of
|
---|
1595 | PAL procedures.
|
---|
1596 | @param InfoRequest Unsigned 64-bit integer denoting what
|
---|
1597 | register information is requested. See
|
---|
1598 | PAL_REGISTER_INFO.InfoRequest above.
|
---|
1599 |
|
---|
1600 | @retval 0 Call completed without error
|
---|
1601 | @retval -2 Invalid argument
|
---|
1602 | @retval -3 Call completed with error.
|
---|
1603 |
|
---|
1604 | @return R9 8-byte formatted value returning the minimum PAL
|
---|
1605 | version needed for proper operation of the
|
---|
1606 | processor. See PAL_VERSION_INFO above.
|
---|
1607 | @return R10 8-byte formatted value returning the current PAL
|
---|
1608 | version running on the processor. See
|
---|
1609 | PAL_VERSION_INFO above.
|
---|
1610 |
|
---|
1611 | **/
|
---|
1612 | #define PAL_VERSION 20
|
---|
1613 |
|
---|
1614 |
|
---|
1615 |
|
---|
1616 | //
|
---|
1617 | // Vectors of PAL_MC_CLEAR_LOG.pending
|
---|
1618 | //
|
---|
1619 | #define PAL_MC_PENDING BIT0
|
---|
1620 | #define PAL_INIT_PENDING BIT1
|
---|
1621 |
|
---|
1622 | /**
|
---|
1623 | PAL Procedure - PAL_MC_CLEAR_LOG.
|
---|
1624 |
|
---|
1625 | Clear all error information from processor error logging
|
---|
1626 | registers. It is required by Itanium processors. The PAL procedure supports
|
---|
1627 | the Static Registers calling convention. It could be called at
|
---|
1628 | physical mode and virtual mode.
|
---|
1629 |
|
---|
1630 | @param Index Index of PAL_MC_CLEAR_LOG within the list of
|
---|
1631 | PAL procedures.
|
---|
1632 |
|
---|
1633 | @retval 0 Call completed without error
|
---|
1634 | @retval -2 Invalid argument
|
---|
1635 | @retval -3 Call completed with error.
|
---|
1636 |
|
---|
1637 | @return R9 64-bit vector denoting whether an event is
|
---|
1638 | pending. See PAL_MC_CLEAR_LOG.pending above.
|
---|
1639 |
|
---|
1640 | **/
|
---|
1641 | #define PAL_MC_CLEAR_LOG 21
|
---|
1642 |
|
---|
1643 | /**
|
---|
1644 | PAL Procedure - PAL_MC_DRAIN.
|
---|
1645 |
|
---|
1646 | Ensure that all operations that could cause an MCA have
|
---|
1647 | completed. It is required by Itanium processors. The PAL procedure supports
|
---|
1648 | the Static Registers calling convention. It could be called at
|
---|
1649 | physical mode and virtual mode.
|
---|
1650 |
|
---|
1651 | @param Index Index of PAL_MC_DRAIN within the list of PAL
|
---|
1652 | procedures.
|
---|
1653 |
|
---|
1654 | @retval 0 Call completed without error
|
---|
1655 | @retval -2 Invalid argument
|
---|
1656 | @retval -3 Call completed with error.
|
---|
1657 |
|
---|
1658 | **/
|
---|
1659 | #define PAL_MC_DRAIN 22
|
---|
1660 |
|
---|
1661 |
|
---|
1662 | /**
|
---|
1663 | PAL Procedure - PAL_MC_DYNAMIC_STATE.
|
---|
1664 |
|
---|
1665 | Return Processor Dynamic State for logging by SAL. It is
|
---|
1666 | optional. The PAL procedure supports the Static Registers
|
---|
1667 | calling convention. It could be called at physical mode.
|
---|
1668 |
|
---|
1669 | @param Index Index of PAL_MC_DYNAMIC_STATE within the list of PAL
|
---|
1670 | procedures.
|
---|
1671 | @param Offset Offset of the next 8 bytes of Dynamic Processor
|
---|
1672 | State to return. (multiple of 8).
|
---|
1673 |
|
---|
1674 | @retval 0 Call completed without error
|
---|
1675 | @retval -1 Unimplemented procedure.
|
---|
1676 | @retval -2 Invalid argument
|
---|
1677 | @retval -3 Call completed with error.
|
---|
1678 |
|
---|
1679 | @return R9 Unsigned 64-bit integer denoting bytes of Dynamic
|
---|
1680 | Processor State returned.
|
---|
1681 | @return R10 Next 8 bytes of Dynamic Processor State.
|
---|
1682 |
|
---|
1683 | **/
|
---|
1684 | #define PAL_MC_DYNAMIC_STATE 24
|
---|
1685 |
|
---|
1686 |
|
---|
1687 |
|
---|
1688 | //
|
---|
1689 | // Values of PAL_MC_ERROR_INFO.InfoIndex.
|
---|
1690 | //
|
---|
1691 | #define PAL_PROCESSOR_ERROR_MAP 0
|
---|
1692 | #define PAL_PROCESSOR_STATE_PARAM 1
|
---|
1693 | #define PAL_STRUCTURE_SPECIFIC_ERROR 2
|
---|
1694 |
|
---|
1695 | typedef struct {
|
---|
1696 | UINT64 CoreId:4; ///< Bit3:0, Processor core ID (default is 0 for
|
---|
1697 | ///< processors with a single core)
|
---|
1698 |
|
---|
1699 | UINT64 ThreadId:4; ///< Bit7:4, Logical thread ID (default is 0 for
|
---|
1700 | ///< processors that execute a single thread)
|
---|
1701 |
|
---|
1702 | UINT64 InfoOfInsCache:4; ///< Bit11:8, Error information is
|
---|
1703 | ///< available for 1st, 2nd, 3rd, and 4th
|
---|
1704 | ///< level instruction caches.
|
---|
1705 |
|
---|
1706 | UINT64 InfoOfDataCache:4; ///< Bit15:12, Error information is
|
---|
1707 | ///< available for 1st, 2nd, 3rd, and 4th
|
---|
1708 | ///< level data/unified caches.
|
---|
1709 |
|
---|
1710 | UINT64 InfoOfInsTlb:4; ///< Bit19:16 Error information is available
|
---|
1711 | ///< for 1st, 2nd, 3rd, and 4th level
|
---|
1712 | ///< instruction TLB.
|
---|
1713 |
|
---|
1714 | UINT64 InfoOfDataTlb:4; ///< Bit23:20, Error information is available
|
---|
1715 | ///< for 1st, 2nd, 3rd, and 4th level
|
---|
1716 | ///< data/unified TLB
|
---|
1717 |
|
---|
1718 | UINT64 InfoOfProcessorBus:4; ///< Bit27:24 Error information is
|
---|
1719 | ///< available for the 1st, 2nd, 3rd,
|
---|
1720 | ///< and 4th level processor bus
|
---|
1721 | ///< hierarchy.
|
---|
1722 | UINT64 InfoOfRegisterFile:4; ///< Bit31:28 Error information is
|
---|
1723 | ///< available on register file
|
---|
1724 | ///< structures.
|
---|
1725 | UINT64 InfoOfMicroArch:4; ///< Bit47:32, Error information is
|
---|
1726 | ///< available on micro-architectural
|
---|
1727 | ///< structures.
|
---|
1728 | UINT64 Reserved:16;
|
---|
1729 | } PAL_MC_ERROR_INFO_LEVEL_INDEX;
|
---|
1730 |
|
---|
1731 | //
|
---|
1732 | // Value of PAL_MC_ERROR_INFO.ErrorTypeIndex
|
---|
1733 | //
|
---|
1734 | #define PAL_ERR_INFO_BY_LEVEL_INDEX 0
|
---|
1735 | #define PAL_ERR_INFO_TARGET_ADDRESS 1
|
---|
1736 | #define PAL_ERR_INFO_REQUESTER_IDENTIFIER 2
|
---|
1737 | #define PAL_ERR_INFO_REPONSER_INDENTIFIER 3
|
---|
1738 | #define PAL_ERR_INFO_PRECISE_INSTRUCTION_POINTER 4
|
---|
1739 |
|
---|
1740 | typedef struct {
|
---|
1741 | UINT64 Operation:4; ///< Bit3:0, Type of cache operation that caused
|
---|
1742 | ///< the machine check: 0 - unknown or internal
|
---|
1743 | ///< error 1 - load 2 - store 3 - instruction
|
---|
1744 | ///< fetch or instruction prefetch 4 - data
|
---|
1745 | ///< prefetch (both hardware and software) 5 -
|
---|
1746 | ///< snoop (coherency check) 6 - cast out
|
---|
1747 | ///< (explicit or implicit write-back of a cache
|
---|
1748 | ///< line) 7 - move in (cache line fill)
|
---|
1749 |
|
---|
1750 | UINT64 FailedCacheLevel:2; ///< Bit5:4 Level of cache where the
|
---|
1751 | ///< error occurred. A value of 0
|
---|
1752 | ///< indicates the first level of cache.
|
---|
1753 | UINT64 Reserved1:2;
|
---|
1754 | UINT64 FailedInDataPart:1; ///< Bit8, Failure located in the data part of the cache line.
|
---|
1755 | UINT64 FailedInTagPart:1; ///< Bit9, Failure located in the tag part of the cache line.
|
---|
1756 | UINT64 FailedInDataCache:1; ///< Bit10, Failure located in the data cache
|
---|
1757 |
|
---|
1758 | UINT64 FailedInInsCache:1; ///< Bit11, Failure located in the
|
---|
1759 | ///< instruction cache.
|
---|
1760 |
|
---|
1761 | UINT64 Mesi:3; ///< Bit14:12, 0 - cache line is invalid. 1 - cache
|
---|
1762 | ///< line is held shared. 2 - cache line is held
|
---|
1763 | ///< exclusive. 3 - cache line is modified. All other
|
---|
1764 | ///< values are reserved.
|
---|
1765 |
|
---|
1766 | UINT64 MesiIsValid:1; ///< Bit15, The mesi field in the cache_check
|
---|
1767 | ///< parameter is valid.
|
---|
1768 |
|
---|
1769 | UINT64 FailedWay:5; ///< Bit20:16, Failure located in the way of
|
---|
1770 | ///< the cache indicated by this value.
|
---|
1771 |
|
---|
1772 | UINT64 WayIndexIsValid:1; ///< Bit21, The way and index field in the
|
---|
1773 | ///< cache_check parameter is valid.
|
---|
1774 |
|
---|
1775 | UINT64 Reserved2:1;
|
---|
1776 | UINT64 MultipleBitsError:1; ///< Bit23, A multiple-bit error was
|
---|
1777 | ///< detected, and data was poisoned for
|
---|
1778 | ///< the corresponding cache line during
|
---|
1779 | ///< castout.
|
---|
1780 | UINT64 Reserved3:8;
|
---|
1781 | UINT64 IndexOfCacheLineError:20; ///< Bit51:32, Index of the cache
|
---|
1782 | ///< line where the error occurred.
|
---|
1783 | UINT64 Reserved4:2;
|
---|
1784 |
|
---|
1785 | UINT64 InstructionSet:1; ///< Bit54, Instruction set. If this value
|
---|
1786 | ///< is set to zero, the instruction that
|
---|
1787 | ///< generated the machine check was an
|
---|
1788 | ///< Intel Itanium instruction. If this bit
|
---|
1789 | ///< is set to one, the instruction that
|
---|
1790 | ///< generated the machine check was IA-32
|
---|
1791 | ///< instruction.
|
---|
1792 |
|
---|
1793 | UINT64 InstructionSetIsValid:1; ///< Bit55, The is field in the
|
---|
1794 | ///< cache_check parameter is valid.
|
---|
1795 |
|
---|
1796 | UINT64 PrivilegeLevel:2; ///< Bit57:56, Privilege level. The
|
---|
1797 | ///< privilege level of the instruction
|
---|
1798 | ///< bundle responsible for generating the
|
---|
1799 | ///< machine check.
|
---|
1800 |
|
---|
1801 | UINT64 PrivilegeLevelIsValide:1; ///< Bit58, The pl field of the
|
---|
1802 | ///< cache_check parameter is
|
---|
1803 | ///< valid.
|
---|
1804 |
|
---|
1805 | UINT64 McCorrected:1; ///< Bit59, Machine check corrected: This bit
|
---|
1806 | ///< is set to one to indicate that the machine
|
---|
1807 | ///< check has been corrected.
|
---|
1808 |
|
---|
1809 | UINT64 TargetAddressIsValid:1; ///< Bit60, Target address is valid:
|
---|
1810 | ///< This bit is set to one to
|
---|
1811 | ///< indicate that a valid target
|
---|
1812 | ///< address has been logged.
|
---|
1813 |
|
---|
1814 | UINT64 RequesterIdentifier:1; ///< Bit61, Requester identifier: This
|
---|
1815 | ///< bit is set to one to indicate that
|
---|
1816 | ///< a valid requester identifier has
|
---|
1817 | ///< been logged.
|
---|
1818 |
|
---|
1819 | UINT64 ResponserIdentifier:1; ///< Bit62, Responder identifier: This
|
---|
1820 | ///< bit is set to one to indicate that
|
---|
1821 | ///< a valid responder identifier has
|
---|
1822 | ///< been logged.
|
---|
1823 |
|
---|
1824 | UINT64 PreciseInsPointer:1; ///< Bit63, Precise instruction pointer.
|
---|
1825 | ///< This bit is set to one to indicate
|
---|
1826 | ///< that a valid precise instruction
|
---|
1827 | ///< pointer has been logged.
|
---|
1828 |
|
---|
1829 | } PAL_CACHE_CHECK_INFO;
|
---|
1830 |
|
---|
1831 |
|
---|
1832 | typedef struct {
|
---|
1833 | UINT64 FailedSlot:8; ///< Bit7:0, Slot number of the translation
|
---|
1834 | ///< register where the failure occurred.
|
---|
1835 | UINT64 FailedSlotIsValid:1; ///< Bit8, The tr_slot field in the
|
---|
1836 | ///< TLB_check parameter is valid.
|
---|
1837 | UINT64 Reserved1 :1;
|
---|
1838 | UINT64 TlbLevel:2; ///< Bit11:10, The level of the TLB where the
|
---|
1839 | ///< error occurred. A value of 0 indicates the
|
---|
1840 | ///< first level of TLB
|
---|
1841 | UINT64 Reserved2 :4;
|
---|
1842 |
|
---|
1843 | UINT64 FailedInDataTr:1; ///< Bit16, Error occurred in the data
|
---|
1844 | ///< translation registers.
|
---|
1845 |
|
---|
1846 | UINT64 FailedInInsTr:1; ///< Bit17, Error occurred in the instruction
|
---|
1847 | ///< translation registers
|
---|
1848 |
|
---|
1849 | UINT64 FailedInDataTc:1; ///< Bit18, Error occurred in data
|
---|
1850 | ///< translation cache.
|
---|
1851 |
|
---|
1852 | UINT64 FailedInInsTc:1; ///< Bit19, Error occurred in the instruction
|
---|
1853 | ///< translation cache.
|
---|
1854 |
|
---|
1855 | UINT64 FailedOperation:4; ///< Bit23:20, Type of cache operation that
|
---|
1856 | ///< caused the machine check: 0 - unknown
|
---|
1857 | ///< 1 - TLB access due to load instruction
|
---|
1858 | ///< 2 - TLB access due to store
|
---|
1859 | ///< instruction 3 - TLB access due to
|
---|
1860 | ///< instruction fetch or instruction
|
---|
1861 | ///< prefetch 4 - TLB access due to data
|
---|
1862 | ///< prefetch (both hardware and software)
|
---|
1863 | ///< 5 - TLB shoot down access 6 - TLB
|
---|
1864 | ///< probe instruction (probe, tpa) 7 -
|
---|
1865 | ///< move in (VHPT fill) 8 - purge (insert
|
---|
1866 | ///< operation that purges entries or a TLB
|
---|
1867 | ///< purge instruction) All other values
|
---|
1868 | ///< are reserved.
|
---|
1869 |
|
---|
1870 | UINT64 Reserved3:30;
|
---|
1871 | UINT64 InstructionSet:1; ///< Bit54, Instruction set. If this value
|
---|
1872 | ///< is set to zero, the instruction that
|
---|
1873 | ///< generated the machine check was an
|
---|
1874 | ///< Intel Itanium instruction. If this bit
|
---|
1875 | ///< is set to one, the instruction that
|
---|
1876 | ///< generated the machine check was IA-32
|
---|
1877 | ///< instruction.
|
---|
1878 |
|
---|
1879 | UINT64 InstructionSetIsValid:1; ///< Bit55, The is field in the
|
---|
1880 | ///< TLB_check parameter is valid.
|
---|
1881 |
|
---|
1882 | UINT64 PrivelegeLevel:2; ///< Bit57:56, Privilege level. The
|
---|
1883 | ///< privilege level of the instruction
|
---|
1884 | ///< bundle responsible for generating the
|
---|
1885 | ///< machine check.
|
---|
1886 |
|
---|
1887 | UINT64 PrivelegeLevelIsValid:1; ///< Bit58, The pl field of the
|
---|
1888 | ///< TLB_check parameter is valid.
|
---|
1889 |
|
---|
1890 | UINT64 McCorrected:1; ///< Bit59, Machine check corrected: This bit
|
---|
1891 | ///< is set to one to indicate that the machine
|
---|
1892 | ///< check has been corrected.
|
---|
1893 |
|
---|
1894 | UINT64 TargetAddressIsValid:1; ///< Bit60, Target address is valid:
|
---|
1895 | ///< This bit is set to one to
|
---|
1896 | ///< indicate that a valid target
|
---|
1897 | ///< address has been logged.
|
---|
1898 |
|
---|
1899 | UINT64 RequesterIdentifier:1; ///< Bit61 Requester identifier: This
|
---|
1900 | ///< bit is set to one to indicate that
|
---|
1901 | ///< a valid requester identifier has
|
---|
1902 | ///< been logged.
|
---|
1903 |
|
---|
1904 | UINT64 ResponserIdentifier:1; ///< Bit62, Responder identifier: This
|
---|
1905 | ///< bit is set to one to indicate that
|
---|
1906 | ///< a valid responder identifier has
|
---|
1907 | ///< been logged.
|
---|
1908 |
|
---|
1909 | UINT64 PreciseInsPointer:1; ///< Bit63 Precise instruction pointer.
|
---|
1910 | ///< This bit is set to one to indicate
|
---|
1911 | ///< that a valid precise instruction
|
---|
1912 | ///< pointer has been logged.
|
---|
1913 | } PAL_TLB_CHECK_INFO;
|
---|
1914 |
|
---|
1915 | /**
|
---|
1916 | PAL Procedure - PAL_MC_ERROR_INFO.
|
---|
1917 |
|
---|
1918 | Return Processor Machine Check Information and Processor
|
---|
1919 | Static State for logging by SAL. It is required by Itanium processors. The
|
---|
1920 | PAL procedure supports the Static Registers calling
|
---|
1921 | convention. It could be called at physical and virtual mode.
|
---|
1922 |
|
---|
1923 | @param Index Index of PAL_MC_ERROR_INFO within the list of PAL
|
---|
1924 | procedures.
|
---|
1925 | @param InfoIndex Unsigned 64-bit integer identifying the
|
---|
1926 | error information that is being requested.
|
---|
1927 | See PAL_MC_ERROR_INFO.InfoIndex.
|
---|
1928 | @param LevelIndex 8-byte formatted value identifying the
|
---|
1929 | structure to return error information
|
---|
1930 | on. See PAL_MC_ERROR_INFO_LEVEL_INDEX.
|
---|
1931 | @param ErrorTypeIndex Unsigned 64-bit integer denoting the
|
---|
1932 | type of error information that is
|
---|
1933 | being requested for the structure
|
---|
1934 | identified in LevelIndex.
|
---|
1935 |
|
---|
1936 | @retval 0 Call completed without error
|
---|
1937 | @retval -2 Invalid argument
|
---|
1938 | @retval -3 Call completed with error.
|
---|
1939 | @retval -6 Argument was valid, but no error
|
---|
1940 | information was available
|
---|
1941 |
|
---|
1942 | @return R9 Error information returned. The format of this
|
---|
1943 | value is dependant on the input values passed.
|
---|
1944 | @return R10 If this value is zero, all the error information
|
---|
1945 | specified by err_type_index has been returned. If
|
---|
1946 | this value is one, more structure-specific error
|
---|
1947 | information is available and the caller needs to
|
---|
1948 | make this procedure call again with level_index
|
---|
1949 | unchanged and err_type_index, incremented.
|
---|
1950 |
|
---|
1951 | **/
|
---|
1952 | #define PAL_MC_ERROR_INFO 25
|
---|
1953 |
|
---|
1954 | /**
|
---|
1955 | PAL Procedure - PAL_MC_EXPECTED.
|
---|
1956 |
|
---|
1957 | Set/Reset Expected Machine Check Indicator. It is required by
|
---|
1958 | Itanium processors. The PAL procedure supports the Static Registers calling
|
---|
1959 | convention. It could be called at physical mode.
|
---|
1960 |
|
---|
1961 | @param Index Index of PAL_MC_EXPECTED within the list of PAL
|
---|
1962 | procedures.
|
---|
1963 | @param Expected Unsigned integer with a value of 0 or 1 to
|
---|
1964 | set or reset the hardware resource
|
---|
1965 | PALE_CHECK examines for expected machine
|
---|
1966 | checks.
|
---|
1967 |
|
---|
1968 | @retval 0 Call completed without error
|
---|
1969 | @retval -2 Invalid argument
|
---|
1970 | @retval -3 Call completed with error.
|
---|
1971 |
|
---|
1972 | @return R9 Unsigned integer denoting whether a machine check
|
---|
1973 | was previously expected.
|
---|
1974 |
|
---|
1975 | **/
|
---|
1976 | #define PAL_MC_EXPECTED 23
|
---|
1977 |
|
---|
1978 | /**
|
---|
1979 | PAL Procedure - PAL_MC_REGISTER_MEM.
|
---|
1980 |
|
---|
1981 | Register min-state save area with PAL for machine checks and
|
---|
1982 | inits. It is required by Itanium processors. The PAL procedure supports the
|
---|
1983 | Static Registers calling convention. It could be called at
|
---|
1984 | physical mode.
|
---|
1985 |
|
---|
1986 | @param Index Index of PAL_MC_REGISTER_MEM within the list of PAL
|
---|
1987 | procedures.
|
---|
1988 | @param Address Physical address of the buffer to be
|
---|
1989 | registered with PAL.
|
---|
1990 |
|
---|
1991 | @retval 0 Call completed without error
|
---|
1992 | @retval -2 Invalid argument
|
---|
1993 | @retval -3 Call completed with error.
|
---|
1994 |
|
---|
1995 | **/
|
---|
1996 | #define PAL_MC_REGISTER_MEM 27
|
---|
1997 |
|
---|
1998 | /**
|
---|
1999 | PAL Procedure - PAL_MC_RESUME.
|
---|
2000 |
|
---|
2001 | Restore minimal architected state and return to interrupted
|
---|
2002 | process. It is required by Itanium processors. The PAL procedure supports the
|
---|
2003 | Static Registers calling convention. It could be called at
|
---|
2004 | physical mode.
|
---|
2005 |
|
---|
2006 | @param Index Index of PAL_MC_RESUME within the list of PAL
|
---|
2007 | procedures.
|
---|
2008 | @param SetCmci Unsigned 64 bit integer denoting whether to
|
---|
2009 | set the CMC interrupt. A value of 0 indicates
|
---|
2010 | not to set the interrupt, a value of 1
|
---|
2011 | indicated to set the interrupt, and all other
|
---|
2012 | values are reserved.
|
---|
2013 | @param SavePtr Physical address of min-state save area used
|
---|
2014 | to used to restore processor state.
|
---|
2015 | @param NewContext Unsigned 64-bit integer denoting whether
|
---|
2016 | the caller is returning to a new context.
|
---|
2017 | A value of 0 indicates the caller is
|
---|
2018 | returning to the interrupted context, a
|
---|
2019 | value of 1 indicates that the caller is
|
---|
2020 | returning to a new context.
|
---|
2021 |
|
---|
2022 | @retval -2 Invalid argument
|
---|
2023 | @retval -3 Call completed with error.
|
---|
2024 |
|
---|
2025 | **/
|
---|
2026 | #define PAL_MC_RESUME 26
|
---|
2027 |
|
---|
2028 | /**
|
---|
2029 | PAL Procedure - PAL_HALT.
|
---|
2030 |
|
---|
2031 | Enter the low-power HALT state or an implementation-dependent
|
---|
2032 | low-power state. It is optinal. The PAL procedure supports the
|
---|
2033 | Static Registers calling convention. It could be called at
|
---|
2034 | physical mode.
|
---|
2035 |
|
---|
2036 | @param Index Index of PAL_HALT within the list of PAL
|
---|
2037 | procedures.
|
---|
2038 | @param HaltState Unsigned 64-bit integer denoting low power
|
---|
2039 | state requested.
|
---|
2040 | @param IoDetailPtr 8-byte aligned physical address pointer to
|
---|
2041 | information on the type of I/O
|
---|
2042 | (load/store) requested.
|
---|
2043 |
|
---|
2044 | @retval 0 Call completed without error
|
---|
2045 | @retval -1 Unimplemented procedure
|
---|
2046 | @retval -2 Invalid argument
|
---|
2047 | @retval -3 Call completed with error.
|
---|
2048 |
|
---|
2049 | @return R9 Value returned if a load instruction is requested
|
---|
2050 | in the io_detail_ptr
|
---|
2051 |
|
---|
2052 | **/
|
---|
2053 | #define PAL_HALT 28
|
---|
2054 |
|
---|
2055 |
|
---|
2056 | /**
|
---|
2057 | PAL Procedure - PAL_HALT_INFO.
|
---|
2058 |
|
---|
2059 | Return the low power capabilities of the processor. It is
|
---|
2060 | required by Itanium processors. The PAL procedure supports the
|
---|
2061 | Stacked Registers calling convention. It could be called at
|
---|
2062 | physical and virtual mode.
|
---|
2063 |
|
---|
2064 | @param Index Index of PAL_HALT_INFO within the list of PAL
|
---|
2065 | procedures.
|
---|
2066 | @param PowerBuffer 64-bit pointer to a 64-byte buffer aligned
|
---|
2067 | on an 8-byte boundary.
|
---|
2068 |
|
---|
2069 | @retval 0 Call completed without error
|
---|
2070 | @retval -2 Invalid argument
|
---|
2071 | @retval -3 Call completed with error.
|
---|
2072 |
|
---|
2073 | **/
|
---|
2074 | #define PAL_HALT_INFO 257
|
---|
2075 |
|
---|
2076 |
|
---|
2077 | /**
|
---|
2078 | PAL Procedure - PAL_HALT_LIGHT.
|
---|
2079 |
|
---|
2080 | Enter the low power LIGHT HALT state. It is required by
|
---|
2081 | Itanium processors. The PAL procedure supports the Static Registers calling
|
---|
2082 | convention. It could be called at physical and virtual mode.
|
---|
2083 |
|
---|
2084 | @param Index Index of PAL_HALT_LIGHT within the list of PAL
|
---|
2085 | procedures.
|
---|
2086 |
|
---|
2087 | @retval 0 Call completed without error
|
---|
2088 | @retval -2 Invalid argument
|
---|
2089 | @retval -3 Call completed with error.
|
---|
2090 |
|
---|
2091 | **/
|
---|
2092 | #define PAL_HALT_LIGHT 29
|
---|
2093 |
|
---|
2094 | /**
|
---|
2095 | PAL Procedure - PAL_CACHE_LINE_INIT.
|
---|
2096 |
|
---|
2097 | Initialize tags and data of a cache line for processor
|
---|
2098 | testing. It is required by Itanium processors. The PAL procedure supports the
|
---|
2099 | Static Registers calling convention. It could be called at
|
---|
2100 | physical and virtual mode.
|
---|
2101 |
|
---|
2102 | @param Index Index of PAL_CACHE_LINE_INIT within the list of PAL
|
---|
2103 | procedures.
|
---|
2104 | @param Address Unsigned 64-bit integer value denoting the
|
---|
2105 | physical address from which the physical page
|
---|
2106 | number is to be generated. The address must be
|
---|
2107 | an implemented physical address, bit 63 must
|
---|
2108 | be zero.
|
---|
2109 | @param DataValue 64-bit data value which is used to
|
---|
2110 | initialize the cache line.
|
---|
2111 |
|
---|
2112 | @retval 0 Call completed without error
|
---|
2113 | @retval -2 Invalid argument
|
---|
2114 | @retval -3 Call completed with error.
|
---|
2115 |
|
---|
2116 | **/
|
---|
2117 | #define PAL_CACHE_LINE_INIT 31
|
---|
2118 |
|
---|
2119 | /**
|
---|
2120 | PAL Procedure - PAL_CACHE_READ.
|
---|
2121 |
|
---|
2122 | Read tag and data of a cache line for diagnostic testing. It
|
---|
2123 | is optional. The PAL procedure supports the
|
---|
2124 | Satcked Registers calling convention. It could be called at
|
---|
2125 | physical mode.
|
---|
2126 |
|
---|
2127 | @param Index Index of PAL_CACHE_READ within the list of PAL
|
---|
2128 | procedures.
|
---|
2129 | @param LineId 8-byte formatted value describing where in the
|
---|
2130 | cache to read the data.
|
---|
2131 | @param Address 64-bit 8-byte aligned physical address from
|
---|
2132 | which to read the data. The address must be an
|
---|
2133 | implemented physical address on the processor
|
---|
2134 | model with bit 63 set to zero.
|
---|
2135 |
|
---|
2136 | @retval 1 The word at address was found in the
|
---|
2137 | cache, but the line was invalid.
|
---|
2138 | @retval 0 Call completed without error
|
---|
2139 | @retval -2 Invalid argument
|
---|
2140 | @retval -3 Call completed with error.
|
---|
2141 | @retval -5 The word at address was not found in the
|
---|
2142 | cache.
|
---|
2143 | @retval -7 The operation requested is not supported
|
---|
2144 | for this cache_type and level.
|
---|
2145 |
|
---|
2146 | @return R9 Right-justified value returned from the cache
|
---|
2147 | line.
|
---|
2148 | @return R10 The number of bits returned in data.
|
---|
2149 | @return R11 The status of the cache line.
|
---|
2150 |
|
---|
2151 | **/
|
---|
2152 | #define PAL_CACHE_READ 259
|
---|
2153 |
|
---|
2154 |
|
---|
2155 | /**
|
---|
2156 | PAL Procedure - PAL_CACHE_WRITE.
|
---|
2157 |
|
---|
2158 | Write tag and data of a cache for diagnostic testing. It is
|
---|
2159 | optional. The PAL procedure supports the Satcked Registers
|
---|
2160 | calling convention. It could be called at physical mode.
|
---|
2161 |
|
---|
2162 | @param Index Index of PAL_CACHE_WRITE within the list of PAL
|
---|
2163 | procedures.
|
---|
2164 | @param LineId 8-byte formatted value describing where in the
|
---|
2165 | cache to write the data.
|
---|
2166 | @param Address 64-bit 8-byte aligned physical address at
|
---|
2167 | which the data should be written. The address
|
---|
2168 | must be an implemented physical address on the
|
---|
2169 | processor model with bit 63 set to 0.
|
---|
2170 | @param Data Unsigned 64-bit integer value to write into
|
---|
2171 | the specified part of the cache.
|
---|
2172 |
|
---|
2173 | @retval 0 Call completed without error
|
---|
2174 | @retval -2 Invalid argument
|
---|
2175 | @retval -3 Call completed with error.
|
---|
2176 | @retval -7 The operation requested is not supported
|
---|
2177 | for this cache_type and level.
|
---|
2178 |
|
---|
2179 | **/
|
---|
2180 | #define PAL_CACHE_WRITE 260
|
---|
2181 |
|
---|
2182 | /**
|
---|
2183 | PAL Procedure - PAL_TEST_INFO.
|
---|
2184 |
|
---|
2185 | Returns alignment and size requirements needed for the memory
|
---|
2186 | buffer passed to the PAL_TEST_PROC procedure as well as
|
---|
2187 | information on self-test control words for the processor self
|
---|
2188 | tests. It is required by Itanium processors. The PAL procedure supports the
|
---|
2189 | Static Registers calling convention. It could be called at
|
---|
2190 | physical mode.
|
---|
2191 |
|
---|
2192 | @param Index Index of PAL_TEST_INFO within the list of PAL
|
---|
2193 | procedures.
|
---|
2194 | @param TestPhase Unsigned integer that specifies which phase
|
---|
2195 | of the processor self-test information is
|
---|
2196 | being requested on. A value of 0 indicates
|
---|
2197 | the phase two of the processor self-test and
|
---|
2198 | a value of 1 indicates phase one of the
|
---|
2199 | processor self-test. All other values are
|
---|
2200 | reserved.
|
---|
2201 |
|
---|
2202 | @retval 0 Call completed without error
|
---|
2203 | @retval -2 Invalid argument
|
---|
2204 | @retval -3 Call completed with error.
|
---|
2205 |
|
---|
2206 | @return R9 Unsigned 64-bit integer denoting the number of
|
---|
2207 | bytes of main memory needed to perform the second
|
---|
2208 | phase of processor self-test.
|
---|
2209 | @return R10 Unsigned 64-bit integer denoting the alignment
|
---|
2210 | required for the memory buffer.
|
---|
2211 | @return R11 48-bit wide bit-field indicating if control of
|
---|
2212 | the processor self-tests is supported and which
|
---|
2213 | bits of the test_control field are defined for
|
---|
2214 | use.
|
---|
2215 |
|
---|
2216 | **/
|
---|
2217 | #define PAL_TEST_INFO 37
|
---|
2218 |
|
---|
2219 | typedef struct {
|
---|
2220 | UINT64 BufferSize:56; ///< Indicates the size in bytes of the memory
|
---|
2221 | ///< buffer that is passed to this procedure.
|
---|
2222 | ///< BufferSize must be greater than or equal in
|
---|
2223 | ///< size to the bytes_needed return value from
|
---|
2224 | ///< PAL_TEST_INFO, otherwise this procedure will
|
---|
2225 | ///< return with an invalid argument return
|
---|
2226 | ///< value.
|
---|
2227 |
|
---|
2228 | UINT64 TestPhase:8; ///< Defines which phase of the processor
|
---|
2229 | ///< self-tests are requested to be run. A value
|
---|
2230 | ///< of zero indicates to run phase two of the
|
---|
2231 | ///< processor self-tests. Phase two of the
|
---|
2232 | ///< processor self-tests are ones that require
|
---|
2233 | ///< external memory to execute correctly. A
|
---|
2234 | ///< value of one indicates to run phase one of
|
---|
2235 | ///< the processor self-tests. Phase one of the
|
---|
2236 | ///< processor self-tests are tests run during
|
---|
2237 | ///< PALE_RESET and do not depend on external
|
---|
2238 | ///< memory to run correctly. When the caller
|
---|
2239 | ///< requests to have phase one of the processor
|
---|
2240 | ///< self-test run via this procedure call, a
|
---|
2241 | ///< memory buffer may be needed to save and
|
---|
2242 | ///< restore state as required by the PAL calling
|
---|
2243 | ///< conventions. The procedure PAL_TEST_INFO
|
---|
2244 | ///< informs the caller about the requirements of
|
---|
2245 | ///< the memory buffer.
|
---|
2246 | } PAL_TEST_INFO_INFO;
|
---|
2247 |
|
---|
2248 | typedef struct {
|
---|
2249 | UINT64 TestControl:47; ///< This is an ordered implementation-specific
|
---|
2250 | ///< control word that allows the user control
|
---|
2251 | ///< over the length and runtime of the
|
---|
2252 | ///< processor self-tests. This control word is
|
---|
2253 | ///< ordered from the longest running tests up
|
---|
2254 | ///< to the shortest running tests with bit 0
|
---|
2255 | ///< controlling the longest running test. PAL
|
---|
2256 | ///< may not implement all 47-bits of the
|
---|
2257 | ///< test_control word. PAL communicates if a
|
---|
2258 | ///< bit provides control by placing a zero in
|
---|
2259 | ///< that bit. If a bit provides no control,
|
---|
2260 | ///< PAL will place a one in it. PAL will have
|
---|
2261 | ///< two sets of test_control bits for the two
|
---|
2262 | ///< phases of the processor self-test. PAL
|
---|
2263 | ///< provides information about implemented
|
---|
2264 | ///< test_control bits at the hand-off from PAL
|
---|
2265 | ///< to SAL for the firmware recovery check.
|
---|
2266 | ///< These test_control bits provide control
|
---|
2267 | ///< for phase one of processor self-test. It
|
---|
2268 | ///< also provides this information via the PAL
|
---|
2269 | ///< procedure call PAL_TEST_INFO for both the
|
---|
2270 | ///< phase one and phase two processor tests
|
---|
2271 | ///< depending on which information the caller
|
---|
2272 | ///< is requesting. PAL interprets these bits
|
---|
2273 | ///< as input parameters on two occasions. The
|
---|
2274 | ///< first time is when SAL passes control back
|
---|
2275 | ///< to PAL after the firmware recovery check.
|
---|
2276 | ///< The second time is when a call to
|
---|
2277 | ///< PAL_TEST_PROC is made. When PAL interprets
|
---|
2278 | ///< these bits it will only interpret
|
---|
2279 | ///< implemented test_control bits and will
|
---|
2280 | ///< ignore the values located in the
|
---|
2281 | ///< unimplemented test_control bits. PAL
|
---|
2282 | ///< interprets the implemented bits such that
|
---|
2283 | ///< if a bit contains a zero, this indicates
|
---|
2284 | ///< to run the test. If a bit contains a one,
|
---|
2285 | ///< this indicates to PAL to skip the test. If
|
---|
2286 | ///< the cs bit indicates that control is not
|
---|
2287 | ///< available, the test_control bits will be
|
---|
2288 | ///< ignored or generate an illegal argument in
|
---|
2289 | ///< procedure calls if the caller sets these
|
---|
2290 | ///< bits.
|
---|
2291 |
|
---|
2292 | UINT64 ControlSupport:1; ///< This bit defines if an implementation
|
---|
2293 | ///< supports control of the PAL self-tests
|
---|
2294 | ///< via the self-test control word. If
|
---|
2295 | ///< this bit is 0, the implementation does
|
---|
2296 | ///< not support control of the processor
|
---|
2297 | ///< self-tests via the self-test control
|
---|
2298 | ///< word. If this bit is 1, the
|
---|
2299 | ///< implementation does support control of
|
---|
2300 | ///< the processor self-tests via the
|
---|
2301 | ///< self-test control word. If control is
|
---|
2302 | ///< not supported, GR37 will be ignored at
|
---|
2303 | ///< the hand-off between SAL and PAL after
|
---|
2304 | ///< the firmware recovery check and the
|
---|
2305 | ///< PAL procedures related to the
|
---|
2306 | ///< processor self-tests may return
|
---|
2307 | ///< illegal arguments if a user tries to
|
---|
2308 | ///< use the self-test control features.
|
---|
2309 | UINT64 Reserved:16;
|
---|
2310 | } PAL_SELF_TEST_CONTROL;
|
---|
2311 |
|
---|
2312 | typedef struct {
|
---|
2313 | UINT64 Attributes:8; ///< Specifies the memory attributes that are
|
---|
2314 | ///< allowed to be used with the memory buffer
|
---|
2315 | ///< passed to this procedure. The attributes
|
---|
2316 | ///< parameter is a vector where each bit
|
---|
2317 | ///< represents one of the virtual memory
|
---|
2318 | ///< attributes defined by the architecture.See
|
---|
2319 | ///< MEMORY_AATRIBUTES. The caller is required
|
---|
2320 | ///< to support the cacheable attribute for the
|
---|
2321 | ///< memory buffer, otherwise an invalid
|
---|
2322 | ///< argument will be returned.
|
---|
2323 | UINT64 Reserved:8;
|
---|
2324 | UINT64 TestControl:48; ///< Is the self-test control word
|
---|
2325 | ///< corresponding to the test_phase passed.
|
---|
2326 | ///< This test_control directs the coverage and
|
---|
2327 | ///< runtime of the processor self-tests
|
---|
2328 | ///< specified by the test_phase input
|
---|
2329 | ///< argument. Information on if this
|
---|
2330 | ///< feature is implemented and the number of
|
---|
2331 | ///< bits supported can be obtained by the
|
---|
2332 | ///< PAL_TEST_INFO procedure call. If this
|
---|
2333 | ///< feature is implemented by the processor,
|
---|
2334 | ///< the caller can selectively skip parts of
|
---|
2335 | ///< the processor self-test by setting
|
---|
2336 | ///< test_control bits to a one. If a bit has a
|
---|
2337 | ///< zero, this test will be run. The values in
|
---|
2338 | ///< the unimplemented bits are ignored. If
|
---|
2339 | ///< PAL_TEST_INFO indicated that the self-test
|
---|
2340 | ///< control word is not implemented, this
|
---|
2341 | ///< procedure will return with an invalid
|
---|
2342 | ///< argument status if the caller sets any of
|
---|
2343 | ///< the test_control bits. See
|
---|
2344 | ///< PAL_SELF_TEST_CONTROL.
|
---|
2345 | } PAL_TEST_CONTROL;
|
---|
2346 |
|
---|
2347 | /**
|
---|
2348 | PAL Procedure - PAL_TEST_PROC.
|
---|
2349 |
|
---|
2350 | Perform late processor self test. It is required by Itanium processors. The
|
---|
2351 | PAL procedure supports the Static Registers calling
|
---|
2352 | convention. It could be called at physical mode.
|
---|
2353 |
|
---|
2354 | @param Index Index of PAL_TEST_PROC within the list of PAL
|
---|
2355 | procedures.
|
---|
2356 | @param TestAddress 64-bit physical address of main memory
|
---|
2357 | area to be used by processor self-test.
|
---|
2358 | The memory region passed must be
|
---|
2359 | cacheable, bit 63 must be zero.
|
---|
2360 | @param TestInfo Input argument specifying the size of the
|
---|
2361 | memory buffer passed and the phase of the
|
---|
2362 | processor self-test that should be run. See
|
---|
2363 | PAL_TEST_INFO.
|
---|
2364 | @param TestParam Input argument specifying the self-test
|
---|
2365 | control word and the allowable memory
|
---|
2366 | attributes that can be used with the memory
|
---|
2367 | buffer. See PAL_TEST_CONTROL.
|
---|
2368 |
|
---|
2369 | @retval 1 Call completed without error, but hardware
|
---|
2370 | failures occurred during self-test.
|
---|
2371 | @retval 0 Call completed without error
|
---|
2372 | @retval -2 Invalid argument
|
---|
2373 | @retval -3 Call completed with error.
|
---|
2374 |
|
---|
2375 | @return R9 Formatted 8-byte value denoting the state of the
|
---|
2376 | processor after self-test
|
---|
2377 |
|
---|
2378 | **/
|
---|
2379 | #define PAL_TEST_PROC 258
|
---|
2380 |
|
---|
2381 | typedef struct {
|
---|
2382 | UINT32 NumberOfInterruptControllers; ///< Number of interrupt
|
---|
2383 | ///< controllers currently
|
---|
2384 | ///< enabled on the system.
|
---|
2385 |
|
---|
2386 | UINT32 NumberOfProcessors; ///< Number of processors currently
|
---|
2387 | ///< enabled on the system.
|
---|
2388 | } PAL_PLATFORM_INFO;
|
---|
2389 |
|
---|
2390 | /**
|
---|
2391 | PAL Procedure - PAL_COPY_INFO.
|
---|
2392 |
|
---|
2393 | Return information needed to relocate PAL procedures and PAL
|
---|
2394 | PMI code to memory. It is required by Itanium processors. The PAL procedure
|
---|
2395 | supports the Static Registers calling convention. It could be
|
---|
2396 | called at physical mode.
|
---|
2397 |
|
---|
2398 | @param Index Index of PAL_COPY_INFO within the list of PAL
|
---|
2399 | procedures.
|
---|
2400 | @param CopyType Unsigned integer denoting type of procedures
|
---|
2401 | for which copy information is requested.
|
---|
2402 | @param PlatformInfo 8-byte formatted value describing the
|
---|
2403 | number of processors and the number of
|
---|
2404 | interrupt controllers currently enabled
|
---|
2405 | on the system. See PAL_PLATFORM_INFO.
|
---|
2406 | @param McaProcStateInfo Unsigned integer denoting the number
|
---|
2407 | of bytes that SAL needs for the
|
---|
2408 | min-state save area for each
|
---|
2409 | processor.
|
---|
2410 |
|
---|
2411 | @retval 0 Call completed without error
|
---|
2412 | @retval -2 Invalid argument
|
---|
2413 | @retval -3 Call completed with error.
|
---|
2414 |
|
---|
2415 | @return R9 Unsigned integer denoting the number of bytes of
|
---|
2416 | PAL information that must be copied to main
|
---|
2417 | memory.
|
---|
2418 | @return R10 Unsigned integer denoting the starting alignment
|
---|
2419 | of the data to be copied.
|
---|
2420 |
|
---|
2421 | **/
|
---|
2422 | #define PAL_COPY_INFO 30
|
---|
2423 |
|
---|
2424 | /**
|
---|
2425 | PAL Procedure - PAL_COPY_PAL.
|
---|
2426 |
|
---|
2427 | Relocate PAL procedures and PAL PMI code to memory. It is
|
---|
2428 | required by Itanium processors. The PAL procedure supports the Stacked
|
---|
2429 | Registers calling convention. It could be called at physical
|
---|
2430 | mode.
|
---|
2431 |
|
---|
2432 | @param Index Index of PAL_COPY_PAL within the list of PAL
|
---|
2433 | procedures.
|
---|
2434 | @param TargetAddress Physical address of a memory buffer to
|
---|
2435 | copy relocatable PAL procedures and PAL
|
---|
2436 | PMI code.
|
---|
2437 | @param AllocSize Unsigned integer denoting the size of the
|
---|
2438 | buffer passed by SAL for the copy operation.
|
---|
2439 | @param CopyOption Unsigned integer indicating whether
|
---|
2440 | relocatable PAL code and PAL PMI code
|
---|
2441 | should be copied from firmware address
|
---|
2442 | space to main memory.
|
---|
2443 |
|
---|
2444 | @retval 0 Call completed without error
|
---|
2445 | @retval -2 Invalid argument
|
---|
2446 | @retval -3 Call completed with error.
|
---|
2447 |
|
---|
2448 | @return R9 Unsigned integer denoting the offset of PAL_PROC
|
---|
2449 | in the relocatable segment copied.
|
---|
2450 |
|
---|
2451 | **/
|
---|
2452 | #define PAL_COPY_PAL 256
|
---|
2453 |
|
---|
2454 | /**
|
---|
2455 | PAL Procedure - PAL_ENTER_IA_32_ENV.
|
---|
2456 |
|
---|
2457 | Enter IA-32 System environment. It is optional. The PAL
|
---|
2458 | procedure supports the Static Registers calling convention.
|
---|
2459 | It could be called at physical mode.
|
---|
2460 |
|
---|
2461 | Note: Since this is a special call, it does not follow the PAL
|
---|
2462 | static register calling convention. GR28 contains the index of
|
---|
2463 | PAL_ENTER_IA_32_ENV within the list of PAL procedures. All other
|
---|
2464 | input arguments including GR29-GR31 are setup by SAL to values
|
---|
2465 | as required by the IA-32 operating system defined in Table
|
---|
2466 | 11-67. The registers that are designated as preserved, scratch,
|
---|
2467 | input arguments and procedure return values by the static
|
---|
2468 | procedure calling convention are not followed by this call. For
|
---|
2469 | instance, GR5 and GR6 need not be preserved since these are
|
---|
2470 | regarded as scratch by the IA-32 operating system. Note: In an
|
---|
2471 | MP system, this call must be COMPLETED on the first CPU to enter
|
---|
2472 | the IA-32 System Environment (may or may not be the BSP) prior
|
---|
2473 | to being called on the remaining processors in the MP system.
|
---|
2474 |
|
---|
2475 | @param Index GR28 contains the index of the
|
---|
2476 | PAL_ENTER_IA_32_ENV call within the list of PAL
|
---|
2477 | procedures.
|
---|
2478 |
|
---|
2479 |
|
---|
2480 | @retval The status is returned in GR4.
|
---|
2481 | -1 - Un-implemented procedure 0 JMPE detected
|
---|
2482 | at privilege level
|
---|
2483 |
|
---|
2484 | 0 - 1 SAL allocated buffer for IA-32 System
|
---|
2485 | Environment operation is too small
|
---|
2486 |
|
---|
2487 | 2 - IA-32 Firmware Checksum Error
|
---|
2488 |
|
---|
2489 | 3 - SAL allocated buffer for IA-32 System
|
---|
2490 | Environment operation is not properly aligned
|
---|
2491 |
|
---|
2492 | 4 - Error in SAL MP Info Table
|
---|
2493 |
|
---|
2494 | 5 - Error in SAL Memory Descriptor Table
|
---|
2495 |
|
---|
2496 | 6 - Error in SAL System Table
|
---|
2497 |
|
---|
2498 | 7 - Inconsistent IA-32 state
|
---|
2499 |
|
---|
2500 | 8 - IA-32 Firmware Internal Error
|
---|
2501 |
|
---|
2502 | 9 - IA-32 Soft Reset (Note: remaining register
|
---|
2503 | state is undefined for this termination
|
---|
2504 | reason)
|
---|
2505 |
|
---|
2506 | 10 - Machine Check Error
|
---|
2507 |
|
---|
2508 | 11 - Error in SAL I/O Intercept Table
|
---|
2509 |
|
---|
2510 | 12 - Processor exit due to other processor in
|
---|
2511 | MP system terminating the IA32 system
|
---|
2512 | environment. (Note: remaining register state
|
---|
2513 | is undefined for this termination reason.)
|
---|
2514 |
|
---|
2515 | 13 - Itanium architecture-based state
|
---|
2516 | corruption by either SAL PMI handler or I/O
|
---|
2517 | Intercept callback function.
|
---|
2518 |
|
---|
2519 |
|
---|
2520 | **/
|
---|
2521 | #define PAL_ENTER_IA_32_ENV 33
|
---|
2522 |
|
---|
2523 | /**
|
---|
2524 | PAL Procedure - PAL_PMI_ENTRYPOINT.
|
---|
2525 |
|
---|
2526 | Register PMI memory entrypoints with processor. It is required
|
---|
2527 | by Itanium processors. The PAL procedure supports the Stacked Registers
|
---|
2528 | calling convention. It could be called at physical mode.
|
---|
2529 |
|
---|
2530 | @param Index Index of PAL_PMI_ENTRYPOINT within the list of
|
---|
2531 | PAL procedures.
|
---|
2532 | @param SalPmiEntry 256-byte aligned physical address of SAL
|
---|
2533 | PMI entrypoint in memory.
|
---|
2534 |
|
---|
2535 | @retval 0 Call completed without error
|
---|
2536 | @retval -2 Invalid argument
|
---|
2537 | @retval -3 Call completed with error.
|
---|
2538 |
|
---|
2539 | **/
|
---|
2540 | #define PAL_PMI_ENTRYPOINT 32
|
---|
2541 |
|
---|
2542 |
|
---|
2543 | /**
|
---|
2544 |
|
---|
2545 | The ASCII brand identification string will be copied to the
|
---|
2546 | address specified in the address input argument. The processor
|
---|
2547 | brand identification string is defined to be a maximum of 128
|
---|
2548 | characters long; 127 bytes will contain characters and the 128th
|
---|
2549 | byte is defined to be NULL (0). A processor may return less than
|
---|
2550 | the 127 ASCII characters as long as the string is null
|
---|
2551 | terminated. The string length will be placed in the brand_info
|
---|
2552 | return argument.
|
---|
2553 |
|
---|
2554 | **/
|
---|
2555 | #define PAL_BRAND_INFO_ID_REQUEST 0
|
---|
2556 |
|
---|
2557 | /**
|
---|
2558 | PAL Procedure - PAL_BRAND_INFO.
|
---|
2559 |
|
---|
2560 | Provides processor branding information. It is optional by
|
---|
2561 | Itanium processors. The PAL procedure supports the Stacked Registers calling
|
---|
2562 | convention. It could be called at physical and Virtual mode.
|
---|
2563 |
|
---|
2564 | @param Index Index of PAL_BRAND_INFO within the list of PAL
|
---|
2565 | procedures.
|
---|
2566 | @param InfoRequest Unsigned 64-bit integer specifying the
|
---|
2567 | information that is being requested. (See
|
---|
2568 | PAL_BRAND_INFO_ID_REQUEST)
|
---|
2569 | @param Address Unsigned 64-bit integer specifying the
|
---|
2570 | address of the 128-byte block to which the
|
---|
2571 | processor brand string shall be written.
|
---|
2572 |
|
---|
2573 | @retval 0 Call completed without error
|
---|
2574 | @retval -1 Unimplemented procedure
|
---|
2575 | @retval -2 Invalid argument
|
---|
2576 | @retval -3 Call completed with error.
|
---|
2577 | @retval -6 Input argument is not implemented.
|
---|
2578 |
|
---|
2579 | @return R9 Brand information returned. The format of this
|
---|
2580 | value is dependent on the input values passed.
|
---|
2581 |
|
---|
2582 | **/
|
---|
2583 | #define PAL_BRAND_INFO 274
|
---|
2584 |
|
---|
2585 | /**
|
---|
2586 | PAL Procedure - PAL_GET_HW_POLICY.
|
---|
2587 |
|
---|
2588 | Returns the current hardware resource sharing policy of the
|
---|
2589 | processor. It is optional by Itanium processors. The PAL procedure supports
|
---|
2590 | the Static Registers calling convention. It could be called at
|
---|
2591 | physical and Virtual mode.
|
---|
2592 |
|
---|
2593 |
|
---|
2594 | @param Index Index of PAL_GET_HW_POLICY within the list of PAL
|
---|
2595 | procedures.
|
---|
2596 | @param ProcessorNumber Unsigned 64-bit integer that specifies
|
---|
2597 | for which logical processor
|
---|
2598 | information is being requested. This
|
---|
2599 | input argument must be zero for the
|
---|
2600 | first call to this procedure and can
|
---|
2601 | be a maximum value of one less than
|
---|
2602 | the number of logical processors
|
---|
2603 | impacted by the hardware resource
|
---|
2604 | sharing policy, which is returned by
|
---|
2605 | the R10 return value.
|
---|
2606 |
|
---|
2607 | @retval 0 Call completed without error
|
---|
2608 | @retval -1 Unimplemented procedure
|
---|
2609 | @retval -2 Invalid argument
|
---|
2610 | @retval -3 Call completed with error.
|
---|
2611 | @retval -9 Call requires PAL memory buffer.
|
---|
2612 |
|
---|
2613 | @return R9 Unsigned 64-bit integer representing the current
|
---|
2614 | hardware resource sharing policy.
|
---|
2615 | @return R10 Unsigned 64-bit integer that returns the number
|
---|
2616 | of logical processors impacted by the policy
|
---|
2617 | input argument.
|
---|
2618 | @return R11 Unsigned 64-bit integer containing the logical
|
---|
2619 | address of one of the logical processors
|
---|
2620 | impacted by policy modification.
|
---|
2621 |
|
---|
2622 | **/
|
---|
2623 | #define PAL_GET_HW_POLICY 48
|
---|
2624 |
|
---|
2625 |
|
---|
2626 | //
|
---|
2627 | // Value of PAL_SET_HW_POLICY.Policy
|
---|
2628 | //
|
---|
2629 | #define PAL_SET_HW_POLICY_PERFORMANCE 0
|
---|
2630 | #define PAL_SET_HW_POLICY_FAIRNESS 1
|
---|
2631 | #define PAL_SET_HW_POLICY_HIGH_PRIORITY 2
|
---|
2632 | #define PAL_SET_HW_POLICY_EXCLUSIVE_HIGH_PRIORITY 3
|
---|
2633 |
|
---|
2634 | /**
|
---|
2635 | PAL Procedure - PAL_SET_HW_POLICY.
|
---|
2636 |
|
---|
2637 | Sets the current hardware resource sharing policy of the
|
---|
2638 | processor. It is optional by Itanium processors. The PAL procedure supports
|
---|
2639 | the Static Registers calling convention. It could be called at
|
---|
2640 | physical and Virtual mode.
|
---|
2641 |
|
---|
2642 | @param Index Index of PAL_SET_HW_POLICY within the list of PAL
|
---|
2643 | procedures.
|
---|
2644 | @param Policy Unsigned 64-bit integer specifying the hardware
|
---|
2645 | resource sharing policy the caller is setting.
|
---|
2646 | See Value of PAL_SET_HW_POLICY.Policy above.
|
---|
2647 |
|
---|
2648 | @retval 1 Call completed successfully but could not
|
---|
2649 | change the hardware policy since a
|
---|
2650 | competing logical processor is set in
|
---|
2651 | exclusive high priority.
|
---|
2652 | @retval 0 Call completed without error
|
---|
2653 | @retval -1 Unimplemented procedure
|
---|
2654 | @retval -2 Invalid argument
|
---|
2655 | @retval -3 Call completed with error.
|
---|
2656 | @retval -9 Call requires PAL memory buffer.
|
---|
2657 |
|
---|
2658 | **/
|
---|
2659 | #define PAL_SET_HW_POLICY 49
|
---|
2660 |
|
---|
2661 | typedef struct {
|
---|
2662 | UINT64 Mode:3; ///< Bit2:0, Indicates the mode of operation for this
|
---|
2663 | ///< procedure: 0 - Query mode 1 - Error inject mode
|
---|
2664 | ///< (err_inj should also be specified) 2 - Cancel
|
---|
2665 | ///< outstanding trigger. All other fields in
|
---|
2666 | ///< PAL_MC_ERROR_TYPE_INFO,
|
---|
2667 | ///< PAL_MC_ERROR_STRUCTURE_INFO and
|
---|
2668 | ///< PAL_MC_ERROR_DATA_BUFFER are ignored. All other
|
---|
2669 | ///< values are reserved.
|
---|
2670 |
|
---|
2671 | UINT64 ErrorInjection:3; ///< Bit5:3, indicates the mode of error
|
---|
2672 | ///< injection: 0 - Error inject only (no
|
---|
2673 | ///< error consumption) 1 - Error inject
|
---|
2674 | ///< and consume All other values are
|
---|
2675 | ///< reserved.
|
---|
2676 |
|
---|
2677 | UINT64 ErrorSeverity:2; ///< Bit7:6, indicates the severity desired
|
---|
2678 | ///< for error injection/query. Definitions
|
---|
2679 | ///< of the different error severity types
|
---|
2680 | ///< 0 - Corrected error 1 - Recoverable
|
---|
2681 | ///< error 2 - Fatal error 3 - Reserved
|
---|
2682 |
|
---|
2683 | UINT64 ErrorStructure:5; ///< Bit12:8, Indicates the structure
|
---|
2684 | ///< identification for error
|
---|
2685 | ///< injection/query: 0 - Any structure
|
---|
2686 | ///< (cannot be used during query mode).
|
---|
2687 | ///< When selected, the structure type used
|
---|
2688 | ///< for error injection is determined by
|
---|
2689 | ///< PAL. 1 - Cache 2 - TLB 3 - Register
|
---|
2690 | ///< file 4 - Bus/System interconnect 5-15
|
---|
2691 | ///< - Reserved 16-31 - Processor
|
---|
2692 | ///< specific error injection
|
---|
2693 | ///< capabilities.ErrorDataBuffer is used
|
---|
2694 | ///< to specify error types. Please refer
|
---|
2695 | ///< to the processor specific
|
---|
2696 | ///< documentation for additional details.
|
---|
2697 |
|
---|
2698 | UINT64 StructureHierarchy:3; ///< Bit15:13, Indicates the structure
|
---|
2699 | ///< hierarchy for error
|
---|
2700 | ///< injection/query: 0 - Any level of
|
---|
2701 | ///< hierarchy (cannot be used during
|
---|
2702 | ///< query mode). When selected, the
|
---|
2703 | ///< structure hierarchy used for error
|
---|
2704 | ///< injection is determined by PAL. 1
|
---|
2705 | ///< - Error structure hierarchy
|
---|
2706 | ///< level-1 2 - Error structure
|
---|
2707 | ///< hierarchy level-2 3 - Error
|
---|
2708 | ///< structure hierarchy level-3 4 -
|
---|
2709 | ///< Error structure hierarchy level-4
|
---|
2710 | ///< All other values are reserved.
|
---|
2711 |
|
---|
2712 | UINT64 Reserved:32; ///< Reserved 47:16 Reserved
|
---|
2713 |
|
---|
2714 | UINT64 ImplSpec:16; ///< Bit63:48, Processor specific error injection capabilities.
|
---|
2715 | } PAL_MC_ERROR_TYPE_INFO;
|
---|
2716 |
|
---|
2717 | typedef struct {
|
---|
2718 | UINT64 StructInfoIsValid:1; ///< Bit0 When 1, indicates that the
|
---|
2719 | ///< structure information fields
|
---|
2720 | ///< (c_t,cl_p,cl_id) are valid and
|
---|
2721 | ///< should be used for error injection.
|
---|
2722 | ///< When 0, the structure information
|
---|
2723 | ///< fields are ignored, and the values
|
---|
2724 | ///< of these fields used for error
|
---|
2725 | ///< injection are
|
---|
2726 | ///< implementation-specific.
|
---|
2727 |
|
---|
2728 | UINT64 CacheType:2; ///< Bit2:1 Indicates which cache should be used
|
---|
2729 | ///< for error injection: 0 - Reserved 1 -
|
---|
2730 | ///< Instruction cache 2 - Data or unified cache
|
---|
2731 | ///< 3 - Reserved
|
---|
2732 |
|
---|
2733 | UINT64 PortionOfCacheLine:3; ///< Bit5:3 Indicates the portion of the
|
---|
2734 | ///< cache line where the error should
|
---|
2735 | ///< be injected: 0 - Reserved 1 - Tag
|
---|
2736 | ///< 2 - Data 3 - mesi All other
|
---|
2737 | ///< values are reserved.
|
---|
2738 |
|
---|
2739 | UINT64 Mechanism:3; ///< Bit8:6 Indicates which mechanism is used to
|
---|
2740 | ///< identify the cache line to be used for error
|
---|
2741 | ///< injection: 0 - Reserved 1 - Virtual address
|
---|
2742 | ///< provided in the inj_addr field of the buffer
|
---|
2743 | ///< pointed to by err_data_buffer should be used
|
---|
2744 | ///< to identify the cache line for error
|
---|
2745 | ///< injection. 2 - Physical address provided in
|
---|
2746 | ///< the inj_addr field of the buffer pointed to
|
---|
2747 | ///< by err_data_buffershould be used to identify
|
---|
2748 | ///< the cache line for error injection. 3 - way
|
---|
2749 | ///< and index fields provided in err_data_buffer
|
---|
2750 | ///< should be used to identify the cache line
|
---|
2751 | ///< for error injection. All other values are
|
---|
2752 | ///< reserved.
|
---|
2753 |
|
---|
2754 | UINT64 DataPoisonOfCacheLine:1; ///< Bit9 When 1, indicates that a
|
---|
2755 | ///< multiple bit, non-correctable
|
---|
2756 | ///< error should be injected in the
|
---|
2757 | ///< cache line specified by cl_id.
|
---|
2758 | ///< If this injected error is not
|
---|
2759 | ///< consumed, it may eventually
|
---|
2760 | ///< cause a data-poisoning event
|
---|
2761 | ///< resulting in a corrected error
|
---|
2762 | ///< signal, when the associated
|
---|
2763 | ///< cache line is cast out (implicit
|
---|
2764 | ///< or explicit write-back of the
|
---|
2765 | ///< cache line). The error severity
|
---|
2766 | ///< specified by err_sev in
|
---|
2767 | ///< err_type_info must be set to 0
|
---|
2768 | ///< (corrected error) when this bit
|
---|
2769 | ///< is set.
|
---|
2770 |
|
---|
2771 | UINT64 Reserved1:22;
|
---|
2772 |
|
---|
2773 | UINT64 TrigerInfoIsValid:1; ///< Bit32 When 1, indicates that the
|
---|
2774 | ///< trigger information fields (trigger,
|
---|
2775 | ///< trigger_pl) are valid and should be
|
---|
2776 | ///< used for error injection. When 0,
|
---|
2777 | ///< the trigger information fields are
|
---|
2778 | ///< ignored and error injection is
|
---|
2779 | ///< performed immediately.
|
---|
2780 |
|
---|
2781 | UINT64 Triger:4; ///< Bit36:33 Indicates the operation type to be
|
---|
2782 | ///< used as the error trigger condition. The
|
---|
2783 | ///< address corresponding to the trigger is
|
---|
2784 | ///< specified in the trigger_addr field of the
|
---|
2785 | ///< buffer pointed to by err_data_buffer: 0 -
|
---|
2786 | ///< Instruction memory access. The trigger match
|
---|
2787 | ///< conditions for this operation type are similar
|
---|
2788 | ///< to the IBR address breakpoint match conditions
|
---|
2789 | ///< 1 - Data memory access. The trigger match
|
---|
2790 | ///< conditions for this operation type are similar
|
---|
2791 | ///< to the DBR address breakpoint match conditions
|
---|
2792 | ///< All other values are reserved.
|
---|
2793 |
|
---|
2794 | UINT64 PrivilegeOfTriger:3; ///< Bit39:37 Indicates the privilege
|
---|
2795 | ///< level of the context during which
|
---|
2796 | ///< the error should be injected: 0 -
|
---|
2797 | ///< privilege level 0 1 - privilege
|
---|
2798 | ///< level 1 2 - privilege level 2 3 -
|
---|
2799 | ///< privilege level 3 All other values
|
---|
2800 | ///< are reserved. If the implementation
|
---|
2801 | ///< does not support privilege level
|
---|
2802 | ///< qualifier for triggers (i.e. if
|
---|
2803 | ///< trigger_pl is 0 in the capabilities
|
---|
2804 | ///< vector), this field is ignored and
|
---|
2805 | ///< triggers can be taken at any
|
---|
2806 | ///< privilege level.
|
---|
2807 |
|
---|
2808 | UINT64 Reserved2:24;
|
---|
2809 | } PAL_MC_ERROR_STRUCT_INFO;
|
---|
2810 |
|
---|
2811 | /**
|
---|
2812 |
|
---|
2813 | Buffer Pointed to by err_data_buffer - TLB
|
---|
2814 |
|
---|
2815 | **/
|
---|
2816 | typedef struct {
|
---|
2817 | UINT64 TrigerAddress;
|
---|
2818 | UINT64 VirtualPageNumber:52;
|
---|
2819 | UINT64 Reserved1:8;
|
---|
2820 | UINT64 RegionId:24;
|
---|
2821 | UINT64 Reserved2:40;
|
---|
2822 | } PAL_MC_ERROR_DATA_BUFFER_TLB;
|
---|
2823 |
|
---|
2824 | /**
|
---|
2825 | PAL Procedure - PAL_MC_ERROR_INJECT.
|
---|
2826 |
|
---|
2827 | Injects the requested processor error or returns information
|
---|
2828 | on the supported injection capabilities for this particular
|
---|
2829 | processor implementation. It is optional by Itanium processors. The PAL
|
---|
2830 | procedure supports the Stacked Registers calling convention.
|
---|
2831 | It could be called at physical and Virtual mode.
|
---|
2832 |
|
---|
2833 | @param Index Index of PAL_MC_ERROR_INJECT within the list of PAL
|
---|
2834 | procedures.
|
---|
2835 | @param ErrorTypeInfo Unsigned 64-bit integer specifying the
|
---|
2836 | first level error information which
|
---|
2837 | identifies the error structure and
|
---|
2838 | corresponding structure hierarchy, and
|
---|
2839 | the error severity.
|
---|
2840 | @param ErrorStructInfo Unsigned 64-bit integer identifying
|
---|
2841 | the optional structure specific
|
---|
2842 | information that provides the second
|
---|
2843 | level details for the requested error.
|
---|
2844 | @param ErrorDataBuffer 64-bit physical address of a buffer
|
---|
2845 | providing additional parameters for
|
---|
2846 | the requested error. The address of
|
---|
2847 | this buffer must be 8-byte aligned.
|
---|
2848 |
|
---|
2849 | @retval 0 Call completed without error
|
---|
2850 | @retval -1 Unimplemented procedure
|
---|
2851 | @retval -2 Invalid argument
|
---|
2852 | @retval -3 Call completed with error.
|
---|
2853 | @retval -4 Call completed with error; the requested
|
---|
2854 | error could not be injected due to failure in
|
---|
2855 | locating the target location in the specified
|
---|
2856 | structure.
|
---|
2857 | @retval -5 Argument was valid, but requested error
|
---|
2858 | injection capability is not supported.
|
---|
2859 | @retval -9 Call requires PAL memory buffer.
|
---|
2860 |
|
---|
2861 | @return R9 64-bit vector specifying the supported error
|
---|
2862 | injection capabilities for the input argument
|
---|
2863 | combination of struct_hier, err_struct and
|
---|
2864 | err_sev fields in ErrorTypeInfo.
|
---|
2865 | @return R10 64-bit vector specifying the architectural
|
---|
2866 | resources that are used by the procedure.
|
---|
2867 |
|
---|
2868 | **/
|
---|
2869 | #define PAL_MC_ERROR_INJECT 276
|
---|
2870 |
|
---|
2871 |
|
---|
2872 | //
|
---|
2873 | // Types of PAL_GET_PSTATE.Type
|
---|
2874 | //
|
---|
2875 | #define PAL_GET_PSTATE_RECENT 0
|
---|
2876 | #define PAL_GET_PSTATE_AVERAGE_NEW_START 1
|
---|
2877 | #define PAL_GET_PSTATE_AVERAGE 2
|
---|
2878 | #define PAL_GET_PSTATE_NOW 3
|
---|
2879 |
|
---|
2880 | /**
|
---|
2881 | PAL Procedure - PAL_GET_PSTATE.
|
---|
2882 |
|
---|
2883 | Returns the performance index of the processor. It is optional
|
---|
2884 | by Itanium processors. The PAL procedure supports the Stacked Registers
|
---|
2885 | calling convention. It could be called at physical and Virtual
|
---|
2886 | mode.
|
---|
2887 |
|
---|
2888 | @param Index Index of PAL_GET_PSTATE within the list of PAL
|
---|
2889 | procedures.
|
---|
2890 | @param Type Type of performance_index value to be returned
|
---|
2891 | by this procedure.See PAL_GET_PSTATE.Type above.
|
---|
2892 |
|
---|
2893 | @retval 1 Call completed without error, but accuracy
|
---|
2894 | of performance index has been impacted by a
|
---|
2895 | thermal throttling event, or a
|
---|
2896 | hardware-initiated event.
|
---|
2897 | @retval 0 Call completed without error
|
---|
2898 | @retval -1 Unimplemented procedure
|
---|
2899 | @retval -2 Invalid argument
|
---|
2900 | @retval -3 Call completed with error.
|
---|
2901 | @retval -9 Call requires PAL memory buffer.
|
---|
2902 |
|
---|
2903 | @return R9 Unsigned integer denoting the processor
|
---|
2904 | performance for the time duration since the last
|
---|
2905 | PAL_GET_PSTATE procedure call was made. The
|
---|
2906 | value returned is between 0 and 100, and is
|
---|
2907 | relative to the performance index of the highest
|
---|
2908 | available P-state.
|
---|
2909 |
|
---|
2910 | **/
|
---|
2911 | #define PAL_GET_PSTATE 262
|
---|
2912 |
|
---|
2913 | /**
|
---|
2914 |
|
---|
2915 | Layout of PAL_PSTATE_INFO.PStateBuffer
|
---|
2916 |
|
---|
2917 | **/
|
---|
2918 | typedef struct {
|
---|
2919 | UINT32 PerformanceIndex:7;
|
---|
2920 | UINT32 Reserved1:5;
|
---|
2921 | UINT32 TypicalPowerDissipation:20;
|
---|
2922 | UINT32 TransitionLatency1;
|
---|
2923 | UINT32 TransitionLatency2;
|
---|
2924 | UINT32 Reserved2;
|
---|
2925 | } PAL_PSTATE_INFO_BUFFER;
|
---|
2926 |
|
---|
2927 |
|
---|
2928 | /**
|
---|
2929 | PAL Procedure - PAL_PSTATE_INFO.
|
---|
2930 |
|
---|
2931 | Returns information about the P-states supported by the
|
---|
2932 | processor. It is optional by Itanium processors. The PAL procedure supports
|
---|
2933 | the Static Registers calling convention. It could be called
|
---|
2934 | at physical and Virtual mode.
|
---|
2935 |
|
---|
2936 | @param Index Index of PAL_PSTATE_INFO within the list of PAL
|
---|
2937 | procedures.
|
---|
2938 | @param PStateBuffer 64-bit pointer to a 256-byte buffer
|
---|
2939 | aligned on an 8-byte boundary. See
|
---|
2940 | PAL_PSTATE_INFO_BUFFER above.
|
---|
2941 |
|
---|
2942 | @retval 0 Call completed without error
|
---|
2943 | @retval -1 Unimplemented procedure
|
---|
2944 | @retval -2 Invalid argument
|
---|
2945 | @retval -3 Call completed with error.
|
---|
2946 |
|
---|
2947 | @return R9 Unsigned integer denoting the number of P-states
|
---|
2948 | supported. The maximum value of this field is 16.
|
---|
2949 | @return R10 Dependency domain information
|
---|
2950 |
|
---|
2951 | **/
|
---|
2952 | #define PAL_PSTATE_INFO 44
|
---|
2953 |
|
---|
2954 |
|
---|
2955 | /**
|
---|
2956 | PAL Procedure - PAL_SET_PSTATE.
|
---|
2957 |
|
---|
2958 | To request a processor transition to a given P-state. It is
|
---|
2959 | optional by Itanium processors. The PAL procedure supports the Stacked
|
---|
2960 | Registers calling convention. It could be called at physical
|
---|
2961 | and Virtual mode.
|
---|
2962 |
|
---|
2963 | @param Index Index of PAL_SET_PSTATE within the list of PAL
|
---|
2964 | procedures.
|
---|
2965 | @param PState Unsigned integer denoting the processor
|
---|
2966 | P-state being requested.
|
---|
2967 | @param ForcePState Unsigned integer denoting whether the
|
---|
2968 | P-state change should be forced for the
|
---|
2969 | logical processor.
|
---|
2970 |
|
---|
2971 | @retval 1 Call completed without error, but
|
---|
2972 | transition request was not accepted
|
---|
2973 | @retval 0 Call completed without error
|
---|
2974 | @retval -1 Unimplemented procedure
|
---|
2975 | @retval -2 Invalid argument
|
---|
2976 | @retval -3 Call completed with error.
|
---|
2977 | @retval -9 Call requires PAL memory buffer.
|
---|
2978 |
|
---|
2979 | **/
|
---|
2980 | #define PAL_SET_PSTATE 263
|
---|
2981 |
|
---|
2982 | /**
|
---|
2983 | PAL Procedure - PAL_SHUTDOWN.
|
---|
2984 |
|
---|
2985 | Put the logical processor into a low power state which can be
|
---|
2986 | exited only by a reset event. It is optional by Itanium processors. The PAL
|
---|
2987 | procedure supports the Static Registers calling convention. It
|
---|
2988 | could be called at physical mode.
|
---|
2989 |
|
---|
2990 | @param Index Index of PAL_SHUTDOWN within the list of PAL
|
---|
2991 | procedures.
|
---|
2992 | @param NotifyPlatform 8-byte aligned physical address
|
---|
2993 | pointer providing details on how to
|
---|
2994 | optionally notify the platform that
|
---|
2995 | the processor is entering a shutdown
|
---|
2996 | state.
|
---|
2997 |
|
---|
2998 | @retval -1 Unimplemented procedure
|
---|
2999 | @retval -2 Invalid argument
|
---|
3000 | @retval -3 Call completed with error.
|
---|
3001 | @retval -9 Call requires PAL memory buffer.
|
---|
3002 |
|
---|
3003 | **/
|
---|
3004 | #define PAL_SHUTDOWN 45
|
---|
3005 |
|
---|
3006 | /**
|
---|
3007 |
|
---|
3008 | Layout of PAL_MEMORY_BUFFER.ControlWord
|
---|
3009 |
|
---|
3010 | **/
|
---|
3011 | typedef struct {
|
---|
3012 | UINT64 Registration:1;
|
---|
3013 | UINT64 ProbeInterrupt:1;
|
---|
3014 | UINT64 Reserved:62;
|
---|
3015 | } PAL_MEMORY_CONTROL_WORD;
|
---|
3016 |
|
---|
3017 | /**
|
---|
3018 | PAL Procedure - PAL_MEMORY_BUFFER.
|
---|
3019 |
|
---|
3020 | Provides cacheable memory to PAL for exclusive use during
|
---|
3021 | runtime. It is optional by Itanium processors. The PAL procedure supports the
|
---|
3022 | Static Registers calling convention. It could be called at
|
---|
3023 | physical mode.
|
---|
3024 |
|
---|
3025 | @param Index Index of PAL_MEMORY_BUFFER within the list of PAL
|
---|
3026 | procedures.
|
---|
3027 | @param BaseAddress Physical address of the memory buffer
|
---|
3028 | allocated for PAL use.
|
---|
3029 | @param AllocSize Unsigned integer denoting the size of the
|
---|
3030 | memory buffer.
|
---|
3031 | @param ControlWord Formatted bit vector that provides control
|
---|
3032 | options for this procedure. See
|
---|
3033 | PAL_MEMORY_CONTROL_WORD above.
|
---|
3034 |
|
---|
3035 | @retval 1 Call has not completed a buffer relocation
|
---|
3036 | due to a pending interrupt
|
---|
3037 | @retval 0 Call completed without error
|
---|
3038 | @retval -1 Unimplemented procedure
|
---|
3039 | @retval -2 Invalid argument
|
---|
3040 | @retval -3 Call completed with error.
|
---|
3041 | @retval -9 Call requires PAL memory buffer.
|
---|
3042 |
|
---|
3043 | @return R9 Returns the minimum size of the memory buffer
|
---|
3044 | required if the alloc_size input argument was
|
---|
3045 | not large enough.
|
---|
3046 |
|
---|
3047 | **/
|
---|
3048 | #define PAL_MEMORY_BUFFER 277
|
---|
3049 |
|
---|
3050 |
|
---|
3051 | /**
|
---|
3052 | PAL Procedure - PAL_VP_CREATE.
|
---|
3053 |
|
---|
3054 | Initializes a new vpd for the operation of a new virtual
|
---|
3055 | processor in the virtual environment. It is optional by Itanium processors.
|
---|
3056 | The PAL procedure supports the Stacked Registers calling
|
---|
3057 | convention. It could be called at Virtual mode.
|
---|
3058 |
|
---|
3059 | @param Index Index of PAL_VP_CREATE within the list of PAL
|
---|
3060 | procedures.
|
---|
3061 | @param Vpd 64-bit host virtual pointer to the Virtual
|
---|
3062 | Processor Descriptor (VPD).
|
---|
3063 | @param HostIva 64-bit host virtual pointer to the host IVT
|
---|
3064 | for the virtual processor
|
---|
3065 | @param OptionalHandler 64-bit non-zero host-virtual pointer
|
---|
3066 | to an optional handler for
|
---|
3067 | virtualization intercepts.
|
---|
3068 |
|
---|
3069 | @retval 0 Call completed without error
|
---|
3070 | @retval -1 Unimplemented procedure
|
---|
3071 | @retval -2 Invalid argument
|
---|
3072 | @retval -3 Call completed with error.
|
---|
3073 | @retval -9 Call requires PAL memory buffer.
|
---|
3074 |
|
---|
3075 | **/
|
---|
3076 | #define PAL_VP_CREATE 265
|
---|
3077 |
|
---|
3078 | /**
|
---|
3079 |
|
---|
3080 | Virtual Environment Information Parameter
|
---|
3081 |
|
---|
3082 | **/
|
---|
3083 | typedef struct {
|
---|
3084 | UINT64 Reserved1:8;
|
---|
3085 | UINT64 Opcode:1;
|
---|
3086 | UINT64 Reserved:53;
|
---|
3087 | } PAL_VP_ENV_INFO_RETURN;
|
---|
3088 |
|
---|
3089 | /**
|
---|
3090 | PAL Procedure - PAL_VP_ENV_INFO.
|
---|
3091 |
|
---|
3092 | Returns the parameters needed to enter a virtual environment.
|
---|
3093 | It is optional by Itanium processors. The PAL procedure supports the Stacked
|
---|
3094 | Registers calling convention. It could be called at Virtual
|
---|
3095 | mode.
|
---|
3096 |
|
---|
3097 | @param Index Index of PAL_VP_ENV_INFO within the list of PAL
|
---|
3098 | procedures.
|
---|
3099 | @param Vpd 64-bit host virtual pointer to the Virtual
|
---|
3100 | Processor Descriptor (VPD).
|
---|
3101 | @param HostIva 64-bit host virtual pointer to the host IVT
|
---|
3102 | for the virtual processor
|
---|
3103 | @param OptionalHandler 64-bit non-zero host-virtual pointer
|
---|
3104 | to an optional handler for
|
---|
3105 | virtualization intercepts.
|
---|
3106 |
|
---|
3107 | @retval 0 Call completed without error
|
---|
3108 | @retval -1 Unimplemented procedure
|
---|
3109 | @retval -2 Invalid argument
|
---|
3110 | @retval -3 Call completed with error.
|
---|
3111 | @retval -9 Call requires PAL memory buffer.
|
---|
3112 |
|
---|
3113 | @return R9 Unsigned integer denoting the number of bytes
|
---|
3114 | required by the PAL virtual environment buffer
|
---|
3115 | during PAL_VP_INIT_ENV
|
---|
3116 | @return R10 64-bit vector of virtual environment
|
---|
3117 | information. See PAL_VP_ENV_INFO_RETURN.
|
---|
3118 |
|
---|
3119 |
|
---|
3120 | **/
|
---|
3121 | #define PAL_VP_ENV_INFO 266
|
---|
3122 |
|
---|
3123 | /**
|
---|
3124 | PAL Procedure - PAL_VP_EXIT_ENV.
|
---|
3125 |
|
---|
3126 | Allows a logical processor to exit a virtual environment.
|
---|
3127 | It is optional by Itanium processors. The PAL procedure supports the Stacked
|
---|
3128 | Registers calling convention. It could be called at Virtual
|
---|
3129 | mode.
|
---|
3130 |
|
---|
3131 | @param Index Index of PAL_VP_EXIT_ENV within the list of PAL
|
---|
3132 | procedures.
|
---|
3133 | @param Iva Optional 64-bit host virtual pointer to the IVT
|
---|
3134 | when this procedure is done
|
---|
3135 |
|
---|
3136 | @retval 0 Call completed without error
|
---|
3137 | @retval -1 Unimplemented procedure
|
---|
3138 | @retval -2 Invalid argument
|
---|
3139 | @retval -3 Call completed with error.
|
---|
3140 | @retval -9 Call requires PAL memory buffer.
|
---|
3141 |
|
---|
3142 | **/
|
---|
3143 | #define PAL_VP_EXIT_ENV 267
|
---|
3144 |
|
---|
3145 |
|
---|
3146 |
|
---|
3147 | /**
|
---|
3148 | PAL Procedure - PAL_VP_INIT_ENV.
|
---|
3149 |
|
---|
3150 | Allows a logical processor to enter a virtual environment. It
|
---|
3151 | is optional by Itanium processors. The PAL procedure supports the Stacked
|
---|
3152 | Registers calling convention. It could be called at Virtual
|
---|
3153 | mode.
|
---|
3154 |
|
---|
3155 | @param Index Index of PAL_VP_INIT_ENV within the list of PAL
|
---|
3156 | procedures.
|
---|
3157 | @param ConfigOptions 64-bit vector of global configuration
|
---|
3158 | settings.
|
---|
3159 | @param PhysicalBase Host physical base address of a block of
|
---|
3160 | contiguous physical memory for the PAL
|
---|
3161 | virtual environment buffer 1) This
|
---|
3162 | memory area must be allocated by the VMM
|
---|
3163 | and be 4K aligned. The first logical
|
---|
3164 | processor to enter the environment will
|
---|
3165 | initialize the physical block for
|
---|
3166 | virtualization operations.
|
---|
3167 | @param VirtualBase Host virtual base address of the
|
---|
3168 | corresponding physical memory block for
|
---|
3169 | the PAL virtual environment buffer : The
|
---|
3170 | VMM must maintain the host virtual to host
|
---|
3171 | physical data and instruction translations
|
---|
3172 | in TRs for addresses within the allocated
|
---|
3173 | address space. Logical processors in this
|
---|
3174 | virtual environment will use this address
|
---|
3175 | when transitioning to virtual mode
|
---|
3176 | operations.
|
---|
3177 |
|
---|
3178 | @retval 0 Call completed without error
|
---|
3179 | @retval -1 Unimplemented procedure
|
---|
3180 | @retval -2 Invalid argument
|
---|
3181 | @retval -3 Call completed with error.
|
---|
3182 | @retval -9 Call requires PAL memory buffer.
|
---|
3183 |
|
---|
3184 | @return R9 Virtualization Service Address - VSA specifies
|
---|
3185 | the virtual base address of the PAL
|
---|
3186 | virtualization services in this virtual
|
---|
3187 | environment.
|
---|
3188 |
|
---|
3189 |
|
---|
3190 | **/
|
---|
3191 | #define PAL_VP_INIT_ENV 268
|
---|
3192 |
|
---|
3193 |
|
---|
3194 | /**
|
---|
3195 | PAL Procedure - PAL_VP_REGISTER.
|
---|
3196 |
|
---|
3197 | Register a different host IVT and/or a different optional
|
---|
3198 | virtualization intercept handler for the virtual processor
|
---|
3199 | specified by vpd. It is optional by Itanium processors. The PAL procedure
|
---|
3200 | supports the Stacked Registers calling convention. It could be
|
---|
3201 | called at Virtual mode.
|
---|
3202 |
|
---|
3203 | @param Index Index of PAL_VP_REGISTER within the list of PAL
|
---|
3204 | procedures.
|
---|
3205 | @param Vpd 64-bit host virtual pointer to the Virtual
|
---|
3206 | Processor Descriptor (VPD) host_iva 64-bit host
|
---|
3207 | virtual pointer to the host IVT for the virtual
|
---|
3208 | processor
|
---|
3209 | @param OptionalHandler 64-bit non-zero host-virtual pointer
|
---|
3210 | to an optional handler for
|
---|
3211 | virtualization intercepts.
|
---|
3212 |
|
---|
3213 | @retval 0 Call completed without error
|
---|
3214 | @retval -1 Unimplemented procedure
|
---|
3215 | @retval -2 Invalid argument
|
---|
3216 | @retval -3 Call completed with error.
|
---|
3217 | @retval -9 Call requires PAL memory buffer.
|
---|
3218 |
|
---|
3219 | **/
|
---|
3220 | #define PAL_VP_REGISTER 269
|
---|
3221 |
|
---|
3222 |
|
---|
3223 | /**
|
---|
3224 | PAL Procedure - PAL_VP_RESTORE.
|
---|
3225 |
|
---|
3226 | Restores virtual processor state for the specified vpd on the
|
---|
3227 | logical processor. It is optional by Itanium processors. The PAL procedure
|
---|
3228 | supports the Stacked Registers calling convention. It could be
|
---|
3229 | called at Virtual mode.
|
---|
3230 |
|
---|
3231 | @param Index Index of PAL_VP_RESTORE within the list of PAL
|
---|
3232 | procedures.
|
---|
3233 | @param Vpd 64-bit host virtual pointer to the Virtual
|
---|
3234 | Processor Descriptor (VPD) host_iva 64-bit host
|
---|
3235 | virtual pointer to the host IVT for the virtual
|
---|
3236 | processor
|
---|
3237 | @param PalVector Vector specifies PAL procedure
|
---|
3238 | implementation-specific state to be
|
---|
3239 | restored.
|
---|
3240 |
|
---|
3241 | @retval 0 Call completed without error
|
---|
3242 | @retval -1 Unimplemented procedure
|
---|
3243 | @retval -2 Invalid argument
|
---|
3244 | @retval -3 Call completed with error.
|
---|
3245 | @retval -9 Call requires PAL memory buffer.
|
---|
3246 |
|
---|
3247 | **/
|
---|
3248 | #define PAL_VP_RESTORE 270
|
---|
3249 |
|
---|
3250 | /**
|
---|
3251 | PAL Procedure - PAL_VP_SAVE.
|
---|
3252 |
|
---|
3253 | Saves virtual processor state for the specified vpd on the
|
---|
3254 | logical processor. It is optional by Itanium processors. The PAL procedure
|
---|
3255 | supports the Stacked Registers calling convention. It could be
|
---|
3256 | called at Virtual mode.
|
---|
3257 |
|
---|
3258 | @param Index Index of PAL_VP_SAVE within the list of PAL
|
---|
3259 | procedures.
|
---|
3260 | @param Vpd 64-bit host virtual pointer to the Virtual
|
---|
3261 | Processor Descriptor (VPD) host_iva 64-bit host
|
---|
3262 | virtual pointer to the host IVT for the virtual
|
---|
3263 | processor
|
---|
3264 | @param PalVector Vector specifies PAL procedure
|
---|
3265 | implementation-specific state to be
|
---|
3266 | restored.
|
---|
3267 |
|
---|
3268 | @retval 0 Call completed without error
|
---|
3269 | @retval -1 Unimplemented procedure
|
---|
3270 | @retval -2 Invalid argument
|
---|
3271 | @retval -3 Call completed with error.
|
---|
3272 | @retval -9 Call requires PAL memory buffer.
|
---|
3273 |
|
---|
3274 | **/
|
---|
3275 | #define PAL_VP_SAVE 271
|
---|
3276 |
|
---|
3277 |
|
---|
3278 | /**
|
---|
3279 | PAL Procedure - PAL_VP_TERMINATE.
|
---|
3280 |
|
---|
3281 | Terminates operation for the specified virtual processor. It
|
---|
3282 | is optional by Itanium processors. The PAL procedure supports the Stacked
|
---|
3283 | Registers calling convention. It could be called at Virtual
|
---|
3284 | mode.
|
---|
3285 |
|
---|
3286 | @param Index Index of PAL_VP_TERMINATE within the list of PAL
|
---|
3287 | procedures.
|
---|
3288 | @param Vpd 64-bit host virtual pointer to the Virtual
|
---|
3289 | Processor Descriptor (VPD)
|
---|
3290 | @param Iva Optional 64-bit host virtual pointer to the IVT
|
---|
3291 | when this procedure is done.
|
---|
3292 |
|
---|
3293 | @retval 0 Call completed without error
|
---|
3294 | @retval -1 Unimplemented procedure
|
---|
3295 | @retval -2 Invalid argument
|
---|
3296 | @retval -3 Call completed with error.
|
---|
3297 | @retval -9 Call requires PAL memory buffer.
|
---|
3298 |
|
---|
3299 | **/
|
---|
3300 | #define PAL_VP_TERMINATE 272
|
---|
3301 |
|
---|
3302 | #endif
|
---|