1 /****************************************************************************** 2 * 3 * Name: acefiex.h - Extra OS specific defines, etc. for EFI 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 __ACEFIEX_H__ 45 #define __ACEFIEX_H__ 46 47 48 #ifndef ACPI_USE_SYSTEM_CLIBRARY 49 50 typedef signed char int8_t; 51 typedef short int int16_t; 52 typedef int int32_t; 53 typedef unsigned char uint8_t; 54 typedef unsigned short int uint16_t; 55 typedef unsigned int uint32_t; 56 typedef COMPILER_DEPENDENT_INT64 int64_t; 57 typedef COMPILER_DEPENDENT_UINT64 uint64_t; 58 59 #endif /* ACPI_USE_SYSTEM_CLIBRARY */ 60 61 #define ACPI_EFI_ERROR(a) (((INTN) a) < 0) 62 #define ACPI_EFI_SUCCESS 0 63 #define ACPI_EFI_LOAD_ERROR ACPI_EFI_ERR(1) 64 #define ACPI_EFI_INVALID_PARAMETER ACPI_EFI_ERR(2) 65 #define ACPI_EFI_UNSUPPORTED ACPI_EFI_ERR(3) 66 #define ACPI_EFI_BAD_BUFFER_SIZE ACPI_EFI_ERR(4) 67 #define ACPI_EFI_BUFFER_TOO_SMALL ACPI_EFI_ERR(5) 68 #define ACPI_EFI_NOT_READY ACPI_EFI_ERR(6) 69 #define ACPI_EFI_DEVICE_ERROR ACPI_EFI_ERR(7) 70 #define ACPI_EFI_WRITE_PROTECTED ACPI_EFI_ERR(8) 71 #define ACPI_EFI_OUT_OF_RESOURCES ACPI_EFI_ERR(9) 72 #define ACPI_EFI_VOLUME_CORRUPTED ACPI_EFI_ERR(10) 73 #define ACPI_EFI_VOLUME_FULL ACPI_EFI_ERR(11) 74 #define ACPI_EFI_NO_MEDIA ACPI_EFI_ERR(12) 75 #define ACPI_EFI_MEDIA_CHANGED ACPI_EFI_ERR(13) 76 #define ACPI_EFI_NOT_FOUND ACPI_EFI_ERR(14) 77 #define ACPI_EFI_ACCESS_DENIED ACPI_EFI_ERR(15) 78 #define ACPI_EFI_NO_RESPONSE ACPI_EFI_ERR(16) 79 #define ACPI_EFI_NO_MAPPING ACPI_EFI_ERR(17) 80 #define ACPI_EFI_TIMEOUT ACPI_EFI_ERR(18) 81 #define ACPI_EFI_NOT_STARTED ACPI_EFI_ERR(19) 82 #define ACPI_EFI_ALREADY_STARTED ACPI_EFI_ERR(20) 83 #define ACPI_EFI_ABORTED ACPI_EFI_ERR(21) 84 #define ACPI_EFI_PROTOCOL_ERROR ACPI_EFI_ERR(24) 85 86 87 typedef UINTN ACPI_EFI_STATUS; 88 typedef VOID *ACPI_EFI_HANDLE; 89 typedef VOID *ACPI_EFI_EVENT; 90 91 typedef struct { 92 UINT32 Data1; 93 UINT16 Data2; 94 UINT16 Data3; 95 UINT8 Data4[8]; 96 } ACPI_EFI_GUID; 97 98 typedef struct { 99 UINT16 Year; /* 1998 - 20XX */ 100 UINT8 Month; /* 1 - 12 */ 101 UINT8 Day; /* 1 - 31 */ 102 UINT8 Hour; /* 0 - 23 */ 103 UINT8 Minute; /* 0 - 59 */ 104 UINT8 Second; /* 0 - 59 */ 105 UINT8 Pad1; 106 UINT32 Nanosecond; /* 0 - 999,999,999 */ 107 INT16 TimeZone; /* -1440 to 1440 or 2047 */ 108 UINT8 Daylight; 109 UINT8 Pad2; 110 } ACPI_EFI_TIME; 111 112 typedef struct _ACPI_EFI_DEVICE_PATH { 113 UINT8 Type; 114 UINT8 SubType; 115 UINT8 Length[2]; 116 } ACPI_EFI_DEVICE_PATH; 117 118 typedef UINT64 ACPI_EFI_PHYSICAL_ADDRESS; 119 typedef UINT64 ACPI_EFI_VIRTUAL_ADDRESS; 120 121 typedef enum { 122 AcpiEfiAllocateAnyPages, 123 AcpiEfiAllocateMaxAddress, 124 AcpiEfiAllocateAddress, 125 AcpiEfiMaxAllocateType 126 } ACPI_EFI_ALLOCATE_TYPE; 127 128 typedef enum { 129 AcpiEfiReservedMemoryType, 130 AcpiEfiLoaderCode, 131 AcpiEfiLoaderData, 132 AcpiEfiBootServicesCode, 133 AcpiEfiBootServicesData, 134 AcpiEfiRuntimeServicesCode, 135 AcpiEfiRuntimeServicesData, 136 AcpiEfiConventionalMemory, 137 AcpiEfiUnusableMemory, 138 AcpiEfiACPIReclaimMemory, 139 AcpiEfiACPIMemoryNVS, 140 AcpiEfiMemoryMappedIO, 141 AcpiEfiMemoryMappedIOPortSpace, 142 AcpiEfiPalCode, 143 AcpiEfiMaxMemoryType 144 } ACPI_EFI_MEMORY_TYPE; 145 146 /* possible caching types for the memory range */ 147 #define ACPI_EFI_MEMORY_UC 0x0000000000000001 148 #define ACPI_EFI_MEMORY_WC 0x0000000000000002 149 #define ACPI_EFI_MEMORY_WT 0x0000000000000004 150 #define ACPI_EFI_MEMORY_WB 0x0000000000000008 151 #define ACPI_EFI_MEMORY_UCE 0x0000000000000010 152 153 /* physical memory protection on range */ 154 #define ACPI_EFI_MEMORY_WP 0x0000000000001000 155 #define ACPI_EFI_MEMORY_RP 0x0000000000002000 156 #define ACPI_EFI_MEMORY_XP 0x0000000000004000 157 158 /* range requires a runtime mapping */ 159 #define ACPI_EFI_MEMORY_RUNTIME 0x8000000000000000 160 161 #define ACPI_EFI_MEMORY_DESCRIPTOR_VERSION 1 162 typedef struct { 163 UINT32 Type; 164 UINT32 Pad; 165 ACPI_EFI_PHYSICAL_ADDRESS PhysicalStart; 166 ACPI_EFI_VIRTUAL_ADDRESS VirtualStart; 167 UINT64 NumberOfPages; 168 UINT64 Attribute; 169 } ACPI_EFI_MEMORY_DESCRIPTOR; 170 171 typedef struct _ACPI_EFI_TABLE_HEARDER { 172 UINT64 Signature; 173 UINT32 Revision; 174 UINT32 HeaderSize; 175 UINT32 CRC32; 176 UINT32 Reserved; 177 } ACPI_EFI_TABLE_HEADER; 178 179 typedef 180 ACPI_EFI_STATUS 181 (ACPI_EFI_API *ACPI_EFI_UNKNOWN_INTERFACE) ( 182 void); 183 184 185 /* 186 * Text output protocol 187 */ 188 #define ACPI_SIMPLE_TEXT_OUTPUT_PROTOCOL \ 189 { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 190 191 typedef 192 ACPI_EFI_STATUS 193 (ACPI_EFI_API *ACPI_EFI_TEXT_RESET) ( 194 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 195 BOOLEAN ExtendedVerification); 196 197 typedef 198 ACPI_EFI_STATUS 199 (ACPI_EFI_API *ACPI_EFI_TEXT_OUTPUT_STRING) ( 200 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 201 CHAR16 *String); 202 203 typedef 204 ACPI_EFI_STATUS 205 (ACPI_EFI_API *ACPI_EFI_TEXT_TEST_STRING) ( 206 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 207 CHAR16 *String); 208 209 typedef 210 ACPI_EFI_STATUS 211 (ACPI_EFI_API *ACPI_EFI_TEXT_QUERY_MODE) ( 212 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 213 UINTN ModeNumber, 214 UINTN *Columns, 215 UINTN *Rows); 216 217 typedef 218 ACPI_EFI_STATUS 219 (ACPI_EFI_API *ACPI_EFI_TEXT_SET_MODE) ( 220 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 221 UINTN ModeNumber); 222 223 typedef 224 ACPI_EFI_STATUS 225 (ACPI_EFI_API *ACPI_EFI_TEXT_SET_ATTRIBUTE) ( 226 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 227 UINTN Attribute); 228 229 typedef 230 ACPI_EFI_STATUS 231 (ACPI_EFI_API *ACPI_EFI_TEXT_CLEAR_SCREEN) ( 232 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This); 233 234 typedef 235 ACPI_EFI_STATUS 236 (ACPI_EFI_API *ACPI_EFI_TEXT_SET_CURSOR_POSITION) ( 237 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 238 UINTN Column, 239 UINTN Row); 240 241 typedef 242 ACPI_EFI_STATUS 243 (ACPI_EFI_API *ACPI_EFI_TEXT_ENABLE_CURSOR) ( 244 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 245 BOOLEAN Enable); 246 247 typedef struct { 248 INT32 MaxMode; 249 INT32 Mode; 250 INT32 Attribute; 251 INT32 CursorColumn; 252 INT32 CursorRow; 253 BOOLEAN CursorVisible; 254 } ACPI_SIMPLE_TEXT_OUTPUT_MODE; 255 256 typedef struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE { 257 ACPI_EFI_TEXT_RESET Reset; 258 259 ACPI_EFI_TEXT_OUTPUT_STRING OutputString; 260 ACPI_EFI_TEXT_TEST_STRING TestString; 261 262 ACPI_EFI_TEXT_QUERY_MODE QueryMode; 263 ACPI_EFI_TEXT_SET_MODE SetMode; 264 ACPI_EFI_TEXT_SET_ATTRIBUTE SetAttribute; 265 266 ACPI_EFI_TEXT_CLEAR_SCREEN ClearScreen; 267 ACPI_EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; 268 ACPI_EFI_TEXT_ENABLE_CURSOR EnableCursor; 269 270 ACPI_SIMPLE_TEXT_OUTPUT_MODE *Mode; 271 } ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE; 272 273 /* 274 * Text input protocol 275 */ 276 #define ACPI_SIMPLE_TEXT_INPUT_PROTOCOL \ 277 { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 278 279 typedef struct { 280 UINT16 ScanCode; 281 CHAR16 UnicodeChar; 282 } ACPI_EFI_INPUT_KEY; 283 284 /* 285 * Baseline unicode control chars 286 */ 287 #define CHAR_NULL 0x0000 288 #define CHAR_BACKSPACE 0x0008 289 #define CHAR_TAB 0x0009 290 #define CHAR_LINEFEED 0x000A 291 #define CHAR_CARRIAGE_RETURN 0x000D 292 293 typedef 294 ACPI_EFI_STATUS 295 (ACPI_EFI_API *ACPI_EFI_INPUT_RESET) ( 296 struct _ACPI_SIMPLE_INPUT_INTERFACE *This, 297 BOOLEAN ExtendedVerification); 298 299 typedef 300 ACPI_EFI_STATUS 301 (ACPI_EFI_API *ACPI_EFI_INPUT_READ_KEY) ( 302 struct _ACPI_SIMPLE_INPUT_INTERFACE *This, 303 ACPI_EFI_INPUT_KEY *Key); 304 305 typedef struct _ACPI_SIMPLE_INPUT_INTERFACE { 306 ACPI_EFI_INPUT_RESET Reset; 307 ACPI_EFI_INPUT_READ_KEY ReadKeyStroke; 308 ACPI_EFI_EVENT WaitForKey; 309 } ACPI_SIMPLE_INPUT_INTERFACE; 310 311 312 /* 313 * Simple file system protocol 314 */ 315 #define ACPI_SIMPLE_FILE_SYSTEM_PROTOCOL \ 316 { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 317 318 typedef 319 ACPI_EFI_STATUS 320 (ACPI_EFI_API *ACPI_EFI_VOLUME_OPEN) ( 321 struct _ACPI_EFI_FILE_IO_INTERFACE *This, 322 struct _ACPI_EFI_FILE_HANDLE **Root); 323 324 #define ACPI_EFI_FILE_IO_INTERFACE_REVISION 0x00010000 325 326 typedef struct _ACPI_EFI_FILE_IO_INTERFACE { 327 UINT64 Revision; 328 ACPI_EFI_VOLUME_OPEN OpenVolume; 329 } ACPI_EFI_FILE_IO_INTERFACE; 330 331 typedef 332 ACPI_EFI_STATUS 333 (ACPI_EFI_API *ACPI_EFI_FILE_OPEN) ( 334 struct _ACPI_EFI_FILE_HANDLE *File, 335 struct _ACPI_EFI_FILE_HANDLE **NewHandle, 336 CHAR16 *FileName, 337 UINT64 OpenMode, 338 UINT64 Attributes); 339 340 /* Values for OpenMode used above */ 341 342 #define ACPI_EFI_FILE_MODE_READ 0x0000000000000001 343 #define ACPI_EFI_FILE_MODE_WRITE 0x0000000000000002 344 #define ACPI_EFI_FILE_MODE_CREATE 0x8000000000000000 345 346 /* Values for Attribute used above */ 347 348 #define ACPI_EFI_FILE_READ_ONLY 0x0000000000000001 349 #define ACPI_EFI_FILE_HIDDEN 0x0000000000000002 350 #define ACPI_EFI_FILE_SYSTEM 0x0000000000000004 351 #define ACPI_EFI_FILE_RESERVIED 0x0000000000000008 352 #define ACPI_EFI_FILE_DIRECTORY 0x0000000000000010 353 #define ACPI_EFI_FILE_ARCHIVE 0x0000000000000020 354 #define ACPI_EFI_FILE_VALID_ATTR 0x0000000000000037 355 356 typedef 357 ACPI_EFI_STATUS 358 (ACPI_EFI_API *ACPI_EFI_FILE_CLOSE) ( 359 struct _ACPI_EFI_FILE_HANDLE *File); 360 361 typedef 362 ACPI_EFI_STATUS 363 (ACPI_EFI_API *ACPI_EFI_FILE_DELETE) ( 364 struct _ACPI_EFI_FILE_HANDLE *File); 365 366 typedef 367 ACPI_EFI_STATUS 368 (ACPI_EFI_API *ACPI_EFI_FILE_READ) ( 369 struct _ACPI_EFI_FILE_HANDLE *File, 370 UINTN *BufferSize, 371 VOID *Buffer); 372 373 typedef 374 ACPI_EFI_STATUS 375 (ACPI_EFI_API *ACPI_EFI_FILE_WRITE) ( 376 struct _ACPI_EFI_FILE_HANDLE *File, 377 UINTN *BufferSize, 378 VOID *Buffer); 379 380 typedef 381 ACPI_EFI_STATUS 382 (ACPI_EFI_API *ACPI_EFI_FILE_SET_POSITION) ( 383 struct _ACPI_EFI_FILE_HANDLE *File, 384 UINT64 Position); 385 386 typedef 387 ACPI_EFI_STATUS 388 (ACPI_EFI_API *ACPI_EFI_FILE_GET_POSITION) ( 389 struct _ACPI_EFI_FILE_HANDLE *File, 390 UINT64 *Position); 391 392 #define ACPI_EFI_FILE_INFO_ID \ 393 { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 394 395 typedef struct { 396 UINT64 Size; 397 UINT64 FileSize; 398 UINT64 PhysicalSize; 399 ACPI_EFI_TIME CreateTime; 400 ACPI_EFI_TIME LastAccessTime; 401 ACPI_EFI_TIME ModificationTime; 402 UINT64 Attribute; 403 CHAR16 FileName[1]; 404 } ACPI_EFI_FILE_INFO; 405 406 #define SIZE_OF_ACPI_EFI_FILE_INFO ACPI_OFFSET(ACPI_EFI_FILE_INFO, FileName) 407 408 typedef 409 ACPI_EFI_STATUS 410 (ACPI_EFI_API *ACPI_EFI_FILE_GET_INFO) ( 411 struct _ACPI_EFI_FILE_HANDLE *File, 412 ACPI_EFI_GUID *InformationType, 413 UINTN *BufferSize, 414 VOID *Buffer); 415 416 typedef 417 ACPI_EFI_STATUS 418 (ACPI_EFI_API *ACPI_EFI_FILE_SET_INFO) ( 419 struct _ACPI_EFI_FILE_HANDLE *File, 420 ACPI_EFI_GUID *InformationType, 421 UINTN BufferSize, 422 VOID *Buffer); 423 424 typedef 425 ACPI_EFI_STATUS 426 (ACPI_EFI_API *ACPI_EFI_FILE_FLUSH) ( 427 struct _ACPI_EFI_FILE_HANDLE *File); 428 429 430 #define ACPI_EFI_FILE_HANDLE_REVISION 0x00010000 431 432 typedef struct _ACPI_EFI_FILE_HANDLE { 433 UINT64 Revision; 434 ACPI_EFI_FILE_OPEN Open; 435 ACPI_EFI_FILE_CLOSE Close; 436 ACPI_EFI_FILE_DELETE Delete; 437 ACPI_EFI_FILE_READ Read; 438 ACPI_EFI_FILE_WRITE Write; 439 ACPI_EFI_FILE_GET_POSITION GetPosition; 440 ACPI_EFI_FILE_SET_POSITION SetPosition; 441 ACPI_EFI_FILE_GET_INFO GetInfo; 442 ACPI_EFI_FILE_SET_INFO SetInfo; 443 ACPI_EFI_FILE_FLUSH Flush; 444 } ACPI_EFI_FILE_STRUCT, *ACPI_EFI_FILE_HANDLE; 445 446 447 /* 448 * Loaded image protocol 449 */ 450 #define ACPI_EFI_LOADED_IMAGE_PROTOCOL \ 451 { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } 452 453 typedef 454 ACPI_EFI_STATUS 455 (ACPI_EFI_API *ACPI_EFI_IMAGE_ENTRY_POINT) ( 456 ACPI_EFI_HANDLE ImageHandle, 457 struct _ACPI_EFI_SYSTEM_TABLE *SystemTable); 458 459 typedef 460 ACPI_EFI_STATUS 461 (ACPI_EFI_API *ACPI_EFI_IMAGE_LOAD) ( 462 BOOLEAN BootPolicy, 463 ACPI_EFI_HANDLE ParentImageHandle, 464 ACPI_EFI_DEVICE_PATH *FilePath, 465 VOID *SourceBuffer, 466 UINTN SourceSize, 467 ACPI_EFI_HANDLE *ImageHandle); 468 469 typedef 470 ACPI_EFI_STATUS 471 (ACPI_EFI_API *ACPI_EFI_IMAGE_START) ( 472 ACPI_EFI_HANDLE ImageHandle, 473 UINTN *ExitDataSize, 474 CHAR16 **ExitData); 475 476 typedef 477 ACPI_EFI_STATUS 478 (ACPI_EFI_API *ACPI_EFI_EXIT) ( 479 ACPI_EFI_HANDLE ImageHandle, 480 ACPI_EFI_STATUS ExitStatus, 481 UINTN ExitDataSize, 482 CHAR16 *ExitData); 483 484 typedef 485 ACPI_EFI_STATUS 486 (ACPI_EFI_API *ACPI_EFI_IMAGE_UNLOAD) ( 487 ACPI_EFI_HANDLE ImageHandle); 488 489 490 typedef 491 ACPI_EFI_STATUS 492 (ACPI_EFI_API *ACPI_EFI_STALL) ( 493 UINTN Microseconds); 494 495 typedef 496 ACPI_EFI_STATUS 497 (ACPI_EFI_API *ACPI_EFI_SET_WATCHDOG_TIMER) ( 498 UINTN Timeout, 499 UINT64 WatchdogCode, 500 UINTN DataSize, 501 CHAR16 *WatchdogData); 502 503 504 #define EFI_IMAGE_INFORMATION_REVISION 0x1000 505 typedef struct { 506 UINT32 Revision; 507 ACPI_EFI_HANDLE ParentHandle; 508 struct _ACPI_EFI_SYSTEM_TABLE *SystemTable; 509 ACPI_EFI_HANDLE DeviceHandle; 510 ACPI_EFI_DEVICE_PATH *FilePath; 511 VOID *Reserved; 512 UINT32 LoadOptionsSize; 513 VOID *LoadOptions; 514 VOID *ImageBase; 515 UINT64 ImageSize; 516 ACPI_EFI_MEMORY_TYPE ImageCodeType; 517 ACPI_EFI_MEMORY_TYPE ImageDataType; 518 ACPI_EFI_IMAGE_UNLOAD Unload; 519 520 } ACPI_EFI_LOADED_IMAGE; 521 522 523 /* 524 * EFI Memory 525 */ 526 typedef 527 ACPI_EFI_STATUS 528 (ACPI_EFI_API *ACPI_EFI_ALLOCATE_PAGES) ( 529 ACPI_EFI_ALLOCATE_TYPE Type, 530 ACPI_EFI_MEMORY_TYPE MemoryType, 531 UINTN NoPages, 532 ACPI_EFI_PHYSICAL_ADDRESS *Memory); 533 534 typedef 535 ACPI_EFI_STATUS 536 (ACPI_EFI_API *ACPI_EFI_FREE_PAGES) ( 537 ACPI_EFI_PHYSICAL_ADDRESS Memory, 538 UINTN NoPages); 539 540 typedef 541 ACPI_EFI_STATUS 542 (ACPI_EFI_API *ACPI_EFI_GET_MEMORY_MAP) ( 543 UINTN *MemoryMapSize, 544 ACPI_EFI_MEMORY_DESCRIPTOR *MemoryMap, 545 UINTN *MapKey, 546 UINTN *DescriptorSize, 547 UINT32 *DescriptorVersion); 548 549 #define NextMemoryDescriptor(Ptr,Size) ((ACPI_EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size)) 550 551 typedef 552 ACPI_EFI_STATUS 553 (ACPI_EFI_API *ACPI_EFI_ALLOCATE_POOL) ( 554 ACPI_EFI_MEMORY_TYPE PoolType, 555 UINTN Size, 556 VOID **Buffer); 557 558 typedef 559 ACPI_EFI_STATUS 560 (ACPI_EFI_API *ACPI_EFI_FREE_POOL) ( 561 VOID *Buffer); 562 563 564 /* 565 * EFI Time 566 */ 567 typedef struct { 568 UINT32 Resolution; 569 UINT32 Accuracy; 570 BOOLEAN SetsToZero; 571 } ACPI_EFI_TIME_CAPABILITIES; 572 573 typedef 574 ACPI_EFI_STATUS 575 (ACPI_EFI_API *ACPI_EFI_GET_TIME) ( 576 ACPI_EFI_TIME *Time, 577 ACPI_EFI_TIME_CAPABILITIES *Capabilities); 578 579 typedef 580 ACPI_EFI_STATUS 581 (ACPI_EFI_API *ACPI_EFI_SET_TIME) ( 582 ACPI_EFI_TIME *Time); 583 584 585 /* 586 * Protocol handler functions 587 */ 588 typedef enum { 589 ACPI_EFI_NATIVE_INTERFACE, 590 ACPI_EFI_PCODE_INTERFACE 591 } ACPI_EFI_INTERFACE_TYPE; 592 593 typedef enum { 594 AcpiEfiAllHandles, 595 AcpiEfiByRegisterNotify, 596 AcpiEfiByProtocol 597 } ACPI_EFI_LOCATE_SEARCH_TYPE; 598 599 typedef 600 ACPI_EFI_STATUS 601 (ACPI_EFI_API *ACPI_EFI_INSTALL_PROTOCOL_INTERFACE) ( 602 ACPI_EFI_HANDLE *Handle, 603 ACPI_EFI_GUID *Protocol, 604 ACPI_EFI_INTERFACE_TYPE InterfaceType, 605 VOID *Interface); 606 607 typedef 608 ACPI_EFI_STATUS 609 (ACPI_EFI_API *ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE) ( 610 ACPI_EFI_HANDLE Handle, 611 ACPI_EFI_GUID *Protocol, 612 VOID *OldInterface, 613 VOID *NewInterface); 614 615 typedef 616 ACPI_EFI_STATUS 617 (ACPI_EFI_API *ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE) ( 618 ACPI_EFI_HANDLE Handle, 619 ACPI_EFI_GUID *Protocol, 620 VOID *Interface); 621 622 typedef 623 ACPI_EFI_STATUS 624 (ACPI_EFI_API *ACPI_EFI_HANDLE_PROTOCOL) ( 625 ACPI_EFI_HANDLE Handle, 626 ACPI_EFI_GUID *Protocol, 627 VOID **Interface); 628 629 typedef 630 ACPI_EFI_STATUS 631 (ACPI_EFI_API *ACPI_EFI_REGISTER_PROTOCOL_NOTIFY) ( 632 ACPI_EFI_GUID *Protocol, 633 ACPI_EFI_EVENT Event, 634 VOID **Registration); 635 636 typedef 637 ACPI_EFI_STATUS 638 (ACPI_EFI_API *ACPI_EFI_LOCATE_HANDLE) ( 639 ACPI_EFI_LOCATE_SEARCH_TYPE SearchType, 640 ACPI_EFI_GUID *Protocol, 641 VOID *SearchKey, 642 UINTN *BufferSize, 643 ACPI_EFI_HANDLE *Buffer); 644 645 typedef 646 ACPI_EFI_STATUS 647 (ACPI_EFI_API *ACPI_EFI_LOCATE_DEVICE_PATH) ( 648 ACPI_EFI_GUID *Protocol, 649 ACPI_EFI_DEVICE_PATH **DevicePath, 650 ACPI_EFI_HANDLE *Device); 651 652 typedef 653 ACPI_EFI_STATUS 654 (ACPI_EFI_API *ACPI_EFI_INSTALL_CONFIGURATION_TABLE) ( 655 ACPI_EFI_GUID *Guid, 656 VOID *Table); 657 658 #define ACPI_EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 659 #define ACPI_EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 660 #define ACPI_EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 661 #define ACPI_EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 662 #define ACPI_EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 663 #define ACPI_EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020 664 665 typedef 666 ACPI_EFI_STATUS 667 (ACPI_EFI_API *ACPI_EFI_OPEN_PROTOCOL) ( 668 ACPI_EFI_HANDLE Handle, 669 ACPI_EFI_GUID *Protocol, 670 VOID **Interface, 671 ACPI_EFI_HANDLE AgentHandle, 672 ACPI_EFI_HANDLE ControllerHandle, 673 UINT32 Attributes); 674 675 typedef 676 ACPI_EFI_STATUS 677 (ACPI_EFI_API *ACPI_EFI_CLOSE_PROTOCOL) ( 678 ACPI_EFI_HANDLE Handle, 679 ACPI_EFI_GUID *Protocol, 680 ACPI_EFI_HANDLE AgentHandle, 681 ACPI_EFI_HANDLE ControllerHandle); 682 683 typedef struct { 684 ACPI_EFI_HANDLE AgentHandle; 685 ACPI_EFI_HANDLE ControllerHandle; 686 UINT32 Attributes; 687 UINT32 OpenCount; 688 } ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY; 689 690 typedef 691 ACPI_EFI_STATUS 692 (ACPI_EFI_API *ACPI_EFI_OPEN_PROTOCOL_INFORMATION) ( 693 ACPI_EFI_HANDLE Handle, 694 ACPI_EFI_GUID *Protocol, 695 ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, 696 UINTN *EntryCount); 697 698 typedef 699 ACPI_EFI_STATUS 700 (ACPI_EFI_API *ACPI_EFI_PROTOCOLS_PER_HANDLE) ( 701 ACPI_EFI_HANDLE Handle, 702 ACPI_EFI_GUID ***ProtocolBuffer, 703 UINTN *ProtocolBufferCount); 704 705 typedef 706 ACPI_EFI_STATUS 707 (ACPI_EFI_API *ACPI_EFI_LOCATE_HANDLE_BUFFER) ( 708 ACPI_EFI_LOCATE_SEARCH_TYPE SearchType, 709 ACPI_EFI_GUID *Protocol, 710 VOID *SearchKey, 711 UINTN *NoHandles, 712 ACPI_EFI_HANDLE **Buffer); 713 714 typedef 715 ACPI_EFI_STATUS 716 (ACPI_EFI_API *ACPI_EFI_LOCATE_PROTOCOL) ( 717 ACPI_EFI_GUID *Protocol, 718 VOID *Registration, 719 VOID **Interface); 720 721 typedef 722 ACPI_EFI_STATUS 723 (ACPI_EFI_API *ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( 724 ACPI_EFI_HANDLE *Handle, 725 ...); 726 727 typedef 728 ACPI_EFI_STATUS 729 (ACPI_EFI_API *ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( 730 ACPI_EFI_HANDLE Handle, 731 ...); 732 733 typedef 734 ACPI_EFI_STATUS 735 (ACPI_EFI_API *ACPI_EFI_CALCULATE_CRC32) ( 736 VOID *Data, 737 UINTN DataSize, 738 UINT32 *Crc32); 739 740 typedef 741 VOID 742 (ACPI_EFI_API *ACPI_EFI_COPY_MEM) ( 743 VOID *Destination, 744 VOID *Source, 745 UINTN Length); 746 747 typedef 748 VOID 749 (ACPI_EFI_API *ACPI_EFI_SET_MEM) ( 750 VOID *Buffer, 751 UINTN Size, 752 UINT8 Value); 753 754 /* 755 * EFI Boot Services Table 756 */ 757 #define ACPI_EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42 758 #define ACPI_EFI_BOOT_SERVICES_REVISION (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION) 759 760 typedef struct _ACPI_EFI_BOOT_SERVICES { 761 ACPI_EFI_TABLE_HEADER Hdr; 762 763 #if 0 764 ACPI_EFI_RAISE_TPL RaiseTPL; 765 ACPI_EFI_RESTORE_TPL RestoreTPL; 766 #else 767 ACPI_EFI_UNKNOWN_INTERFACE RaiseTPL; 768 ACPI_EFI_UNKNOWN_INTERFACE RestoreTPL; 769 #endif 770 771 ACPI_EFI_ALLOCATE_PAGES AllocatePages; 772 ACPI_EFI_FREE_PAGES FreePages; 773 ACPI_EFI_GET_MEMORY_MAP GetMemoryMap; 774 ACPI_EFI_ALLOCATE_POOL AllocatePool; 775 ACPI_EFI_FREE_POOL FreePool; 776 777 #if 0 778 ACPI_EFI_CREATE_EVENT CreateEvent; 779 ACPI_EFI_SET_TIMER SetTimer; 780 ACPI_EFI_WAIT_FOR_EVENT WaitForEvent; 781 ACPI_EFI_SIGNAL_EVENT SignalEvent; 782 ACPI_EFI_CLOSE_EVENT CloseEvent; 783 ACPI_EFI_CHECK_EVENT CheckEvent; 784 #else 785 ACPI_EFI_UNKNOWN_INTERFACE CreateEvent; 786 ACPI_EFI_UNKNOWN_INTERFACE SetTimer; 787 ACPI_EFI_UNKNOWN_INTERFACE WaitForEvent; 788 ACPI_EFI_UNKNOWN_INTERFACE SignalEvent; 789 ACPI_EFI_UNKNOWN_INTERFACE CloseEvent; 790 ACPI_EFI_UNKNOWN_INTERFACE CheckEvent; 791 #endif 792 793 ACPI_EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; 794 ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; 795 ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; 796 ACPI_EFI_HANDLE_PROTOCOL HandleProtocol; 797 ACPI_EFI_HANDLE_PROTOCOL PCHandleProtocol; 798 ACPI_EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; 799 ACPI_EFI_LOCATE_HANDLE LocateHandle; 800 ACPI_EFI_LOCATE_DEVICE_PATH LocateDevicePath; 801 ACPI_EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; 802 803 ACPI_EFI_IMAGE_LOAD LoadImage; 804 ACPI_EFI_IMAGE_START StartImage; 805 ACPI_EFI_EXIT Exit; 806 ACPI_EFI_IMAGE_UNLOAD UnloadImage; 807 808 #if 0 809 ACPI_EFI_EXIT_BOOT_SERVICES ExitBootServices; 810 ACPI_EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; 811 #else 812 ACPI_EFI_UNKNOWN_INTERFACE ExitBootServices; 813 ACPI_EFI_UNKNOWN_INTERFACE GetNextMonotonicCount; 814 #endif 815 ACPI_EFI_STALL Stall; 816 ACPI_EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; 817 818 #if 0 819 ACPI_EFI_CONNECT_CONTROLLER ConnectController; 820 ACPI_EFI_DISCONNECT_CONTROLLER DisconnectController; 821 #else 822 ACPI_EFI_UNKNOWN_INTERFACE ConnectController; 823 ACPI_EFI_UNKNOWN_INTERFACE DisconnectController; 824 #endif 825 826 ACPI_EFI_OPEN_PROTOCOL OpenProtocol; 827 ACPI_EFI_CLOSE_PROTOCOL CloseProtocol; 828 ACPI_EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; 829 ACPI_EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; 830 ACPI_EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; 831 ACPI_EFI_LOCATE_PROTOCOL LocateProtocol; 832 ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; 833 ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; 834 835 ACPI_EFI_CALCULATE_CRC32 CalculateCrc32; 836 837 ACPI_EFI_COPY_MEM CopyMem; 838 ACPI_EFI_SET_MEM SetMem; 839 840 #if 0 841 ACPI_EFI_CREATE_EVENT_EX CreateEventEx; 842 #else 843 ACPI_EFI_UNKNOWN_INTERFACE CreateEventEx; 844 #endif 845 } ACPI_EFI_BOOT_SERVICES; 846 847 848 /* 849 * EFI Runtime Services Table 850 */ 851 #define ACPI_EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552 852 #define ACPI_EFI_RUNTIME_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION) 853 854 typedef struct _ACPI_EFI_RUNTIME_SERVICES { 855 ACPI_EFI_TABLE_HEADER Hdr; 856 857 ACPI_EFI_GET_TIME GetTime; 858 ACPI_EFI_SET_TIME SetTime; 859 #if 0 860 ACPI_EFI_GET_WAKEUP_TIME GetWakeupTime; 861 ACPI_EFI_SET_WAKEUP_TIME SetWakeupTime; 862 #else 863 ACPI_EFI_UNKNOWN_INTERFACE GetWakeupTime; 864 ACPI_EFI_UNKNOWN_INTERFACE SetWakeupTime; 865 #endif 866 867 #if 0 868 ACPI_EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap; 869 ACPI_EFI_CONVERT_POINTER ConvertPointer; 870 #else 871 ACPI_EFI_UNKNOWN_INTERFACE SetVirtualAddressMap; 872 ACPI_EFI_UNKNOWN_INTERFACE ConvertPointer; 873 #endif 874 875 #if 0 876 ACPI_EFI_GET_VARIABLE GetVariable; 877 ACPI_EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName; 878 ACPI_EFI_SET_VARIABLE SetVariable; 879 #else 880 ACPI_EFI_UNKNOWN_INTERFACE GetVariable; 881 ACPI_EFI_UNKNOWN_INTERFACE GetNextVariableName; 882 ACPI_EFI_UNKNOWN_INTERFACE SetVariable; 883 #endif 884 885 #if 0 886 ACPI_EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount; 887 ACPI_EFI_RESET_SYSTEM ResetSystem; 888 #else 889 ACPI_EFI_UNKNOWN_INTERFACE GetNextHighMonotonicCount; 890 ACPI_EFI_UNKNOWN_INTERFACE ResetSystem; 891 #endif 892 893 } ACPI_EFI_RUNTIME_SERVICES; 894 895 896 /* 897 * EFI System Table 898 */ 899 900 /* 901 * EFI Configuration Table and GUID definitions 902 */ 903 #define ACPI_TABLE_GUID \ 904 { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 905 #define ACPI_20_TABLE_GUID \ 906 { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } 907 908 typedef struct _ACPI_EFI_CONFIGURATION_TABLE { 909 ACPI_EFI_GUID VendorGuid; 910 VOID *VendorTable; 911 } ACPI_EFI_CONFIGURATION_TABLE; 912 913 914 #define ACPI_EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249 915 #define ACPI_EFI_SYSTEM_TABLE_REVISION (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION) 916 917 typedef struct _ACPI_EFI_SYSTEM_TABLE { 918 ACPI_EFI_TABLE_HEADER Hdr; 919 920 CHAR16 *FirmwareVendor; 921 UINT32 FirmwareRevision; 922 923 ACPI_EFI_HANDLE ConsoleInHandle; 924 ACPI_SIMPLE_INPUT_INTERFACE *ConIn; 925 926 ACPI_EFI_HANDLE ConsoleOutHandle; 927 ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut; 928 929 ACPI_EFI_HANDLE StandardErrorHandle; 930 ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr; 931 932 ACPI_EFI_RUNTIME_SERVICES *RuntimeServices; 933 ACPI_EFI_BOOT_SERVICES *BootServices; 934 935 UINTN NumberOfTableEntries; 936 ACPI_EFI_CONFIGURATION_TABLE *ConfigurationTable; 937 938 } ACPI_EFI_SYSTEM_TABLE; 939 940 941 /* 942 * EFI PCI I/O Protocol 943 */ 944 #define ACPI_EFI_PCI_IO_PROTOCOL \ 945 { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a} } 946 947 typedef enum { 948 AcpiEfiPciIoWidthUint8 = 0, 949 AcpiEfiPciIoWidthUint16, 950 AcpiEfiPciIoWidthUint32, 951 AcpiEfiPciIoWidthUint64, 952 AcpiEfiPciIoWidthFifoUint8, 953 AcpiEfiPciIoWidthFifoUint16, 954 AcpiEfiPciIoWidthFifoUint32, 955 AcpiEfiPciIoWidthFifoUint64, 956 AcpiEfiPciIoWidthFillUint8, 957 AcpiEfiPciIoWidthFillUint16, 958 AcpiEfiPciIoWidthFillUint32, 959 AcpiEfiPciIoWidthFillUint64, 960 AcpiEfiPciIoWidthMaximum 961 } ACPI_EFI_PCI_IO_PROTOCOL_WIDTH; 962 963 typedef 964 ACPI_EFI_STATUS 965 (ACPI_EFI_API *ACPI_EFI_PCI_IO_PROTOCOL_CONFIG)( 966 struct _ACPI_EFI_PCI_IO *This, 967 ACPI_EFI_PCI_IO_PROTOCOL_WIDTH Width, 968 UINT32 Offset, 969 UINTN Count, 970 VOID *Buffer); 971 972 typedef struct { 973 ACPI_EFI_PCI_IO_PROTOCOL_CONFIG Read; 974 ACPI_EFI_PCI_IO_PROTOCOL_CONFIG Write; 975 } ACPI_EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS; 976 977 typedef 978 ACPI_EFI_STATUS 979 (ACPI_EFI_API *ACPI_EFI_PCI_IO_PROTOCOL_GET_LOCATION)( 980 struct _ACPI_EFI_PCI_IO *This, 981 UINTN *SegmentNumber, 982 UINTN *BusNumber, 983 UINTN *DeviceNumber, 984 UINTN *FunctionNumber); 985 986 typedef struct _ACPI_EFI_PCI_IO { 987 ACPI_EFI_UNKNOWN_INTERFACE PollMem; 988 ACPI_EFI_UNKNOWN_INTERFACE PollIo; 989 ACPI_EFI_UNKNOWN_INTERFACE Mem; 990 ACPI_EFI_UNKNOWN_INTERFACE Io; 991 ACPI_EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci; 992 ACPI_EFI_UNKNOWN_INTERFACE CopyMem; 993 ACPI_EFI_UNKNOWN_INTERFACE Map; 994 ACPI_EFI_UNKNOWN_INTERFACE Unmap; 995 ACPI_EFI_UNKNOWN_INTERFACE AllocateBuffer; 996 ACPI_EFI_UNKNOWN_INTERFACE FreeBuffer; 997 ACPI_EFI_UNKNOWN_INTERFACE Flush; 998 ACPI_EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation; 999 ACPI_EFI_UNKNOWN_INTERFACE Attributes; 1000 ACPI_EFI_UNKNOWN_INTERFACE GetBarAttributes; 1001 ACPI_EFI_UNKNOWN_INTERFACE SetBarAttributes; 1002 UINT64 RomSize; 1003 VOID *RomImage; 1004 } ACPI_EFI_PCI_IO; 1005 1006 /* FILE abstraction */ 1007 1008 union acpi_efi_file { 1009 struct _ACPI_EFI_FILE_HANDLE File; 1010 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE ConOut; 1011 struct _ACPI_SIMPLE_INPUT_INTERFACE ConIn; 1012 }; 1013 1014 1015 /* EFI definitions */ 1016 1017 #if defined(_GNU_EFI) || defined(_EDK2_EFI) 1018 1019 /* 1020 * This is needed to hide platform specific code from ACPICA 1021 */ 1022 UINT64 ACPI_EFI_API 1023 DivU64x32 ( 1024 UINT64 Dividend, 1025 UINTN Divisor, 1026 UINTN *Remainder); 1027 1028 UINT64 ACPI_EFI_API 1029 MultU64x32 ( 1030 UINT64 Multiplicand, 1031 UINTN Multiplier); 1032 1033 UINT64 ACPI_EFI_API 1034 LShiftU64 ( 1035 UINT64 Operand, 1036 UINTN Count); 1037 1038 UINT64 ACPI_EFI_API 1039 RShiftU64 ( 1040 UINT64 Operand, 1041 UINTN Count); 1042 1043 /* 1044 * EFI specific prototypes 1045 */ 1046 ACPI_EFI_STATUS 1047 efi_main ( 1048 ACPI_EFI_HANDLE Image, 1049 ACPI_EFI_SYSTEM_TABLE *SystemTab); 1050 1051 int 1052 acpi_main ( 1053 int argc, 1054 char *argv[]); 1055 1056 #endif 1057 1058 extern ACPI_EFI_GUID AcpiGbl_LoadedImageProtocol; 1059 extern ACPI_EFI_GUID AcpiGbl_TextInProtocol; 1060 extern ACPI_EFI_GUID AcpiGbl_TextOutProtocol; 1061 extern ACPI_EFI_GUID AcpiGbl_FileSystemProtocol; 1062 extern ACPI_EFI_GUID AcpiGbl_GenericFileInfo; 1063 1064 #endif /* __ACEFIEX_H__ */ 1065