1 /******************************************************************************
2  *
3  * Name: acinterp.h - Interpreter subcomponent prototypes and defines
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2022, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #ifndef __ACINTERP_H__
45 #define __ACINTERP_H__
46 
47 
48 #define ACPI_WALK_OPERANDS          (&(WalkState->Operands [WalkState->NumOperands -1]))
49 
50 /* Macros for tables used for debug output */
51 
52 #define ACPI_EXD_OFFSET(f)          (UINT8) ACPI_OFFSET (ACPI_OPERAND_OBJECT,f)
53 #define ACPI_EXD_NSOFFSET(f)        (UINT8) ACPI_OFFSET (ACPI_NAMESPACE_NODE,f)
54 #define ACPI_EXD_TABLE_SIZE(name)   (sizeof(name) / sizeof (ACPI_EXDUMP_INFO))
55 
56 /*
57  * If possible, pack the following structures to byte alignment, since we
58  * don't care about performance for debug output. Two cases where we cannot
59  * pack the structures:
60  *
61  * 1) Hardware does not support misaligned memory transfers
62  * 2) Compiler does not support pointers within packed structures
63  */
64 #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
65 #pragma pack(1)
66 #endif
67 
68 typedef const struct acpi_exdump_info
69 {
70     UINT8                   Opcode;
71     UINT8                   Offset;
72     const char              *Name;
73 
74 } ACPI_EXDUMP_INFO;
75 
76 /* Values for the Opcode field above */
77 
78 #define ACPI_EXD_INIT                   0
79 #define ACPI_EXD_TYPE                   1
80 #define ACPI_EXD_UINT8                  2
81 #define ACPI_EXD_UINT16                 3
82 #define ACPI_EXD_UINT32                 4
83 #define ACPI_EXD_UINT64                 5
84 #define ACPI_EXD_LITERAL                6
85 #define ACPI_EXD_POINTER                7
86 #define ACPI_EXD_ADDRESS                8
87 #define ACPI_EXD_STRING                 9
88 #define ACPI_EXD_BUFFER                 10
89 #define ACPI_EXD_PACKAGE                11
90 #define ACPI_EXD_FIELD                  12
91 #define ACPI_EXD_REFERENCE              13
92 #define ACPI_EXD_LIST                   14 /* Operand object list */
93 #define ACPI_EXD_HDLR_LIST              15 /* Address Handler list */
94 #define ACPI_EXD_RGN_LIST               16 /* Region list */
95 #define ACPI_EXD_NODE                   17 /* Namespace Node */
96 
97 /* restore default alignment */
98 
99 #pragma pack()
100 
101 
102 /*
103  * exconvrt - object conversion
104  */
105 ACPI_STATUS
106 AcpiExConvertToInteger (
107     ACPI_OPERAND_OBJECT     *ObjDesc,
108     ACPI_OPERAND_OBJECT     **ResultDesc,
109     UINT32                  ImplicitConversion);
110 
111 ACPI_STATUS
112 AcpiExConvertToBuffer (
113     ACPI_OPERAND_OBJECT     *ObjDesc,
114     ACPI_OPERAND_OBJECT     **ResultDesc);
115 
116 ACPI_STATUS
117 AcpiExConvertToString (
118     ACPI_OPERAND_OBJECT     *ObjDesc,
119     ACPI_OPERAND_OBJECT     **ResultDesc,
120     UINT32                  Type);
121 
122 /* Types for ->String conversion */
123 
124 #define ACPI_EXPLICIT_BYTE_COPY         0x00000000
125 #define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
126 #define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
127 #define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003
128 
129 ACPI_STATUS
130 AcpiExConvertToTargetType (
131     ACPI_OBJECT_TYPE        DestinationType,
132     ACPI_OPERAND_OBJECT     *SourceDesc,
133     ACPI_OPERAND_OBJECT     **ResultDesc,
134     ACPI_WALK_STATE         *WalkState);
135 
136 
137 /*
138  * exdebug - AML debug object
139  */
140 void
141 AcpiExDoDebugObject (
142     ACPI_OPERAND_OBJECT     *SourceDesc,
143     UINT32                  Level,
144     UINT32                  Index);
145 
146 void
147 AcpiExStartTraceMethod (
148     ACPI_NAMESPACE_NODE     *MethodNode,
149     ACPI_OPERAND_OBJECT     *ObjDesc,
150     ACPI_WALK_STATE         *WalkState);
151 
152 void
153 AcpiExStopTraceMethod (
154     ACPI_NAMESPACE_NODE     *MethodNode,
155     ACPI_OPERAND_OBJECT     *ObjDesc,
156     ACPI_WALK_STATE         *WalkState);
157 
158 void
159 AcpiExStartTraceOpcode (
160     ACPI_PARSE_OBJECT       *Op,
161     ACPI_WALK_STATE         *WalkState);
162 
163 void
164 AcpiExStopTraceOpcode (
165     ACPI_PARSE_OBJECT       *Op,
166     ACPI_WALK_STATE         *WalkState);
167 
168 void
169 AcpiExTracePoint (
170     ACPI_TRACE_EVENT_TYPE   Type,
171     BOOLEAN                 Begin,
172     UINT8                   *Aml,
173     char                    *Pathname);
174 
175 
176 /*
177  * exfield - ACPI AML (p-code) execution - field manipulation
178  */
179 ACPI_STATUS
180 AcpiExGetProtocolBufferLength (
181     UINT32                  ProtocolId,
182     UINT32                  *ReturnLength);
183 
184 ACPI_STATUS
185 AcpiExCommonBufferSetup (
186     ACPI_OPERAND_OBJECT     *ObjDesc,
187     UINT32                  BufferLength,
188     UINT32                  *DatumCount);
189 
190 ACPI_STATUS
191 AcpiExWriteWithUpdateRule (
192     ACPI_OPERAND_OBJECT     *ObjDesc,
193     UINT64                  Mask,
194     UINT64                  FieldValue,
195     UINT32                  FieldDatumByteOffset);
196 
197 void
198 AcpiExGetBufferDatum(
199     UINT64                  *Datum,
200     void                    *Buffer,
201     UINT32                  BufferLength,
202     UINT32                  ByteGranularity,
203     UINT32                  BufferOffset);
204 
205 void
206 AcpiExSetBufferDatum (
207     UINT64                  MergedDatum,
208     void                    *Buffer,
209     UINT32                  BufferLength,
210     UINT32                  ByteGranularity,
211     UINT32                  BufferOffset);
212 
213 ACPI_STATUS
214 AcpiExReadDataFromField (
215     ACPI_WALK_STATE         *WalkState,
216     ACPI_OPERAND_OBJECT     *ObjDesc,
217     ACPI_OPERAND_OBJECT     **RetBufferDesc);
218 
219 ACPI_STATUS
220 AcpiExWriteDataToField (
221     ACPI_OPERAND_OBJECT     *SourceDesc,
222     ACPI_OPERAND_OBJECT     *ObjDesc,
223     ACPI_OPERAND_OBJECT     **ResultDesc);
224 
225 
226 /*
227  * exfldio - low level field I/O
228  */
229 ACPI_STATUS
230 AcpiExExtractFromField (
231     ACPI_OPERAND_OBJECT     *ObjDesc,
232     void                    *Buffer,
233     UINT32                  BufferLength);
234 
235 ACPI_STATUS
236 AcpiExInsertIntoField (
237     ACPI_OPERAND_OBJECT     *ObjDesc,
238     void                    *Buffer,
239     UINT32                  BufferLength);
240 
241 ACPI_STATUS
242 AcpiExAccessRegion (
243     ACPI_OPERAND_OBJECT     *ObjDesc,
244     UINT32                  FieldDatumByteOffset,
245     UINT64                  *Value,
246     UINT32                  ReadWrite);
247 
248 
249 /*
250  * exmisc - misc support routines
251  */
252 ACPI_STATUS
253 AcpiExGetObjectReference (
254     ACPI_OPERAND_OBJECT     *ObjDesc,
255     ACPI_OPERAND_OBJECT     **ReturnDesc,
256     ACPI_WALK_STATE         *WalkState);
257 
258 ACPI_STATUS
259 AcpiExConcatTemplate (
260     ACPI_OPERAND_OBJECT     *ObjDesc,
261     ACPI_OPERAND_OBJECT     *ObjDesc2,
262     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
263     ACPI_WALK_STATE         *WalkState);
264 
265 ACPI_STATUS
266 AcpiExDoConcatenate (
267     ACPI_OPERAND_OBJECT     *ObjDesc,
268     ACPI_OPERAND_OBJECT     *ObjDesc2,
269     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
270     ACPI_WALK_STATE         *WalkState);
271 
272 ACPI_STATUS
273 AcpiExDoLogicalNumericOp (
274     UINT16                  Opcode,
275     UINT64                  Integer0,
276     UINT64                  Integer1,
277     BOOLEAN                 *LogicalResult);
278 
279 ACPI_STATUS
280 AcpiExDoLogicalOp (
281     UINT16                  Opcode,
282     ACPI_OPERAND_OBJECT     *Operand0,
283     ACPI_OPERAND_OBJECT     *Operand1,
284     BOOLEAN                 *LogicalResult);
285 
286 UINT64
287 AcpiExDoMathOp (
288     UINT16                  Opcode,
289     UINT64                  Operand0,
290     UINT64                  Operand1);
291 
292 ACPI_STATUS
293 AcpiExCreateMutex (
294     ACPI_WALK_STATE         *WalkState);
295 
296 ACPI_STATUS
297 AcpiExCreateProcessor (
298     ACPI_WALK_STATE         *WalkState);
299 
300 ACPI_STATUS
301 AcpiExCreatePowerResource (
302     ACPI_WALK_STATE         *WalkState);
303 
304 ACPI_STATUS
305 AcpiExCreateRegion (
306     UINT8                   *AmlStart,
307     UINT32                  AmlLength,
308     UINT8                   RegionSpace,
309     ACPI_WALK_STATE         *WalkState);
310 
311 ACPI_STATUS
312 AcpiExCreateEvent (
313     ACPI_WALK_STATE         *WalkState);
314 
315 ACPI_STATUS
316 AcpiExCreateAlias (
317     ACPI_WALK_STATE         *WalkState);
318 
319 ACPI_STATUS
320 AcpiExCreateMethod (
321     UINT8                   *AmlStart,
322     UINT32                  AmlLength,
323     ACPI_WALK_STATE         *WalkState);
324 
325 
326 /*
327  * exconfig - dynamic table load/unload
328  */
329 ACPI_STATUS
330 AcpiExLoadOp (
331     ACPI_OPERAND_OBJECT     *ObjDesc,
332     ACPI_OPERAND_OBJECT     *Target,
333     ACPI_WALK_STATE         *WalkState);
334 
335 ACPI_STATUS
336 AcpiExLoadTableOp (
337     ACPI_WALK_STATE         *WalkState,
338     ACPI_OPERAND_OBJECT     **ReturnDesc);
339 
340 ACPI_STATUS
341 AcpiExUnloadTable (
342     ACPI_OPERAND_OBJECT     *DdbHandle);
343 
344 
345 /*
346  * exmutex - mutex support
347  */
348 ACPI_STATUS
349 AcpiExAcquireMutex (
350     ACPI_OPERAND_OBJECT     *TimeDesc,
351     ACPI_OPERAND_OBJECT     *ObjDesc,
352     ACPI_WALK_STATE         *WalkState);
353 
354 ACPI_STATUS
355 AcpiExAcquireMutexObject (
356     UINT16                  Timeout,
357     ACPI_OPERAND_OBJECT     *ObjDesc,
358     ACPI_THREAD_ID          ThreadId);
359 
360 ACPI_STATUS
361 AcpiExReleaseMutex (
362     ACPI_OPERAND_OBJECT     *ObjDesc,
363     ACPI_WALK_STATE         *WalkState);
364 
365 ACPI_STATUS
366 AcpiExReleaseMutexObject (
367     ACPI_OPERAND_OBJECT     *ObjDesc);
368 
369 void
370 AcpiExReleaseAllMutexes (
371     ACPI_THREAD_STATE       *Thread);
372 
373 void
374 AcpiExUnlinkMutex (
375     ACPI_OPERAND_OBJECT     *ObjDesc);
376 
377 
378 /*
379  * exprep - ACPI AML execution - prep utilities
380  */
381 ACPI_STATUS
382 AcpiExPrepCommonFieldObject (
383     ACPI_OPERAND_OBJECT     *ObjDesc,
384     UINT8                   FieldFlags,
385     UINT8                   FieldAttribute,
386     UINT32                  FieldBitPosition,
387     UINT32                  FieldBitLength);
388 
389 ACPI_STATUS
390 AcpiExPrepFieldValue (
391     ACPI_CREATE_FIELD_INFO  *Info);
392 
393 
394 /*
395  * exserial - FieldUnit support for serial address spaces
396  */
397 ACPI_STATUS
398 AcpiExReadSerialBus (
399     ACPI_OPERAND_OBJECT     *ObjDesc,
400     ACPI_OPERAND_OBJECT     **ReturnBuffer);
401 
402 ACPI_STATUS
403 AcpiExWriteSerialBus (
404     ACPI_OPERAND_OBJECT     *SourceDesc,
405     ACPI_OPERAND_OBJECT     *ObjDesc,
406     ACPI_OPERAND_OBJECT     **ReturnBuffer);
407 
408 ACPI_STATUS
409 AcpiExReadGpio (
410     ACPI_OPERAND_OBJECT     *ObjDesc,
411     void                    *Buffer);
412 
413 ACPI_STATUS
414 AcpiExWriteGpio (
415     ACPI_OPERAND_OBJECT     *SourceDesc,
416     ACPI_OPERAND_OBJECT     *ObjDesc,
417     ACPI_OPERAND_OBJECT     **ReturnBuffer);
418 
419 
420 /*
421  * exsystem - Interface to OS services
422  */
423 ACPI_STATUS
424 AcpiExSystemDoNotifyOp (
425     ACPI_OPERAND_OBJECT     *Value,
426     ACPI_OPERAND_OBJECT     *ObjDesc);
427 
428 ACPI_STATUS
429 AcpiExSystemDoSleep(
430     UINT64                  Time);
431 
432 ACPI_STATUS
433 AcpiExSystemDoStall (
434     UINT32                  Time);
435 
436 ACPI_STATUS
437 AcpiExSystemSignalEvent(
438     ACPI_OPERAND_OBJECT     *ObjDesc);
439 
440 ACPI_STATUS
441 AcpiExSystemWaitEvent(
442     ACPI_OPERAND_OBJECT     *Time,
443     ACPI_OPERAND_OBJECT     *ObjDesc);
444 
445 ACPI_STATUS
446 AcpiExSystemResetEvent(
447     ACPI_OPERAND_OBJECT     *ObjDesc);
448 
449 ACPI_STATUS
450 AcpiExSystemWaitSemaphore (
451     ACPI_SEMAPHORE          Semaphore,
452     UINT16                  Timeout);
453 
454 ACPI_STATUS
455 AcpiExSystemWaitMutex (
456     ACPI_MUTEX              Mutex,
457     UINT16                  Timeout);
458 
459 /*
460  * exoparg1 - ACPI AML execution, 1 operand
461  */
462 ACPI_STATUS
463 AcpiExOpcode_0A_0T_1R (
464     ACPI_WALK_STATE         *WalkState);
465 
466 ACPI_STATUS
467 AcpiExOpcode_1A_0T_0R (
468     ACPI_WALK_STATE         *WalkState);
469 
470 ACPI_STATUS
471 AcpiExOpcode_1A_0T_1R (
472     ACPI_WALK_STATE         *WalkState);
473 
474 ACPI_STATUS
475 AcpiExOpcode_1A_1T_1R (
476     ACPI_WALK_STATE         *WalkState);
477 
478 ACPI_STATUS
479 AcpiExOpcode_1A_1T_0R (
480     ACPI_WALK_STATE         *WalkState);
481 
482 /*
483  * exoparg2 - ACPI AML execution, 2 operands
484  */
485 ACPI_STATUS
486 AcpiExOpcode_2A_0T_0R (
487     ACPI_WALK_STATE         *WalkState);
488 
489 ACPI_STATUS
490 AcpiExOpcode_2A_0T_1R (
491     ACPI_WALK_STATE         *WalkState);
492 
493 ACPI_STATUS
494 AcpiExOpcode_2A_1T_1R (
495     ACPI_WALK_STATE         *WalkState);
496 
497 ACPI_STATUS
498 AcpiExOpcode_2A_2T_1R (
499     ACPI_WALK_STATE         *WalkState);
500 
501 
502 /*
503  * exoparg3 - ACPI AML execution, 3 operands
504  */
505 ACPI_STATUS
506 AcpiExOpcode_3A_0T_0R (
507     ACPI_WALK_STATE         *WalkState);
508 
509 ACPI_STATUS
510 AcpiExOpcode_3A_1T_1R (
511     ACPI_WALK_STATE         *WalkState);
512 
513 
514 /*
515  * exoparg6 - ACPI AML execution, 6 operands
516  */
517 ACPI_STATUS
518 AcpiExOpcode_6A_0T_1R (
519     ACPI_WALK_STATE         *WalkState);
520 
521 
522 /*
523  * exresolv - Object resolution and get value functions
524  */
525 ACPI_STATUS
526 AcpiExResolveToValue (
527     ACPI_OPERAND_OBJECT     **StackPtr,
528     ACPI_WALK_STATE         *WalkState);
529 
530 ACPI_STATUS
531 AcpiExResolveMultiple (
532     ACPI_WALK_STATE         *WalkState,
533     ACPI_OPERAND_OBJECT     *Operand,
534     ACPI_OBJECT_TYPE        *ReturnType,
535     ACPI_OPERAND_OBJECT     **ReturnDesc);
536 
537 
538 /*
539  * exresnte - resolve namespace node
540  */
541 ACPI_STATUS
542 AcpiExResolveNodeToValue (
543     ACPI_NAMESPACE_NODE     **StackPtr,
544     ACPI_WALK_STATE         *WalkState);
545 
546 
547 /*
548  * exresop - resolve operand to value
549  */
550 ACPI_STATUS
551 AcpiExResolveOperands (
552     UINT16                  Opcode,
553     ACPI_OPERAND_OBJECT     **StackPtr,
554     ACPI_WALK_STATE         *WalkState);
555 
556 
557 /*
558  * exdump - Interpreter debug output routines
559  */
560 void
561 AcpiExDumpOperand (
562     ACPI_OPERAND_OBJECT     *ObjDesc,
563     UINT32                  Depth);
564 
565 void
566 AcpiExDumpOperands (
567     ACPI_OPERAND_OBJECT     **Operands,
568     const char              *OpcodeName,
569     UINT32                  NumOpcodes);
570 
571 void
572 AcpiExDumpObjectDescriptor (
573     ACPI_OPERAND_OBJECT     *Object,
574     UINT32                  Flags);
575 
576 void
577 AcpiExDumpNamespaceNode (
578     ACPI_NAMESPACE_NODE     *Node,
579     UINT32                  Flags);
580 
581 
582 /*
583  * exnames - AML namestring support
584  */
585 ACPI_STATUS
586 AcpiExGetNameString (
587     ACPI_OBJECT_TYPE        DataType,
588     UINT8                   *InAmlAddress,
589     char                    **OutNameString,
590     UINT32                  *OutNameLength);
591 
592 
593 /*
594  * exstore - Object store support
595  */
596 ACPI_STATUS
597 AcpiExStore (
598     ACPI_OPERAND_OBJECT     *ValDesc,
599     ACPI_OPERAND_OBJECT     *DestDesc,
600     ACPI_WALK_STATE         *WalkState);
601 
602 ACPI_STATUS
603 AcpiExStoreObjectToNode (
604     ACPI_OPERAND_OBJECT     *SourceDesc,
605     ACPI_NAMESPACE_NODE     *Node,
606     ACPI_WALK_STATE         *WalkState,
607     UINT8                   ImplicitConversion);
608 
609 
610 /*
611  * exstoren - resolve/store object
612  */
613 ACPI_STATUS
614 AcpiExResolveObject (
615     ACPI_OPERAND_OBJECT     **SourceDescPtr,
616     ACPI_OBJECT_TYPE        TargetType,
617     ACPI_WALK_STATE         *WalkState);
618 
619 ACPI_STATUS
620 AcpiExStoreObjectToObject (
621     ACPI_OPERAND_OBJECT     *SourceDesc,
622     ACPI_OPERAND_OBJECT     *DestDesc,
623     ACPI_OPERAND_OBJECT     **NewDesc,
624     ACPI_WALK_STATE         *WalkState);
625 
626 
627 /*
628  * exstorob - store object - buffer/string
629  */
630 ACPI_STATUS
631 AcpiExStoreBufferToBuffer (
632     ACPI_OPERAND_OBJECT     *SourceDesc,
633     ACPI_OPERAND_OBJECT     *TargetDesc);
634 
635 ACPI_STATUS
636 AcpiExStoreStringToString (
637     ACPI_OPERAND_OBJECT     *SourceDesc,
638     ACPI_OPERAND_OBJECT     *TargetDesc);
639 
640 
641 /*
642  * excopy - object copy
643  */
644 ACPI_STATUS
645 AcpiExCopyIntegerToIndexField (
646     ACPI_OPERAND_OBJECT     *SourceDesc,
647     ACPI_OPERAND_OBJECT     *TargetDesc);
648 
649 ACPI_STATUS
650 AcpiExCopyIntegerToBankField (
651     ACPI_OPERAND_OBJECT     *SourceDesc,
652     ACPI_OPERAND_OBJECT     *TargetDesc);
653 
654 ACPI_STATUS
655 AcpiExCopyDataToNamedField (
656     ACPI_OPERAND_OBJECT     *SourceDesc,
657     ACPI_NAMESPACE_NODE     *Node);
658 
659 ACPI_STATUS
660 AcpiExCopyIntegerToBufferField (
661     ACPI_OPERAND_OBJECT     *SourceDesc,
662     ACPI_OPERAND_OBJECT     *TargetDesc);
663 
664 
665 /*
666  * exutils - interpreter/scanner utilities
667  */
668 void
669 AcpiExEnterInterpreter (
670     void);
671 
672 void
673 AcpiExExitInterpreter (
674     void);
675 
676 BOOLEAN
677 AcpiExTruncateFor32bitTable (
678     ACPI_OPERAND_OBJECT     *ObjDesc);
679 
680 void
681 AcpiExAcquireGlobalLock (
682     UINT32                  Rule);
683 
684 void
685 AcpiExReleaseGlobalLock (
686     UINT32                  Rule);
687 
688 void
689 AcpiExEisaIdToString (
690     char                    *Dest,
691     UINT64                  CompressedId);
692 
693 void
694 AcpiExIntegerToString (
695     char                    *Dest,
696     UINT64                  Value);
697 
698 void
699 AcpiExPciClsToString (
700     char                    *Dest,
701     UINT8                   ClassCode[3]);
702 
703 BOOLEAN
704 AcpiIsValidSpaceId (
705     UINT8                   SpaceId);
706 
707 
708 /*
709  * exregion - default OpRegion handlers
710  */
711 ACPI_STATUS
712 AcpiExSystemMemorySpaceHandler (
713     UINT32                  Function,
714     ACPI_PHYSICAL_ADDRESS   Address,
715     UINT32                  BitWidth,
716     UINT64                  *Value,
717     void                    *HandlerContext,
718     void                    *RegionContext);
719 
720 ACPI_STATUS
721 AcpiExSystemIoSpaceHandler (
722     UINT32                  Function,
723     ACPI_PHYSICAL_ADDRESS   Address,
724     UINT32                  BitWidth,
725     UINT64                  *Value,
726     void                    *HandlerContext,
727     void                    *RegionContext);
728 
729 ACPI_STATUS
730 AcpiExPciConfigSpaceHandler (
731     UINT32                  Function,
732     ACPI_PHYSICAL_ADDRESS   Address,
733     UINT32                  BitWidth,
734     UINT64                  *Value,
735     void                    *HandlerContext,
736     void                    *RegionContext);
737 
738 ACPI_STATUS
739 AcpiExCmosSpaceHandler (
740     UINT32                  Function,
741     ACPI_PHYSICAL_ADDRESS   Address,
742     UINT32                  BitWidth,
743     UINT64                  *Value,
744     void                    *HandlerContext,
745     void                    *RegionContext);
746 
747 ACPI_STATUS
748 AcpiExPciBarSpaceHandler (
749     UINT32                  Function,
750     ACPI_PHYSICAL_ADDRESS   Address,
751     UINT32                  BitWidth,
752     UINT64                  *Value,
753     void                    *HandlerContext,
754     void                    *RegionContext);
755 
756 ACPI_STATUS
757 AcpiExEmbeddedControllerSpaceHandler (
758     UINT32                  Function,
759     ACPI_PHYSICAL_ADDRESS   Address,
760     UINT32                  BitWidth,
761     UINT64                  *Value,
762     void                    *HandlerContext,
763     void                    *RegionContext);
764 
765 ACPI_STATUS
766 AcpiExSmBusSpaceHandler (
767     UINT32                  Function,
768     ACPI_PHYSICAL_ADDRESS   Address,
769     UINT32                  BitWidth,
770     UINT64                  *Value,
771     void                    *HandlerContext,
772     void                    *RegionContext);
773 
774 
775 ACPI_STATUS
776 AcpiExDataTableSpaceHandler (
777     UINT32                  Function,
778     ACPI_PHYSICAL_ADDRESS   Address,
779     UINT32                  BitWidth,
780     UINT64                  *Value,
781     void                    *HandlerContext,
782     void                    *RegionContext);
783 
784 #endif /* __INTERP_H__ */
785