Subversion Repositories Kolibri OS

Rev

Rev 1498 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1498 serge 1
/******************************************************************************
2
 *
3
 * Module Name: utglobal - Global variables for the ACPI subsystem
4
 *
5
 *****************************************************************************/
6
 
7
/******************************************************************************
8
 *
9
 * 1. Copyright Notice
10
 *
2216 Serge 11
 * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
1498 serge 12
 * All rights reserved.
13
 *
14
 * 2. License
15
 *
16
 * 2.1. This is your license from Intel Corp. under its intellectual property
17
 * rights.  You may have additional license terms from the party that provided
18
 * you this software, covering your right to use that party's intellectual
19
 * property rights.
20
 *
21
 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22
 * copy of the source code appearing in this file ("Covered Code") an
23
 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24
 * base code distributed originally by Intel ("Original Intel Code") to copy,
25
 * make derivatives, distribute, use and display any portion of the Covered
26
 * Code in any form, with the right to sublicense such rights; and
27
 *
28
 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29
 * license (with the right to sublicense), under only those claims of Intel
30
 * patents that are infringed by the Original Intel Code, to make, use, sell,
31
 * offer to sell, and import the Covered Code and derivative works thereof
32
 * solely to the minimum extent necessary to exercise the above copyright
33
 * license, and in no event shall the patent license extend to any additions
34
 * to or modifications of the Original Intel Code.  No other license or right
35
 * is granted directly or by implication, estoppel or otherwise;
36
 *
37
 * The above copyright and patent license is granted only if the following
38
 * conditions are met:
39
 *
40
 * 3. Conditions
41
 *
42
 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43
 * Redistribution of source code of any substantial portion of the Covered
44
 * Code or modification with rights to further distribute source must include
45
 * the above Copyright Notice, the above License, this list of Conditions,
46
 * and the following Disclaimer and Export Compliance provision.  In addition,
47
 * Licensee must cause all Covered Code to which Licensee contributes to
48
 * contain a file documenting the changes Licensee made to create that Covered
49
 * Code and the date of any change.  Licensee must include in that file the
50
 * documentation of any changes made by any predecessor Licensee.  Licensee
51
 * must include a prominent statement that the modification is derived,
52
 * directly or indirectly, from Original Intel Code.
53
 *
54
 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55
 * Redistribution of source code of any substantial portion of the Covered
56
 * Code or modification without rights to further distribute source must
57
 * include the following Disclaimer and Export Compliance provision in the
58
 * documentation and/or other materials provided with distribution.  In
59
 * addition, Licensee may not authorize further sublicense of source of any
60
 * portion of the Covered Code, and must include terms to the effect that the
61
 * license from Licensee to its licensee is limited to the intellectual
62
 * property embodied in the software Licensee provides to its licensee, and
63
 * not to intellectual property embodied in modifications its licensee may
64
 * make.
65
 *
66
 * 3.3. Redistribution of Executable. Redistribution in executable form of any
67
 * substantial portion of the Covered Code or modification must reproduce the
68
 * above Copyright Notice, and the following Disclaimer and Export Compliance
69
 * provision in the documentation and/or other materials provided with the
70
 * distribution.
71
 *
72
 * 3.4. Intel retains all right, title, and interest in and to the Original
73
 * Intel Code.
74
 *
75
 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76
 * Intel shall be used in advertising or otherwise to promote the sale, use or
77
 * other dealings in products derived from or relating to the Covered Code
78
 * without prior written authorization from Intel.
79
 *
80
 * 4. Disclaimer and Export Compliance
81
 *
82
 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83
 * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84
 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
85
 * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
86
 * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
87
 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88
 * PARTICULAR PURPOSE.
89
 *
90
 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91
 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92
 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93
 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94
 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95
 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
96
 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97
 * LIMITED REMEDY.
98
 *
99
 * 4.3. Licensee shall not export, either directly or indirectly, any of this
100
 * software or system incorporating such software without first obtaining any
101
 * required license or other approval from the U. S. Department of Commerce or
102
 * any other agency or department of the United States Government.  In the
103
 * event Licensee exports any such software from the United States or
104
 * re-exports any such software from a foreign destination, Licensee shall
105
 * ensure that the distribution and export/re-export of the software is in
106
 * compliance with all laws, regulations, orders, or other restrictions of the
107
 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108
 * any of its subsidiaries will export/re-export any technical data, process,
109
 * software, or service, directly or indirectly, to any country for which the
110
 * United States government or any agency thereof requires an export license,
111
 * other governmental approval, or letter of assurance, without first obtaining
112
 * such license, approval or letter.
113
 *
114
 *****************************************************************************/
115
 
116
#define __UTGLOBAL_C__
117
#define DEFINE_ACPI_GLOBALS
118
 
119
#include "acpi.h"
120
#include "accommon.h"
121
 
