1/******************************************************************************
2 *
3 * Name: acinterp.h - Interpreter subcomponent prototypes and defines
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2023, 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
68typedef 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 */
105ACPI_STATUS
106AcpiExConvertToInteger (
107    ACPI_OPERAND_OBJECT     *ObjDesc,
108    ACPI_OPERAND_OBJECT     **ResultDesc,
109    UINT32                  ImplicitConversion);
110
111ACPI_STATUS
112AcpiExConvertToBuffer (
113    ACPI_OPERAND_OBJECT     *ObjDesc,
114    ACPI_OPERAND_OBJECT     **ResultDesc);
115
116ACPI_STATUS
117AcpiExConvertToString (
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
129ACPI_STATUS
130AcpiExConvertToTargetType (
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 */
140void
141AcpiExDoDebugObject (
142    ACPI_OPERAND_OBJECT     *SourceDesc,
143    UINT32                  Level,
144    UINT32                  Index);
145
146void
147AcpiExStartTraceMethod (
148    ACPI_NAMESPACE_NODE     *MethodNode,
149    ACPI_OPERAND_OBJECT     *ObjDesc,
150    ACPI_WALK_STATE         *WalkState);
151
152void
153AcpiExStopTraceMethod (
154    ACPI_NAMESPACE_NODE     *MethodNode,
155    ACPI_OPERAND_OBJECT     *ObjDesc,
156    ACPI_WALK_STATE         *WalkState);
157
158void
159AcpiExStartTraceOpcode (
160    ACPI_PARSE_OBJECT       *Op,
161    ACPI_WALK_STATE         *WalkState);
162
163void
164AcpiExStopTraceOpcode (
165    ACPI_PARSE_OBJECT       *Op,
166    ACPI_WALK_STATE         *WalkState);
167
168void
169AcpiExTracePoint (
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 */
179ACPI_STATUS
180AcpiExGetProtocolBufferLength (
181    UINT32                  ProtocolId,
182    UINT32                  *ReturnLength);
183
184ACPI_STATUS
185AcpiExCommonBufferSetup (
186    ACPI_OPERAND_OBJECT     *ObjDesc,
187    UINT32                  BufferLength,
188    UINT32                  *DatumCount);
189
190ACPI_STATUS
191AcpiExWriteWithUpdateRule (
192    ACPI_OPERAND_OBJECT     *ObjDesc,
193    UINT64                  Mask,
194    UINT64                  FieldValue,
195    UINT32                  FieldDatumByteOffset);
196
197void
198AcpiExGetBufferDatum(
199    UINT64                  *Datum,
200    void                    *Buffer,
201    UINT32                  BufferLength,
202    UINT32                  ByteGranularity,
203    UINT32                  BufferOffset);
204
205void
206AcpiExSetBufferDatum (
207    UINT64                  MergedDatum,
208    void                    *Buffer,
209    UINT32                  BufferLength,
210    UINT32                  ByteGranularity,
211    UINT32                  BufferOffset);
212
213ACPI_STATUS
214AcpiExReadDataFromField (
215    ACPI_WALK_STATE         *WalkState,
216    ACPI_OPERAND_OBJECT     *ObjDesc,
217    ACPI_OPERAND_OBJECT     **RetBufferDesc);
218
219ACPI_STATUS
220AcpiExWriteDataToField (
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 */
229ACPI_STATUS
230AcpiExExtractFromField (
231    ACPI_OPERAND_OBJECT     *ObjDesc,
232    void                    *Buffer,
233    UINT32                  BufferLength);
234
235ACPI_STATUS
236AcpiExInsertIntoField (
237    ACPI_OPERAND_OBJECT     *ObjDesc,
238    void                    *Buffer,
239    UINT32                  BufferLength);
240
241ACPI_STATUS
242AcpiExAccessRegion (
243    ACPI_OPERAND_OBJECT     *ObjDesc,
244    UINT32                  FieldDatumByteOffset,
245    UINT64                  *Value,
246    UINT32                  ReadWrite);
247
248
249/*
250 * exmisc - misc support routines
251 */
252ACPI_STATUS
253AcpiExGetObjectReference (
254    ACPI_OPERAND_OBJECT     *ObjDesc,
255    ACPI_OPERAND_OBJECT     **ReturnDesc,
256    ACPI_WALK_STATE         *WalkState);
257
258ACPI_STATUS
259AcpiExConcatTemplate (
260    ACPI_OPERAND_OBJECT     *ObjDesc,
261    ACPI_OPERAND_OBJECT     *ObjDesc2,
262    ACPI_OPERAND_OBJECT     **ActualReturnDesc,
263    ACPI_WALK_STATE         *WalkState);
264
265ACPI_STATUS
266AcpiExDoConcatenate (
267    ACPI_OPERAND_OBJECT     *ObjDesc,
268    ACPI_OPERAND_OBJECT     *ObjDesc2,
269    ACPI_OPERAND_OBJECT     **ActualReturnDesc,
270    ACPI_WALK_STATE         *WalkState);
271
272ACPI_STATUS
273AcpiExDoLogicalNumericOp (
274    UINT16                  Opcode,
275    UINT64                  Integer0,
276    UINT64                  Integer1,
277    BOOLEAN                 *LogicalResult);
278
279ACPI_STATUS
280AcpiExDoLogicalOp (
281    UINT16                  Opcode,
282    ACPI_OPERAND_OBJECT     *Operand0,
283    ACPI_OPERAND_OBJECT     *Operand1,
284    BOOLEAN                 *LogicalResult);
285
286UINT64
287AcpiExDoMathOp (
288    UINT16                  Opcode,
289    UINT64                  Operand0,
290    UINT64                  Operand1);
291
292ACPI_STATUS
293AcpiExCreateMutex (
294    ACPI_WALK_STATE         *WalkState);
295
296ACPI_STATUS
297AcpiExCreateProcessor (
298    ACPI_WALK_STATE         *WalkState);
299
300ACPI_STATUS
301AcpiExCreatePowerResource (
302    ACPI_WALK_STATE         *WalkState);
303
304ACPI_STATUS
305AcpiExCreateRegion (
306    UINT8                   *AmlStart,
307    UINT32                  AmlLength,
308    UINT8                   RegionSpace,
309    ACPI_WALK_STATE         *WalkState);
310
311ACPI_STATUS
312AcpiExCreateEvent (
313    ACPI_WALK_STATE         *WalkState);
314
315ACPI_STATUS
316AcpiExCreateAlias (
317    ACPI_WALK_STATE         *WalkState);
318
319ACPI_STATUS
320AcpiExCreateMethod (
321    UINT8                   *AmlStart,
322    UINT32                  AmlLength,
323    ACPI_WALK_STATE         *WalkState);
324
325
326/*
327 * exconfig - dynamic table load/unload
328 */
329ACPI_STATUS
330AcpiExLoadOp (
331    ACPI_OPERAND_OBJECT     *ObjDesc,
332    ACPI_OPERAND_OBJECT     *Target,
333    ACPI_WALK_STATE         *WalkState);
334
335ACPI_STATUS
336AcpiExLoadTableOp (
337    ACPI_WALK_STATE         *WalkState,
338    ACPI_OPERAND_OBJECT     **ReturnDesc);
339
340ACPI_STATUS
341AcpiExUnloadTable (
342    ACPI_OPERAND_OBJECT     *DdbHandle);
343
344
345/*
346 * exmutex - mutex support
347 */
348ACPI_STATUS
349AcpiExAcquireMutex (
350    ACPI_OPERAND_OBJECT     *TimeDesc,
351    ACPI_OPERAND_OBJECT     *ObjDesc,
352    ACPI_WALK_STATE         *WalkState);
353
354ACPI_STATUS
355AcpiExAcquireMutexObject (
356    UINT16                  Timeout,
357    ACPI_OPERAND_OBJECT     *ObjDesc,
358    ACPI_THREAD_ID          ThreadId);
359
360ACPI_STATUS
361AcpiExReleaseMutex (
362    ACPI_OPERAND_OBJECT     *ObjDesc,
363    ACPI_WALK_STATE         *WalkState);
364
365ACPI_STATUS
366AcpiExReleaseMutexObject (
367    ACPI_OPERAND_OBJECT     *ObjDesc);
368
369void
370AcpiExReleaseAllMutexes (
371    ACPI_THREAD_STATE       *Thread);
372
373void
374AcpiExUnlinkMutex (
375    ACPI_OPERAND_OBJECT     *ObjDesc);
376
377
378/*
379 * exprep - ACPI AML execution - prep utilities
380 */
381ACPI_STATUS
382AcpiExPrepCommonFieldObject (
383    ACPI_OPERAND_OBJECT     *ObjDesc,
384    UINT8                   FieldFlags,
385    UINT8                   FieldAttribute,
386    UINT32                  FieldBitPosition,
387    UINT32                  FieldBitLength);
388
389ACPI_STATUS
390AcpiExPrepFieldValue (
391    ACPI_CREATE_FIELD_INFO  *Info);
392
393
394/*
395 * exserial - FieldUnit support for serial address spaces
396 */
397ACPI_STATUS
398AcpiExReadSerialBus (
399    ACPI_OPERAND_OBJECT     *ObjDesc,
400    ACPI_OPERAND_OBJECT     **ReturnBuffer);
401
402ACPI_STATUS
403AcpiExWriteSerialBus (
404    ACPI_OPERAND_OBJECT     *SourceDesc,
405    ACPI_OPERAND_OBJECT     *ObjDesc,
406    ACPI_OPERAND_OBJECT     **ReturnBuffer);
407
408ACPI_STATUS
409AcpiExReadGpio (
410    ACPI_OPERAND_OBJECT     *ObjDesc,
411    void                    *Buffer);
412
413ACPI_STATUS
414AcpiExWriteGpio (
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 */
423ACPI_STATUS
424AcpiExSystemDoNotifyOp (
425    ACPI_OPERAND_OBJECT     *Value,
426    ACPI_OPERAND_OBJECT     *ObjDesc);
427
428ACPI_STATUS
429AcpiExSystemDoSleep(
430    UINT64                  Time);
431
432ACPI_STATUS
433AcpiExSystemDoStall (
434    UINT32                  Time);
435
436ACPI_STATUS
437AcpiExSystemSignalEvent(
438    ACPI_OPERAND_OBJECT     *ObjDesc);
439
440ACPI_STATUS
441AcpiExSystemWaitEvent(
442    ACPI_OPERAND_OBJECT     *Time,
443    ACPI_OPERAND_OBJECT     *ObjDesc);
444
445ACPI_STATUS
446AcpiExSystemResetEvent(
447    ACPI_OPERAND_OBJECT     *ObjDesc);
448
449ACPI_STATUS
450AcpiExSystemWaitSemaphore (
451    ACPI_SEMAPHORE          Semaphore,
452    UINT16                  Timeout);
453
454ACPI_STATUS
455AcpiExSystemWaitMutex (
456    ACPI_MUTEX              Mutex,
457    UINT16                  Timeout);
458
459/*
460 * exoparg1 - ACPI AML execution, 1 operand
461 */
462ACPI_STATUS
463AcpiExOpcode_0A_0T_1R (
464    ACPI_WALK_STATE         *WalkState);
465
466ACPI_STATUS
467AcpiExOpcode_1A_0T_0R (
468    ACPI_WALK_STATE         *WalkState);
469
470ACPI_STATUS
471AcpiExOpcode_1A_0T_1R (
472    ACPI_WALK_STATE         *WalkState);
473
474ACPI_STATUS
475AcpiExOpcode_1A_1T_1R (
476    ACPI_WALK_STATE         *WalkState);
477
478ACPI_STATUS
479AcpiExOpcode_1A_1T_0R (
480    ACPI_WALK_STATE         *WalkState);
481
482/*
483 * exoparg2 - ACPI AML execution, 2 operands
484 */
485ACPI_STATUS
486AcpiExOpcode_2A_0T_0R (
487    ACPI_WALK_STATE         *WalkState);
488
489ACPI_STATUS
490AcpiExOpcode_2A_0T_1R (
491    ACPI_WALK_STATE         *WalkState);
492
493ACPI_STATUS
494AcpiExOpcode_2A_1T_1R (
495    ACPI_WALK_STATE         *WalkState);
496
497ACPI_STATUS
498AcpiExOpcode_2A_2T_1R (
499    ACPI_WALK_STATE         *WalkState);
500
501
502/*
503 * exoparg3 - ACPI AML execution, 3 operands
504 */
505ACPI_STATUS
506AcpiExOpcode_3A_0T_0R (
507    ACPI_WALK_STATE         *WalkState);
508
509ACPI_STATUS
510AcpiExOpcode_3A_1T_1R (
511    ACPI_WALK_STATE         *WalkState);
512
513
514/*
515 * exoparg6 - ACPI AML execution, 6 operands
516 */
517ACPI_STATUS
518AcpiExOpcode_6A_0T_1R (
519    ACPI_WALK_STATE         *WalkState);
520
521
522/*
523 * exresolv - Object resolution and get value functions
524 */
525ACPI_STATUS
526AcpiExResolveToValue (
527    ACPI_OPERAND_OBJECT     **StackPtr,
528    ACPI_WALK_STATE         *WalkState);
529
530ACPI_STATUS
531AcpiExResolveMultiple (
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 */
541ACPI_STATUS
542AcpiExResolveNodeToValue (
543    ACPI_NAMESPACE_NODE     **StackPtr,
544    ACPI_WALK_STATE         *WalkState);
545
546
547/*
548 * exresop - resolve operand to value
549 */
550ACPI_STATUS
551AcpiExResolveOperands (
552    UINT16                  Opcode,
553    ACPI_OPERAND_OBJECT     **StackPtr,
554    ACPI_WALK_STATE         *WalkState);
555
556
557/*
558 * exdump - Interpreter debug output routines
559 */
560void
561AcpiExDumpOperand (
562    ACPI_OPERAND_OBJECT     *ObjDesc,
563    UINT32                  Depth);
564
565void
566AcpiExDumpOperands (
567    ACPI_OPERAND_OBJECT     **Operands,
568    const char              *OpcodeName,
569    UINT32                  NumOpcodes);
570
571void
572AcpiExDumpObjectDescriptor (
573    ACPI_OPERAND_OBJECT     *Object,
574    UINT32                  Flags);
575
576void
577AcpiExDumpNamespaceNode (
578    ACPI_NAMESPACE_NODE     *Node,
579    UINT32                  Flags);
580
581
582/*
583 * exnames - AML namestring support
584 */
585ACPI_STATUS
586AcpiExGetNameString (
587    ACPI_OBJECT_TYPE        DataType,
588    UINT8                   *InAmlAddress,
589    char                    **OutNameString,
590    UINT32                  *OutNameLength);
591
592
593/*
594 * exstore - Object store support
595 */
596ACPI_STATUS
597AcpiExStore (
598    ACPI_OPERAND_OBJECT     *ValDesc,
599    ACPI_OPERAND_OBJECT     *DestDesc,
600    ACPI_WALK_STATE         *WalkState);
601
602ACPI_STATUS
603AcpiExStoreObjectToNode (
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 */
613ACPI_STATUS
614AcpiExResolveObject (
615    ACPI_OPERAND_OBJECT     **SourceDescPtr,
616    ACPI_OBJECT_TYPE        TargetType,
617    ACPI_WALK_STATE         *WalkState);
618
619ACPI_STATUS
620AcpiExStoreObjectToObject (
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 */
630ACPI_STATUS
631AcpiExStoreBufferToBuffer (
632    ACPI_OPERAND_OBJECT     *SourceDesc,
633    ACPI_OPERAND_OBJECT     *TargetDesc);
634
635ACPI_STATUS
636AcpiExStoreStringToString (
637    ACPI_OPERAND_OBJECT     *SourceDesc,
638    ACPI_OPERAND_OBJECT     *TargetDesc);
639
640
641/*
642 * excopy - object copy
643 */
644ACPI_STATUS
645AcpiExCopyIntegerToIndexField (
646    ACPI_OPERAND_OBJECT     *SourceDesc,
647    ACPI_OPERAND_OBJECT     *TargetDesc);
648
649ACPI_STATUS
650AcpiExCopyIntegerToBankField (
651    ACPI_OPERAND_OBJECT     *SourceDesc,
652    ACPI_OPERAND_OBJECT     *TargetDesc);
653
654ACPI_STATUS
655AcpiExCopyDataToNamedField (
656    ACPI_OPERAND_OBJECT     *SourceDesc,
657    ACPI_NAMESPACE_NODE     *Node);
658
659ACPI_STATUS
660AcpiExCopyIntegerToBufferField (
661    ACPI_OPERAND_OBJECT     *SourceDesc,
662    ACPI_OPERAND_OBJECT     *TargetDesc);
663
664
665/*
666 * exutils - interpreter/scanner utilities
667 */
668void
669AcpiExEnterInterpreter (
670    void);
671
672void
673AcpiExExitInterpreter (
674    void);
675
676BOOLEAN
677AcpiExTruncateFor32bitTable (
678    ACPI_OPERAND_OBJECT     *ObjDesc);
679
680void
681AcpiExAcquireGlobalLock (
682    UINT32                  Rule);
683
684void
685AcpiExReleaseGlobalLock (
686    UINT32                  Rule);
687
688void
689AcpiExEisaIdToString (
690    char                    *Dest,
691    UINT64                  CompressedId);
692
693void
694AcpiExIntegerToString (
695    char                    *Dest,
696    UINT64                  Value);
697
698void
699AcpiExPciClsToString (
700    char                    *Dest,
701    UINT8                   ClassCode[3]);
702
703BOOLEAN
704AcpiIsValidSpaceId (
705    UINT8                   SpaceId);
706
707
708/*
709 * exregion - default OpRegion handlers
710 */
711ACPI_STATUS
712AcpiExSystemMemorySpaceHandler (
713    UINT32                  Function,
714    ACPI_PHYSICAL_ADDRESS   Address,
715    UINT32                  BitWidth,
716    UINT64                  *Value,
717    void                    *HandlerContext,
718    void                    *RegionContext);
719
720ACPI_STATUS
721AcpiExSystemIoSpaceHandler (
722    UINT32                  Function,
723    ACPI_PHYSICAL_ADDRESS   Address,
724    UINT32                  BitWidth,
725    UINT64                  *Value,
726    void                    *HandlerContext,
727    void                    *RegionContext);
728
729ACPI_STATUS
730AcpiExPciConfigSpaceHandler (
731    UINT32                  Function,
732    ACPI_PHYSICAL_ADDRESS   Address,
733    UINT32                  BitWidth,
734    UINT64                  *Value,
735    void                    *HandlerContext,
736    void                    *RegionContext);
737
738ACPI_STATUS
739AcpiExCmosSpaceHandler (
740    UINT32                  Function,
741    ACPI_PHYSICAL_ADDRESS   Address,
742    UINT32                  BitWidth,
743    UINT64                  *Value,
744    void                    *HandlerContext,
745    void                    *RegionContext);
746
747ACPI_STATUS
748AcpiExPciBarSpaceHandler (
749    UINT32                  Function,
750    ACPI_PHYSICAL_ADDRESS   Address,
751    UINT32                  BitWidth,
752    UINT64                  *Value,
753    void                    *HandlerContext,
754    void                    *RegionContext);
755
756ACPI_STATUS
757AcpiExEmbeddedControllerSpaceHandler (
758    UINT32                  Function,
759    ACPI_PHYSICAL_ADDRESS   Address,
760    UINT32                  BitWidth,
761    UINT64                  *Value,
762    void                    *HandlerContext,
763    void                    *RegionContext);
764
765ACPI_STATUS
766AcpiExSmBusSpaceHandler (
767    UINT32                  Function,
768    ACPI_PHYSICAL_ADDRESS   Address,
769    UINT32                  BitWidth,
770    UINT64                  *Value,
771    void                    *HandlerContext,
772    void                    *RegionContext);
773
774
775ACPI_STATUS
776AcpiExDataTableSpaceHandler (
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