122
#define _COMPONENT          ACPI_UTILITIES
123
        ACPI_MODULE_NAME    ("utglobal")
124
 
125
 
126
/*******************************************************************************
127
 *
128
 * Static global variable initialization.
129
 *
130
 ******************************************************************************/
131
 
132
/*
133
 * We want the debug switches statically initialized so they
134
 * are already set when the debugger is entered.
135
 */
136
 
137
/* Debug switch - level and trace mask */
138
 
139
#ifdef ACPI_DEBUG_OUTPUT
140
UINT32                      AcpiDbgLevel = ACPI_DEBUG_DEFAULT;
141
#else
142
UINT32                      AcpiDbgLevel = ACPI_NORMAL_DEFAULT;
143
#endif
144
 
145
/* Debug switch - layer (component) mask */
146
 
147
UINT32                      AcpiDbgLayer = ACPI_COMPONENT_DEFAULT;
148
UINT32                      AcpiGbl_NestingLevel = 0;
149
 
150
/* Debugger globals */
151
 
152
BOOLEAN                     AcpiGbl_DbTerminateThreads = FALSE;
153
BOOLEAN                     AcpiGbl_AbortMethod = FALSE;
154
BOOLEAN                     AcpiGbl_MethodExecuting = FALSE;
155
 
156
/* System flags */
157
 
158
UINT32                      AcpiGbl_StartupFlags = 0;
159
 
160
/* System starts uninitialized */
161
 
162
BOOLEAN                     AcpiGbl_Shutdown = TRUE;
163
 
164
const char                  *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] =
165
{
166
    "\\_S0_",
167
    "\\_S1_",
168
    "\\_S2_",
169
    "\\_S3_",
170
    "\\_S4_",
171
    "\\_S5_"
172
};
173
 
174
const char                  *AcpiGbl_LowestDstateNames[ACPI_NUM_SxW_METHODS] =
175
{
176
    "_S0W",
177
    "_S1W",
178
    "_S2W",
179
    "_S3W",
180
    "_S4W"
181
};
182
 
183
const char                  *AcpiGbl_HighestDstateNames[ACPI_NUM_SxD_METHODS] =
184
{
185
    "_S1D",
186
    "_S2D",
187
    "_S3D",
188
    "_S4D"
189
};
190
 
191
 
192
/*******************************************************************************
193
 *
194
 * Namespace globals
195
 *
196
 ******************************************************************************/
197
 
198
/*
199
 * Predefined ACPI Names (Built-in to the Interpreter)
200
 *
201
 * NOTES:
202
 * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
203
 *    during the initialization sequence.
204
 * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
2216 Serge 205
 *    perform a Notify() operation on it. 09/2010: Changed to type Device.
206
 *    This still allows notifies, but does not confuse host code that
207
 *    searches for valid ThermalZone objects.
1498 serge 208
 */
209
const ACPI_PREDEFINED_NAMES     AcpiGbl_PreDefinedNames[] =
210
{
211
    {"_GPE",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
212
    {"_PR_",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
213
    {"_SB_",    ACPI_TYPE_DEVICE,           NULL},
214
    {"_SI_",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
2216 Serge 215
    {"_TZ_",    ACPI_TYPE_DEVICE,           NULL},
1498 serge 216
    {"_REV",    ACPI_TYPE_INTEGER,          (char *) ACPI_CA_SUPPORT_LEVEL},
217
    {"_OS_",    ACPI_TYPE_STRING,           ACPI_OS_NAME},
218
    {"_GL_",    ACPI_TYPE_MUTEX,            (char *) 1},
219
 
220
#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
221
    {"_OSI",    ACPI_TYPE_METHOD,           (char *) 1},
222
#endif
223
 
224
    /* Table terminator */
225
 
226
    {NULL,      ACPI_TYPE_ANY,              NULL}
227
};
228
 
229
 
230
/******************************************************************************
231
 *
232
 * Event and Hardware globals
233
 *
234
 ******************************************************************************/
235
 
236
ACPI_BIT_REGISTER_INFO      AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] =
237
{
238
    /* Name                                     Parent Register             Register Bit Position                   Register Bit Mask       */
239
 
240
    /* ACPI_BITREG_TIMER_STATUS         */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_TIMER_STATUS,          ACPI_BITMASK_TIMER_STATUS},
241
    /* ACPI_BITREG_BUS_MASTER_STATUS    */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_BUS_MASTER_STATUS,     ACPI_BITMASK_BUS_MASTER_STATUS},
242
    /* ACPI_BITREG_GLOBAL_LOCK_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_STATUS},
243
    /* ACPI_BITREG_POWER_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_STATUS},
244
    /* ACPI_BITREG_SLEEP_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_STATUS},
245
    /* ACPI_BITREG_RT_CLOCK_STATUS      */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_STATUS},
246
    /* ACPI_BITREG_WAKE_STATUS          */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_WAKE_STATUS,           ACPI_BITMASK_WAKE_STATUS},
247
    /* ACPI_BITREG_PCIEXP_WAKE_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,    ACPI_BITMASK_PCIEXP_WAKE_STATUS},
248
 
249
    /* ACPI_BITREG_TIMER_ENABLE         */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_TIMER_ENABLE,          ACPI_BITMASK_TIMER_ENABLE},
250
    /* ACPI_BITREG_GLOBAL_LOCK_ENABLE   */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
251
    /* ACPI_BITREG_POWER_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_POWER_BUTTON_ENABLE,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
252
    /* ACPI_BITREG_SLEEP_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
253
    /* ACPI_BITREG_RT_CLOCK_ENABLE      */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_RT_CLOCK_ENABLE,       ACPI_BITMASK_RT_CLOCK_ENABLE},
254
    /* ACPI_BITREG_PCIEXP_WAKE_DISABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,   ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
255
 
256
    /* ACPI_BITREG_SCI_ENABLE           */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SCI_ENABLE,            ACPI_BITMASK_SCI_ENABLE},
257
    /* ACPI_BITREG_BUS_MASTER_RLD       */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_BUS_MASTER_RLD,        ACPI_BITMASK_BUS_MASTER_RLD},
258
    /* ACPI_BITREG_GLOBAL_LOCK_RELEASE  */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,   ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
259
    /* ACPI_BITREG_SLEEP_TYPE           */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_TYPE,            ACPI_BITMASK_SLEEP_TYPE},
260
    /* ACPI_BITREG_SLEEP_ENABLE         */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_ENABLE,          ACPI_BITMASK_SLEEP_ENABLE},
261
 
262
    /* ACPI_BITREG_ARB_DIS              */   {ACPI_REGISTER_PM2_CONTROL,  ACPI_BITPOSITION_ARB_DISABLE,           ACPI_BITMASK_ARB_DISABLE}
263
};
264
 
265
 
266
ACPI_FIXED_EVENT_INFO       AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
267
{
268
    /* ACPI_EVENT_PMTIMER       */  {ACPI_BITREG_TIMER_STATUS,          ACPI_BITREG_TIMER_ENABLE,        ACPI_BITMASK_TIMER_STATUS,          ACPI_BITMASK_TIMER_ENABLE},
269
    /* ACPI_EVENT_GLOBAL        */  {ACPI_BITREG_GLOBAL_LOCK_STATUS,    ACPI_BITREG_GLOBAL_LOCK_ENABLE,  ACPI_BITMASK_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
270
    /* ACPI_EVENT_POWER_BUTTON  */  {ACPI_BITREG_POWER_BUTTON_STATUS,   ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
271
    /* ACPI_EVENT_SLEEP_BUTTON  */  {ACPI_BITREG_SLEEP_BUTTON_STATUS,   ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
272
    /* ACPI_EVENT_RTC           */  {ACPI_BITREG_RT_CLOCK_STATUS,       ACPI_BITREG_RT_CLOCK_ENABLE,     ACPI_BITMASK_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_ENABLE},
273
};
274
 
275
 
276
/*******************************************************************************
277
 *
278
 * FUNCTION:    AcpiUtInitGlobals
279
 *
280
 * PARAMETERS:  None
281
 *
282
 * RETURN:      Status
283
 *
2216 Serge 284
 * DESCRIPTION: Init ACPICA globals.  All globals that require specific
1498 serge 285
 *              initialization should be initialized here!
286
 *
287
 ******************************************************************************/
288
 
289
ACPI_STATUS
290
AcpiUtInitGlobals (
291
    void)
292
{
293
    ACPI_STATUS             Status;
294
    UINT32                  i;
295
 
296
 
297
    ACPI_FUNCTION_TRACE (UtInitGlobals);
298
 
299
 
300
    /* Create all memory caches */
301
 
302
    Status = AcpiUtCreateCaches ();
303
    if (ACPI_FAILURE (Status))
304
    {
305
        return_ACPI_STATUS (Status);
306
    }
307
 
308
    /* Mutex locked flags */
309
 
310
    for (i = 0; i < ACPI_NUM_MUTEX; i++)
311
    {
312
        AcpiGbl_MutexInfo[i].Mutex          = NULL;
313
        AcpiGbl_MutexInfo[i].ThreadId       = ACPI_MUTEX_NOT_ACQUIRED;
314
        AcpiGbl_MutexInfo[i].UseCount       = 0;
315
    }
316
 
317
    for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++)
318
    {
319
        AcpiGbl_OwnerIdMask[i]              = 0;
320
    }
321
 
322
    /* Last OwnerID is never valid */
323
 
324
    AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000;
325
 
326
    /* Event counters */
327
 
328
    AcpiMethodCount                     = 0;
329
    AcpiSciCount                        = 0;
330
    AcpiGpeCount                        = 0;
331
 
332
    for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++)
333
    {
334
        AcpiFixedEventCount[i]              = 0;
335
    }
336
 
337
    /* GPE support */
338
 
2216 Serge 339
    AcpiGbl_AllGpesInitialized          = FALSE;
1498 serge 340
    AcpiGbl_GpeXruptListHead            = NULL;
341
    AcpiGbl_GpeFadtBlocks[0]            = NULL;
342
    AcpiGbl_GpeFadtBlocks[1]            = NULL;
343
    AcpiCurrentGpeCount                 = 0;
344
 
345
    /* Global handlers */
346
 
347
    AcpiGbl_SystemNotify.Handler        = NULL;
348
    AcpiGbl_DeviceNotify.Handler        = NULL;
349
    AcpiGbl_ExceptionHandler            = NULL;
350
    AcpiGbl_InitHandler                 = NULL;
351
    AcpiGbl_TableHandler                = NULL;
2216 Serge 352
    AcpiGbl_InterfaceHandler            = NULL;
353
    AcpiGbl_GlobalEventHandler          = NULL;
1498 serge 354
 
355
    /* Global Lock support */
356
 
357
    AcpiGbl_GlobalLockSemaphore         = NULL;
358
    AcpiGbl_GlobalLockMutex             = NULL;
359
    AcpiGbl_GlobalLockAcquired          = FALSE;
360
    AcpiGbl_GlobalLockHandle            = 0;
361
    AcpiGbl_GlobalLockPresent           = FALSE;
362
 
363
    /* Miscellaneous variables */
364
 
365
    AcpiGbl_DSDT                        = NULL;
366
    AcpiGbl_CmSingleStep                = FALSE;
367
    AcpiGbl_DbTerminateThreads          = FALSE;
368
    AcpiGbl_Shutdown                    = FALSE;
369
    AcpiGbl_NsLookupCount               = 0;
370
    AcpiGbl_PsFindCount                 = 0;
371
    AcpiGbl_AcpiHardwarePresent         = TRUE;
372
    AcpiGbl_LastOwnerIdIndex            = 0;
373
    AcpiGbl_NextOwnerIdOffset           = 0;
374
    AcpiGbl_TraceMethodName             = 0;
375
    AcpiGbl_TraceDbgLevel               = 0;
376
    AcpiGbl_TraceDbgLayer               = 0;
377
    AcpiGbl_DebuggerConfiguration       = DEBUGGER_THREADING;
378
    AcpiGbl_DbOutputFlags               = ACPI_DB_CONSOLE_OUTPUT;
379
    AcpiGbl_OsiData                     = 0;
2216 Serge 380
    AcpiGbl_OsiMutex                    = NULL;
381
    AcpiGbl_RegMethodsExecuted          = FALSE;
1498 serge 382
 
383
    /* Hardware oriented */
384
 
385
    AcpiGbl_EventsInitialized           = FALSE;
386
    AcpiGbl_SystemAwakeAndRunning       = TRUE;
387
 
388
    /* Namespace */
389
 
390
    AcpiGbl_ModuleCodeList              = NULL;
391
    AcpiGbl_RootNode                    = NULL;
392
    AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME;
393
    AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED;
394
    AcpiGbl_RootNodeStruct.Type         = ACPI_TYPE_DEVICE;
395
    AcpiGbl_RootNodeStruct.Parent       = NULL;
396
    AcpiGbl_RootNodeStruct.Child        = NULL;
397
    AcpiGbl_RootNodeStruct.Peer         = NULL;
398
    AcpiGbl_RootNodeStruct.Object       = NULL;
399
 
400
 
401
#ifdef ACPI_DISASSEMBLER
402
    AcpiGbl_ExternalList                = NULL;
403
#endif
404
 
405
#ifdef ACPI_DEBUG_OUTPUT
406
    AcpiGbl_LowestStackPointer          = ACPI_CAST_PTR (ACPI_SIZE, ACPI_SIZE_MAX);
407
#endif
408
 
409
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
410
    AcpiGbl_DisplayFinalMemStats        = FALSE;
411
    AcpiGbl_DisableMemTracking          = FALSE;
412
#endif
413
 
414
    return_ACPI_STATUS (AE_OK);
415
}
416
 
417
/* Public globals */
418
 
419
ACPI_EXPORT_SYMBOL (AcpiGbl_FADT)
420
ACPI_EXPORT_SYMBOL (AcpiDbgLevel)
421
ACPI_EXPORT_SYMBOL (AcpiDbgLayer)
422
ACPI_EXPORT_SYMBOL (AcpiGpeCount)
423
ACPI_EXPORT_SYMBOL (AcpiCurrentGpeCount)