diff options
author | jhb <jhb@FreeBSD.org> | 2005-10-27 20:48:05 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-10-27 20:48:05 +0000 |
commit | 50133a977cb75b3f52603d4b351a8cf45bb556c8 (patch) | |
tree | ad47a4dbce619e18d7bff0335aa278a69f3c37c3 /sys | |
parent | 0a657a32e3cd6217b133d297cfeb84d5350217a3 (diff) | |
download | FreeBSD-src-50133a977cb75b3f52603d4b351a8cf45bb556c8.zip FreeBSD-src-50133a977cb75b3f52603d4b351a8cf45bb556c8.tar.gz |
Remove old ACPICA files from the INTEL vendor branch. They were removed
from HEAD about 4 years ago when we started flattening out the ACPICA
distribution.
Diffstat (limited to 'sys')
141 files changed, 0 insertions, 84217 deletions
diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmalloc.c b/sys/contrib/dev/acpica/Subsystem/Common/cmalloc.c deleted file mode 100644 index 243ee21..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmalloc.c +++ /dev/null @@ -1,799 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmalloc - local memory allocation routines - * $Revision: 84 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __CMALLOC_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acglobal.h" - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmalloc") - - -#ifdef ACPI_DEBUG_TRACK_ALLOCATIONS - -/* - * Most of this code is for tracking memory leaks in the subsystem, and it - * gets compiled out when the ACPI_DEBUG flag is not set. - * Every memory allocation is kept track of in a doubly linked list. Each - * element contains the caller's component, module name, function name, and - * line number. _CmAllocate and _CmCallocate call AcpiCmAddElementToAllocList - * to add an element to the list; deletion occurs in the bosy of _CmFree. - */ - - -/***************************************************************************** - * - * FUNCTION: AcpiCmSearchAllocList - * - * PARAMETERS: Address - Address of allocated memory - * - * RETURN: A list element if found; NULL otherwise. - * - * DESCRIPTION: Searches for an element in the global allocation tracking list. - * - ****************************************************************************/ - -ALLOCATION_INFO * -AcpiCmSearchAllocList ( - void *Address) -{ - ALLOCATION_INFO *Element = AcpiGbl_HeadAllocPtr; - - - /* Search for the address. */ - - while (Element) - { - if (Element->Address == Address) - { - return (Element); - } - - Element = Element->Next; - } - - return (NULL); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiCmAddElementToAllocList - * - * PARAMETERS: Address - Address of allocated memory - * Size - Size of the allocation - * AllocType - MEM_MALLOC or MEM_CALLOC - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: None. - * - * DESCRIPTION: Inserts an element into the global allocation tracking list. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiCmAddElementToAllocList ( - void *Address, - UINT32 Size, - UINT8 AllocType, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - ALLOCATION_INFO *Element; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("CmAddElementToAllocList", Address); - - - AcpiCmAcquireMutex (ACPI_MTX_MEMORY); - - /* Keep track of the running total of all allocations. */ - - AcpiGbl_CurrentAllocCount++; - AcpiGbl_RunningAllocCount++; - - if (AcpiGbl_MaxConcurrentAllocCount < AcpiGbl_CurrentAllocCount) - { - AcpiGbl_MaxConcurrentAllocCount = AcpiGbl_CurrentAllocCount; - } - - AcpiGbl_CurrentAllocSize += Size; - AcpiGbl_RunningAllocSize += Size; - - if (AcpiGbl_MaxConcurrentAllocSize < AcpiGbl_CurrentAllocSize) - { - AcpiGbl_MaxConcurrentAllocSize = AcpiGbl_CurrentAllocSize; - } - - /* If the head pointer is null, create the first element and fill it in. */ - - if (NULL == AcpiGbl_HeadAllocPtr) - { - AcpiGbl_HeadAllocPtr = - (ALLOCATION_INFO *) AcpiOsCallocate (sizeof (ALLOCATION_INFO)); - - if (!AcpiGbl_HeadAllocPtr) - { - DEBUG_PRINT (ACPI_ERROR, - ("Could not allocate memory info block\n")); - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - AcpiGbl_TailAllocPtr = AcpiGbl_HeadAllocPtr; - } - - else - { - AcpiGbl_TailAllocPtr->Next = - (ALLOCATION_INFO *) AcpiOsCallocate (sizeof (ALLOCATION_INFO)); - if (!AcpiGbl_TailAllocPtr->Next) - { - DEBUG_PRINT (ACPI_ERROR, - ("Could not allocate memory info block\n")); - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* error check */ - - AcpiGbl_TailAllocPtr->Next->Previous = AcpiGbl_TailAllocPtr; - AcpiGbl_TailAllocPtr = AcpiGbl_TailAllocPtr->Next; - } - - /* - * Search list for this address to make sure it is not already on the list. - * This will catch several kinds of problems. - */ - - Element = AcpiCmSearchAllocList (Address); - if (Element) - { - REPORT_ERROR (("CmAddElementToAllocList: Address already present in list! (%p)\n", - Address)); - - DEBUG_PRINT (ACPI_ERROR, ("Element %p Address %p\n", Element, Address)); - - BREAKPOINT3; - } - - /* Fill in the instance data. */ - - AcpiGbl_TailAllocPtr->Address = Address; - AcpiGbl_TailAllocPtr->Size = Size; - AcpiGbl_TailAllocPtr->AllocType = AllocType; - AcpiGbl_TailAllocPtr->Component = Component; - AcpiGbl_TailAllocPtr->Line = Line; - - STRNCPY (AcpiGbl_TailAllocPtr->Module, Module, MAX_MODULE_NAME); - - -UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiCmDeleteElementFromAllocList - * - * PARAMETERS: Address - Address of allocated memory - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: - * - * DESCRIPTION: Deletes an element from the global allocation tracking list. - * - ****************************************************************************/ - -void -AcpiCmDeleteElementFromAllocList ( - void *Address, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - ALLOCATION_INFO *Element; - UINT32 *DwordPtr; - UINT32 DwordLen; - UINT32 Size; - UINT32 i; - - - FUNCTION_TRACE ("CmDeleteElementFromAllocList"); - - if (NULL == AcpiGbl_HeadAllocPtr) - { - /* Boy we got problems. */ - - _REPORT_ERROR (Module, Line, Component, - ("CmDeleteElementFromAllocList: Empty allocation list, nothing to free!\n")); - - return_VOID; - } - - - AcpiCmAcquireMutex (ACPI_MTX_MEMORY); - - /* Keep track of the amount of memory allocated. */ - - Size = 0; - AcpiGbl_CurrentAllocCount--; - - if (AcpiGbl_HeadAllocPtr == AcpiGbl_TailAllocPtr) - { - if (Address != AcpiGbl_HeadAllocPtr->Address) - { - _REPORT_ERROR (Module, Line, Component, - ("CmDeleteElementFromAllocList: Deleting non-allocated memory\n")); - - goto Cleanup; - } - - Size = AcpiGbl_HeadAllocPtr->Size; - - AcpiOsFree (AcpiGbl_HeadAllocPtr); - AcpiGbl_HeadAllocPtr = NULL; - AcpiGbl_TailAllocPtr = NULL; - - DEBUG_PRINT (TRACE_ALLOCATIONS, - ("_CmFree: Allocation list deleted. There are no outstanding allocations\n")); - - goto Cleanup; - } - - - /* Search list for this address */ - - Element = AcpiCmSearchAllocList (Address); - if (Element) - { - /* cases: head, tail, other */ - - if (Element == AcpiGbl_HeadAllocPtr) - { - Element->Next->Previous = NULL; - AcpiGbl_HeadAllocPtr = Element->Next; - } - - else - { - if (Element == AcpiGbl_TailAllocPtr) - { - Element->Previous->Next = NULL; - AcpiGbl_TailAllocPtr = Element->Previous; - } - - else - { - Element->Previous->Next = Element->Next; - Element->Next->Previous = Element->Previous; - } - } - - - /* Mark the segment as deleted */ - - if (Element->Size >= 4) - { - DwordLen = DIV_4 (Element->Size); - DwordPtr = (UINT32 *) Element->Address; - - for (i = 0; i < DwordLen; i++) - { - DwordPtr[i] = 0x00DEAD00; - } - - /* Set obj type, desc, and ref count fields to all ones */ - - DwordPtr[0] = ACPI_UINT32_MAX; - if (Element->Size >= 8) - { - DwordPtr[1] = ACPI_UINT32_MAX; - } - } - - Size = Element->Size; - - MEMSET (Element, 0xEA, sizeof (ALLOCATION_INFO)); - - - if (Size == sizeof (ACPI_OPERAND_OBJECT)) - { - DEBUG_PRINT (TRACE_ALLOCATIONS, ("CmDelete: Freeing size %X (ACPI_OPERAND_OBJECT)\n", Size)); - } - else - { - DEBUG_PRINT (TRACE_ALLOCATIONS, ("CmDelete: Freeing size %X\n", Size)); - } - - AcpiOsFree (Element); - } - - else - { - _REPORT_ERROR (Module, Line, Component, - ("_CmFree: Entry not found in list\n")); - DEBUG_PRINT (ACPI_ERROR, - ("_CmFree: Entry %p was not found in allocation list\n", - Address)); - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); - return_VOID; - } - - -Cleanup: - - AcpiGbl_CurrentAllocSize -= Size; - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); - - return_VOID; -} - - -/***************************************************************************** - * - * FUNCTION: AcpiCmDumpAllocationInfo - * - * PARAMETERS: - * - * RETURN: None - * - * DESCRIPTION: Print some info about the outstanding allocations. - * - ****************************************************************************/ - -void -AcpiCmDumpAllocationInfo ( - void) -{ - FUNCTION_TRACE ("CmDumpAllocationInfo"); - - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current allocations", - AcpiGbl_CurrentAllocCount, - ROUND_UP_TO_1K (AcpiGbl_CurrentAllocSize))); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", - AcpiGbl_MaxConcurrentAllocCount, - ROUND_UP_TO_1K (AcpiGbl_MaxConcurrentAllocSize))); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current Internal objects", - AcpiGbl_CurrentObjectCount, - ROUND_UP_TO_1K (AcpiGbl_CurrentObjectSize))); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max internal objects", - AcpiGbl_MaxConcurrentObjectCount, - ROUND_UP_TO_1K (AcpiGbl_MaxConcurrentObjectSize))); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current Nodes", - AcpiGbl_CurrentNodeCount, - ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max Nodes", - AcpiGbl_MaxConcurrentNodeCount, - ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * sizeof (ACPI_NAMESPACE_NODE))))); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", - AcpiGbl_RunningObjectCount, - ROUND_UP_TO_1K (AcpiGbl_RunningObjectSize))); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", - AcpiGbl_RunningAllocCount, - ROUND_UP_TO_1K (AcpiGbl_RunningAllocSize))); - - return_VOID; -} - - -/***************************************************************************** - * - * FUNCTION: AcpiCmDumpCurrentAllocations - * - * PARAMETERS: Component - Component(s) to dump info for. - * Module - Module to dump info for. NULL means all. - * - * RETURN: None - * - * DESCRIPTION: Print a list of all outstanding allocations. - * - ****************************************************************************/ - -void -AcpiCmDumpCurrentAllocations ( - UINT32 Component, - NATIVE_CHAR *Module) -{ - ALLOCATION_INFO *Element = AcpiGbl_HeadAllocPtr; - UINT32 i; - - - FUNCTION_TRACE ("CmDumpCurrentAllocations"); - - - if (Element == NULL) - { - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("No outstanding allocations.\n")); - return_VOID; - } - - - /* - * Walk the allocation list. - */ - - AcpiCmAcquireMutex (ACPI_MTX_MEMORY); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("Outstanding allocations:\n")); - - for (i = 1; ; i++) /* Just a counter */ - { - if ((Element->Component & Component) && - ((Module == NULL) || (0 == STRCMP (Module, Element->Module)))) - { - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%p Len %04lX %9.9s-%ld", - Element->Address, Element->Size, Element->Module, - Element->Line)); - - /* Most of the elements will be internal objects. */ - - switch (((ACPI_OPERAND_OBJECT *) - (Element->Address))->Common.DataType) - { - case ACPI_DESC_TYPE_INTERNAL: - DEBUG_PRINT_RAW (TRACE_ALLOCATIONS | TRACE_TABLES, - (" ObjType %s", - AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *)(Element->Address))->Common.Type))); - break; - - case ACPI_DESC_TYPE_PARSER: - DEBUG_PRINT_RAW (TRACE_ALLOCATIONS | TRACE_TABLES, - (" ParseObj Opcode %04X", - ((ACPI_PARSE_OBJECT *)(Element->Address))->Opcode)); - break; - - case ACPI_DESC_TYPE_NAMED: - DEBUG_PRINT_RAW (TRACE_ALLOCATIONS | TRACE_TABLES, - (" Node %4.4s", - &((ACPI_NAMESPACE_NODE *)(Element->Address))->Name)); - break; - - case ACPI_DESC_TYPE_STATE: - DEBUG_PRINT_RAW (TRACE_ALLOCATIONS | TRACE_TABLES, - (" StateObj")); - break; - } - - DEBUG_PRINT_RAW (TRACE_ALLOCATIONS | TRACE_TABLES, ("\n")); - } - - if (Element->Next == NULL) - { - break; - } - - Element = Element->Next; - } - - AcpiCmReleaseMutex (ACPI_MTX_MEMORY); - - DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("Total number of unfreed allocations = %d(%X)\n", i,i)); - - - return_VOID; - -} -#endif /* #ifdef ACPI_DEBUG_TRACK_ALLOCATIONS */ - -/***************************************************************************** - * - * FUNCTION: _CmAllocate - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: The subsystem's equivalent of malloc. - * - ****************************************************************************/ - -void * -_CmAllocate ( - UINT32 Size, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - void *Address = NULL; - - - FUNCTION_TRACE_U32 ("_CmAllocate", Size); - - - /* Check for an inadvertent size of zero bytes */ - - if (!Size) - { - _REPORT_ERROR (Module, Line, Component, - ("CmAllocate: Attempt to allocate zero bytes\n")); - Size = 1; - } - - Address = AcpiOsAllocate (Size); - if (!Address) - { - /* Report allocation error */ - - _REPORT_ERROR (Module, Line, Component, - ("CmAllocate: Could not allocate size %X\n", Size)); - - return_VALUE (NULL); - } - -#ifdef ACPI_DEBUG_TRACK_ALLOCATIONS - - if (ACPI_FAILURE (AcpiCmAddElementToAllocList (Address, Size, MEM_MALLOC, - Component, Module, Line))) - { - AcpiOsFree (Address); - return_PTR (NULL); - } - - DEBUG_PRINT (TRACE_ALLOCATIONS, - ("CmAllocate: %p Size %X\n", Address, Size)); -#endif - - return_PTR (Address); -} - - -/***************************************************************************** - * - * FUNCTION: _CmCallocate - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: Subsystem equivalent of calloc. - * - ****************************************************************************/ - -void * -_CmCallocate ( - UINT32 Size, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - void *Address = NULL; - - - FUNCTION_TRACE_U32 ("_CmCallocate", Size); - - - /* Check for an inadvertent size of zero bytes */ - - if (!Size) - { - _REPORT_ERROR (Module, Line, Component, - ("CmCallocate: Attempt to allocate zero bytes\n")); - return_VALUE (NULL); - } - - - Address = AcpiOsCallocate (Size); - - if (!Address) - { - /* Report allocation error */ - - _REPORT_ERROR (Module, Line, Component, - ("CmCallocate: Could not allocate size %X\n", Size)); - return_VALUE (NULL); - } - -#ifdef ACPI_DEBUG_TRACK_ALLOCATIONS - - if (ACPI_FAILURE (AcpiCmAddElementToAllocList (Address, Size, MEM_CALLOC, - Component,Module, Line))) - { - AcpiOsFree (Address); - return_PTR (NULL); - } -#endif - - DEBUG_PRINT (TRACE_ALLOCATIONS, - ("CmCallocate: %p Size %X\n", Address, Size)); - - return_PTR (Address); -} - - -/***************************************************************************** - * - * FUNCTION: _CmFree - * - * PARAMETERS: Address - Address of the memory to deallocate - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: None - * - * DESCRIPTION: Frees the memory at Address - * - ****************************************************************************/ - -void -_CmFree ( - void *Address, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line) -{ - FUNCTION_TRACE_PTR ("_CmFree", Address); - - - if (NULL == Address) - { - _REPORT_ERROR (Module, Line, Component, - ("_CmFree: Trying to delete a NULL address\n")); - - return_VOID; - } - -#ifdef ACPI_DEBUG_TRACK_ALLOCATIONS - AcpiCmDeleteElementFromAllocList (Address, Component, Module, Line); -#endif - - AcpiOsFree (Address); - - DEBUG_PRINT (TRACE_ALLOCATIONS, ("CmFree: %p freed\n", Address)); - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmclib.c b/sys/contrib/dev/acpica/Subsystem/Common/cmclib.c deleted file mode 100644 index 2318d9e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmclib.c +++ /dev/null @@ -1,953 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmclib - Local implementation of C library functions - * $Revision: 32 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __CMCLIB_C__ - -#include "acpi.h" -#include "acevents.h" -#include "achware.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "amlcode.h" - -/* - * These implementations of standard C Library routines can optionally be - * used if a C library is not available. In general, they are less efficient - * than an inline or assembly implementation - */ - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmclib") - - -#ifndef ACPI_USE_SYSTEM_CLIBRARY - -/******************************************************************************* - * - * FUNCTION: strlen - * - * PARAMETERS: String - Null terminated string - * - * RETURN: Length - * - * DESCRIPTION: Returns the length of the input string - * - ******************************************************************************/ - - -NATIVE_UINT -AcpiCmStrlen ( - const NATIVE_CHAR *String) -{ - NATIVE_UINT Length = 0; - - - /* Count the string until a null is encountered */ - - while (*String) - { - Length++; - String++; - } - - return (Length); -} - - -/******************************************************************************* - * - * FUNCTION: strcpy - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * - * RETURN: DstString - * - * DESCRIPTION: Copy a null terminated string - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiCmStrcpy ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString) -{ - NATIVE_CHAR *String = DstString; - - - /* Move bytes brute force */ - - while (*SrcString) - { - *String = *SrcString; - - String++; - SrcString++; - } - - /* Null terminate */ - - *String = 0; - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: strncpy - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * Count - Maximum # of bytes to copy - * - * RETURN: DstString - * - * DESCRIPTION: Copy a null terminated string, with a maximum length - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiCmStrncpy ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString, - NATIVE_UINT Count) -{ - NATIVE_CHAR *String = DstString; - - - /* Copy the string */ - - for (String = DstString; - Count && (Count--, (*String++ = *SrcString++)); ) - {;} - - /* Pad with nulls if necessary */ - - while (Count--) - { - *String = 0; - String++; - } - - /* Return original pointer */ - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: strcmp - * - * PARAMETERS: String1 - First string - * String2 - Second string - * - * RETURN: Index where strings mismatched, or 0 if strings matched - * - * DESCRIPTION: Compare two null terminated strings - * - ******************************************************************************/ - -UINT32 -AcpiCmStrcmp ( - const NATIVE_CHAR *String1, - const NATIVE_CHAR *String2) -{ - - - for ( ; (*String1 == *String2); String2++) - { - if (!*String1++) - { - return (0); - } - } - - - return ((unsigned char) *String1 - (unsigned char) *String2); -} - - -/******************************************************************************* - * - * FUNCTION: strncmp - * - * PARAMETERS: String1 - First string - * String2 - Second string - * Count - Maximum # of bytes to compare - * - * RETURN: Index where strings mismatched, or 0 if strings matched - * - * DESCRIPTION: Compare two null terminated strings, with a maximum length - * - ******************************************************************************/ - -UINT32 -AcpiCmStrncmp ( - const NATIVE_CHAR *String1, - const NATIVE_CHAR *String2, - NATIVE_UINT Count) -{ - - - for ( ; Count-- && (*String1 == *String2); String2++) - { - if (!*String1++) - { - return (0); - } - } - - return ((Count == -1) ? 0 : ((unsigned char) *String1 - - (unsigned char) *String2)); -} - - -/******************************************************************************* - * - * FUNCTION: Strcat - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * - * RETURN: DstString - * - * DESCRIPTION: Append a null terminated string to a null terminated string - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiCmStrcat ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString) -{ - NATIVE_CHAR *String; - - - /* Find end of the destination string */ - - for (String = DstString; *String++; ) - { ; } - - /* Concatinate the string */ - - for (--String; (*String++ = *SrcString++); ) - { ; } - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: strncat - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * Count - Maximum # of bytes to copy - * - * RETURN: DstString - * - * DESCRIPTION: Append a null terminated string to a null terminated string, - * with a maximum count. - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiCmStrncat ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString, - NATIVE_UINT Count) -{ - NATIVE_CHAR *String; - - - if (Count) - { - /* Find end of the destination string */ - - for (String = DstString; *String++; ) - { ; } - - /* Concatinate the string */ - - for (--String; (*String++ = *SrcString++) && --Count; ) - { ; } - - /* Null terminate if necessary */ - - if (!Count) - { - *String = 0; - } - } - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: memcpy - * - * PARAMETERS: Dest - Target of the copy - * Src - Source buffer to copy - * Count - Number of bytes to copy - * - * RETURN: Dest - * - * DESCRIPTION: Copy arbitrary bytes of memory - * - ******************************************************************************/ - -void * -AcpiCmMemcpy ( - void *Dest, - const void *Src, - NATIVE_UINT Count) -{ - NATIVE_CHAR *New = (NATIVE_CHAR *) Dest; - NATIVE_CHAR *Old = (NATIVE_CHAR *) Src; - - - while (Count) - { - *New = *Old; - New++; - Old++; - Count--; - } - - return (Dest); -} - - -/******************************************************************************* - * - * FUNCTION: memset - * - * PARAMETERS: Dest - Buffer to set - * Value - Value to set each byte of memory - * Count - Number of bytes to set - * - * RETURN: Dest - * - * DESCRIPTION: Initialize a buffer to a known value. - * - ******************************************************************************/ - -void * -AcpiCmMemset ( - void *Dest, - NATIVE_UINT Value, - NATIVE_UINT Count) -{ - NATIVE_CHAR *New = (NATIVE_CHAR *) Dest; - - - while (Count) - { - *New = (char) Value; - New++; - Count--; - } - - return (Dest); -} - - -#define NEGATIVE 1 -#define POSITIVE 0 - - -#define _ACPI_XA 0x00 /* extra alphabetic - not supported */ -#define _ACPI_XS 0x40 /* extra space */ -#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ -#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ -#define _ACPI_DI 0x04 /* '0'-'9' */ -#define _ACPI_LO 0x02 /* 'a'-'z' */ -#define _ACPI_PU 0x10 /* punctuation */ -#define _ACPI_SP 0x08 /* space */ -#define _ACPI_UP 0x01 /* 'A'-'Z' */ -#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ - -static const UINT8 _acpi_ctype[257] = { - _ACPI_CN, /* 0x0 0. */ - _ACPI_CN, /* 0x1 1. */ - _ACPI_CN, /* 0x2 2. */ - _ACPI_CN, /* 0x3 3. */ - _ACPI_CN, /* 0x4 4. */ - _ACPI_CN, /* 0x5 5. */ - _ACPI_CN, /* 0x6 6. */ - _ACPI_CN, /* 0x7 7. */ - _ACPI_CN, /* 0x8 8. */ - _ACPI_CN|_ACPI_SP, /* 0x9 9. */ - _ACPI_CN|_ACPI_SP, /* 0xA 10. */ - _ACPI_CN|_ACPI_SP, /* 0xB 11. */ - _ACPI_CN|_ACPI_SP, /* 0xC 12. */ - _ACPI_CN|_ACPI_SP, /* 0xD 13. */ - _ACPI_CN, /* 0xE 14. */ - _ACPI_CN, /* 0xF 15. */ - _ACPI_CN, /* 0x10 16. */ - _ACPI_CN, /* 0x11 17. */ - _ACPI_CN, /* 0x12 18. */ - _ACPI_CN, /* 0x13 19. */ - _ACPI_CN, /* 0x14 20. */ - _ACPI_CN, /* 0x15 21. */ - _ACPI_CN, /* 0x16 22. */ - _ACPI_CN, /* 0x17 23. */ - _ACPI_CN, /* 0x18 24. */ - _ACPI_CN, /* 0x19 25. */ - _ACPI_CN, /* 0x1A 26. */ - _ACPI_CN, /* 0x1B 27. */ - _ACPI_CN, /* 0x1C 28. */ - _ACPI_CN, /* 0x1D 29. */ - _ACPI_CN, /* 0x1E 30. */ - _ACPI_CN, /* 0x1F 31. */ - _ACPI_XS|_ACPI_SP, /* 0x20 32. ' ' */ - _ACPI_PU, /* 0x21 33. '!' */ - _ACPI_PU, /* 0x22 34. '"' */ - _ACPI_PU, /* 0x23 35. '#' */ - _ACPI_PU, /* 0x24 36. '$' */ - _ACPI_PU, /* 0x25 37. '%' */ - _ACPI_PU, /* 0x26 38. '&' */ - _ACPI_PU, /* 0x27 39. ''' */ - _ACPI_PU, /* 0x28 40. '(' */ - _ACPI_PU, /* 0x29 41. ')' */ - _ACPI_PU, /* 0x2A 42. '*' */ - _ACPI_PU, /* 0x2B 43. '+' */ - _ACPI_PU, /* 0x2C 44. ',' */ - _ACPI_PU, /* 0x2D 45. '-' */ - _ACPI_PU, /* 0x2E 46. '.' */ - _ACPI_PU, /* 0x2F 47. '/' */ - _ACPI_XD|_ACPI_DI, /* 0x30 48. '0' */ - _ACPI_XD|_ACPI_DI, /* 0x31 49. '1' */ - _ACPI_XD|_ACPI_DI, /* 0x32 50. '2' */ - _ACPI_XD|_ACPI_DI, /* 0x33 51. '3' */ - _ACPI_XD|_ACPI_DI, /* 0x34 52. '4' */ - _ACPI_XD|_ACPI_DI, /* 0x35 53. '5' */ - _ACPI_XD|_ACPI_DI, /* 0x36 54. '6' */ - _ACPI_XD|_ACPI_DI, /* 0x37 55. '7' */ - _ACPI_XD|_ACPI_DI, /* 0x38 56. '8' */ - _ACPI_XD|_ACPI_DI, /* 0x39 57. '9' */ - _ACPI_PU, /* 0x3A 58. ':' */ - _ACPI_PU, /* 0x3B 59. ';' */ - _ACPI_PU, /* 0x3C 60. '<' */ - _ACPI_PU, /* 0x3D 61. '=' */ - _ACPI_PU, /* 0x3E 62. '>' */ - _ACPI_PU, /* 0x3F 63. '?' */ - _ACPI_PU, /* 0x40 64. '@' */ - _ACPI_XD|_ACPI_UP, /* 0x41 65. 'A' */ - _ACPI_XD|_ACPI_UP, /* 0x42 66. 'B' */ - _ACPI_XD|_ACPI_UP, /* 0x43 67. 'C' */ - _ACPI_XD|_ACPI_UP, /* 0x44 68. 'D' */ - _ACPI_XD|_ACPI_UP, /* 0x45 69. 'E' */ - _ACPI_XD|_ACPI_UP, /* 0x46 70. 'F' */ - _ACPI_UP, /* 0x47 71. 'G' */ - _ACPI_UP, /* 0x48 72. 'H' */ - _ACPI_UP, /* 0x49 73. 'I' */ - _ACPI_UP, /* 0x4A 74. 'J' */ - _ACPI_UP, /* 0x4B 75. 'K' */ - _ACPI_UP, /* 0x4C 76. 'L' */ - _ACPI_UP, /* 0x4D 77. 'M' */ - _ACPI_UP, /* 0x4E 78. 'N' */ - _ACPI_UP, /* 0x4F 79. 'O' */ - _ACPI_UP, /* 0x50 80. 'P' */ - _ACPI_UP, /* 0x51 81. 'Q' */ - _ACPI_UP, /* 0x52 82. 'R' */ - _ACPI_UP, /* 0x53 83. 'S' */ - _ACPI_UP, /* 0x54 84. 'T' */ - _ACPI_UP, /* 0x55 85. 'U' */ - _ACPI_UP, /* 0x56 86. 'V' */ - _ACPI_UP, /* 0x57 87. 'W' */ - _ACPI_UP, /* 0x58 88. 'X' */ - _ACPI_UP, /* 0x59 89. 'Y' */ - _ACPI_UP, /* 0x5A 90. 'Z' */ - _ACPI_PU, /* 0x5B 91. '[' */ - _ACPI_PU, /* 0x5C 92. '\' */ - _ACPI_PU, /* 0x5D 93. ']' */ - _ACPI_PU, /* 0x5E 94. '^' */ - _ACPI_PU, /* 0x5F 95. '_' */ - _ACPI_PU, /* 0x60 96. '`' */ - _ACPI_XD|_ACPI_LO, /* 0x61 97. 'a' */ - _ACPI_XD|_ACPI_LO, /* 0x62 98. 'b' */ - _ACPI_XD|_ACPI_LO, /* 0x63 99. 'c' */ - _ACPI_XD|_ACPI_LO, /* 0x64 100. 'd' */ - _ACPI_XD|_ACPI_LO, /* 0x65 101. 'e' */ - _ACPI_XD|_ACPI_LO, /* 0x66 102. 'f' */ - _ACPI_LO, /* 0x67 103. 'g' */ - _ACPI_LO, /* 0x68 104. 'h' */ - _ACPI_LO, /* 0x69 105. 'i' */ - _ACPI_LO, /* 0x6A 106. 'j' */ - _ACPI_LO, /* 0x6B 107. 'k' */ - _ACPI_LO, /* 0x6C 108. 'l' */ - _ACPI_LO, /* 0x6D 109. 'm' */ - _ACPI_LO, /* 0x6E 110. 'n' */ - _ACPI_LO, /* 0x6F 111. 'o' */ - _ACPI_LO, /* 0x70 112. 'p' */ - _ACPI_LO, /* 0x71 113. 'q' */ - _ACPI_LO, /* 0x72 114. 'r' */ - _ACPI_LO, /* 0x73 115. 's' */ - _ACPI_LO, /* 0x74 116. 't' */ - _ACPI_LO, /* 0x75 117. 'u' */ - _ACPI_LO, /* 0x76 118. 'v' */ - _ACPI_LO, /* 0x77 119. 'w' */ - _ACPI_LO, /* 0x78 120. 'x' */ - _ACPI_LO, /* 0x79 121. 'y' */ - _ACPI_LO, /* 0x7A 122. 'z' */ - _ACPI_PU, /* 0x7B 123. '{' */ - _ACPI_PU, /* 0x7C 124. '|' */ - _ACPI_PU, /* 0x7D 125. '}' */ - _ACPI_PU, /* 0x7E 126. '~' */ - _ACPI_CN, /* 0x7F 127. */ - - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x80 to 0x8F */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x90 to 0x9F */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xA0 to 0xAF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xB0 to 0xBF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xC0 to 0xCF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xD0 to 0xDF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xE0 to 0xEF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0xF0 to 0x100 */ -}; - -#define IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP)) -#define IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO)) -#define IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI)) -#define IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP)) -#define IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD)) - - -/******************************************************************************* - * - * FUNCTION: AcpiCmToUpper - * - * PARAMETERS: - * - * RETURN: - * - * DESCRIPTION: Convert character to uppercase - * - ******************************************************************************/ - -UINT32 -AcpiCmToUpper ( - UINT32 c) -{ - - return (IS_LOWER(c) ? ((c)-0x20) : (c)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmToLower - * - * PARAMETERS: - * - * RETURN: - * - * DESCRIPTION: Convert character to lowercase - * - ******************************************************************************/ - -UINT32 -AcpiCmToLower ( - UINT32 c) -{ - - return (IS_UPPER(c) ? ((c)+0x20) : (c)); -} - - -/******************************************************************************* - * - * FUNCTION: strupr - * - * PARAMETERS: SrcString - The source string to convert to - * - * RETURN: SrcString - * - * DESCRIPTION: Convert string to uppercase - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiCmStrupr ( - NATIVE_CHAR *SrcString) -{ - NATIVE_CHAR *String; - - - /* Walk entire string, uppercasing the letters */ - - for (String = SrcString; *String; ) - { - *String = (char) AcpiCmToUpper (*String); - String++; - } - - - return (SrcString); -} - - -/******************************************************************************* - * - * FUNCTION: strstr - * - * PARAMETERS: String1 - - * String2 - * - * RETURN: - * - * DESCRIPTION: Checks if String2 occurs in String1. This is not really a - * full implementation of strstr, only sufficient for command - * matching - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiCmStrstr ( - NATIVE_CHAR *String1, - NATIVE_CHAR *String2) -{ - NATIVE_CHAR *String; - - - if (AcpiCmStrlen (String2) > AcpiCmStrlen (String1)) - { - return (NULL); - } - - /* Walk entire string, comparing the letters */ - - for (String = String1; *String2; ) - { - if (*String2 != *String) - { - return (NULL); - } - - String2++; - String++; - } - - - return (String1); -} - - -/******************************************************************************* - * - * FUNCTION: strtoul - * - * PARAMETERS: String - Null terminated string - * Terminater - Where a pointer to the terminating byte is returned - * Base - Radix of the string - * - * RETURN: Converted value - * - * DESCRIPTION: Convert a string into an unsigned value. - * - ******************************************************************************/ - -UINT32 -AcpiCmStrtoul ( - const NATIVE_CHAR *String, - NATIVE_CHAR **Terminator, - NATIVE_UINT Base) -{ - UINT32 converted = 0; - UINT32 index; - UINT32 sign; - const NATIVE_CHAR *StringStart; - UINT32 ReturnValue = 0; - ACPI_STATUS Status = AE_OK; - - - /* - * Save the value of the pointer to the buffer's first - * character, save the current errno value, and then - * skip over any white space in the buffer: - */ - StringStart = String; - while (IS_SPACE (*String) || *String == '\t') - { - ++String; - } - - /* - * The buffer may contain an optional plus or minus sign. - * If it does, then skip over it but remember what is was: - */ - if (*String == '-') - { - sign = NEGATIVE; - ++String; - } - - else if (*String == '+') - { - ++String; - sign = POSITIVE; - } - - else - { - sign = POSITIVE; - } - - /* - * If the input parameter Base is zero, then we need to - * determine if it is octal, decimal, or hexadecimal: - */ - if (Base == 0) - { - if (*String == '0') - { - if (AcpiCmToLower (*(++String)) == 'x') - { - Base = 16; - ++String; - } - - else - { - Base = 8; - } - } - - else - { - Base = 10; - } - } - - else if (Base < 2 || Base > 36) - { - /* - * The specified Base parameter is not in the domain of - * this function: - */ - goto done; - } - - /* - * For octal and hexadecimal bases, skip over the leading - * 0 or 0x, if they are present. - */ - if (Base == 8 && *String == '0') - { - String++; - } - - if (Base == 16 && - *String == '0' && - AcpiCmToLower (*(++String)) == 'x') - { - String++; - } - - - /* - * Main loop: convert the string to an unsigned long: - */ - while (*String) - { - if (IS_DIGIT (*String)) - { - index = *String - '0'; - } - - else - { - index = AcpiCmToUpper (*String); - if (IS_UPPER (index)) - { - index = index - 'A' + 10; - } - - else - { - goto done; - } - } - - if (index >= Base) - { - goto done; - } - - /* - * Check to see if value is out of range: - */ - - if (ReturnValue > ((ACPI_UINT32_MAX - (UINT32) index) / - (UINT32) Base)) - { - Status = AE_ERROR; - ReturnValue = 0L; /* reset */ - } - - else - { - ReturnValue *= Base; - ReturnValue += index; - converted = 1; - } - - ++String; - } - -done: - /* - * If appropriate, update the caller's pointer to the next - * unconverted character in the buffer. - */ - if (Terminator) - { - if (converted == 0 && ReturnValue == 0L && String != NULL) - { - *Terminator = (NATIVE_CHAR *) StringStart; - } - - else - { - *Terminator = (NATIVE_CHAR *) String; - } - } - - if (Status == AE_ERROR) - { - ReturnValue = ACPI_UINT32_MAX; - } - - /* - * If a minus sign was present, then "the conversion is negated": - */ - if (sign == NEGATIVE) - { - ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; - } - - return (ReturnValue); -} - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmcopy.c b/sys/contrib/dev/acpica/Subsystem/Common/cmcopy.c deleted file mode 100644 index a081e83..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmcopy.c +++ /dev/null @@ -1,840 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmcopy - Internal to external object translation utilities - * $Revision: 66 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __CMCOPY_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "amlcode.h" - - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmcopy") - - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyIsimpleToEsimple - * - * PARAMETERS: *InternalObject - Pointer to the object we are examining - * *Buffer - Where the object is returned - * *SpaceUsed - Where the data length is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to place a simple object in a user - * buffer. - * - * The buffer is assumed to have sufficient space for the object. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiCmCopyIsimpleToEsimple ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_OBJECT *ExternalObject, - UINT8 *DataSpace, - UINT32 *BufferSpaceUsed) -{ - UINT32 Length = 0; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("CmCopyIsimpleToEsimple"); - - - /* - * Check for NULL object case (could be an uninitialized - * package element - */ - - if (!InternalObject) - { - *BufferSpaceUsed = 0; - return_ACPI_STATUS (AE_OK); - } - - /* Always clear the external object */ - - MEMSET (ExternalObject, 0, sizeof (ACPI_OBJECT)); - - /* - * In general, the external object will be the same type as - * the internal object - */ - - ExternalObject->Type = InternalObject->Common.Type; - - /* However, only a limited number of external types are supported */ - - switch (InternalObject->Common.Type) - { - - case ACPI_TYPE_STRING: - - Length = InternalObject->String.Length + 1; - ExternalObject->String.Length = InternalObject->String.Length; - ExternalObject->String.Pointer = (NATIVE_CHAR *) DataSpace; - MEMCPY ((void *) DataSpace, (void *) InternalObject->String.Pointer, Length); - break; - - - case ACPI_TYPE_BUFFER: - - Length = InternalObject->Buffer.Length; - ExternalObject->Buffer.Length = InternalObject->Buffer.Length; - ExternalObject->Buffer.Pointer = DataSpace; - MEMCPY ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer, Length); - break; - - - case ACPI_TYPE_INTEGER: - - ExternalObject->Integer.Value= InternalObject->Integer.Value; - break; - - - case INTERNAL_TYPE_REFERENCE: - - /* - * This is an object reference. Attempt to dereference it. - */ - - switch (InternalObject->Reference.OpCode) - { - case AML_ZERO_OP: - ExternalObject->Type = ACPI_TYPE_INTEGER; - ExternalObject->Integer.Value = 0; - break; - - case AML_ONE_OP: - ExternalObject->Type = ACPI_TYPE_INTEGER; - ExternalObject->Integer.Value = 1; - break; - - case AML_ONES_OP: - ExternalObject->Type = ACPI_TYPE_INTEGER; - ExternalObject->Integer.Value = ACPI_INTEGER_MAX; - break; - - case AML_NAMEPATH_OP: - /* - * This is a named reference, get the string. We already know that - * we have room for it, use max length - */ - Length = MAX_STRING_LENGTH; - ExternalObject->Type = ACPI_TYPE_STRING; - ExternalObject->String.Pointer = (NATIVE_CHAR *) DataSpace; - Status = AcpiNsHandleToPathname ((ACPI_HANDLE *) InternalObject->Reference.Node, - &Length, (char *) DataSpace); - break; - - default: - /* - * Use the object type of "Any" to indicate a reference - * to object containing a handle to an ACPI named object. - */ - ExternalObject->Type = ACPI_TYPE_ANY; - ExternalObject->Reference.Handle = InternalObject->Reference.Node; - break; - } - break; - - - case ACPI_TYPE_PROCESSOR: - - ExternalObject->Processor.ProcId = InternalObject->Processor.ProcId; - ExternalObject->Processor.PblkAddress = InternalObject->Processor.Address; - ExternalObject->Processor.PblkLength = InternalObject->Processor.Length; - break; - - - case ACPI_TYPE_POWER: - - ExternalObject->PowerResource.SystemLevel = - InternalObject->PowerResource.SystemLevel; - - ExternalObject->PowerResource.ResourceOrder = - InternalObject->PowerResource.ResourceOrder; - break; - - - default: - /* - * There is no corresponding external object type - */ - return_ACPI_STATUS (AE_SUPPORT); - break; - } - - - - *BufferSpaceUsed = (UINT32) ROUND_UP_TO_NATIVE_WORD (Length); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyIelementToEelement - * - * PARAMETERS: ACPI_PKG_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Copy one package element to another package element - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCopyIelementToEelement ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; - UINT32 ObjectSpace; - UINT32 ThisIndex; - ACPI_OBJECT *TargetObject; - - - - ThisIndex = State->Pkg.Index; - TargetObject = (ACPI_OBJECT *) - &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex]; - - - switch (ObjectType) - { - case 0: - - /* - * This is a simple or null object -- get the size - */ - - Status = AcpiCmCopyIsimpleToEsimple (SourceObject, - TargetObject, Info->FreeSpace, &ObjectSpace); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - break; - - case 1: - - /* - * Build the package object - */ - TargetObject->Type = ACPI_TYPE_PACKAGE; - TargetObject->Package.Count = SourceObject->Package.Count; - TargetObject->Package.Elements = (ACPI_OBJECT *) Info->FreeSpace; - - /* - * Pass the new package object back to the package walk routine - */ - State->Pkg.ThisTargetObj = TargetObject; - - /* - * Save space for the array of objects (Package elements) - * update the buffer length counter - */ - ObjectSpace = (UINT32) ROUND_UP_TO_NATIVE_WORD ( - TargetObject->Package.Count * sizeof (ACPI_OBJECT)); - break; - - default: - return (AE_BAD_PARAMETER); - } - - - Info->FreeSpace += ObjectSpace; - Info->Length += ObjectSpace; - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyIpackageToEpackage - * - * PARAMETERS: *InternalObject - Pointer to the object we are returning - * *Buffer - Where the object is returned - * *SpaceUsed - Where the object length is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to place a package object in a user - * buffer. A package object by definition contains other objects. - * - * The buffer is assumed to have sufficient space for the object. - * The caller must have verified the buffer length needed using the - * AcpiCmGetObjectSize function before calling this function. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiCmCopyIpackageToEpackage ( - ACPI_OPERAND_OBJECT *InternalObject, - UINT8 *Buffer, - UINT32 *SpaceUsed) -{ - ACPI_OBJECT *ExternalObject; - ACPI_STATUS Status; - ACPI_PKG_INFO Info; - - - FUNCTION_TRACE ("CmCopyIpackageToEpackage"); - - - /* - * First package at head of the buffer - */ - ExternalObject = (ACPI_OBJECT *) Buffer; - - /* - * Free space begins right after the first package - */ - Info.Length = 0; - Info.ObjectSpace = 0; - Info.NumPackages = 1; - Info.FreeSpace = Buffer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - - - - ExternalObject->Type = InternalObject->Common.Type; - ExternalObject->Package.Count = InternalObject->Package.Count; - ExternalObject->Package.Elements = (ACPI_OBJECT *) Info.FreeSpace; - - - /* - * Build an array of ACPI_OBJECTS in the buffer - * and move the free space past it - */ - - Info.FreeSpace += ExternalObject->Package.Count * - ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - - - Status = AcpiCmWalkPackageTree (InternalObject, ExternalObject, - AcpiCmCopyIelementToEelement, &Info); - - *SpaceUsed = Info.Length; - - return_ACPI_STATUS (Status); - -} - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyIobjectToEobject - * - * PARAMETERS: *InternalObject - The internal object to be converted - * *BufferPtr - Where the object is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to build an API object to be returned to - * the caller. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCopyIobjectToEobject ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("CmCopyIobjectToEobject"); - - - if (IS_THIS_OBJECT_TYPE (InternalObject, ACPI_TYPE_PACKAGE)) - { - /* - * Package object: Copy all subobjects (including - * nested packages) - */ - Status = AcpiCmCopyIpackageToEpackage (InternalObject, - RetBuffer->Pointer, &RetBuffer->Length); - } - - else - { - /* - * Build a simple object (no nested objects) - */ - Status = AcpiCmCopyIsimpleToEsimple (InternalObject, - (ACPI_OBJECT *) RetBuffer->Pointer, - ((UINT8 *) RetBuffer->Pointer + - ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), - &RetBuffer->Length); - /* - * build simple does not include the object size in the length - * so we add it in here - */ - RetBuffer->Length += sizeof (ACPI_OBJECT); - } - - return_ACPI_STATUS (Status); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyEsimpleToIsimple - * - * PARAMETERS: *ExternalObject - The external object to be converted - * *InternalObject - Where the internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: This function copies an external object to an internal one. - * NOTE: Pointers can be copied, we don't need to copy data. - * (The pointers have to be valid in our address space no matter - * what we do with them!) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCopyEsimpleToIsimple ( - ACPI_OBJECT *ExternalObject, - ACPI_OPERAND_OBJECT *InternalObject) -{ - - FUNCTION_TRACE ("CmCopyEsimpleToIsimple"); - - - InternalObject->Common.Type = (UINT8) ExternalObject->Type; - - switch (ExternalObject->Type) - { - - case ACPI_TYPE_STRING: - - InternalObject->String.Length = ExternalObject->String.Length; - InternalObject->String.Pointer = ExternalObject->String.Pointer; - break; - - - case ACPI_TYPE_BUFFER: - - InternalObject->Buffer.Length = ExternalObject->Buffer.Length; - InternalObject->Buffer.Pointer = ExternalObject->Buffer.Pointer; - break; - - - case ACPI_TYPE_INTEGER: - /* - * Number is included in the object itself - */ - InternalObject->Integer.Value = ExternalObject->Integer.Value; - break; - - - default: - return_ACPI_STATUS (AE_CTRL_RETURN_VALUE); - break; - } - - - return_ACPI_STATUS (AE_OK); -} - - -#ifdef ACPI_FUTURE_IMPLEMENTATION - -/* Code to convert packages that are parameters to control methods */ - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyEpackageToIpackage - * - * PARAMETERS: *InternalObject - Pointer to the object we are returning - * *Buffer - Where the object is returned - * *SpaceUsed - Where the length of the object is returned - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to place a package object in a user - * buffer. A package object by definition contains other objects. - * - * The buffer is assumed to have sufficient space for the object. - * The caller must have verified the buffer length needed using the - * AcpiCmGetObjectSize function before calling this function. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiCmCopyEpackageToIpackage ( - ACPI_OPERAND_OBJECT *InternalObject, - UINT8 *Buffer, - UINT32 *SpaceUsed) -{ - UINT8 *FreeSpace; - ACPI_OBJECT *ExternalObject; - UINT32 Length = 0; - UINT32 ThisIndex; - UINT32 ObjectSpace = 0; - ACPI_OPERAND_OBJECT *ThisInternalObj; - ACPI_OBJECT *ThisExternalObj; - - - FUNCTION_TRACE ("CmCopyEpackageToIpackage"); - - - /* - * First package at head of the buffer - */ - ExternalObject = (ACPI_OBJECT *)Buffer; - - /* - * Free space begins right after the first package - */ - FreeSpace = Buffer + sizeof(ACPI_OBJECT); - - - ExternalObject->Type = InternalObject->Common.Type; - ExternalObject->Package.Count = InternalObject->Package.Count; - ExternalObject->Package.Elements = (ACPI_OBJECT *)FreeSpace; - - - /* - * Build an array of ACPI_OBJECTS in the buffer - * and move the free space past it - */ - - FreeSpace += ExternalObject->Package.Count * sizeof(ACPI_OBJECT); - - - /* Call WalkPackage */ - -} - -#endif /* Future implementation */ - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyEobjectToIobject - * - * PARAMETERS: *InternalObject - The external object to be converted - * *BufferPtr - Where the internal object is returned - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: Converts an external object to an internal object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCopyEobjectToIobject ( - ACPI_OBJECT *ExternalObject, - ACPI_OPERAND_OBJECT *InternalObject) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiCmCopyEobjectToIobject"); - - - if (ExternalObject->Type == ACPI_TYPE_PACKAGE) - { - /* - * Package objects contain other objects (which can be objects) - * buildpackage does it all - * - * TBD: Package conversion must be completed and tested - * NOTE: this code converts packages as input parameters to - * control methods only. This is a very, very rare case. - */ -/* - Status = AcpiCmCopyEpackageToIpackage(InternalObject, - RetBuffer->Pointer, - &RetBuffer->Length); -*/ - DEBUG_PRINT (ACPI_ERROR, - ("AcpiCmCopyEobjectToIobject: Packages as parameters not implemented!\n")); - - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - else - { - /* - * Build a simple object (no nested objects) - */ - Status = AcpiCmCopyEsimpleToIsimple (ExternalObject, InternalObject); - /* - * build simple does not include the object size in the length - * so we add it in here - */ - } - - return_ACPI_STATUS (Status); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyIelementToIelement - * - * PARAMETERS: ACPI_PKG_CALLBACK - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: Copy one package element to another package element - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCopyIelementToIelement ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - UINT32 ThisIndex; - ACPI_OPERAND_OBJECT **ThisTargetPtr; - ACPI_OPERAND_OBJECT *TargetObject; - - - - ThisIndex = State->Pkg.Index; - ThisTargetPtr = (ACPI_OPERAND_OBJECT **) - &State->Pkg.DestObject->Package.Elements[ThisIndex]; - - switch (ObjectType) - { - case 0: - - /* - * This is a simple object, just copy it - */ - TargetObject = AcpiCmCreateInternalObject (SourceObject->Common.Type); - if (!TargetObject) - { - return (AE_NO_MEMORY); - } - - Status = AcpiAmlStoreObjectToObject (SourceObject, TargetObject, - (ACPI_WALK_STATE *) Context); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - *ThisTargetPtr = TargetObject; - break; - - - case 1: - /* - * This object is a package - go down another nesting level - * Create and build the package object - */ - TargetObject = AcpiCmCreateInternalObject (ACPI_TYPE_PACKAGE); - if (!TargetObject) - { - /* TBD: must delete package created up to this point */ - - return (AE_NO_MEMORY); - } - - TargetObject->Package.Count = SourceObject->Package.Count; - - /* - * Pass the new package object back to the package walk routine - */ - State->Pkg.ThisTargetObj = TargetObject; - - /* - * Store the object pointer in the parent package object - */ - *ThisTargetPtr = TargetObject; - break; - - default: - return (AE_BAD_PARAMETER); - } - - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyIpackageToIpackage - * - * PARAMETERS: *SourceObj - Pointer to the source package object - * *DestObj - Where the internal object is returned - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to copy an internal package object - * into another internal package object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCopyIpackageToIpackage ( - ACPI_OPERAND_OBJECT *SourceObj, - ACPI_OPERAND_OBJECT *DestObj, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - FUNCTION_TRACE ("CmCopyIpackageToIpackage"); - - - - DestObj->Common.Type = SourceObj->Common.Type; - DestObj->Package.Count = SourceObj->Package.Count; - - - /* - * Create the object array and walk the source package tree - */ - - DestObj->Package.Elements = AcpiCmCallocate ((SourceObj->Package.Count + 1) * - sizeof (void *)); - DestObj->Package.NextElement = DestObj->Package.Elements; - - if (!DestObj->Package.Elements) - { - REPORT_ERROR ( - ("AmlBuildCopyInternalPackageObject: Package allocation failure\n")); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - - Status = AcpiCmWalkPackageTree (SourceObj, DestObj, - AcpiCmCopyIelementToIelement, WalkState); - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmdebug.c b/sys/contrib/dev/acpica/Subsystem/Common/cmdebug.c deleted file mode 100644 index 5792a13..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmdebug.c +++ /dev/null @@ -1,657 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmdebug - Debug print routines - * $Revision: 64 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __CMDEBUG_C__ - -#include "acpi.h" - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmdebug") - - -/***************************************************************************** - * - * FUNCTION: Get/Set debug level - * - * DESCRIPTION: Get or set value of the debug flag - * - * These are used to allow user's to get/set the debug level - * - ****************************************************************************/ - - -UINT32 -GetDebugLevel (void) -{ - - return (AcpiDbgLevel); -} - -void -SetDebugLevel ( - UINT32 NewDebugLevel) -{ - - AcpiDbgLevel = NewDebugLevel; -} - - -/***************************************************************************** - * - * FUNCTION: FunctionTrace - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ****************************************************************************/ - -void -FunctionTrace ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName) -{ - - AcpiGbl_NestingLevel++; - - DebugPrint (ModuleName, LineNumber, ComponentId, - TRACE_FUNCTIONS, - " %2.2ld Entered Function: %s\n", - AcpiGbl_NestingLevel, FunctionName); -} - - -/***************************************************************************** - * - * FUNCTION: FunctionTracePtr - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * Pointer - Pointer to display - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ****************************************************************************/ - -void -FunctionTracePtr ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - void *Pointer) -{ - - AcpiGbl_NestingLevel++; - DebugPrint (ModuleName, LineNumber, ComponentId, TRACE_FUNCTIONS, - " %2.2ld Entered Function: %s, %p\n", - AcpiGbl_NestingLevel, FunctionName, Pointer); -} - - -/***************************************************************************** - * - * FUNCTION: FunctionTraceStr - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * String - Additional string to display - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ****************************************************************************/ - -void -FunctionTraceStr ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - NATIVE_CHAR *String) -{ - - AcpiGbl_NestingLevel++; - DebugPrint (ModuleName, LineNumber, ComponentId, TRACE_FUNCTIONS, - " %2.2ld Entered Function: %s, %s\n", - AcpiGbl_NestingLevel, FunctionName, String); -} - - -/***************************************************************************** - * - * FUNCTION: FunctionTraceU32 - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * Integer - Integer to display - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ****************************************************************************/ - -void -FunctionTraceU32 ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - UINT32 Integer) -{ - - AcpiGbl_NestingLevel++; - DebugPrint (ModuleName, LineNumber, ComponentId, TRACE_FUNCTIONS, - " %2.2ld Entered Function: %s, %lX\n", - AcpiGbl_NestingLevel, FunctionName, Integer); -} - - -/***************************************************************************** - * - * FUNCTION: FunctionExit - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ****************************************************************************/ - -void -FunctionExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName) -{ - - DebugPrint (ModuleName, LineNumber, ComponentId, TRACE_FUNCTIONS, - " %2.2ld Exiting Function: %s\n", - AcpiGbl_NestingLevel, FunctionName); - - AcpiGbl_NestingLevel--; -} - - -/***************************************************************************** - * - * FUNCTION: FunctionStatusExit - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * Status - Exit status code - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel. Prints exit status also. - * - ****************************************************************************/ - -void -FunctionStatusExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - ACPI_STATUS Status) -{ - - DebugPrint (ModuleName, LineNumber, ComponentId, - TRACE_FUNCTIONS, - " %2.2ld Exiting Function: %s, %s\n", - AcpiGbl_NestingLevel, - FunctionName, - AcpiCmFormatException (Status)); - - AcpiGbl_NestingLevel--; -} - - -/***************************************************************************** - * - * FUNCTION: FunctionValueExit - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * Value - Value to be printed with exit msg - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel. Prints exit value also. - * - ****************************************************************************/ - -void -FunctionValueExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - ACPI_INTEGER Value) -{ - - DebugPrint (ModuleName, LineNumber, ComponentId, TRACE_FUNCTIONS, - " %2.2ld Exiting Function: %s, %X\n", - AcpiGbl_NestingLevel, FunctionName, Value); - - AcpiGbl_NestingLevel--; -} - - -/***************************************************************************** - * - * FUNCTION: FunctionPtrExit - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * FunctionName - Name of Caller's function - * Value - Value to be printed with exit msg - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel. Prints exit value also. - * - ****************************************************************************/ - -void -FunctionPtrExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - UINT8 *Ptr) -{ - - DebugPrint (ModuleName, LineNumber, ComponentId, TRACE_FUNCTIONS, - " %2.2ld Exiting Function: %s, %p\n", - AcpiGbl_NestingLevel, FunctionName, Ptr); - - AcpiGbl_NestingLevel--; -} - - -/***************************************************************************** - * - * FUNCTION: DebugPrint - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * PrintLevel - Requested debug print level - * Format - Printf format field - * ... - Optional printf arguments - * - * RETURN: None - * - * DESCRIPTION: Print error message with prefix consisting of the module name, - * line number, and component ID. - * - ****************************************************************************/ - -void -DebugPrint ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - UINT32 PrintLevel, - NATIVE_CHAR *Format, - ...) -{ - va_list args; - - - /* Both the level and the component must be enabled */ - - if ((PrintLevel & AcpiDbgLevel) && - (ComponentId & AcpiDbgLayer)) - { - va_start (args, Format); - - AcpiOsPrintf ("%8s-%04d: ", ModuleName, LineNumber); - AcpiOsVprintf (Format, args); - } -} - - -/***************************************************************************** - * - * FUNCTION: DebugPrintPrefix - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * - * RETURN: None - * - * DESCRIPTION: Print the prefix part of an error message, consisting of the - * module name, and line number - * - ****************************************************************************/ - -void -DebugPrintPrefix ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber) -{ - - - AcpiOsPrintf ("%8s-%04d: ", ModuleName, LineNumber); -} - - -/***************************************************************************** - * - * FUNCTION: DebugPrintRaw - * - * PARAMETERS: Format - Printf format field - * ... - Optional printf arguments - * - * RETURN: None - * - * DESCRIPTION: Print error message -- without module/line indentifiers - * - ****************************************************************************/ - -void -DebugPrintRaw ( - NATIVE_CHAR *Format, - ...) -{ - va_list args; - - - va_start (args, Format); - - AcpiOsVprintf (Format, args); - - va_end (args); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiCmDumpBuffer - * - * PARAMETERS: Buffer - Buffer to dump - * Count - Amount to dump, in bytes - * ComponentID - Caller's component ID - * - * RETURN: None - * - * DESCRIPTION: Generic dump buffer in both hex and ascii. - * - ****************************************************************************/ - -void -AcpiCmDumpBuffer ( - UINT8 *Buffer, - UINT32 Count, - UINT32 Display, - UINT32 ComponentId) -{ - UINT32 i = 0; - UINT32 j; - UINT32 Temp32; - UINT8 BufChar; - - - /* Only dump the buffer if tracing is enabled */ - - if (!((TRACE_TABLES & AcpiDbgLevel) && - (ComponentId & AcpiDbgLayer))) - { - return; - } - - - /* - * Nasty little dump buffer routine! - */ - while (i < Count) - { - /* Print current offset */ - - AcpiOsPrintf ("%05X ", i); - - - /* Print 16 hex chars */ - - for (j = 0; j < 16;) - { - if (i + j >= Count) - { - AcpiOsPrintf ("\n"); - return; - } - - /* Make sure that the INT8 doesn't get sign-extended! */ - - switch (Display) - { - /* Default is BYTE display */ - - default: - - AcpiOsPrintf ("%02X ", - *((UINT8 *) &Buffer[i + j])); - j += 1; - break; - - - case DB_WORD_DISPLAY: - - MOVE_UNALIGNED16_TO_32 (&Temp32, - &Buffer[i + j]); - AcpiOsPrintf ("%04X ", Temp32); - j += 2; - break; - - - case DB_DWORD_DISPLAY: - - MOVE_UNALIGNED32_TO_32 (&Temp32, - &Buffer[i + j]); - AcpiOsPrintf ("%08X ", Temp32); - j += 4; - break; - - - case DB_QWORD_DISPLAY: - - MOVE_UNALIGNED32_TO_32 (&Temp32, - &Buffer[i + j]); - AcpiOsPrintf ("%08X", Temp32); - - MOVE_UNALIGNED32_TO_32 (&Temp32, - &Buffer[i + j + 4]); - AcpiOsPrintf ("%08X ", Temp32); - j += 8; - break; - } - } - - - /* - * Print the ASCII equivalent characters - * But watch out for the bad unprintable ones... - */ - - for (j = 0; j < 16; j++) - { - if (i + j >= Count) - { - AcpiOsPrintf ("\n"); - return; - } - - BufChar = Buffer[i + j]; - if ((BufChar > 0x1F && BufChar < 0x2E) || - (BufChar > 0x2F && BufChar < 0x61) || - (BufChar > 0x60 && BufChar < 0x7F)) - { - AcpiOsPrintf ("%c", BufChar); - } - else - { - AcpiOsPrintf ("."); - } - } - - /* Done with that line. */ - - AcpiOsPrintf ("\n"); - i += 16; - } - - return; -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmdelete.c b/sys/contrib/dev/acpica/Subsystem/Common/cmdelete.c deleted file mode 100644 index 34a42ae..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmdelete.c +++ /dev/null @@ -1,806 +0,0 @@ -/******************************************************************************* - * - * Module Name: cmdelete - object deletion and reference count utilities - * $Revision: 62 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __CMDELETE_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "actables.h" -#include "acparser.h" - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmdelete") - - -/******************************************************************************* - * - * FUNCTION: AcpiCmDeleteInternalObj - * - * PARAMETERS: *Object - Pointer to the list to be deleted - * - * RETURN: None - * - * DESCRIPTION: Low level object deletion, after reference counts have been - * updated (All reference counts, including sub-objects!) - * - ******************************************************************************/ - -void -AcpiCmDeleteInternalObj ( - ACPI_OPERAND_OBJECT *Object) -{ - void *ObjPointer = NULL; - ACPI_OPERAND_OBJECT *HandlerDesc; - - - FUNCTION_TRACE_PTR ("CmDeleteInternalObj", Object); - - - if (!Object) - { - return_VOID; - } - - /* - * Must delete or free any pointers within the object that are not - * actual ACPI objects (for example, a raw buffer pointer). - */ - - switch (Object->Common.Type) - { - - case ACPI_TYPE_STRING: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: **** String %p, ptr %p\n", - Object, Object->String.Pointer)); - - /* Free the actual string buffer */ - - ObjPointer = Object->String.Pointer; - break; - - - case ACPI_TYPE_BUFFER: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: **** Buffer %p, ptr %p\n", - Object, Object->Buffer.Pointer)); - - /* Free the actual buffer */ - - ObjPointer = Object->Buffer.Pointer; - break; - - - case ACPI_TYPE_PACKAGE: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: **** Package of count %X\n", - Object->Package.Count)); - - /* - * Elements of the package are not handled here, they are deleted - * separately - */ - - /* Free the (variable length) element pointer array */ - - ObjPointer = Object->Package.Elements; - break; - - - case ACPI_TYPE_MUTEX: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Mutex %p, Semaphore %p\n", - Object, Object->Mutex.Semaphore)); - - AcpiOsDeleteSemaphore (Object->Mutex.Semaphore); - break; - - - case ACPI_TYPE_EVENT: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Event %p, Semaphore %p\n", - Object, Object->Event.Semaphore)); - - AcpiOsDeleteSemaphore (Object->Event.Semaphore); - Object->Event.Semaphore = NULL; - break; - - - case ACPI_TYPE_METHOD: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Method %p\n", Object)); - - /* Delete the method semaphore if it exists */ - - if (Object->Method.Semaphore) - { - AcpiOsDeleteSemaphore (Object->Method.Semaphore); - Object->Method.Semaphore = NULL; - } - - break; - - - case ACPI_TYPE_REGION: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** Region %p\n", - Object)); - - - if (Object->Region.Extra) - { - /* - * Free the RegionContext if and only if the handler is one of the - * default handlers -- and therefore, we created the context object - * locally, it was not created by an external caller. - */ - HandlerDesc = Object->Region.AddrHandler; - if ((HandlerDesc) && - (HandlerDesc->AddrHandler.Hflags == ADDR_HANDLER_DEFAULT_INSTALLED)) - { - ObjPointer = Object->Region.Extra->Extra.RegionContext; - } - - /* Now we can free the Extra object */ - - AcpiCmDeleteObjectDesc (Object->Region.Extra); - } - break; - - - case ACPI_TYPE_FIELD_UNIT: - - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: ***** FieldUnit %p\n", - Object)); - - if (Object->FieldUnit.Extra) - { - AcpiCmDeleteObjectDesc (Object->FieldUnit.Extra); - } - break; - - default: - break; - } - - - /* - * Delete any allocated memory found above - */ - - if (ObjPointer) - { - if (!AcpiTbSystemTablePointer (ObjPointer)) - { - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: Deleting Obj Ptr %p \n", ObjPointer)); - - AcpiCmFree (ObjPointer); - } - } - - - /* Only delete the object if it was dynamically allocated */ - - if (Object->Common.Flags & AOPOBJ_STATIC_ALLOCATION) - { - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: Object %p [%s] static allocation, no delete\n", - Object, AcpiCmGetTypeName (Object->Common.Type))); - } - - if (!(Object->Common.Flags & AOPOBJ_STATIC_ALLOCATION)) - { - DEBUG_PRINT (ACPI_INFO, - ("CmDeleteInternalObj: Deleting object %p [%s]\n", - Object, AcpiCmGetTypeName (Object->Common.Type))); - - AcpiCmDeleteObjectDesc (Object); - - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmDeleteInternalObjectList - * - * PARAMETERS: *ObjList - Pointer to the list to be deleted - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function deletes an internal object list, including both - * simple objects and package objects - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmDeleteInternalObjectList ( - ACPI_OPERAND_OBJECT **ObjList) -{ - ACPI_OPERAND_OBJECT **InternalObj; - - - FUNCTION_TRACE ("CmDeleteInternalObjectList"); - - - /* Walk the null-terminated internal list */ - - for (InternalObj = ObjList; *InternalObj; InternalObj++) - { - /* - * Check for a package - * Simple objects are simply stored in the array and do not - * need to be deleted separately. - */ - - if (IS_THIS_OBJECT_TYPE ((*InternalObj), ACPI_TYPE_PACKAGE)) - { - /* Delete the package */ - - /* - * TBD: [Investigate] This might not be the right thing to do, - * depending on how the internal package object was allocated!!! - */ - AcpiCmDeleteInternalObj (*InternalObj); - } - - } - - /* Free the combined parameter pointer list and object array */ - - AcpiCmFree (ObjList); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmUpdateRefCount - * - * PARAMETERS: *Object - Object whose ref count is to be updated - * Action - What to do - * - * RETURN: New ref count - * - * DESCRIPTION: Modify the ref count and return it. - * - ******************************************************************************/ - -static void -AcpiCmUpdateRefCount ( - ACPI_OPERAND_OBJECT *Object, - UINT32 Action) -{ - UINT16 Count; - UINT16 NewCount; - - - if (!Object) - { - return; - } - - - Count = Object->Common.ReferenceCount; - NewCount = Count; - - /* - * Reference count action (increment, decrement, or force delete) - */ - - switch (Action) - { - - case REF_INCREMENT: - - NewCount++; - Object->Common.ReferenceCount = NewCount; - - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, [Incremented]\n", - Object, NewCount)); - break; - - - case REF_DECREMENT: - - if (Count < 1) - { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, can't decrement! (Set to 0)\n", - Object, NewCount)); - - NewCount = 0; - } - - else - { - NewCount--; - - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, [Decremented]\n", - Object, NewCount)); - } - - if (Object->Common.Type == ACPI_TYPE_METHOD) - { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Method Obj %p Refs=%X, [Decremented]\n", - Object, NewCount)); - } - - Object->Common.ReferenceCount = NewCount; - if (NewCount == 0) - { - AcpiCmDeleteInternalObj (Object); - } - - break; - - - case REF_FORCE_DELETE: - - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateRefCount: Obj %p Refs=%X, Force delete! (Set to 0)\n", - Object, Count)); - - NewCount = 0; - Object->Common.ReferenceCount = NewCount; - AcpiCmDeleteInternalObj (Object); - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("CmUpdateRefCount: Unknown action (%X)\n", Action)); - break; - } - - - /* - * Sanity check the reference count, for debug purposes only. - * (A deleted object will have a huge reference count) - */ - - if (Count > MAX_REFERENCE_COUNT) - { - - DEBUG_PRINT (ACPI_ERROR, - ("CmUpdateRefCount: **** AE_ERROR **** Invalid Reference Count (%X) in object %p\n\n", - Count, Object)); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmUpdateObjectReference - * - * PARAMETERS: *Object - Increment ref count for this object - * and all sub-objects - * Action - Either REF_INCREMENT or REF_DECREMENT or - * REF_FORCE_DELETE - * - * RETURN: Status - * - * DESCRIPTION: Increment the object reference count - * - * Object references are incremented when: - * 1) An object is attached to a Node (namespace object) - * 2) An object is copied (all subobjects must be incremented) - * - * Object references are decremented when: - * 1) An object is detached from an Node - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmUpdateObjectReference ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action) -{ - ACPI_STATUS Status; - UINT32 i; - ACPI_OPERAND_OBJECT *Next; - ACPI_OPERAND_OBJECT *New; - ACPI_GENERIC_STATE *StateList = NULL; - ACPI_GENERIC_STATE *State; - - - FUNCTION_TRACE_PTR ("CmUpdateObjectReference", Object); - - - /* Ignore a null object ptr */ - - if (!Object) - { - return_ACPI_STATUS (AE_OK); - } - - - /* - * Make sure that this isn't a namespace handle or an AML pointer - */ - - if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) - { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateObjectReference: Object %p is NS handle\n", - Object)); - return_ACPI_STATUS (AE_OK); - } - - if (AcpiTbSystemTablePointer (Object)) - { - DEBUG_PRINT (ACPI_INFO, - ("CmUpdateObjectReference: **** Object %p is Pcode Ptr\n", - Object)); - return_ACPI_STATUS (AE_OK); - } - - - State = AcpiCmCreateUpdateState (Object, Action); - - while (State) - { - - Object = State->Update.Object; - Action = State->Update.Value; - AcpiCmDeleteGenericState (State); - - /* - * All sub-objects must have their reference count incremented also. - * Different object types have different subobjects. - */ - switch (Object->Common.Type) - { - - case ACPI_TYPE_DEVICE: - - Status = AcpiCmCreateUpdateStateAndPush (Object->Device.AddrHandler, - Action, &StateList); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - AcpiCmUpdateRefCount (Object->Device.SysHandler, Action); - AcpiCmUpdateRefCount (Object->Device.DrvHandler, Action); - break; - - - case INTERNAL_TYPE_ADDRESS_HANDLER: - - /* Must walk list of address handlers */ - - Next = Object->AddrHandler.Next; - while (Next) - { - New = Next->AddrHandler.Next; - AcpiCmUpdateRefCount (Next, Action); - - Next = New; - } - break; - - - case ACPI_TYPE_PACKAGE: - - /* - * We must update all the sub-objects of the package - * (Each of whom may have their own sub-objects, etc. - */ - for (i = 0; i < Object->Package.Count; i++) - { - /* - * Push each element onto the stack for later processing. - * Note: There can be null elements within the package, - * these are simply ignored - */ - - Status = AcpiCmCreateUpdateStateAndPush ( - Object->Package.Elements[i], Action, &StateList); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - break; - - - case ACPI_TYPE_FIELD_UNIT: - - Status = AcpiCmCreateUpdateStateAndPush ( - Object->FieldUnit.Container, Action, &StateList); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; - - - case INTERNAL_TYPE_DEF_FIELD: - - Status = AcpiCmCreateUpdateStateAndPush ( - Object->Field.Container, Action, &StateList); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; - - - case INTERNAL_TYPE_BANK_FIELD: - - Status = AcpiCmCreateUpdateStateAndPush ( - Object->BankField.BankSelect, Action, &StateList); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiCmCreateUpdateStateAndPush ( - Object->BankField.Container, Action, &StateList); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; - - - case ACPI_TYPE_REGION: - - /* TBD: [Investigate] - AcpiCmUpdateRefCount (Object->Region.AddrHandler, Action); - */ -/* - Status = - AcpiCmCreateUpdateStateAndPush (Object->Region.AddrHandler, - Action, &StateList); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } -*/ - break; - - - case INTERNAL_TYPE_REFERENCE: - - break; - } - - - /* - * Now we can update the count in the main object. This can only - * happen after we update the sub-objects in case this causes the - * main object to be deleted. - */ - - AcpiCmUpdateRefCount (Object, Action); - - - /* Move on to the next object to be updated */ - - State = AcpiCmPopGenericState (&StateList); - } - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmAddReference - * - * PARAMETERS: *Object - Object whose reference count is to be - * incremented - * - * RETURN: None - * - * DESCRIPTION: Add one reference to an ACPI object - * - ******************************************************************************/ - -void -AcpiCmAddReference ( - ACPI_OPERAND_OBJECT *Object) -{ - - FUNCTION_TRACE_PTR ("CmAddReference", Object); - - - /* - * Ensure that we have a valid object - */ - - if (!AcpiCmValidInternalObject (Object)) - { - return_VOID; - } - - /* - * We have a valid ACPI internal object, now increment the reference count - */ - - AcpiCmUpdateObjectReference (Object, REF_INCREMENT); - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmRemoveReference - * - * PARAMETERS: *Object - Object whose ref count will be decremented - * - * RETURN: None - * - * DESCRIPTION: Decrement the reference count of an ACPI internal object - * - ******************************************************************************/ - -void -AcpiCmRemoveReference ( - ACPI_OPERAND_OBJECT *Object) -{ - - FUNCTION_TRACE_PTR ("CmRemoveReference", Object); - - - /* - * Ensure that we have a valid object - */ - - if (!AcpiCmValidInternalObject (Object)) - { - return_VOID; - } - - DEBUG_PRINT (ACPI_INFO, ("CmRemoveReference: Obj %p Refs=%X\n", - Object, Object->Common.ReferenceCount)); - - /* - * Decrement the reference count, and only actually delete the object - * if the reference count becomes 0. (Must also decrement the ref count - * of all subobjects!) - */ - - AcpiCmUpdateObjectReference (Object, REF_DECREMENT); - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmeval.c b/sys/contrib/dev/acpica/Subsystem/Common/cmeval.c deleted file mode 100644 index 2987090..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmeval.c +++ /dev/null @@ -1,494 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmeval - Object evaluation - * $Revision: 21 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __CMEVAL_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acinterp.h" - - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmeval") - - -/**************************************************************************** - * - * FUNCTION: AcpiCmEvaluateNumericObject - * - * PARAMETERS: *ObjectName - Object name to be evaluated - * DeviceNode - Node for the device - * *Address - Where the value is returned - * - * RETURN: Status - * - * DESCRIPTION: evaluates a numeric namespace object for a selected device - * and stores results in *Address. - * - * NOTE: Internal function, no parameter validation - * - ***************************************************************************/ - -ACPI_STATUS -AcpiCmEvaluateNumericObject ( - NATIVE_CHAR *ObjectName, - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_INTEGER *Address) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("CmEvaluateNumericObject"); - - - /* Execute the method */ - - Status = AcpiNsEvaluateRelative (DeviceNode, ObjectName, NULL, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - DEBUG_PRINT (ACPI_INFO, - ("%s on %4.4s was not found\n", ObjectName, - &DeviceNode->Name)); - } - else - { - DEBUG_PRINT (ACPI_ERROR, - ("%s on %4.4s failed with status %4.4x\n", ObjectName, - &DeviceNode->Name, - AcpiCmFormatException (Status))); - } - - return_ACPI_STATUS (Status); - } - - - /* Did we get a return object? */ - - if (!ObjDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("No object was returned from %s\n", ObjectName)); - return_ACPI_STATUS (AE_TYPE); - } - - /* Is the return object of the correct type? */ - - if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) - { - Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, - ("Type returned from %s was not a number: %X \n", - ObjectName, ObjDesc->Common.Type)); - } - else - { - /* - * Since the structure is a union, setting any field will set all - * of the variables in the union - */ - *Address = ObjDesc->Integer.Value; - } - - /* On exit, we must delete the return object */ - - AcpiCmRemoveReference (ObjDesc); - - return_ACPI_STATUS (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiCmExecute_HID - * - * PARAMETERS: DeviceNode - Node for the device - * *Hid - Where the HID is returned - * - * RETURN: Status - * - * DESCRIPTION: Executes the _HID control method that returns the hardware - * ID of the device. - * - * NOTE: Internal function, no parameter validation - * - ***************************************************************************/ - -ACPI_STATUS -AcpiCmExecute_HID ( - ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Hid) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("CmExecute_HID"); - - - /* Execute the method */ - - Status = AcpiNsEvaluateRelative (DeviceNode, - METHOD_NAME__HID, NULL, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - DEBUG_PRINT (ACPI_INFO, - ("_HID on %4.4s was not found\n", - &DeviceNode->Name)); - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("_HID on %4.4s failed with status %4.4x\n", - &DeviceNode->Name, - AcpiCmFormatException (Status))); - } - - return_ACPI_STATUS (Status); - } - - /* Did we get a return object? */ - - if (!ObjDesc) - { - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _HID\n")); - return_ACPI_STATUS (AE_TYPE); - } - - /* - * A _HID can return either a Number (32 bit compressed EISA ID) or - * a string - */ - - if ((ObjDesc->Common.Type != ACPI_TYPE_INTEGER) && - (ObjDesc->Common.Type != ACPI_TYPE_STRING)) - { - Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, - ("Type returned from _HID not a number or string: %s(%X) \n", - AcpiCmGetTypeName (ObjDesc->Common.Type), ObjDesc->Common.Type)); - } - - else - { - if (ObjDesc->Common.Type == ACPI_TYPE_INTEGER) - { - /* Convert the Numeric HID to string */ - - AcpiAmlEisaIdToString ((UINT32) ObjDesc->Integer.Value, Hid->Buffer); - } - - else - { - /* Copy the String HID from the returned object */ - - STRNCPY(Hid->Buffer, ObjDesc->String.Pointer, sizeof(Hid->Buffer)); - } - } - - - /* On exit, we must delete the return object */ - - AcpiCmRemoveReference (ObjDesc); - - return_ACPI_STATUS (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiCmExecute_UID - * - * PARAMETERS: DeviceNode - Node for the device - * *Uid - Where the UID is returned - * - * RETURN: Status - * - * DESCRIPTION: Executes the _UID control method that returns the hardware - * ID of the device. - * - * NOTE: Internal function, no parameter validation - * - ***************************************************************************/ - -ACPI_STATUS -AcpiCmExecute_UID ( - ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Uid) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - /* Execute the method */ - - Status = AcpiNsEvaluateRelative (DeviceNode, - METHOD_NAME__UID, NULL, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - DEBUG_PRINT (ACPI_INFO, - ("_UID on %4.4s was not found\n", - &DeviceNode->Name)); - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("_UID on %4.4s failed with status %4.4x\n", - &DeviceNode->Name, - AcpiCmFormatException (Status))); - } - - return (Status); - } - - /* Did we get a return object? */ - - if (!ObjDesc) - { - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _UID\n")); - return (AE_TYPE); - } - - /* - * A _UID can return either a Number (32 bit compressed EISA ID) or - * a string - */ - - if ((ObjDesc->Common.Type != ACPI_TYPE_INTEGER) && - (ObjDesc->Common.Type != ACPI_TYPE_STRING)) - { - Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, - ("Type returned from _UID was not a number or string: %X \n", - ObjDesc->Common.Type)); - } - - else - { - if (ObjDesc->Common.Type == ACPI_TYPE_INTEGER) - { - /* Convert the Numeric UID to string */ - - AcpiAmlUnsignedIntegerToString (ObjDesc->Integer.Value, Uid->Buffer); - } - - else - { - /* Copy the String UID from the returned object */ - - STRNCPY(Uid->Buffer, ObjDesc->String.Pointer, sizeof(Uid->Buffer)); - } - } - - - /* On exit, we must delete the return object */ - - AcpiCmRemoveReference (ObjDesc); - - return (Status); -} - -/**************************************************************************** - * - * FUNCTION: AcpiCmExecute_STA - * - * PARAMETERS: DeviceNode - Node for the device - * *Flags - Where the status flags are returned - * - * RETURN: Status - * - * DESCRIPTION: Executes _STA for selected device and stores results in - * *Flags. - * - * NOTE: Internal function, no parameter validation - * - ***************************************************************************/ - -ACPI_STATUS -AcpiCmExecute_STA ( - ACPI_NAMESPACE_NODE *DeviceNode, - UINT32 *Flags) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("CmExecute_STA"); - - /* Execute the method */ - - Status = AcpiNsEvaluateRelative (DeviceNode, - METHOD_NAME__STA, NULL, &ObjDesc); - if (AE_NOT_FOUND == Status) - { - DEBUG_PRINT (ACPI_INFO, - ("_STA on %4.4s was not found, assuming present.\n", - &DeviceNode->Name)); - - *Flags = 0x0F; - Status = AE_OK; - } - - else if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("_STA on %4.4s failed with status %s\n", - &DeviceNode->Name, - AcpiCmFormatException (Status))); - } - - else /* success */ - { - /* Did we get a return object? */ - - if (!ObjDesc) - { - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _STA\n")); - return_ACPI_STATUS (AE_TYPE); - } - - /* Is the return object of the correct type? */ - - if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) - { - Status = AE_TYPE; - DEBUG_PRINT (ACPI_ERROR, - ("Type returned from _STA was not a number: %X \n", - ObjDesc->Common.Type)); - } - - else - { - /* Extract the status flags */ - - *Flags = (UINT32) ObjDesc->Integer.Value; - } - - /* On exit, we must delete the return object */ - - AcpiCmRemoveReference (ObjDesc); - } - - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmglobal.c b/sys/contrib/dev/acpica/Subsystem/Common/cmglobal.c deleted file mode 100644 index 2cea5c6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmglobal.c +++ /dev/null @@ -1,792 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmglobal - Global variables for the ACPI subsystem - * $Revision: 116 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __CMGLOBAL_C__ -#define DEFINE_ACPI_GLOBALS - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "amlcode.h" - - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmglobal") - - -/****************************************************************************** - * - * Static global variable initialization. - * - ******************************************************************************/ - -/* - * We want the debug switches statically initialized so they - * are already set when the debugger is entered. - */ - -/* Debug switch - level and trace mask */ - -#ifdef ACPI_DEBUG -UINT32 AcpiDbgLevel = DEBUG_DEFAULT; -#else -UINT32 AcpiDbgLevel = NORMAL_DEFAULT; -#endif - -/* Debug switch - layer (component) mask */ - -UINT32 AcpiDbgLayer = COMPONENT_DEFAULT; -UINT32 AcpiGbl_NestingLevel = 0; - - -/* Debugger globals */ - -BOOLEAN AcpiGbl_DbTerminateThreads = FALSE; -BOOLEAN AcpiGbl_MethodExecuting = FALSE; - -/* System flags */ - -UINT32 AcpiGbl_SystemFlags = 0; -UINT32 AcpiGbl_StartupFlags = 0; - -/* System starts unitialized! */ -BOOLEAN AcpiGbl_Shutdown = TRUE; - - -UINT8 AcpiGbl_DecodeTo8bit [8] = {1,2,4,8,16,32,64,128}; - - -/****************************************************************************** - * - * Namespace globals - * - ******************************************************************************/ - - -/* - * Names built-in to the interpreter - * - * Initial values are currently supported only for types String and Number. - * To avoid type punning, both are specified as strings in this table. - */ - -PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = -{ - {"_GPE", INTERNAL_TYPE_DEF_ANY}, - {"_PR_", INTERNAL_TYPE_DEF_ANY}, - {"_SB_", INTERNAL_TYPE_DEF_ANY}, - {"_SI_", INTERNAL_TYPE_DEF_ANY}, - {"_TZ_", INTERNAL_TYPE_DEF_ANY}, - {"_REV", ACPI_TYPE_INTEGER, "2"}, - {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, - {"_GL_", ACPI_TYPE_MUTEX, "0"}, - - /* Table terminator */ - - {NULL, ACPI_TYPE_ANY} -}; - - -/* - * Properties of the ACPI Object Types, both internal and external. - * - * Elements of AcpiNsProperties are bit significant - * and the table is indexed by values of ACPI_OBJECT_TYPE - */ - -UINT8 AcpiGbl_NsProperties[] = -{ - NSP_NORMAL, /* 00 Any */ - NSP_NORMAL, /* 01 Number */ - NSP_NORMAL, /* 02 String */ - NSP_NORMAL, /* 03 Buffer */ - NSP_LOCAL, /* 04 Package */ - NSP_NORMAL, /* 05 FieldUnit */ - NSP_NEWSCOPE | NSP_LOCAL, /* 06 Device */ - NSP_LOCAL, /* 07 AcpiEvent */ - NSP_NEWSCOPE | NSP_LOCAL, /* 08 Method */ - NSP_LOCAL, /* 09 Mutex */ - NSP_LOCAL, /* 10 Region */ - NSP_NEWSCOPE | NSP_LOCAL, /* 11 Power */ - NSP_NEWSCOPE | NSP_LOCAL, /* 12 Processor */ - NSP_NEWSCOPE | NSP_LOCAL, /* 13 Thermal */ - NSP_NORMAL, /* 14 BufferField */ - NSP_NORMAL, /* 15 DdbHandle */ - NSP_NORMAL, /* 16 Debug Object */ - NSP_NORMAL, /* 17 DefField */ - NSP_NORMAL, /* 18 BankField */ - NSP_NORMAL, /* 19 IndexField */ - NSP_NORMAL, /* 20 Reference */ - NSP_NORMAL, /* 21 Alias */ - NSP_NORMAL, /* 22 Notify */ - NSP_NORMAL, /* 23 Address Handler */ - NSP_NEWSCOPE | NSP_LOCAL, /* 24 Resource */ - NSP_NORMAL, /* 25 DefFieldDefn */ - NSP_NORMAL, /* 26 BankFieldDefn */ - NSP_NORMAL, /* 27 IndexFieldDefn */ - NSP_NORMAL, /* 28 If */ - NSP_NORMAL, /* 29 Else */ - NSP_NORMAL, /* 30 While */ - NSP_NEWSCOPE, /* 31 Scope */ - NSP_LOCAL, /* 32 DefAny */ - NSP_NORMAL, /* 33 Extra */ - NSP_NORMAL /* 34 Invalid */ -}; - - -/* Hex to ASCII conversion table */ - -NATIVE_CHAR AcpiGbl_HexToAscii[] = - {'0','1','2','3','4','5','6','7', - '8','9','A','B','C','D','E','F'}; - - -/****************************************************************************** - * - * Table globals - * - * NOTE: This table includes ONLY the ACPI tables that the subsystem consumes. - * it is NOT an exhaustive list of all possible ACPI tables. All ACPI tables - * that are not used by the subsystem are simply ignored. - * - ******************************************************************************/ - - -ACPI_TABLE_DESC AcpiGbl_AcpiTables[NUM_ACPI_TABLES]; - - -ACPI_TABLE_SUPPORT AcpiGbl_AcpiTableData[NUM_ACPI_TABLES] = -{ - /*********** Name, Signature, Signature size, How many allowed?, Supported? Global typed pointer */ - - /* RSDP 0 */ {RSDP_NAME, RSDP_SIG, sizeof (RSDP_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL}, - /* DSDT 1 */ {DSDT_SIG, DSDT_SIG, sizeof (DSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_DSDT}, - /* FADT 2 */ {FADT_SIG, FADT_SIG, sizeof (FADT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FADT}, - /* FACS 3 */ {FACS_SIG, FACS_SIG, sizeof (FACS_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, (void **) &AcpiGbl_FACS}, - /* PSDT 4 */ {PSDT_SIG, PSDT_SIG, sizeof (PSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL}, - /* SSDT 5 */ {SSDT_SIG, SSDT_SIG, sizeof (SSDT_SIG)-1, ACPI_TABLE_MULTIPLE, AE_OK, NULL}, - /* XSDT 6 */ {XSDT_SIG, XSDT_SIG, sizeof (RSDT_SIG)-1, ACPI_TABLE_SINGLE, AE_OK, NULL}, -}; - - -#ifdef ACPI_DEBUG - -/****************************************************************************** - * - * Strings and procedures used for debug only - * - ******************************************************************************/ - -NATIVE_CHAR *MsgAcpiErrorBreak = "*** Break on ACPI_ERROR ***\n"; - - -/***************************************************************************** - * - * FUNCTION: AcpiCmGetMutexName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a mutex ID into a name string (Debug only) - * - ****************************************************************************/ - -NATIVE_CHAR * -AcpiCmGetMutexName ( - UINT32 MutexId) -{ - - if (MutexId > MAX_MTX) - { - return ("Invalid Mutex ID"); - } - - return (AcpiGbl_MutexNames[MutexId]); -} - - -/* - * Elements of AcpiGbl_NsTypeNames below must match - * one-to-one with values of ACPI_OBJECT_TYPE - * - * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; when - * stored in a table it really means that we have thus far seen no evidence to - * indicatewhat type is actually going to be stored for this entry. - */ - -static NATIVE_CHAR AcpiGbl_BadType[] = "UNDEFINED"; -#define TYPE_NAME_LENGTH 9 /* Maximum length of each string */ - -static NATIVE_CHAR *AcpiGbl_NsTypeNames[] = /* printable names of ACPI types */ -{ - /* 00 */ "Untyped", - /* 01 */ "Integer", - /* 02 */ "String", - /* 03 */ "Buffer", - /* 04 */ "Package", - /* 05 */ "FieldUnit", - /* 06 */ "Device", - /* 07 */ "Event", - /* 08 */ "Method", - /* 09 */ "Mutex", - /* 10 */ "Region", - /* 11 */ "Power", - /* 12 */ "Processor", - /* 13 */ "Thermal", - /* 14 */ "BufferFld", - /* 15 */ "DdbHandle", - /* 16 */ "DebugObj", - /* 17 */ "DefField", - /* 18 */ "BnkField", - /* 19 */ "IdxField", - /* 20 */ "Reference", - /* 21 */ "Alias", - /* 22 */ "Notify", - /* 23 */ "AddrHndlr", - /* 24 */ "Resource", - /* 25 */ "DefFldDfn", - /* 26 */ "BnkFldDfn", - /* 27 */ "IdxFldDfn", - /* 28 */ "If", - /* 29 */ "Else", - /* 30 */ "While", - /* 31 */ "Scope", - /* 32 */ "DefAny", - /* 33 */ "Extra", - /* 34 */ "Invalid" -}; - - -/***************************************************************************** - * - * FUNCTION: AcpiCmGetTypeName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a Type ID into a name string (Debug only) - * - ****************************************************************************/ - -NATIVE_CHAR * -AcpiCmGetTypeName ( - UINT32 Type) -{ - - if (Type > INTERNAL_TYPE_INVALID) - { - return (AcpiGbl_BadType); - } - - return (AcpiGbl_NsTypeNames[Type]); -} - - -/* Region type decoding */ - -NATIVE_CHAR *AcpiGbl_RegionTypes[NUM_REGION_TYPES] = -{ - "SystemMemory", - "SystemIO", - "PCIConfig", - "EmbeddedControl", - "SMBus", - "CMOS", - "PCIBarTarget", -}; - - -/***************************************************************************** - * - * FUNCTION: AcpiCmGetRegionName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a Space ID into a name string (Debug only) - * - ****************************************************************************/ - -NATIVE_CHAR * -AcpiCmGetRegionName ( - UINT8 SpaceId) -{ - - if (SpaceId >= USER_REGION_BEGIN) - { - return ("UserDefinedRegion"); - } - - else if (SpaceId >= NUM_REGION_TYPES) - { - return ("InvalidSpaceID"); - } - - return (AcpiGbl_RegionTypes[SpaceId]); -} - - -/* Data used in keeping track of fields */ - -NATIVE_CHAR *AcpiGbl_FENames[NUM_FIELD_NAMES] = -{ - "skip", - "?access?" -}; /* FE = Field Element */ - - -NATIVE_CHAR *AcpiGbl_MatchOps[NUM_MATCH_OPS] = -{ - "Error", - "MTR", - "MEQ", - "MLE", - "MLT", - "MGE", - "MGT" -}; - - -/* Access type decoding */ - -NATIVE_CHAR *AcpiGbl_AccessTypes[NUM_ACCESS_TYPES] = -{ - "AnyAcc", - "ByteAcc", - "WordAcc", - "DWordAcc", - "BlockAcc", - "SMBSendRecvAcc", - "SMBQuickAcc" -}; - - -/* Update rule decoding */ - -NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] = -{ - "Preserve", - "WriteAsOnes", - "WriteAsZeros" -}; - -#endif - - -/***************************************************************************** - * - * FUNCTION: AcpiCmValidObjectType - * - * PARAMETERS: None. - * - * RETURN: TRUE if valid object type - * - * DESCRIPTION: Validate an object type - * - ****************************************************************************/ - -BOOLEAN -AcpiCmValidObjectType ( - UINT32 Type) -{ - - if (Type > ACPI_TYPE_MAX) - { - if ((Type < INTERNAL_TYPE_BEGIN) || - (Type > INTERNAL_TYPE_MAX)) - { - return (FALSE); - } - } - - return (TRUE); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiCmFormatException - * - * PARAMETERS: Status - Acpi status to be formatted - * - * RETURN: Formatted status string - * - * DESCRIPTION: Convert an ACPI exception to a string - * - ****************************************************************************/ - -NATIVE_CHAR * -AcpiCmFormatException ( - ACPI_STATUS Status) -{ - NATIVE_CHAR *Exception = "UNKNOWN_STATUS"; - ACPI_STATUS SubStatus; - - - SubStatus = (Status & ~AE_CODE_MASK); - - - switch (Status & AE_CODE_MASK) - { - case AE_CODE_ENVIRONMENTAL: - - if (SubStatus <= AE_CODE_ENV_MAX) - { - Exception = AcpiGbl_ExceptionNames_Env [SubStatus]; - } - break; - - case AE_CODE_PROGRAMMER: - - if (SubStatus <= AE_CODE_PGM_MAX) - { - Exception = AcpiGbl_ExceptionNames_Pgm [SubStatus -1]; - } - break; - - case AE_CODE_ACPI_TABLES: - - if (SubStatus <= AE_CODE_TBL_MAX) - { - Exception = AcpiGbl_ExceptionNames_Tbl [SubStatus -1]; - } - break; - - case AE_CODE_AML: - - if (SubStatus <= AE_CODE_AML_MAX) - { - Exception = AcpiGbl_ExceptionNames_Aml [SubStatus -1]; - } - break; - - case AE_CODE_CONTROL: - - if (SubStatus <= AE_CODE_CTRL_MAX) - { - Exception = AcpiGbl_ExceptionNames_Ctrl [SubStatus -1]; - } - break; - - default: - break; - } - - - return (Exception); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiCmAllocateOwnerId - * - * PARAMETERS: IdType - Type of ID (method or table) - * - * DESCRIPTION: Allocate a table or method owner id - * - ***************************************************************************/ - -ACPI_OWNER_ID -AcpiCmAllocateOwnerId ( - UINT32 IdType) -{ - ACPI_OWNER_ID OwnerId = 0xFFFF; - - - FUNCTION_TRACE ("CmAllocateOwnerId"); - - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - - switch (IdType) - { - case OWNER_TYPE_TABLE: - - OwnerId = AcpiGbl_NextTableOwnerId; - AcpiGbl_NextTableOwnerId++; - - if (AcpiGbl_NextTableOwnerId == FIRST_METHOD_ID) - { - AcpiGbl_NextTableOwnerId = FIRST_TABLE_ID; - } - break; - - - case OWNER_TYPE_METHOD: - - OwnerId = AcpiGbl_NextMethodOwnerId; - AcpiGbl_NextMethodOwnerId++; - - if (AcpiGbl_NextMethodOwnerId == FIRST_TABLE_ID) - { - AcpiGbl_NextMethodOwnerId = FIRST_METHOD_ID; - } - break; - } - - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - - return_VALUE (OwnerId); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiCmInitGlobals - * - * PARAMETERS: none - * - * DESCRIPTION: Init library globals. All globals that require specific - * initialization should be initialized here! - * - ***************************************************************************/ - -void -AcpiCmInitGlobals ( - void) -{ - UINT32 i; - - - FUNCTION_TRACE ("CmInitGlobals"); - - - /* ACPI table structure */ - - for (i = 0; i < NUM_ACPI_TABLES; i++) - { - AcpiGbl_AcpiTables[i].Prev = &AcpiGbl_AcpiTables[i]; - AcpiGbl_AcpiTables[i].Next = &AcpiGbl_AcpiTables[i]; - AcpiGbl_AcpiTables[i].Pointer = NULL; - AcpiGbl_AcpiTables[i].Length = 0; - AcpiGbl_AcpiTables[i].Allocation = ACPI_MEM_NOT_ALLOCATED; - AcpiGbl_AcpiTables[i].Count = 0; - } - - - /* Address Space handler array */ - - for (i = 0; i < ACPI_NUM_ADDRESS_SPACES; i++) - { - AcpiGbl_AddressSpaces[i].Handler = NULL; - AcpiGbl_AddressSpaces[i].Context = NULL; - } - - /* Mutex locked flags */ - - for (i = 0; i < NUM_MTX; i++) - { - AcpiGbl_AcpiMutexInfo[i].Mutex = NULL; - AcpiGbl_AcpiMutexInfo[i].Locked = FALSE; - AcpiGbl_AcpiMutexInfo[i].UseCount = 0; - } - - /* Global notify handlers */ - - AcpiGbl_SysNotify.Handler = NULL; - AcpiGbl_DrvNotify.Handler = NULL; - - /* Global "typed" ACPI table pointers */ - - AcpiGbl_RSDP = NULL; - AcpiGbl_XSDT = NULL; - AcpiGbl_FACS = NULL; - AcpiGbl_FADT = NULL; - AcpiGbl_DSDT = NULL; - - - /* Global Lock support */ - - AcpiGbl_GlobalLockAcquired = FALSE; - AcpiGbl_GlobalLockThreadCount = 0; - - /* Miscellaneous variables */ - - AcpiGbl_SystemFlags = 0; - AcpiGbl_StartupFlags = 0; - AcpiGbl_GlobalLockSet = FALSE; - AcpiGbl_RsdpOriginalLocation = 0; - AcpiGbl_CmSingleStep = FALSE; - AcpiGbl_DbTerminateThreads = FALSE; - AcpiGbl_Shutdown = FALSE; - AcpiGbl_NsLookupCount = 0; - AcpiGbl_PsFindCount = 0; - AcpiGbl_AcpiHardwarePresent = TRUE; - AcpiGbl_NextTableOwnerId = FIRST_TABLE_ID; - AcpiGbl_NextMethodOwnerId = FIRST_METHOD_ID; - AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; - - /* Cache of small "state" objects */ - - AcpiGbl_GenericStateCache = NULL; - AcpiGbl_GenericStateCacheDepth = 0; - AcpiGbl_StateCacheRequests = 0; - AcpiGbl_StateCacheHits = 0; - - AcpiGbl_ParseCache = NULL; - AcpiGbl_ParseCacheDepth = 0; - AcpiGbl_ParseCacheRequests = 0; - AcpiGbl_ParseCacheHits = 0; - - AcpiGbl_ExtParseCache = NULL; - AcpiGbl_ExtParseCacheDepth = 0; - AcpiGbl_ExtParseCacheRequests = 0; - AcpiGbl_ExtParseCacheHits = 0; - - AcpiGbl_ObjectCache = NULL; - AcpiGbl_ObjectCacheDepth = 0; - AcpiGbl_ObjectCacheRequests = 0; - AcpiGbl_ObjectCacheHits = 0; - - AcpiGbl_WalkStateCache = NULL; - AcpiGbl_WalkStateCacheDepth = 0; - AcpiGbl_WalkStateCacheRequests = 0; - AcpiGbl_WalkStateCacheHits = 0; - - /* Hardware oriented */ - - AcpiGbl_Gpe0EnableRegisterSave = NULL; - AcpiGbl_Gpe1EnableRegisterSave = NULL; - AcpiGbl_OriginalMode = SYS_MODE_UNKNOWN; /* original ACPI/legacy mode */ - AcpiGbl_GpeRegisters = NULL; - AcpiGbl_GpeInfo = NULL; - - /* Namespace */ - - AcpiGbl_RootNode = NULL; - - AcpiGbl_RootNodeStruct.Name = ACPI_ROOT_NAME; - AcpiGbl_RootNodeStruct.DataType = ACPI_DESC_TYPE_NAMED; - AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_ANY; - AcpiGbl_RootNodeStruct.Child = NULL; - AcpiGbl_RootNodeStruct.Peer = NULL; - AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST; - - /* Memory allocation metrics - compiled out in non-debug mode. */ - - INITIALIZE_ALLOCATION_METRICS(); - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cminit.c b/sys/contrib/dev/acpica/Subsystem/Common/cminit.c deleted file mode 100644 index f2972a0..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cminit.c +++ /dev/null @@ -1,359 +0,0 @@ -/****************************************************************************** - * - * Module Name: cminit - Common ACPI subsystem initialization - * $Revision: 93 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __CMINIT_C__ - -#include "acpi.h" -#include "achware.h" -#include "acnamesp.h" -#include "acevents.h" -#include "acparser.h" -#include "acdispat.h" - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cminit") - - -#define ACPI_OFFSET(d,o) ((UINT32) &(((d *)0)->o)) -#define ACPI_FADT_OFFSET(o) ACPI_OFFSET (FADT_DESCRIPTOR, o) - -/******************************************************************************* - * - * FUNCTION: AcpiCmFadtRegisterError - * - * PARAMETERS: *RegisterName - Pointer to string identifying register - * Value - Actual register contents value - * AcpiTestSpecSection - TDS section containing assertion - * AcpiAssertion - Assertion number being tested - * - * RETURN: AE_BAD_VALUE - * - * DESCRIPTION: Display failure message and link failure to TDS assertion - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiCmFadtRegisterError ( - NATIVE_CHAR *RegisterName, - UINT32 Value, - UINT32 Offset) -{ - - REPORT_ERROR ( - ("Invalid FADT value %s=%lX at offset %lX FADT=%p\n", - RegisterName, Value, Offset, AcpiGbl_FADT)); - - - return (AE_BAD_VALUE); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiCmValidateFadt - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Validate various ACPI registers in the FADT - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmValidateFadt ( - void) -{ - ACPI_STATUS Status = AE_OK; - - - /* - * Verify Fixed ACPI Description Table fields, - * but don't abort on any problems, just display error - */ - - if (AcpiGbl_FADT->Pm1EvtLen < 4) - { - Status = AcpiCmFadtRegisterError ("PM1_EVT_LEN", - (UINT32) AcpiGbl_FADT->Pm1EvtLen, - ACPI_FADT_OFFSET (Pm1EvtLen)); - } - - if (!AcpiGbl_FADT->Pm1CntLen) - { - Status = AcpiCmFadtRegisterError ("PM1_CNT_LEN", 0, - ACPI_FADT_OFFSET (Pm1CntLen)); - } - - if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address)) - { - Status = AcpiCmFadtRegisterError ("X_PM1a_EVT_BLK", 0, - ACPI_FADT_OFFSET (XPm1aEvtBlk.Address)); - } - - if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aCntBlk.Address)) - { - Status = AcpiCmFadtRegisterError ("X_PM1a_CNT_BLK", 0, - ACPI_FADT_OFFSET (XPm1aCntBlk.Address)); - } - - if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address)) - { - Status = AcpiCmFadtRegisterError ("X_PM_TMR_BLK", 0, - ACPI_FADT_OFFSET (XPmTmrBlk.Address)); - } - - if ((ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address) && - !AcpiGbl_FADT->Pm2CntLen)) - { - Status = AcpiCmFadtRegisterError ("PM2_CNT_LEN", - (UINT32) AcpiGbl_FADT->Pm2CntLen, - ACPI_FADT_OFFSET (Pm2CntLen)); - } - - if (AcpiGbl_FADT->PmTmLen < 4) - { - Status = AcpiCmFadtRegisterError ("PM_TM_LEN", - (UINT32) AcpiGbl_FADT->PmTmLen, - ACPI_FADT_OFFSET (PmTmLen)); - } - - /* length of GPE blocks must be a multiple of 2 */ - - - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) && - (AcpiGbl_FADT->Gpe0BlkLen & 1)) - { - Status = AcpiCmFadtRegisterError ("(x)GPE0_BLK_LEN", - (UINT32) AcpiGbl_FADT->Gpe0BlkLen, - ACPI_FADT_OFFSET (Gpe0BlkLen)); - } - - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) && - (AcpiGbl_FADT->Gpe1BlkLen & 1)) - { - Status = AcpiCmFadtRegisterError ("(x)GPE1_BLK_LEN", - (UINT32) AcpiGbl_FADT->Gpe1BlkLen, - ACPI_FADT_OFFSET (Gpe1BlkLen)); - } - - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiCmTerminate - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: free memory allocated for table storage. - * - ******************************************************************************/ - -void -AcpiCmTerminate (void) -{ - - FUNCTION_TRACE ("CmTerminate"); - - - /* Free global tables, etc. */ - - if (AcpiGbl_Gpe0EnableRegisterSave) - { - AcpiCmFree (AcpiGbl_Gpe0EnableRegisterSave); - } - - if (AcpiGbl_Gpe1EnableRegisterSave) - { - AcpiCmFree (AcpiGbl_Gpe1EnableRegisterSave); - } - - - return_VOID; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiCmSubsystemShutdown - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Shutdown the various subsystems. Don't delete the mutex - * objects here -- because the AML debugger may be still running. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmSubsystemShutdown (void) -{ - - FUNCTION_TRACE ("CmSubsystemShutdown"); - - /* Just exit if subsystem is already shutdown */ - - if (AcpiGbl_Shutdown) - { - DEBUG_PRINT (ACPI_ERROR, ("ACPI Subsystem is already terminated\n")); - return_ACPI_STATUS (AE_OK); - } - - /* Subsystem appears active, go ahead and shut it down */ - - AcpiGbl_Shutdown = TRUE; - DEBUG_PRINT (ACPI_INFO, ("Shutting down ACPI Subsystem...\n")); - - - /* Close the Namespace */ - - AcpiNsTerminate (); - - /* Close the AcpiEvent Handling */ - - AcpiEvTerminate (); - - /* Close the globals */ - - AcpiCmTerminate (); - - /* Flush the local cache(s) */ - - AcpiCmDeleteGenericStateCache (); - AcpiCmDeleteObjectCache (); - AcpiDsDeleteWalkStateCache (); - - /* Close the Parser */ - - /* TBD: [Restructure] AcpiPsTerminate () */ - - AcpiPsDeleteParseCache (); - - /* Debug only - display leftover memory allocation, if any */ -#ifdef ENABLE_DEBUGGER - AcpiCmDumpCurrentAllocations (ACPI_UINT32_MAX, NULL); -#endif - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmobject.c b/sys/contrib/dev/acpica/Subsystem/Common/cmobject.c deleted file mode 100644 index 13869b3..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmobject.c +++ /dev/null @@ -1,783 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmobject - ACPI object create/delete/size/cache routines - * $Revision: 36 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __CMOBJECT_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "actables.h" -#include "amlcode.h" - - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmobject") - - -/******************************************************************************* - * - * FUNCTION: _CmCreateInternalObject - * - * PARAMETERS: Address - Address of the memory to deallocate - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * Type - ACPI Type of the new object - * - * RETURN: Object - The new object. Null on failure - * - * DESCRIPTION: Create and initialize a new internal object. - * - * NOTE: We always allocate the worst-case object descriptor because - * these objects are cached, and we want them to be - * one-size-satisifies-any-request. This in itself may not be - * the most memory efficient, but the efficiency of the object - * cache should more than make up for this! - * - ******************************************************************************/ - -ACPI_OPERAND_OBJECT * -_CmCreateInternalObject ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - OBJECT_TYPE_INTERNAL Type) -{ - ACPI_OPERAND_OBJECT *Object; - - - FUNCTION_TRACE_STR ("CmCreateInternalObject", AcpiCmGetTypeName (Type)); - - - /* Allocate the raw object descriptor */ - - Object = _CmAllocateObjectDesc (ModuleName, LineNumber, ComponentId); - if (!Object) - { - /* Allocation failure */ - - return_VALUE (NULL); - } - - /* Save the object type in the object descriptor */ - - Object->Common.Type = Type; - - /* Init the reference count */ - - Object->Common.ReferenceCount = 1; - - /* Any per-type initialization should go here */ - - - return_PTR (Object); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmValidInternalObject - * - * PARAMETERS: Operand - Object to be validated - * - * RETURN: Validate a pointer to be an ACPI_OPERAND_OBJECT - * - ******************************************************************************/ - -BOOLEAN -AcpiCmValidInternalObject ( - void *Object) -{ - - /* Check for a null pointer */ - - if (!Object) - { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Null Object Ptr\n")); - return (FALSE); - } - - /* Check for a pointer within one of the ACPI tables */ - - if (AcpiTbSystemTablePointer (Object)) - { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Object %p is a Pcode Ptr\n", Object)); - return (FALSE); - } - - /* Check the descriptor type field */ - - if (!VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_INTERNAL)) - { - /* Not an ACPI internal object, do some further checking */ - - if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) - { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Obj %p is a named obj, not ACPI obj\n", - Object)); - } - - else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_PARSER)) - { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Obj %p is a parser obj, not ACPI obj\n", - Object)); - } - - else - { - DEBUG_PRINT (ACPI_INFO, - ("CmValidInternalObject: **** Obj %p is of unknown type\n", - Object)); - } - - return (FALSE); - } - - - /* The object appears to be a valid ACPI_OPERAND_OBJECT */ - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: _CmAllocateObjectDesc - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * Message - Error message to use on failure - * - * RETURN: Pointer to newly allocated object descriptor. Null on error - * - * DESCRIPTION: Allocate a new object descriptor. Gracefully handle - * error conditions. - * - ******************************************************************************/ - -void * -_CmAllocateObjectDesc ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId) -{ - ACPI_OPERAND_OBJECT *Object; - - - FUNCTION_TRACE ("_AllocateObjectDesc"); - - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - - AcpiGbl_ObjectCacheRequests++; - - /* Check the cache first */ - - if (AcpiGbl_ObjectCache) - { - /* There is an object available, use it */ - - Object = AcpiGbl_ObjectCache; - AcpiGbl_ObjectCache = Object->Cache.Next; - Object->Cache.Next = NULL; - - AcpiGbl_ObjectCacheHits++; - AcpiGbl_ObjectCacheDepth--; - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - } - - else - { - /* The cache is empty, create a new object */ - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - - /* Attempt to allocate new descriptor */ - - Object = _CmCallocate (sizeof (ACPI_OPERAND_OBJECT), ComponentId, - ModuleName, LineNumber); - if (!Object) - { - /* Allocation failed */ - - _REPORT_ERROR (ModuleName, LineNumber, ComponentId, - ("Could not allocate an object descriptor\n")); - - return_PTR (NULL); - } - - /* Memory allocation metrics - compiled out in non debug mode. */ - - INCREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT)); - } - - /* Mark the descriptor type */ - - Object->Common.DataType = ACPI_DESC_TYPE_INTERNAL; - - DEBUG_PRINT (TRACE_ALLOCATIONS, ("AllocateObjectDesc: %p Size %X\n", - Object, sizeof (ACPI_OPERAND_OBJECT))); - - return_PTR (Object); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmDeleteObjectDesc - * - * PARAMETERS: Object - Acpi internal object to be deleted - * - * RETURN: None. - * - * DESCRIPTION: Free an ACPI object descriptor or add it to the object cache - * - ******************************************************************************/ - -void -AcpiCmDeleteObjectDesc ( - ACPI_OPERAND_OBJECT *Object) -{ - - FUNCTION_TRACE_PTR ("AcpiCmDeleteObjectDesc", Object); - - - /* Make sure that the object isn't already in the cache */ - - if (Object->Common.DataType == (ACPI_DESC_TYPE_INTERNAL | ACPI_CACHED_OBJECT)) - { - DEBUG_PRINT (ACPI_ERROR, - ("CmDeleteObjectDesc: Obj %p is already in the object cache\n", - Object)); - return_VOID; - } - - /* Object must be an ACPI_OPERAND_OBJECT */ - - if (Object->Common.DataType != ACPI_DESC_TYPE_INTERNAL) - { - DEBUG_PRINT (ACPI_ERROR, - ("CmDeleteObjectDesc: Obj %p is not an ACPI object\n", Object)); - return_VOID; - } - - - /* If cache is full, just free this object */ - - if (AcpiGbl_ObjectCacheDepth >= MAX_OBJECT_CACHE_DEPTH) - { - /* - * Memory allocation metrics. Call the macro here since we only - * care about dynamically allocated objects. - */ - DECREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT)); - - AcpiCmFree (Object); - return_VOID; - } - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - - /* Clear the entire object. This is important! */ - - MEMSET (Object, 0, sizeof (ACPI_OPERAND_OBJECT)); - Object->Common.DataType = ACPI_DESC_TYPE_INTERNAL | ACPI_CACHED_OBJECT; - - /* Put the object at the head of the global cache list */ - - Object->Cache.Next = AcpiGbl_ObjectCache; - AcpiGbl_ObjectCache = Object; - AcpiGbl_ObjectCacheDepth++; - - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmDeleteObjectCache - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Purge the global state object cache. Used during subsystem - * termination. - * - ******************************************************************************/ - -void -AcpiCmDeleteObjectCache ( - void) -{ - ACPI_OPERAND_OBJECT *Next; - - - FUNCTION_TRACE ("CmDeleteObjectCache"); - - - /* Traverse the global cache list */ - - while (AcpiGbl_ObjectCache) - { - /* Delete one cached state object */ - - Next = AcpiGbl_ObjectCache->Cache.Next; - AcpiGbl_ObjectCache->Cache.Next = NULL; - - /* - * Memory allocation metrics. Call the macro here since we only - * care about dynamically allocated objects. - */ - DECREMENT_OBJECT_METRICS (sizeof (ACPI_OPERAND_OBJECT)); - - AcpiCmFree (AcpiGbl_ObjectCache); - AcpiGbl_ObjectCache = Next; - AcpiGbl_ObjectCacheDepth--; - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmInitStaticObject - * - * PARAMETERS: ObjDesc - Pointer to a "static" object - on stack - * or in the data segment. - * - * RETURN: None. - * - * DESCRIPTION: Initialize a static object. Sets flags to disallow dynamic - * deletion of the object. - * - ******************************************************************************/ - -void -AcpiCmInitStaticObject ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - - FUNCTION_TRACE_PTR ("CmInitStaticObject", ObjDesc); - - - if (!ObjDesc) - { - return_VOID; - } - - - /* - * Clear the entire descriptor - */ - MEMSET ((void *) ObjDesc, 0, sizeof (ACPI_OPERAND_OBJECT)); - - - /* - * Initialize the header fields - * 1) This is an ACPI_OPERAND_OBJECT descriptor - * 2) The size is the full object (worst case) - * 3) The flags field indicates static allocation - * 4) Reference count starts at one (not really necessary since the - * object can't be deleted, but keeps everything sane) - */ - - ObjDesc->Common.DataType = ACPI_DESC_TYPE_INTERNAL; - ObjDesc->Common.Flags = AOPOBJ_STATIC_ALLOCATION; - ObjDesc->Common.ReferenceCount = 1; - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmGetSimpleObjectSize - * - * PARAMETERS: *InternalObject - Pointer to the object we are examining - * *RetLength - Where the length is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to determine the space required to - * contain a simple object for return to an API user. - * - * The length includes the object structure plus any additional - * needed space. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmGetSimpleObjectSize ( - ACPI_OPERAND_OBJECT *InternalObject, - UINT32 *ObjLength) -{ - UINT32 Length; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("CmGetSimpleObjectSize", InternalObject); - - - /* Handle a null object (Could be a uninitialized package element -- which is legal) */ - - if (!InternalObject) - { - *ObjLength = 0; - return_ACPI_STATUS (AE_OK); - } - - - /* Start with the length of the Acpi object */ - - Length = sizeof (ACPI_OBJECT); - - if (VALID_DESCRIPTOR_TYPE (InternalObject, ACPI_DESC_TYPE_NAMED)) - { - /* Object is a named object (reference), just return the length */ - - *ObjLength = (UINT32) ROUND_UP_TO_NATIVE_WORD (Length); - return_ACPI_STATUS (Status); - } - - - /* - * The final length depends on the object type - * Strings and Buffers are packed right up against the parent object and - * must be accessed bytewise or there may be alignment problems. - * - * TBD:[Investigate] do strings and buffers require alignment also? - */ - - switch (InternalObject->Common.Type) - { - - case ACPI_TYPE_STRING: - - Length += InternalObject->String.Length + 1; - break; - - - case ACPI_TYPE_BUFFER: - - Length += InternalObject->Buffer.Length; - break; - - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_POWER: - - /* - * No extra data for these types - */ - break; - - - case INTERNAL_TYPE_REFERENCE: - - /* - * The only type that should be here is opcode AML_NAMEPATH_OP -- since - * this means an object reference - */ - if (InternalObject->Reference.OpCode != AML_NAMEPATH_OP) - { - DEBUG_PRINT (ACPI_ERROR, - ("CmGetSimpleObjectSize: Unsupported Reference opcode=%X in object %p\n", - InternalObject->Reference.OpCode, InternalObject)); - Status = AE_TYPE; - } - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("CmGetSimpleObjectSize: Unsupported type=%X in object %p\n", - InternalObject->Common.Type, InternalObject)); - Status = AE_TYPE; - break; - } - - - /* - * Account for the space required by the object rounded up to the next - * multiple of the machine word size. This keeps each object aligned - * on a machine word boundary. (preventing alignment faults on some - * machines.) - */ - *ObjLength = (UINT32) ROUND_UP_TO_NATIVE_WORD (Length); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCopyPackageToInternal - * - * PARAMETERS: ACPI_PKG_CALLBACK - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmGetElementLength ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; - UINT32 ObjectSpace; - - - switch (ObjectType) - { - case 0: - - /* - * Simple object - just get the size (Null object/entry is handled - * here also) and sum it into the running package length - */ - Status = AcpiCmGetSimpleObjectSize (SourceObject, &ObjectSpace); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Info->Length += ObjectSpace; - break; - - - case 1: - /* Package - nothing much to do here, let the walk handle it */ - - Info->NumPackages++; - State->Pkg.ThisTargetObj = NULL; - break; - - default: - return (AE_BAD_PARAMETER); - } - - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmGetPackageObjectSize - * - * PARAMETERS: *InternalObject - Pointer to the object we are examining - * *RetLength - Where the length is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to determine the space required to - * contain a package object for return to an API user. - * - * This is moderately complex since a package contains other - * objects including packages. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmGetPackageObjectSize ( - ACPI_OPERAND_OBJECT *InternalObject, - UINT32 *ObjLength) -{ - ACPI_STATUS Status; - ACPI_PKG_INFO Info; - - - FUNCTION_TRACE_PTR ("CmGetPackageObjectSize", InternalObject); - - - Info.Length = 0; - Info.ObjectSpace = 0; - Info.NumPackages = 1; - - Status = AcpiCmWalkPackageTree (InternalObject, NULL, - AcpiCmGetElementLength, &Info); - - /* - * We have handled all of the objects in all levels of the package. - * just add the length of the package objects themselves. - * Round up to the next machine word. - */ - Info.Length += ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * - Info.NumPackages; - - /* Return the total package length */ - - *ObjLength = Info.Length; - return_ACPI_STATUS (Status); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiCmGetObjectSize - * - * PARAMETERS: *InternalObject - Pointer to the object we are examining - * *RetLength - Where the length will be returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to determine the space required to - * contain an object for return to an API user. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmGetObjectSize( - ACPI_OPERAND_OBJECT *InternalObject, - UINT32 *ObjLength) -{ - ACPI_STATUS Status; - - - if ((VALID_DESCRIPTOR_TYPE (InternalObject, ACPI_DESC_TYPE_INTERNAL)) && - (IS_THIS_OBJECT_TYPE (InternalObject, ACPI_TYPE_PACKAGE))) - { - Status = AcpiCmGetPackageObjectSize (InternalObject, ObjLength); - } - - else - { - Status = AcpiCmGetSimpleObjectSize (InternalObject, ObjLength); - } - - return (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmutils.c b/sys/contrib/dev/acpica/Subsystem/Common/cmutils.c deleted file mode 100644 index 123e4e1..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmutils.c +++ /dev/null @@ -1,1181 +0,0 @@ -/******************************************************************************* - * - * Module Name: cmutils - common utility procedures - * $Revision: 27 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __CMUTILS_C__ - -#include "acpi.h" -#include "acevents.h" -#include "achware.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acdebug.h" - - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiCmValidAcpiName - * - * PARAMETERS: Character - The character to be examined - * - * RETURN: 1 if Character may appear in a name, else 0 - * - * DESCRIPTION: Check for a valid ACPI name. Each character must be one of: - * 1) Upper case alpha - * 2) numeric - * 3) underscore - * - ******************************************************************************/ - -BOOLEAN -AcpiCmValidAcpiName ( - UINT32 Name) -{ - NATIVE_CHAR *NamePtr = (NATIVE_CHAR *) &Name; - UINT32 i; - - - for (i = 0; i < ACPI_NAME_SIZE; i++) - { - if (!((NamePtr[i] == '_') || - (NamePtr[i] >= 'A' && NamePtr[i] <= 'Z') || - (NamePtr[i] >= '0' && NamePtr[i] <= '9'))) - { - return (FALSE); - } - } - - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmValidAcpiCharacter - * - * PARAMETERS: Character - The character to be examined - * - * RETURN: 1 if Character may appear in a name, else 0 - * - * DESCRIPTION: Check for a printable character - * - ******************************************************************************/ - -BOOLEAN -AcpiCmValidAcpiCharacter ( - NATIVE_CHAR Character) -{ - - return ((BOOLEAN) ((Character == '_') || - (Character >= 'A' && Character <= 'Z') || - (Character >= '0' && Character <= '9'))); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmMutexInitialize - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Create the system mutex objects. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmMutexInitialize ( - void) -{ - UINT32 i; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("CmMutexInitialize"); - - - /* - * Create each of the predefined mutex objects - */ - for (i = 0; i < NUM_MTX; i++) - { - Status = AcpiCmCreateMutex (i); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmMutexTerminate - * - * PARAMETERS: None. - * - * RETURN: None. - * - * DESCRIPTION: Delete all of the system mutex objects. - * - ******************************************************************************/ - -void -AcpiCmMutexTerminate ( - void) -{ - UINT32 i; - - - FUNCTION_TRACE ("CmMutexTerminate"); - - - /* - * Delete each predefined mutex object - */ - for (i = 0; i < NUM_MTX; i++) - { - AcpiCmDeleteMutex (i); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCreateMutex - * - * PARAMETERS: MutexID - ID of the mutex to be created - * - * RETURN: Status - * - * DESCRIPTION: Create a mutex object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCreateMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_U32 ("CmCreateMutex", MutexId); - - - if (MutexId > MAX_MTX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - if (!AcpiGbl_AcpiMutexInfo[MutexId].Mutex) - { - Status = AcpiOsCreateSemaphore (1, 1, - &AcpiGbl_AcpiMutexInfo[MutexId].Mutex); - AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE; - AcpiGbl_AcpiMutexInfo[MutexId].UseCount = 0; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmDeleteMutex - * - * PARAMETERS: MutexID - ID of the mutex to be deleted - * - * RETURN: Status - * - * DESCRIPTION: Delete a mutex object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmDeleteMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE_U32 ("CmDeleteMutex", MutexId); - - - if (MutexId > MAX_MTX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - Status = AcpiOsDeleteSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex); - - AcpiGbl_AcpiMutexInfo[MutexId].Mutex = NULL; - AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE; - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmAcquireMutex - * - * PARAMETERS: MutexID - ID of the mutex to be acquired - * - * RETURN: Status - * - * DESCRIPTION: Acquire a mutex object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmAcquireMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - ACPI_STATUS Status; - - - DEBUG_PRINT (TRACE_MUTEX, - ("Acquiring Mutex [%s]\n", AcpiCmGetMutexName (MutexId))); - - if (MutexId > MAX_MTX) - { - return (AE_BAD_PARAMETER); - } - - - Status = AcpiOsWaitSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex, - 1, WAIT_FOREVER); - - DEBUG_PRINT (TRACE_MUTEX, ("Acquired Mutex [%s] Status %s\n", - AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status))); - - if (ACPI_SUCCESS (Status)) - { - AcpiGbl_AcpiMutexInfo[MutexId].Locked = TRUE; - AcpiGbl_AcpiMutexInfo[MutexId].UseCount++; - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmReleaseMutex - * - * PARAMETERS: MutexID - ID of the mutex to be released - * - * RETURN: Status - * - * DESCRIPTION: Release a mutex object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmReleaseMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - ACPI_STATUS Status; - - - DEBUG_PRINT (TRACE_MUTEX, - ("Releasing Mutex [%s]\n", AcpiCmGetMutexName (MutexId))); - - if (MutexId > MAX_MTX) - { - return (AE_BAD_PARAMETER); - } - - - AcpiGbl_AcpiMutexInfo[MutexId].Locked = FALSE; /* Mark before unlocking */ - - Status = AcpiOsSignalSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex, 1); - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, ("Error Releasing Mutex [%s], %s\n", - AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status))); - } - else - { - DEBUG_PRINT (TRACE_MUTEX, ("Released Mutex [%s], %s\n", - AcpiCmGetMutexName (MutexId), AcpiCmFormatException (Status))); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCreateUpdateStateAndPush - * - * PARAMETERS: *Object - Object to be added to the new state - * Action - Increment/Decrement - * StateList - List the state will be added to - * - * RETURN: None - * - * DESCRIPTION: Create a new state and push it - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCreateUpdateStateAndPush ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action, - ACPI_GENERIC_STATE **StateList) -{ - ACPI_GENERIC_STATE *State; - - - /* Ignore null objects; these are expected */ - - if (!Object) - { - return (AE_OK); - } - - State = AcpiCmCreateUpdateState (Object, Action); - if (!State) - { - return (AE_NO_MEMORY); - } - - - AcpiCmPushGenericState (StateList, State); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCreatePkgStateAndPush - * - * PARAMETERS: *Object - Object to be added to the new state - * Action - Increment/Decrement - * StateList - List the state will be added to - * - * RETURN: None - * - * DESCRIPTION: Create a new state and push it - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmCreatePkgStateAndPush ( - void *InternalObject, - void *ExternalObject, - UINT16 Index, - ACPI_GENERIC_STATE **StateList) -{ - ACPI_GENERIC_STATE *State; - - - - State = AcpiCmCreatePkgState (InternalObject, ExternalObject, Index); - if (!State) - { - return (AE_NO_MEMORY); - } - - - AcpiCmPushGenericState (StateList, State); - return (AE_OK); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiCmPushGenericState - * - * PARAMETERS: ListHead - Head of the state stack - * State - State object to push - * - * RETURN: Status - * - * DESCRIPTION: Push a state object onto a state stack - * - ******************************************************************************/ - -void -AcpiCmPushGenericState ( - ACPI_GENERIC_STATE **ListHead, - ACPI_GENERIC_STATE *State) -{ - FUNCTION_TRACE ("CmPushGenericState"); - - /* Push the state object onto the front of the list (stack) */ - - State->Common.Next = *ListHead; - *ListHead = State; - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmPopGenericState - * - * PARAMETERS: ListHead - Head of the state stack - * - * RETURN: Status - * - * DESCRIPTION: Pop a state object from a state stack - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiCmPopGenericState ( - ACPI_GENERIC_STATE **ListHead) -{ - ACPI_GENERIC_STATE *State; - - - FUNCTION_TRACE ("DsPopGenericState"); - - - /* Remove the state object at the head of the list (stack) */ - - State = *ListHead; - if (State) - { - /* Update the list head */ - - *ListHead = State->Common.Next; - } - - return_PTR (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCreateGenericState - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Create a generic state object. Attempt to obtain one from - * the global state cache; If none available, create a new one. - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiCmCreateGenericState (void) -{ - ACPI_GENERIC_STATE *State; - - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - - AcpiGbl_StateCacheRequests++; - - /* Check the cache first */ - - if (AcpiGbl_GenericStateCache) - { - /* There is an object available, use it */ - - State = AcpiGbl_GenericStateCache; - AcpiGbl_GenericStateCache = State->Common.Next; - State->Common.Next = NULL; - - AcpiGbl_StateCacheHits++; - AcpiGbl_GenericStateCacheDepth--; - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - - DEBUG_PRINT (TRACE_EXEC, ("CreateGenState: State %p from cache\n", State)); - } - - else - { - /* The cache is empty, create a new object */ - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - - State = AcpiCmCallocate (sizeof (ACPI_GENERIC_STATE)); - } - - /* Initialize */ - - if (State) - { - /* Always zero out the object before init */ - - MEMSET (State, 0, sizeof (ACPI_GENERIC_STATE)); - - State->Common.DataType = ACPI_DESC_TYPE_STATE; - } - - return (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCreateUpdateState - * - * PARAMETERS: Object - Initial Object to be installed in the - * state - * Action - Update action to be performed - * - * RETURN: Status - * - * DESCRIPTION: Create an "Update State" - a flavor of the generic state used - * to update reference counts and delete complex objects such - * as packages. - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiCmCreateUpdateState ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action) -{ - ACPI_GENERIC_STATE *State; - - - FUNCTION_TRACE_PTR ("CmCreateUpdateState", Object); - - - /* Create the generic state object */ - - State = AcpiCmCreateGenericState (); - if (!State) - { - return (NULL); - } - - /* Init fields specific to the update struct */ - - State->Update.Object = Object; - State->Update.Value = Action; - - return_PTR (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCreatePkgState - * - * PARAMETERS: Object - Initial Object to be installed in the - * state - * Action - Update action to be performed - * - * RETURN: Status - * - * DESCRIPTION: Create an "Update State" - a flavor of the generic state used - * to update reference counts and delete complex objects such - * as packages. - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiCmCreatePkgState ( - void *InternalObject, - void *ExternalObject, - UINT16 Index) -{ - ACPI_GENERIC_STATE *State; - - - FUNCTION_TRACE_PTR ("CmCreatePkgState", InternalObject); - - - /* Create the generic state object */ - - State = AcpiCmCreateGenericState (); - if (!State) - { - return (NULL); - } - - /* Init fields specific to the update struct */ - - State->Pkg.SourceObject = (ACPI_OPERAND_OBJECT *) InternalObject; - State->Pkg.DestObject = ExternalObject; - State->Pkg.Index = Index; - State->Pkg.NumPackages = 1; - - return_PTR (State); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiCmCreateControlState - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Create a "Control State" - a flavor of the generic state used - * to support nested IF/WHILE constructs in the AML. - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiCmCreateControlState ( - void) -{ - ACPI_GENERIC_STATE *State; - - - FUNCTION_TRACE ("CmCreateControlState"); - - /* Create the generic state object */ - - State = AcpiCmCreateGenericState (); - if (!State) - { - return (NULL); - } - - - /* Init fields specific to the control struct */ - - State->Common.State = CONTROL_CONDITIONAL_EXECUTING; - - return_PTR (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmDeleteGenericState - * - * PARAMETERS: State - The state object to be deleted - * - * RETURN: Status - * - * DESCRIPTION: Put a state object back into the global state cache. The object - * is not actually freed at this time. - * - ******************************************************************************/ - -void -AcpiCmDeleteGenericState ( - ACPI_GENERIC_STATE *State) -{ - FUNCTION_TRACE ("CmDeleteGenericState"); - - - /* If cache is full, just free this state object */ - - if (AcpiGbl_GenericStateCacheDepth >= MAX_STATE_CACHE_DEPTH) - { - AcpiCmFree (State); - } - - /* Otherwise put this object back into the cache */ - - else - { - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - - /* Clear the state */ - - MEMSET (State, 0, sizeof (ACPI_GENERIC_STATE)); - State->Common.DataType = ACPI_DESC_TYPE_STATE; - - /* Put the object at the head of the global cache list */ - - State->Common.Next = AcpiGbl_GenericStateCache; - AcpiGbl_GenericStateCache = State; - AcpiGbl_GenericStateCacheDepth++; - - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - } - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmDeleteGenericStateCache - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Purge the global state object cache. Used during subsystem - * termination. - * - ******************************************************************************/ - -void -AcpiCmDeleteGenericStateCache ( - void) -{ - ACPI_GENERIC_STATE *Next; - - - FUNCTION_TRACE ("CmDeleteGenericStateCache"); - - - /* Traverse the global cache list */ - - while (AcpiGbl_GenericStateCache) - { - /* Delete one cached state object */ - - Next = AcpiGbl_GenericStateCache->Common.Next; - AcpiCmFree (AcpiGbl_GenericStateCache); - AcpiGbl_GenericStateCache = Next; - AcpiGbl_GenericStateCacheDepth--; - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiCmResolvePackageReferences - * - * PARAMETERS: ObjDesc - The Package object on which to resolve refs - * - * RETURN: Status - * - * DESCRIPTION: Walk through a package and turn internal references into values - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmResolvePackageReferences ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - UINT32 Count; - ACPI_OPERAND_OBJECT *SubObject; - - - FUNCTION_TRACE ("AcpiCmResolvePackageReferences"); - - - if (ObjDesc->Common.Type != ACPI_TYPE_PACKAGE) - { - /* The object must be a package */ - - REPORT_ERROR (("Must resolve Package Refs on a Package\n")); - return_ACPI_STATUS(AE_ERROR); - } - - /* - * TBD: what about nested packages? */ - - for (Count = 0; Count < ObjDesc->Package.Count; Count++) - { - SubObject = ObjDesc->Package.Elements[Count]; - - if (SubObject->Common.Type == INTERNAL_TYPE_REFERENCE) - { - if (SubObject->Reference.OpCode == AML_ZERO_OP) - { - SubObject->Common.Type = ACPI_TYPE_INTEGER; - SubObject->Integer.Value = 0; - } - else if (SubObject->Reference.OpCode == AML_ONE_OP) - { - SubObject->Common.Type = ACPI_TYPE_INTEGER; - SubObject->Integer.Value = 1; - } - else if (SubObject->Reference.OpCode == AML_ONES_OP) - { - SubObject->Common.Type = ACPI_TYPE_INTEGER; - SubObject->Integer.Value = ACPI_INTEGER_MAX; - } - } - } - - return_ACPI_STATUS(AE_OK); -} - -#ifdef ACPI_DEBUG - -/****************************************************************************** - * - * FUNCTION: AcpiCmDisplayInitPathname - * - * PARAMETERS: ObjHandle - Handle whose pathname will be displayed - * Path - Additional path string to be appended - * - * RETURN: ACPI_STATUS - * - * DESCRIPTION: Display full pathnbame of an object, DEBUG ONLY - * - *****************************************************************************/ - -void -AcpiCmDisplayInitPathname ( - ACPI_HANDLE ObjHandle, - char *Path) -{ - ACPI_STATUS Status; - UINT32 Length = 128; - char Buffer[128]; - - - Status = AcpiNsHandleToPathname (ObjHandle, &Length, Buffer); - if (ACPI_SUCCESS (Status)) - { - if (Path) - { - DEBUG_PRINT (TRACE_INIT, ("%s.%s\n", Buffer, Path)) - } - else - { - DEBUG_PRINT (TRACE_INIT, ("%s\n", Buffer)) - } - } -} -#endif - -/******************************************************************************* - * - * FUNCTION: AcpiCmWalkPackageTree - * - * PARAMETERS: ObjDesc - The Package object on which to resolve refs - * - * RETURN: Status - * - * DESCRIPTION: Walk through a package - * - ******************************************************************************/ - -ACPI_STATUS -AcpiCmWalkPackageTree ( - ACPI_OPERAND_OBJECT *SourceObject, - void *TargetObject, - ACPI_PKG_CALLBACK WalkCallback, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GENERIC_STATE *StateList = NULL; - ACPI_GENERIC_STATE *State; - UINT32 ThisIndex; - ACPI_OPERAND_OBJECT *ThisSourceObj; - - - FUNCTION_TRACE ("AcpiCmWalkPackageTree"); - - - State = AcpiCmCreatePkgState (SourceObject, TargetObject, 0); - if (!State) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - while (State) - { - ThisIndex = State->Pkg.Index; - ThisSourceObj = (ACPI_OPERAND_OBJECT *) - State->Pkg.SourceObject->Package.Elements[ThisIndex]; - - /* - * Check for - * 1) An uninitialized package element. It is completely - * legal to declare a package and leave it uninitialized - * 2) Not an internal object - can be a namespace node instead - * 3) Any type other than a package. Packages are handled in else case below. - */ - if ((!ThisSourceObj) || - (!VALID_DESCRIPTOR_TYPE ( - ThisSourceObj, ACPI_DESC_TYPE_INTERNAL)) || - (!IS_THIS_OBJECT_TYPE ( - ThisSourceObj, ACPI_TYPE_PACKAGE))) - { - - Status = WalkCallback (0, ThisSourceObj, State, Context); - if (ACPI_FAILURE (Status)) - { - /* TBD: must delete package created up to this point */ - - return_ACPI_STATUS (Status); - } - - State->Pkg.Index++; - while (State->Pkg.Index >= State->Pkg.SourceObject->Package.Count) - { - /* - * We've handled all of the objects at this level, This means - * that we have just completed a package. That package may - * have contained one or more packages itself. - * - * Delete this state and pop the previous state (package). - */ - AcpiCmDeleteGenericState (State); - State = AcpiCmPopGenericState (&StateList); - - - /* Finished when there are no more states */ - - if (!State) - { - /* - * We have handled all of the objects in the top level - * package just add the length of the package objects - * and exit - */ - return_ACPI_STATUS (AE_OK); - } - - /* - * Go back up a level and move the index past the just - * completed package object. - */ - State->Pkg.Index++; - } - } - - else - { - /* This is a sub-object of type package */ - - Status = WalkCallback (1, ThisSourceObj, State, Context); - if (ACPI_FAILURE (Status)) - { - /* TBD: must delete package created up to this point */ - - return_ACPI_STATUS (Status); - } - - - /* - * The callback above returned a new target package object. - */ - - /* - * Push the current state and create a new one - */ - AcpiCmPushGenericState (&StateList, State); - State = AcpiCmCreatePkgState (ThisSourceObj, State->Pkg.ThisTargetObj, 0); - if (!State) - { - /* TBD: must delete package created up to this point */ - - return_ACPI_STATUS (AE_NO_MEMORY); - } - } - } - - /* We should never get here */ - - return (AE_AML_INTERNAL); - -} - - - -/******************************************************************************* - * - * FUNCTION: _ReportError - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * Message - Error message to use on failure - * - * RETURN: None - * - * DESCRIPTION: Print error message - * - ******************************************************************************/ - -void -_ReportError ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId) -{ - - - AcpiOsPrintf ("%8s-%04d: *** Error: ", ModuleName, LineNumber); -} - - -/******************************************************************************* - * - * FUNCTION: _ReportWarning - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * Message - Error message to use on failure - * - * RETURN: None - * - * DESCRIPTION: Print warning message - * - ******************************************************************************/ - -void -_ReportWarning ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId) -{ - - AcpiOsPrintf ("%8s-%04d: *** Warning: ", ModuleName, LineNumber); -} - - -/******************************************************************************* - * - * FUNCTION: _ReportInfo - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * Message - Error message to use on failure - * - * RETURN: None - * - * DESCRIPTION: Print information message - * - ******************************************************************************/ - -void -_ReportInfo ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId) -{ - - AcpiOsPrintf ("%8s-%04d: *** Info: ", ModuleName, LineNumber); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Common/cmxface.c b/sys/contrib/dev/acpica/Subsystem/Common/cmxface.c deleted file mode 100644 index 92312b9..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Common/cmxface.c +++ /dev/null @@ -1,537 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmxface - External interfaces for "global" ACPI functions - * $Revision: 64 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __CMXFACE_C__ - -#include "acpi.h" -#include "acevents.h" -#include "achware.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acdebug.h" - - -#define _COMPONENT MISCELLANEOUS - MODULE_NAME ("cmxface") - - -/******************************************************************************* - * - * FUNCTION: AcpiInitializeSubsystem - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Initializes all global variables. This is the first function - * called, so any early initialization belongs here. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInitializeSubsystem ( - void) -{ - ACPI_STATUS Status; - - FUNCTION_TRACE ("AcpiInitializeSubsystem"); - - - /* Initialize all globals used by the subsystem */ - - AcpiCmInitGlobals (); - - /* Initialize the OS-Dependent layer */ - - Status = AcpiOsInitialize (); - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("OSD failed to initialize, %s\n", - AcpiCmFormatException (Status))); - return_ACPI_STATUS (Status); - } - - /* Create the default mutex objects */ - - Status = AcpiCmMutexInitialize (); - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("Global mutex creation failure, %s\n", - AcpiCmFormatException (Status))); - return_ACPI_STATUS (Status); - } - - /* - * Initialize the namespace manager and - * the root of the namespace tree - */ - - Status = AcpiNsRootInitialize (); - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("Namespace initialization failure, %s\n", - AcpiCmFormatException (Status))); - return_ACPI_STATUS (Status); - } - - - /* If configured, initialize the AML debugger */ - - DEBUGGER_EXEC (AcpiDbInitialize ()); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEnableSubsystem - * - * PARAMETERS: Flags - Init/enable Options - * - * RETURN: Status - * - * DESCRIPTION: Completes the subsystem initialization including hardware. - * Puts system into ACPI mode if it isn't already. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnableSubsystem ( - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiEnableSubsystem"); - - - /* Sanity check the FADT for valid values */ - - Status = AcpiCmValidateFadt (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Install the default OpRegion handlers. These are - * installed unless other handlers have already been - * installed via the InstallAddressSpaceHandler interface - */ - - if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) - { - DEBUG_PRINT (TRACE_EXEC, ("[Init] Installing default address space handlers\n")); - - Status = AcpiEvInstallDefaultAddressSpaceHandlers (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * We must initialize the hardware before we can enable ACPI. - */ - - if (!(Flags & ACPI_NO_HARDWARE_INIT)) - { - DEBUG_PRINT (TRACE_EXEC, ("[Init] Initializing ACPI hardware\n")); - - Status = AcpiHwInitialize (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Enable ACPI on this platform - */ - - if (!(Flags & ACPI_NO_ACPI_ENABLE)) - { - DEBUG_PRINT (TRACE_EXEC, ("[Init] Going into ACPI mode\n")); - - Status = AcpiEnable (); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT(ACPI_WARN, ("AcpiEnable failed.\n")); - return_ACPI_STATUS (Status); - } - } - - /* - * Note: - * We must have the hardware AND events initialized before we can execute - * ANY control methods SAFELY. Any control method can require ACPI hardware - * support, so the hardware MUST be initialized before execution! - */ - - if (!(Flags & ACPI_NO_EVENT_INIT)) - { - DEBUG_PRINT (TRACE_EXEC, ("[Init] Initializing ACPI events\n")); - - Status = AcpiEvInitialize (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - - /* - * Initialize all device objects in the namespace - * This runs the _STA and _INI methods. - */ - - if (!(Flags & ACPI_NO_DEVICE_INIT)) - { - DEBUG_PRINT (TRACE_EXEC, ("[Init] Initializing ACPI Devices\n")); - - Status = AcpiNsInitializeDevices (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - - /* - * Initialize the objects that remain uninitialized. This - * runs the executable AML that is part of the declaration of OpRegions - * and Fields. - */ - - if (!(Flags & ACPI_NO_OBJECT_INIT)) - { - DEBUG_PRINT (TRACE_EXEC, ("[Init] Initializing ACPI Objects\n")); - - Status = AcpiNsInitializeObjects (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTerminate - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Shutdown the ACPI subsystem. Release all resources. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTerminate (void) -{ - - FUNCTION_TRACE ("AcpiTerminate"); - - /* Terminate the AML Debuger if present */ - - DEBUGGER_EXEC(AcpiGbl_DbTerminateThreads = TRUE); - - /* TBD: [Investigate] This is no longer needed?*/ -/* AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); */ - - - /* Shutdown and free all resources */ - - AcpiCmSubsystemShutdown (); - - - /* Free the mutex objects */ - - AcpiCmMutexTerminate (); - - - /* Now we can shutdown the OS-dependent layer */ - - AcpiOsTerminate (); - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiGetSystemInfo - * - * PARAMETERS: OutBuffer - a pointer to a buffer to receive the - * resources for the device - * BufferLength - the number of bytes available in the buffer - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get information about the current - * state of the ACPI subsystem. It will return system information - * in the OutBuffer. - * - * If the function fails an appropriate status will be returned - * and the value of OutBuffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetSystemInfo ( - ACPI_BUFFER *OutBuffer) -{ - ACPI_SYSTEM_INFO *InfoPtr; - UINT32 i; - - - FUNCTION_TRACE ("AcpiGetSystemInfo"); - - - /* - * Must have a valid buffer - */ - if ((!OutBuffer) || - (!OutBuffer->Pointer)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (OutBuffer->Length < sizeof (ACPI_SYSTEM_INFO)) - { - /* - * Caller's buffer is too small - */ - OutBuffer->Length = sizeof (ACPI_SYSTEM_INFO); - - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - - /* - * Set return length and get data - */ - OutBuffer->Length = sizeof (ACPI_SYSTEM_INFO); - InfoPtr = (ACPI_SYSTEM_INFO *) OutBuffer->Pointer; - - InfoPtr->AcpiCaVersion = ACPI_CA_VERSION; - - /* System flags (ACPI capabilities) */ - - InfoPtr->Flags = AcpiGbl_SystemFlags; - - /* Timer resolution - 24 or 32 bits */ - if (!AcpiGbl_FADT) - { - InfoPtr->TimerResolution = 0; - } - else if (AcpiGbl_FADT->TmrValExt == 0) - { - InfoPtr->TimerResolution = 24; - } - else - { - InfoPtr->TimerResolution = 32; - } - - /* Clear the reserved fields */ - - InfoPtr->Reserved1 = 0; - InfoPtr->Reserved2 = 0; - - /* Current debug levels */ - - InfoPtr->DebugLayer = AcpiDbgLayer; - InfoPtr->DebugLevel = AcpiDbgLevel; - - /* Current status of the ACPI tables, per table type */ - - InfoPtr->NumTableTypes = NUM_ACPI_TABLES; - for (i = 0; i < NUM_ACPI_TABLES; i++) - { - InfoPtr->TableInfo[i].Count = AcpiGbl_AcpiTables[i].Count; - } - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiFormatException - * - * PARAMETERS: OutBuffer - a pointer to a buffer to receive the - * exception name - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function translates an ACPI exception into an ASCII string. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiFormatException ( - ACPI_STATUS Exception, - ACPI_BUFFER *OutBuffer) -{ - UINT32 Length; - NATIVE_CHAR *FormattedException; - - - FUNCTION_TRACE ("AcpiFormatException"); - - - /* - * Must have a valid buffer - */ - if ((!OutBuffer) || - (!OutBuffer->Pointer)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Convert the exception code (Handles bad exception codes) */ - - FormattedException = AcpiCmFormatException (Exception); - - /* - * Get length of string and check if it will fit in caller's buffer - */ - - Length = STRLEN (FormattedException); - if (OutBuffer->Length < Length) - { - OutBuffer->Length = Length; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - - /* Copy the string, all done */ - - STRCPY (OutBuffer->Pointer, FormattedException); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbcmds.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbcmds.c deleted file mode 100644 index b48e7ea..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbcmds.c +++ /dev/null @@ -1,1070 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbcmds - debug commands and output routines - * $Revision: 46 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acevents.h" -#include "acinterp.h" -#include "acdebug.h" -#include "actables.h" - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbcmds") - - -/* - * Arguments for the Objects command - * These object types map directly to the ACPI_TYPES - */ - -ARGUMENT_INFO AcpiDbObjectTypes [] = -{ - {"ANY"}, - {"NUMBERS"}, - {"STRINGS"}, - {"BUFFERS"}, - {"PACKAGES"}, - {"FIELDS"}, - {"DEVICES"}, - {"EVENTS"}, - {"METHODS"}, - {"MUTEXES"}, - {"REGIONS"}, - {"POWERRESOURCES"}, - {"PROCESSORS"}, - {"THERMALZONES"}, - {"BUFFERFIELDS"}, - {"DDBHANDLES"}, - {NULL} /* Must be null terminated */ -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbWalkForReferences - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Check if this namespace object refers to the target object - * that is passed in as the context value. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbWalkForReferences ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc = (ACPI_OPERAND_OBJECT *) Context; - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - - - /* Check for match against the namespace node itself */ - - if (Node == (void *) ObjDesc) - { - AcpiOsPrintf ("Object is a Node [%4.4s]\n", &Node->Name); - } - - /* Check for match against the object attached to the node */ - - if (Node->Object == ObjDesc) - { - AcpiOsPrintf ("Reference at Node->Object %p [%4.4s]\n", Node, &Node->Name); - } - - /* Check first child for a match */ - /* TBD: [Investigate] probably now obsolete with new datastructure */ - - if (Node->Child == (void *) ObjDesc) - { - AcpiOsPrintf ("Reference at Node->Child %p [%4.4s]\n", Node, &Node->Name); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbFindReferences - * - * PARAMETERS: ObjectArg - String with hex value of the object - * - * RETURN: None - * - * DESCRIPTION: Search namespace for all references to the input object - * - ******************************************************************************/ - -void -AcpiDbFindReferences ( - NATIVE_CHAR *ObjectArg) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - - - /* Convert string to object pointer */ - - ObjDesc = (ACPI_OPERAND_OBJECT *) STRTOUL (ObjectArg, NULL, 16); - - /* Search all nodes in namespace */ - - AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbWalkForReferences, (void *) ObjDesc, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayTableInfo - * - * PARAMETERS: TableArg - String with name of table to be displayed - * - * RETURN: None - * - * DESCRIPTION: Display information about loaded tables. Current - * implementation displays all loaded tables. - * - ******************************************************************************/ - -void -AcpiDbDisplayTableInfo ( - NATIVE_CHAR *TableArg) -{ - UINT32 i; - - - for (i = 0; i < NUM_ACPI_TABLES; i++) - { - if (AcpiGbl_AcpiTables[i].Pointer) - { - AcpiOsPrintf ("%s at %p length %X\n", AcpiGbl_AcpiTableData[i].Name, - AcpiGbl_AcpiTables[i].Pointer, AcpiGbl_AcpiTables[i].Length); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbUnloadAcpiTable - * - * PARAMETERS: TableArg - Name of the table to be unloaded - * InstanceArg - Which instance of the table to unload (if - * there are multiple tables of the same type) - * - * RETURN: Nonde - * - * DESCRIPTION: Unload an ACPI table. - * Instance is not implemented - * - ******************************************************************************/ - -void -AcpiDbUnloadAcpiTable ( - NATIVE_CHAR *TableArg, - NATIVE_CHAR *InstanceArg) -{ - UINT32 i; - ACPI_STATUS Status; - - - /* Search all tables for the target type */ - - for (i = 0; i < NUM_ACPI_TABLES; i++) - { - if (!STRNCMP (TableArg, AcpiGbl_AcpiTableData[i].Signature, AcpiGbl_AcpiTableData[i].SigLength)) - { - /* Found the table, unload it */ - - Status = AcpiUnloadTable (i); - if (ACPI_SUCCESS (Status)) - { - AcpiOsPrintf ("[%s] unloaded and uninstalled\n", TableArg); - } - else - { - AcpiOsPrintf ("%s, while unloading [%s]\n", AcpiCmFormatException (Status), TableArg); - } - - return; - } - } - - AcpiOsPrintf ("Unknown table type [%s]\n", TableArg); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetMethodBreakpoint - * - * PARAMETERS: Location - AML offset of breakpoint - * WalkState - Current walk info - * Op - Current Op (from parse walk) - * - * RETURN: None - * - * DESCRIPTION: Set a breakpoint in a control method at the specified - * AML offset - * - ******************************************************************************/ - -void -AcpiDbSetMethodBreakpoint ( - NATIVE_CHAR *Location, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - UINT32 Address; - - - if (!Op) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - /* Get and verify the breakpoint address */ - - Address = STRTOUL (Location, NULL, 16); - if (Address <= Op->AmlOffset) - { - AcpiOsPrintf ("Breakpoint %X is beyond current address %X\n", Address, Op->AmlOffset); - } - - /* Save breakpoint in current walk */ - - WalkState->MethodBreakpoint = Address; - AcpiOsPrintf ("Breakpoint set at AML offset %X\n", Address); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetMethodCallBreakpoint - * - * PARAMETERS: Op - Current Op (from parse walk) - * - * RETURN: None - * - * DESCRIPTION: Set a breakpoint in a control method at the specified - * AML offset - * - ******************************************************************************/ - -void -AcpiDbSetMethodCallBreakpoint ( - ACPI_PARSE_OBJECT *Op) -{ - - - if (!Op) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - - AcpiGbl_StepToNextCall = TRUE; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisassembleAml - * - * PARAMETERS: Statements - Number of statements to disassemble - * Op - Current Op (from parse walk) - * - * RETURN: None - * - * DESCRIPTION: Display disassembled AML (ASL) starting from Op for the number - * of statements specified. - * - ******************************************************************************/ - -void -AcpiDbDisassembleAml ( - NATIVE_CHAR *Statements, - ACPI_PARSE_OBJECT *Op) -{ - UINT32 NumStatements = 8; - - - if (!Op) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - if (Statements) - { - NumStatements = STRTOUL (Statements, NULL, 0); - } - - - AcpiDbDisplayOp (NULL, Op, NumStatements); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpNamespace - * - * PARAMETERS: StartArg - Node to begin namespace dump - * DepthArg - Maximum tree depth to be dumped - * - * RETURN: None - * - * DESCRIPTION: Dump entire namespace or a subtree. Each node is displayed - * with type and other information. - * - ******************************************************************************/ - -void -AcpiDbDumpNamespace ( - NATIVE_CHAR *StartArg, - NATIVE_CHAR *DepthArg) -{ - ACPI_HANDLE SubtreeEntry = AcpiGbl_RootNode; - UINT32 MaxDepth = ACPI_UINT32_MAX; - - - /* No argument given, just start at the root and dump entire namespace */ - - if (StartArg) - { - /* Check if numeric argument, must be a Node */ - - if ((StartArg[0] >= 0x30) && (StartArg[0] <= 0x39)) - { - SubtreeEntry = (ACPI_HANDLE) STRTOUL (StartArg, NULL, 16); - if (!AcpiOsReadable (SubtreeEntry, sizeof (ACPI_NAMESPACE_NODE))) - { - AcpiOsPrintf ("Address %p is invalid in this address space\n", SubtreeEntry); - return; - } - - if (!VALID_DESCRIPTOR_TYPE ((SubtreeEntry), ACPI_DESC_TYPE_NAMED)) - { - AcpiOsPrintf ("Address %p is not a valid Named object\n", SubtreeEntry); - return; - } - } - - /* Alpha argument */ - - else - { - /* The parameter is a name string that must be resolved to a Named obj*/ - - SubtreeEntry = AcpiDbLocalNsLookup (StartArg); - if (!SubtreeEntry) - { - SubtreeEntry = AcpiGbl_RootNode; - } - } - - /* Now we can check for the depth argument */ - - if (DepthArg) - { - MaxDepth = STRTOUL (DepthArg, NULL, 0); - } - } - - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("ACPI Namespace (from %p subtree):\n", SubtreeEntry); - - /* Display the subtree */ - - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); - AcpiNsDumpObjects (ACPI_TYPE_ANY, MaxDepth, ACPI_UINT32_MAX, SubtreeEntry); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpNamespaceByOwner - * - * PARAMETERS: OwnerArg - Owner ID whose nodes will be displayed - * DepthArg - Maximum tree depth to be dumped - * - * RETURN: None - * - * DESCRIPTION: Dump elements of the namespace that are owned by the OwnerId. - * - ******************************************************************************/ - -void -AcpiDbDumpNamespaceByOwner ( - NATIVE_CHAR *OwnerArg, - NATIVE_CHAR *DepthArg) -{ - ACPI_HANDLE SubtreeEntry = AcpiGbl_RootNode; - UINT32 MaxDepth = ACPI_UINT32_MAX; - UINT16 OwnerId; - - - OwnerId = (UINT16) STRTOUL (OwnerArg, NULL, 0); - - - /* Now we can check for the depth argument */ - - if (DepthArg) - { - MaxDepth = STRTOUL (DepthArg, NULL, 0); - } - - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("ACPI Namespace by owner %X:\n", OwnerId); - - /* Display the subtree */ - - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); - AcpiNsDumpObjects (ACPI_TYPE_ANY, MaxDepth, OwnerId, SubtreeEntry); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSendNotify - * - * PARAMETERS: Name - Name of ACPI object to send the notify to - * Value - Value of the notify to send. - * - * RETURN: None - * - * DESCRIPTION: Send an ACPI notification. The value specified is sent to the - * named object as an ACPI notify. - * - ******************************************************************************/ - -void -AcpiDbSendNotify ( - NATIVE_CHAR *Name, - UINT32 Value) -{ - ACPI_NAMESPACE_NODE *Node; - - - /* Translate name to an Named object */ - - Node = AcpiDbLocalNsLookup (Name); - if (!Node) - { - return; - } - - /* Decode Named object type */ - - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_THERMAL: - - /* Send the notify */ - - AcpiEvNotifyDispatch (Node, Value); - break; - - default: - AcpiOsPrintf ("Named object is not a device or a thermal object\n"); - break; - } - -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetMethodData - * - * PARAMETERS: TypeArg - L for local, A for argument - * IndexArg - which one - * ValueArg - Value to set. - * - * RETURN: None - * - * DESCRIPTION: Set a local or argument for the running control method. - * NOTE: only object supported is Number. - * - ******************************************************************************/ - -void -AcpiDbSetMethodData ( - NATIVE_CHAR *TypeArg, - NATIVE_CHAR *IndexArg, - NATIVE_CHAR *ValueArg) -{ - NATIVE_CHAR Type; - UINT32 Index; - UINT32 Value; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - - - /* Validate TypeArg */ - - STRUPR (TypeArg); - Type = TypeArg[0]; - if ((Type != 'L') && - (Type != 'A')) - { - AcpiOsPrintf ("Invalid SET operand: %s\n", TypeArg); - return; - } - - /* Get the index and value */ - - Index = STRTOUL (IndexArg, NULL, 16); - Value = STRTOUL (ValueArg, NULL, 16); - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - - /* Create and initialize the new object */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ObjDesc) - { - AcpiOsPrintf ("Could not create an internal object\n"); - return; - } - - ObjDesc->Integer.Value = Value; - - - /* Store the new object into the target */ - - switch (Type) - { - case 'A': - - /* Set a method argument */ - - if (Index > MTH_NUM_ARGS) - { - AcpiOsPrintf ("Arg%d - Invalid argument name\n", Index); - return; - } - - AcpiDsMethodDataSetValue (MTH_TYPE_ARG, Index, ObjDesc, WalkState); - ObjDesc = WalkState->Arguments[Index].Object; - - AcpiOsPrintf ("Arg%d: ", Index); - AcpiDbDisplayInternalObject (ObjDesc, WalkState); - break; - - case 'L': - - /* Set a method local */ - - if (Index > MTH_NUM_LOCALS) - { - AcpiOsPrintf ("Local%d - Invalid local variable name\n", Index); - return; - } - - AcpiDsMethodDataSetValue (MTH_TYPE_LOCAL, Index, ObjDesc, WalkState); - ObjDesc = WalkState->LocalVariables[Index].Object; - - AcpiOsPrintf ("Local%d: ", Index); - AcpiDbDisplayInternalObject (ObjDesc, WalkState); - break; - - default: - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbWalkForSpecificObjects - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Display short info about objects in the namespace - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbWalkForSpecificObjects ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - UINT32 BufSize; - NATIVE_CHAR Buffer[64]; - - - ObjDesc = ((ACPI_NAMESPACE_NODE *)ObjHandle)->Object; - BufSize = sizeof (Buffer) / sizeof (*Buffer); - - /* Get and display the full pathname to this object */ - - Status = AcpiNsHandleToPathname (ObjHandle, &BufSize, Buffer); - - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); - return (AE_OK); - } - - AcpiOsPrintf ("%32s", Buffer); - - - /* Display short information about the object */ - - if (ObjDesc) - { - switch (ObjDesc->Common.Type) - { - case ACPI_TYPE_METHOD: - AcpiOsPrintf (" #Args %d Concurrency %X", ObjDesc->Method.ParamCount, ObjDesc->Method.Concurrency); - break; - - case ACPI_TYPE_INTEGER: - AcpiOsPrintf (" Value %X", ObjDesc->Integer.Value); - break; - - case ACPI_TYPE_STRING: - AcpiOsPrintf (" \"%s\"", ObjDesc->String.Pointer); - break; - - case ACPI_TYPE_REGION: - AcpiOsPrintf (" SpaceId %X Address %X Length %X", ObjDesc->Region.SpaceId, ObjDesc->Region.Address, ObjDesc->Region.Length); - break; - - case ACPI_TYPE_PACKAGE: - AcpiOsPrintf (" #Elements %X", ObjDesc->Package.Count); - break; - - case ACPI_TYPE_BUFFER: - AcpiOsPrintf (" Length %X", ObjDesc->Buffer.Length); - break; - } - } - - AcpiOsPrintf ("\n"); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayObjects - * - * PARAMETERS: ObjTypeArg - Type of object to display - * DisplayCountArg - Max depth to display - * - * RETURN: None - * - * DESCRIPTION: Display objects in the namespace of the requested type - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbDisplayObjects ( - NATIVE_CHAR *ObjTypeArg, - NATIVE_CHAR *DisplayCountArg) -{ - UINT32 DisplayCount; - OBJECT_TYPE_INTERNAL Type; - - - /* Get the object type */ - - STRUPR (ObjTypeArg); - Type = AcpiDbMatchArgument (ObjTypeArg, AcpiDbObjectTypes); - if (Type == ACPI_TYPE_NOT_FOUND) - { - AcpiOsPrintf ("Invalid or unsupported argument\n"); - return (AE_OK); - } - - /* Get the display depth */ - - if (DisplayCountArg) - { - DisplayCount = STRTOUL (DisplayCountArg, NULL, 0); - } - - else - { - DisplayCount = ACPI_UINT32_MAX; - } - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("Objects of type [%s] defined in the current ACPI Namespace: \n", AcpiCmGetTypeName (Type)); - - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); - - /* Walk the namespace from the root */ - - AcpiWalkNamespace (Type, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbWalkForSpecificObjects, (void *) &Type, NULL); - - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbWalkAndMatchName - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Find a particular name/names within the namespace. Wildcards - * are supported -- '?' matches any character. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbWalkAndMatchName ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - NATIVE_CHAR *RequestedName = (NATIVE_CHAR *) Context; - UINT32 i; - UINT32 BufSize; - NATIVE_CHAR Buffer[96]; - - - ObjDesc = ((ACPI_NAMESPACE_NODE *)ObjHandle)->Object; - - - /* Check for a name match */ - - for (i = 0; i < 4; i++) - { - /* Wildcard support */ - - if ((RequestedName[i] != '?') && - (RequestedName[i] != ((NATIVE_CHAR *) (&((ACPI_NAMESPACE_NODE *) ObjHandle)->Name))[i])) - { - /* No match, just exit */ - - return (AE_OK); - } - } - - - /* Get the full pathname to this object */ - - BufSize = sizeof (Buffer) / sizeof (*Buffer); - - Status = AcpiNsHandleToPathname (ObjHandle, &BufSize, Buffer); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); - } - - else - { - AcpiOsPrintf ("%32s (%p) - %s\n", Buffer, ObjHandle, - AcpiCmGetTypeName (((ACPI_NAMESPACE_NODE *) ObjHandle)->Type)); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbFindNameInNamespace - * - * PARAMETERS: NameArg - The 4-character ACPI name to find. - * wildcards are supported. - * - * RETURN: None - * - * DESCRIPTION: Search the namespace for a given name (with wildcards) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbFindNameInNamespace ( - NATIVE_CHAR *NameArg) -{ - - if (STRLEN (NameArg) > 4) - { - AcpiOsPrintf ("Name must be no longer than 4 characters\n"); - return (AE_OK); - } - - /* Walk the namespace from the root */ - - AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbWalkAndMatchName, NameArg, NULL); - - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetScope - * - * PARAMETERS: Name - New scope path - * - * RETURN: Status - * - * DESCRIPTION: Set the "current scope" as maintained by this utility. - * The scope is used as a prefix to ACPI paths. - * - ******************************************************************************/ - -void -AcpiDbSetScope ( - NATIVE_CHAR *Name) -{ - - if (!Name || Name[0] == 0) - { - AcpiOsPrintf ("Current scope: %s\n", ScopeBuf); - return; - } - - AcpiDbPrepNamestring (Name); - - /* TBD: [Future] Validate scope here */ - - if (Name[0] == '\\') - { - STRCPY (ScopeBuf, Name); - STRCAT (ScopeBuf, "\\"); - } - - else - { - STRCAT (ScopeBuf, Name); - STRCAT (ScopeBuf, "\\"); - } - - AcpiOsPrintf ("New scope: %s\n", ScopeBuf); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayResources - * - * PARAMETERS: ObjectArg - String with hex value of the object - * - * RETURN: None - * - * DESCRIPTION: - * - ******************************************************************************/ - -void -AcpiDbDisplayResources ( - NATIVE_CHAR *ObjectArg) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - ACPI_BUFFER ReturnObj; - PCI_ROUTING_TABLE *Prt; - UINT32 i; - - - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); - - /* Convert string to object pointer */ - - ObjDesc = (ACPI_OPERAND_OBJECT *) STRTOUL (ObjectArg, NULL, 16); - - /* Prepare for a return object of arbitrary size */ - - ReturnObj.Pointer = Buffer; - ReturnObj.Length = BUFFER_SIZE; - - Status = AcpiEvaluateObject (ObjDesc, "_PRT", NULL, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not obtain _PRT: %s\n", AcpiCmFormatException (Status)); - goto Cleanup; - } - - ReturnObj.Pointer = Buffer; - ReturnObj.Length = BUFFER_SIZE; - - Status = AcpiGetIrqRoutingTable (ObjDesc, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n", AcpiCmFormatException (Status)); - goto Cleanup; - } - - Prt = (PCI_ROUTING_TABLE *) Buffer; - i = 0; - while ((char *) Prt < (Buffer + ReturnObj.Length)) - { - AcpiOsPrintf ("Prt[%d] Src=%s: Addr=%X\n", i, Prt->Source, Prt->Address); - i++; - Prt = (PCI_ROUTING_TABLE *) (((char *) Prt) + Prt->Length); - } - -Cleanup: - - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); - return; - -} - - - - - -#endif /* ENABLE_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbdisasm.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbdisasm.c deleted file mode 100644 index 8d3f7db..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbdisasm.c +++ /dev/null @@ -1,823 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbdisasm - parser op tree display routines - * $Revision: 37 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdebug.h" - - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbdisasm") - - -#define MAX_SHOW_ENTRY 128 -#define BLOCK_PAREN 1 -#define BLOCK_BRACE 2 -#define DB_NO_OP_INFO " [%2.2d] " -#define DB_FULL_OP_INFO "%5.5X #%4.4X [%2.2d] " - - -NATIVE_CHAR *INDENT_STRING = "...."; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbBlockType - * - * PARAMETERS: Op - Object to be examined - * - * RETURN: Status - * - * DESCRIPTION: Type of block for this op (parens or braces) - * - ******************************************************************************/ - -UINT32 -AcpiDbBlockType ( - ACPI_PARSE_OBJECT *Op) -{ - - switch (Op->Opcode) - { - case AML_METHOD_OP: - return (BLOCK_BRACE); - break; - - default: - break; - } - - return (BLOCK_PAREN); - -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsDisplayObjectPathname - * - * PARAMETERS: Op - Object whose pathname is to be obtained - * - * RETURN: Status - * - * DESCRIPTION: Diplay the pathname associated with a named object. Two - * versions. One searches the parse tree (for parser-only - * applications suchas AcpiDump), and the other searches the - * ACPI namespace (the parse tree is probably deleted) - * - ******************************************************************************/ - -#ifdef PARSER_ONLY - -ACPI_STATUS -AcpiPsDisplayObjectPathname ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *TargetOp; - - - /* Search parent tree up to the root if necessary */ - - TargetOp = AcpiPsFind (Op, Op->Value.Name, 0, 0); - if (!TargetOp) - { - /* - * Didn't find the name in the parse tree. This may be - * a problem, or it may simply be one of the predefined names - * (such as _OS_). Rather than worry about looking up all - * the predefined names, just display the name as given - */ - - AcpiOsPrintf (" **** Path not found in parse tree"); - } - - else - { - /* The target was found, print the name and complete path */ - - AcpiOsPrintf (" (Path "); - AcpiDbDisplayPath (TargetOp); - AcpiOsPrintf (")"); - } - - return (AE_OK); -} - -#else - -ACPI_STATUS -AcpiPsDisplayObjectPathname ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - NATIVE_CHAR Buffer[MAX_SHOW_ENTRY]; - UINT32 BufferSize = MAX_SHOW_ENTRY; - - - AcpiOsPrintf (" (Path "); - - /* Just get the Node out of the Op object */ - - Node = Op->Node; - if (!Node) - { - /* - * No Named obj, so we can't get the pathname since the object - * is not in the namespace. This can happen during single - * stepping where a dynamic named object is *about* to be created. - */ - return (AE_OK); - } - - /* Convert NamedDesc/handle to a full pathname */ - - Status = AcpiNsHandleToPathname (Node, &BufferSize, Buffer); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("****Could not get pathname****)"); - return (Status); - } - - AcpiOsPrintf ("%s)", Buffer); - return (AE_OK); -} - -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayOp - * - * PARAMETERS: Origin - Starting object - * NumOpcodes - Max number of opcodes to be displayed - * - * RETURN: None - * - * DESCRIPTION: Display parser object and its children - * - ******************************************************************************/ - -void -AcpiDbDisplayOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Origin, - UINT32 NumOpcodes) -{ - ACPI_PARSE_OBJECT *Op = Origin; - ACPI_PARSE_OBJECT *arg; - ACPI_PARSE_OBJECT *depth; - UINT32 DepthCount = 0; - UINT32 LastDepth = 0; - UINT32 i; - UINT32 j; - - - if (Op) - { - while (Op) - { - /* indentation */ - - DepthCount = 0; - if (!opt_verbose) - { - DepthCount++; - } - - /* Determine the nesting depth of this argument */ - - for (depth = Op->Parent; depth; depth = depth->Parent) - { - arg = AcpiPsGetArg (depth, 0); - while (arg && arg != Origin) - { - arg = arg->Next; - } - - if (arg) - { - break; - } - - DepthCount++; - } - - - /* Open a new block if we are nested further than last time */ - - if (DepthCount > LastDepth) - { - VERBOSE_PRINT ((DB_NO_OP_INFO, LastDepth)); - for (i = 0; i < LastDepth; i++) - { - AcpiOsPrintf (INDENT_STRING); - } - - if (AcpiDbBlockType (Op) == BLOCK_PAREN) - AcpiOsPrintf ("(\n"); - else - AcpiOsPrintf ("{\n"); - } - - /* Close a block if we are nested less than last time */ - - else if (DepthCount < LastDepth) - { - for (j = 0; j < (LastDepth - DepthCount); j++) - { - VERBOSE_PRINT ((DB_NO_OP_INFO, LastDepth - j)); - for (i = 0; i < (LastDepth - j - 1); i++) - { - AcpiOsPrintf (INDENT_STRING); - } - - if (AcpiDbBlockType (Op) == BLOCK_PAREN) - AcpiOsPrintf (")\n"); - else - AcpiOsPrintf ("}\n"); - } - } - - /* In verbose mode, print the AML offset, opcode and depth count */ - - VERBOSE_PRINT ((DB_FULL_OP_INFO, (unsigned) Op->AmlOffset, Op->Opcode, DepthCount)); - - - /* Indent the output according to the depth count */ - - for (i = 0; i < DepthCount; i++) - { - AcpiOsPrintf (INDENT_STRING); - } - - - /* Now print the opcode */ - - AcpiDbDisplayOpcode (WalkState, Op); - - /* Resolve a name reference */ - - if ((Op->Opcode == AML_NAMEPATH_OP && Op->Value.Name) && - (Op->Parent) && - (opt_verbose)) - { - AcpiPsDisplayObjectPathname (Op); - } - - AcpiOsPrintf ("\n"); - - /* Get the next node in the tree */ - - Op = AcpiPsGetDepthNext (Origin, Op); - LastDepth = DepthCount; - - NumOpcodes--; - if (!NumOpcodes) - { - Op = NULL; - } - } - - /* Close the last block(s) */ - - DepthCount = LastDepth -1; - for (i = 0; i < LastDepth; i++) - { - VERBOSE_PRINT ((DB_NO_OP_INFO, LastDepth - i)); - for (j = 0; j < DepthCount; j++) - { - AcpiOsPrintf (INDENT_STRING); - } - AcpiOsPrintf ("}\n"); - DepthCount--; - } - - } - - else - { - AcpiDbDisplayOpcode (WalkState, Op); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayNamestring - * - * PARAMETERS: Name - ACPI Name string to store - * - * RETURN: None - * - * DESCRIPTION: Display namestring. Handles prefix characters - * - ******************************************************************************/ - -void -AcpiDbDisplayNamestring ( - NATIVE_CHAR *Name) -{ - UINT32 SegCount; - BOOLEAN DoDot = FALSE; - - - if (!Name) - { - AcpiOsPrintf ("<NULL NAME PTR>"); - return; - } - - if (AcpiPsIsPrefixChar (GET8 (Name))) - { - /* append prefix character */ - - AcpiOsPrintf ("%1c", GET8 (Name)); - Name++; - } - - switch (GET8 (Name)) - { - case AML_DUAL_NAME_PREFIX: - SegCount = 2; - Name++; - break; - - case AML_MULTI_NAME_PREFIX_OP: - SegCount = (UINT32) GET8 (Name + 1); - Name += 2; - break; - - default: - SegCount = 1; - break; - } - - while (SegCount--) - { - /* append Name segment */ - - if (DoDot) - { - /* append dot */ - - AcpiOsPrintf ("."); - } - - AcpiOsPrintf ("%4.4s", Name); - DoDot = TRUE; - - Name += 4; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayPath - * - * PARAMETERS: Op - Named Op whose path is to be constructed - * - * RETURN: None - * - * DESCRIPTION: Walk backwards from current scope and display the name - * of each previous level of scope up to the root scope - * (like "pwd" does with file systems) - * - ******************************************************************************/ - -void -AcpiDbDisplayPath ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Prev; - ACPI_PARSE_OBJECT *Search; - UINT32 Name; - BOOLEAN DoDot = FALSE; - ACPI_PARSE_OBJECT *NamePath; - - - /* We are only interested in named objects */ - - if (!AcpiPsIsNodeOp (Op->Opcode)) - { - return; - } - - - if (AcpiPsIsCreateFieldOp (Op->Opcode)) - { - /* Field creation - check for a fully qualified namepath */ - - if (Op->Opcode == AML_CREATE_FIELD_OP) - { - NamePath = AcpiPsGetArg (Op, 3); - } - else - { - NamePath = AcpiPsGetArg (Op, 2); - } - - if ((NamePath) && - (NamePath->Value.String) && - (NamePath->Value.String[0] == '\\')) - { - AcpiDbDisplayNamestring (NamePath->Value.String); - return; - } - } - - Prev = NULL; /* Start with Root Node */ - - while (Prev != Op) - { - /* Search upwards in the tree to find scope with "prev" as its parent */ - - Search = Op; - for (; ;) - { - if (Search->Parent == Prev) - { - break; - } - - /* Go up one level */ - - Search = Search->Parent; - } - - if (Prev && !AcpiPsIsFieldOp (Search->Opcode)) - { - /* below root scope, append scope name */ - - if (DoDot) - { - /* append dot */ - - AcpiOsPrintf ("."); - } - - if (AcpiPsIsCreateFieldOp (Search->Opcode)) - { - if (Op->Opcode == AML_CREATE_FIELD_OP) - { - NamePath = AcpiPsGetArg (Op, 3); - } - else - { - NamePath = AcpiPsGetArg (Op, 2); - } - - if ((NamePath) && - (NamePath->Value.String)) - { - AcpiOsPrintf ("%4.4s", NamePath->Value.String); - } - } - - else - { - Name = AcpiPsGetName (Search); - AcpiOsPrintf ("%4.4s", &Name); - } - - DoDot = TRUE; - } - - Prev = Search; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayOpcode - * - * PARAMETERS: Op - Op that is to be printed - * - * RETURN: Status - * - * DESCRIPTION: Store printed op in a Buffer and return its length - * (or -1 if out of space) - * - * NOTE: Terse mode prints out ASL-like code. Verbose mode adds more info. - * - ******************************************************************************/ - -void -AcpiDbDisplayOpcode ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - UINT8 *ByteData; - UINT32 ByteCount; - UINT32 i; - ACPI_OPCODE_INFO *Opc = NULL; - UINT32 Name; - - - if (!Op) - { - AcpiOsPrintf ("<NULL OP PTR>"); - } - - - /* op and arguments */ - - switch (Op->Opcode) - { - - case AML_BYTE_OP: - - if (opt_verbose) - { - AcpiOsPrintf ("(UINT8) 0x%2.2X", Op->Value.Integer & ACPI_UINT8_MAX); - } - - else - { - AcpiOsPrintf ("0x%2.2X", Op->Value.Integer & ACPI_UINT8_MAX); - } - - break; - - - case AML_WORD_OP: - - if (opt_verbose) - { - AcpiOsPrintf ("(UINT16) 0x%4.4X", Op->Value.Integer & ACPI_UINT16_MAX); - } - - else - { - AcpiOsPrintf ("0x%4.4X", Op->Value.Integer & ACPI_UINT16_MAX); - } - - break; - - - case AML_DWORD_OP: - - if (opt_verbose) - { - AcpiOsPrintf ("(UINT32) 0x%8.8X", Op->Value.Integer); - } - - else - { - AcpiOsPrintf ("0x%8.8X", Op->Value.Integer); - } - - break; - - - case AML_STRING_OP: - - if (Op->Value.String) - { - AcpiOsPrintf ("\"%s\"", Op->Value.String); - } - - else - { - AcpiOsPrintf ("<\"NULL STRING PTR\">"); - } - - break; - - - case AML_STATICSTRING_OP: - - if (Op->Value.String) - { - AcpiOsPrintf ("\"%s\"", Op->Value.String); - } - - else - { - AcpiOsPrintf ("\"<NULL STATIC STRING PTR>\""); - } - - break; - - - case AML_NAMEPATH_OP: - - AcpiDbDisplayNamestring (Op->Value.Name); - break; - - - case AML_NAMEDFIELD_OP: - - AcpiOsPrintf ("NamedField (Length 0x%8.8X) ", Op->Value.Integer); - break; - - - case AML_RESERVEDFIELD_OP: - - AcpiOsPrintf ("ReservedField (Length 0x%8.8X) ", Op->Value.Integer); - break; - - - case AML_ACCESSFIELD_OP: - - AcpiOsPrintf ("AccessField (Length 0x%8.8X) ", Op->Value.Integer); - break; - - - case AML_BYTELIST_OP: - - if (opt_verbose) - { - AcpiOsPrintf ("ByteList (Length 0x%8.8X) ", Op->Value.Integer); - } - - else - { - AcpiOsPrintf ("0x%2.2X", Op->Value.Integer); - - ByteCount = Op->Value.Integer; - ByteData = ((ACPI_PARSE2_OBJECT *) Op)->Data; - - for (i = 0; i < ByteCount; i++) - { - AcpiOsPrintf (", 0x%2.2X", ByteData[i]); - } - } - - break; - - - default: - - /* Just get the opcode name and print it */ - - Opc = AcpiPsGetOpcodeInfo (Op->Opcode); - AcpiOsPrintf ("%s", Opc->Name); - - -#ifndef PARSER_ONLY - if ((Op->Opcode == AML_RETURN_VALUE_OP) && - (WalkState->Results) && - (WalkState->Results->Results.NumResults)) - { - AcpiDbDecodeInternalObject (WalkState->Results->Results.ObjDesc [WalkState->Results->Results.NumResults-1]); - } -#endif - - break; - } - - - if (!Opc) - { - /* If there is another element in the list, add a comma */ - - if (Op->Next) - { - AcpiOsPrintf (","); - } - } - - - /* - * If this is a named opcode, print the associated name value - */ - - if (Op && AcpiPsIsNamedOp (Op->Opcode)) - { - Name = AcpiPsGetName (Op); - AcpiOsPrintf (" %4.4s", &Name); - - if (opt_verbose) - { - AcpiOsPrintf (" (Path \\"); - AcpiDbDisplayPath (Op); - AcpiOsPrintf (")"); - } - } -} - - -#endif /* ENABLE_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbdisply.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbdisply.c deleted file mode 100644 index 3be6f93..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbdisply.c +++ /dev/null @@ -1,931 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbdisply - debug display commands - * $Revision: 41 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acevents.h" -#include "acinterp.h" -#include "acdebug.h" - - -#ifdef ENABLE_DEBUGGER - - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbdisply") - - -/****************************************************************************** - * - * FUNCTION: AcpiDbGetPointer - * - * PARAMETERS: Target - Pointer to string to be converted - * - * RETURN: Converted pointer - * - * DESCRIPTION: Convert an ascii pointer value to a real value - * - *****************************************************************************/ - -void * -AcpiDbGetPointer ( - void *Target) -{ - void *ObjPtr; - - -#ifdef _IA16 -#include <stdio.h> - - /* Have to handle 16-bit pointers of the form segment:offset */ - - if (!sscanf (Target, "%p", &ObjPtr)) - { - AcpiOsPrintf ("Invalid pointer: %s\n", Target); - return (NULL); - } - -#else - - /* Simple flat pointer */ - - ObjPtr = (void *) STRTOUL (Target, NULL, 16); - -#endif - - return (ObjPtr); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpParserDescriptor - * - * PARAMETERS: Op - A parser Op descriptor - * - * RETURN: None - * - * DESCRIPTION: Display a formatted parser object - * - ******************************************************************************/ - -void -AcpiDbDumpParserDescriptor ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_OPCODE_INFO *Info; - - - Info = AcpiPsGetOpcodeInfo (Op->Opcode); - - AcpiOsPrintf ("Parser Op Descriptor:\n"); - AcpiOsPrintf ("%20.20s : %4.4X\n", "Opcode", Op->Opcode); - - DEBUG_ONLY_MEMBERS (AcpiOsPrintf ("%20.20s : %s\n", "Opcode Name", Info->Name)); - - AcpiOsPrintf ("%20.20s : %p\n", "Value/ArgList", Op->Value); - AcpiOsPrintf ("%20.20s : %p\n", "Parent", Op->Parent); - AcpiOsPrintf ("%20.20s : %p\n", "NextOp", Op->Next); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDecodeAndDisplayObject - * - * PARAMETERS: Target - String with object to be displayed. Names - * and hex pointers are supported. - * OutputType - Byte, Word, Dword, or Qword (B|W|D|Q) - * - * RETURN: None - * - * DESCRIPTION: Display a formatted ACPI object - * - ******************************************************************************/ - -void -AcpiDbDecodeAndDisplayObject ( - NATIVE_CHAR *Target, - NATIVE_CHAR *OutputType) -{ - void *ObjPtr; - ACPI_NAMESPACE_NODE *Node; - UINT32 Display = DB_BYTE_DISPLAY; - NATIVE_CHAR Buffer[80]; - ACPI_BUFFER RetBuf; - ACPI_STATUS Status; - UINT32 Size; - - - if (!Target) - { - return; - } - - /* Decode the output type */ - - if (OutputType) - { - STRUPR (OutputType); - if (OutputType[0] == 'W') - { - Display = DB_WORD_DISPLAY; - } - else if (OutputType[0] == 'D') - { - Display = DB_DWORD_DISPLAY; - } - else if (OutputType[0] == 'Q') - { - Display = DB_QWORD_DISPLAY; - } - } - - - RetBuf.Length = sizeof (Buffer); - RetBuf.Pointer = Buffer; - - /* Differentiate between a number and a name */ - - if ((Target[0] >= 0x30) && (Target[0] <= 0x39)) - { - ObjPtr = AcpiDbGetPointer (Target); - if (!AcpiOsReadable (ObjPtr, 16)) - { - AcpiOsPrintf ("Address %p is invalid in this address space\n", ObjPtr); - return; - } - - /* Decode the object type */ - - if (VALID_DESCRIPTOR_TYPE ((ObjPtr), ACPI_DESC_TYPE_NAMED)) - { - /* This is a Node */ - - if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_NAMESPACE_NODE))) - { - AcpiOsPrintf ("Cannot read entire Named object at address %p\n", ObjPtr); - return; - } - - Node = ObjPtr; - goto DumpNte; - } - - else if (VALID_DESCRIPTOR_TYPE ((ObjPtr), ACPI_DESC_TYPE_INTERNAL)) - { - /* This is an ACPI OBJECT */ - - if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_OPERAND_OBJECT))) - { - AcpiOsPrintf ("Cannot read entire ACPI object at address %p\n", ObjPtr); - return; - } - - AcpiCmDumpBuffer (ObjPtr, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); - AcpiAmlDumpObjectDescriptor (ObjPtr, 1); - } - - else if (VALID_DESCRIPTOR_TYPE ((ObjPtr), ACPI_DESC_TYPE_PARSER)) - { - /* This is an Parser Op object */ - - if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_PARSE_OBJECT))) - { - AcpiOsPrintf ("Cannot read entire Parser object at address %p\n", ObjPtr); - return; - } - - - AcpiCmDumpBuffer (ObjPtr, sizeof (ACPI_PARSE_OBJECT), Display, ACPI_UINT32_MAX); - AcpiDbDumpParserDescriptor ((ACPI_PARSE_OBJECT *) ObjPtr); - } - - else - { - Size = 16; - if (AcpiOsReadable (ObjPtr, 64)) - { - Size = 64; - } - - /* Just dump some memory */ - - AcpiCmDumpBuffer (ObjPtr, Size, Display, ACPI_UINT32_MAX); - } - - return; - } - - - /* The parameter is a name string that must be resolved to a Named obj */ - - Node = AcpiDbLocalNsLookup (Target); - if (!Node) - { - return; - } - - -DumpNte: - /* Now dump the Named obj */ - - Status = AcpiGetName (Node, ACPI_FULL_PATHNAME, &RetBuf); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not convert name to pathname\n"); - } - - else - { - AcpiOsPrintf ("Object Pathname: %s\n", RetBuf.Pointer); - } - - if (!AcpiOsReadable (Node, sizeof (ACPI_NAMESPACE_NODE))) - { - AcpiOsPrintf ("Invalid Named object at address %p\n", Node); - return; - } - - AcpiCmDumpBuffer ((void *) Node, sizeof (ACPI_NAMESPACE_NODE), Display, ACPI_UINT32_MAX); - AcpiAmlDumpNode (Node, 1); - - if (Node->Object) - { - AcpiOsPrintf ("\nAttached Object (%p):\n", Node->Object); - if (!AcpiOsReadable (Node->Object, sizeof (ACPI_OPERAND_OBJECT))) - { - AcpiOsPrintf ("Invalid internal ACPI Object at address %p\n", Node->Object); - return; - } - - AcpiCmDumpBuffer (Node->Object, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); - AcpiAmlDumpObjectDescriptor (Node->Object, 1); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDecodeInternalObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * - * RETURN: None - * - * DESCRIPTION: Short display of an internal object. Numbers and Strings. - * - ******************************************************************************/ - -void -AcpiDbDecodeInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - UINT32 i; - - - if (!ObjDesc) - { - return; - } - - AcpiOsPrintf (" %s", AcpiCmGetTypeName (ObjDesc->Common.Type)); - - switch (ObjDesc->Common.Type) - { - case ACPI_TYPE_INTEGER: - AcpiOsPrintf (" %.8X", ObjDesc->Integer.Value); - break; - - case ACPI_TYPE_STRING: - AcpiOsPrintf ("(%d) \"%.16s\"...", - ObjDesc->String.Length, ObjDesc->String.Pointer); - break; - - case ACPI_TYPE_BUFFER: - AcpiOsPrintf ("(%d)", ObjDesc->Buffer.Length); - for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++) - { - AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]); - } - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayInternalObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * WalkState - Current walk state - * - * RETURN: None - * - * DESCRIPTION: Short display of an internal object - * - ******************************************************************************/ - -void -AcpiDbDisplayInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - UINT8 Type; - - - AcpiOsPrintf ("%p ", ObjDesc); - - if (!ObjDesc) - { - AcpiOsPrintf ("<NullObj>\n"); - return; - } - - - /* Decode the object type */ - - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_PARSER)) - { - AcpiOsPrintf ("<Parser> "); - } - - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - AcpiOsPrintf ("<Node> Name %4.4s Type-%s", - &((ACPI_NAMESPACE_NODE *)ObjDesc)->Name, - AcpiCmGetTypeName (((ACPI_NAMESPACE_NODE *) ObjDesc)->Type)); - if (((ACPI_NAMESPACE_NODE *) ObjDesc)->Flags & ANOBJ_METHOD_ARG) - { - AcpiOsPrintf (" [Method Arg]"); - } - if (((ACPI_NAMESPACE_NODE *) ObjDesc)->Flags & ANOBJ_METHOD_LOCAL) - { - AcpiOsPrintf (" [Method Local]"); - } - } - - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) - { - AcpiOsPrintf ("<Obj> "); - Type = ObjDesc->Common.Type; - if (Type > INTERNAL_TYPE_MAX) - { - AcpiOsPrintf (" Type %x [Invalid Type]", Type); - return; - } - - /* Decode the ACPI object type */ - - switch (ObjDesc->Common.Type) - { - case INTERNAL_TYPE_REFERENCE: - switch (ObjDesc->Reference.OpCode) - { - case AML_ZERO_OP: - AcpiOsPrintf ("[Const] Number %.8X", 0); - break; - - case AML_ONES_OP: - AcpiOsPrintf ("[Const] Number %.8X", ACPI_UINT32_MAX); - break; - - case AML_ONE_OP: - AcpiOsPrintf ("[Const] Number %.8X", 1); - break; - - case AML_LOCAL_OP: - AcpiOsPrintf ("[Local%d] ", ObjDesc->Reference.Offset); - if (WalkState) - { - ObjDesc = WalkState->LocalVariables[ObjDesc->Reference.Offset].Object; - AcpiDbDecodeInternalObject (ObjDesc); - } - break; - - case AML_ARG_OP: - AcpiOsPrintf ("[Arg%d] ", ObjDesc->Reference.Offset); - if (WalkState) - { - ObjDesc = WalkState->Arguments[ObjDesc->Reference.Offset].Object; - AcpiDbDecodeInternalObject (ObjDesc); - } - break; - - case AML_DEBUG_OP: - AcpiOsPrintf ("[Debug] "); - break; - - case AML_INDEX_OP: - AcpiOsPrintf ("[Index] "); - AcpiDbDecodeInternalObject (ObjDesc->Reference.Object); - break; - - default: - break; - - } - break; - - default: - AcpiOsPrintf (" "); - AcpiDbDecodeInternalObject (ObjDesc); - break; - } - } - - else - { - AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> "); - } - - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayMethodInfo - * - * PARAMETERS: StartOp - Root of the control method parse tree - * - * RETURN: None - * - * DESCRIPTION: Display information about the current method - * - ******************************************************************************/ - -void -AcpiDbDisplayMethodInfo ( - ACPI_PARSE_OBJECT *StartOp) -{ - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *RootOp; - ACPI_PARSE_OBJECT *Op; - ACPI_OPCODE_INFO *OpInfo; - UINT32 NumOps = 0; - UINT32 NumOperands = 0; - UINT32 NumOperators = 0; - UINT32 NumRemainingOps = 0; - UINT32 NumRemainingOperands = 0; - UINT32 NumRemainingOperators = 0; - UINT32 NumArgs; - UINT32 Concurrency; - BOOLEAN CountRemaining = FALSE; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - NumArgs = ObjDesc->Method.ParamCount; - Concurrency = ObjDesc->Method.Concurrency; - - AcpiOsPrintf ("Currently executing control method is [%4.4s]\n", &Node->Name); - AcpiOsPrintf ("%X arguments, max concurrency = %X\n", NumArgs, Concurrency); - - - RootOp = StartOp; - while (RootOp->Parent) - { - RootOp = RootOp->Parent; - } - - Op = RootOp; - - while (Op) - { - if (Op == StartOp) - { - CountRemaining = TRUE; - } - - NumOps++; - if (CountRemaining) - { - NumRemainingOps++; - } - - OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - /* Bad opcode or ASCII character */ - - continue; - } - - - /* Decode the opcode */ - - switch (ACPI_GET_OP_CLASS (OpInfo)) - { - case OPTYPE_CONSTANT: /* argument type only */ - case OPTYPE_LITERAL: /* argument type only */ - case OPTYPE_DATA_TERM: /* argument type only */ - case OPTYPE_LOCAL_VARIABLE: /* argument type only */ - case OPTYPE_METHOD_ARGUMENT: /* argument type only */ - if (CountRemaining) - { - NumRemainingOperands++; - } - - NumOperands++; - break; - - default: - if (CountRemaining) - { - NumRemainingOperators++; - } - - NumOperators++; - break; - } - - - Op = AcpiPsGetDepthNext (StartOp, Op); - } - - AcpiOsPrintf ("Method contains: %X AML Opcodes - %X Operators, %X Operands\n", - NumOps, NumOperators, NumOperands); - - AcpiOsPrintf ("Remaining to execute: %X AML Opcodes - %X Operators, %X Operands\n", - NumRemainingOps, NumRemainingOperators, NumRemainingOperands); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayLocals - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display all locals for the currently running control method - * - ******************************************************************************/ - -void -AcpiDbDisplayLocals (void) -{ - UINT32 i; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - - AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", &Node->Name); - - for (i = 0; i < MTH_NUM_LOCALS; i++) - { - ObjDesc = WalkState->LocalVariables[i].Object; - AcpiOsPrintf ("Local%d: ", i); - AcpiDbDisplayInternalObject (ObjDesc, WalkState); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayArguments - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display all arguments for the currently running control method - * - ******************************************************************************/ - -void -AcpiDbDisplayArguments (void) -{ - UINT32 i; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 NumArgs; - UINT32 Concurrency; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - NumArgs = ObjDesc->Method.ParamCount; - Concurrency = ObjDesc->Method.Concurrency; - - AcpiOsPrintf ("Method [%4.4s] has %X arguments, max concurrency = %X\n", &Node->Name, NumArgs, Concurrency); - - for (i = 0; i < NumArgs; i++) - { - ObjDesc = WalkState->Arguments[i].Object; - AcpiOsPrintf ("Arg%d: ", i); - AcpiDbDisplayInternalObject (ObjDesc, WalkState); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayResults - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display current contents of a method result stack - * - ******************************************************************************/ - -void -AcpiDbDisplayResults (void) -{ - UINT32 i; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 NumResults = 0; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - if (WalkState->Results) - { - NumResults = WalkState->Results->Results.NumResults; - } - - AcpiOsPrintf ("Method [%4.4s] has %X stacked result objects\n", &Node->Name, NumResults); - - for (i = 0; i < NumResults; i++) - { - ObjDesc = WalkState->Results->Results.ObjDesc[i]; - AcpiOsPrintf ("Result%d: ", i); - AcpiDbDisplayInternalObject (ObjDesc, WalkState); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayCallingTree - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display current calling tree of nested control methods - * - ******************************************************************************/ - -void -AcpiDbDisplayCallingTree (void) -{ - UINT32 i; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - AcpiOsPrintf ("Current Control Method Call Tree\n"); - - for (i = 0; WalkState; i++) - { - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - AcpiOsPrintf (" [%4.4s]\n", &Node->Name); - - WalkState = WalkState->Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayResultObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * WalkState - Current walk state - * - * RETURN: None - * - * DESCRIPTION: Display the result of an AML opcode - * - ******************************************************************************/ - -void -AcpiDbDisplayResultObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - - /* TBD: [Future] We don't always want to display the result. - * For now, only display if single stepping - * however, this output is very useful in other contexts also - */ - - if (!AcpiGbl_CmSingleStep) - { - return; - } - - AcpiOsPrintf ("ResultObj: "); - AcpiDbDisplayInternalObject (ObjDesc, WalkState); - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayArgumentObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * WalkState - Current walk state - * - * RETURN: None - * - * DESCRIPTION: Display the result of an AML opcode - * - ******************************************************************************/ - -void -AcpiDbDisplayArgumentObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - - - if (!AcpiGbl_CmSingleStep) - { - return; - } - - AcpiOsPrintf ("ArgObj: "); - AcpiDbDisplayInternalObject (ObjDesc, WalkState); -} - -#endif /* ENABLE_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbexec.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbexec.c deleted file mode 100644 index 8469092..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbexec.c +++ /dev/null @@ -1,487 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbexec - debugger control method execution - * $Revision: 21 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acevents.h" -#include "acinterp.h" -#include "acdebug.h" -#include "actables.h" - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbexec") - - -typedef struct dbmethodinfo -{ - ACPI_HANDLE ThreadGate; - NATIVE_CHAR *Name; - NATIVE_CHAR **Args; - UINT32 Flags; - UINT32 NumLoops; - NATIVE_CHAR Pathname[128]; - -} DB_METHOD_INFO; - - -DB_METHOD_INFO Info; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecuteMethod - * - * PARAMETERS: Info - Valid info segment - * ReturnObj - Where to put return object - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbExecuteMethod ( - DB_METHOD_INFO *Info, - ACPI_BUFFER *ReturnObj) -{ - ACPI_STATUS Status; - ACPI_OBJECT_LIST ParamObjects; - ACPI_OBJECT Params[MTH_NUM_ARGS]; - UINT32 i; - - - if (OutputToFile && !AcpiDbgLevel) - { - AcpiOsPrintf ("Warning: debug output is not enabled!\n"); - } - - /* Are there arguments to the method? */ - - if (Info->Args && Info->Args[0]) - { - for (i = 0; Info->Args[i] && i < MTH_NUM_ARGS; i++) - { - Params[i].Type = ACPI_TYPE_INTEGER; - Params[i].Integer.Value = STRTOUL (Info->Args[i], NULL, 16); - } - - ParamObjects.Pointer = Params; - ParamObjects.Count = i; - } - - else - { - /* Setup default parameters */ - - Params[0].Type = ACPI_TYPE_INTEGER; - Params[0].Integer.Value = 0x01020304; - - Params[1].Type = ACPI_TYPE_STRING; - Params[1].String.Length = 12; - Params[1].String.Pointer = "AML Debugger"; - - ParamObjects.Pointer = Params; - ParamObjects.Count = 2; - } - - /* Prepare for a return object of arbitrary size */ - - ReturnObj->Pointer = Buffer; - ReturnObj->Length = BUFFER_SIZE; - - - /* Do the actual method execution */ - - Status = AcpiEvaluateObject (NULL, Info->Pathname, &ParamObjects, ReturnObj); - - AcpiGbl_CmSingleStep = FALSE; - AcpiGbl_MethodExecuting = FALSE; - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecuteSetup - * - * PARAMETERS: Info - Valid method info - * - * RETURN: Status - * - * DESCRIPTION: Setup info segment prior to method execution - * - ******************************************************************************/ - -void -AcpiDbExecuteSetup ( - DB_METHOD_INFO *Info) -{ - - /* Catenate the current scope to the supplied name */ - - Info->Pathname[0] = 0; - if ((Info->Name[0] != '\\') && - (Info->Name[0] != '/')) - { - STRCAT (Info->Pathname, ScopeBuf); - } - - STRCAT (Info->Pathname, Info->Name); - AcpiDbPrepNamestring (Info->Pathname); - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("Executing %s\n", Info->Pathname); - - if (Info->Flags & EX_SINGLE_STEP) - { - AcpiGbl_CmSingleStep = TRUE; - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); - } - - else - { - /* No single step, allow redirection to a file */ - - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecute - * - * PARAMETERS: Name - Name of method to execute - * Args - Parameters to the method - * Flags - single step/no single step - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method. Name is relative to the current - * scope. - * - ******************************************************************************/ - -void -AcpiDbExecute ( - NATIVE_CHAR *Name, - NATIVE_CHAR **Args, - UINT32 Flags) -{ - ACPI_STATUS Status; - ACPI_BUFFER ReturnObj; - - -#ifdef ACPI_DEBUG - UINT32 PreviousAllocations; - UINT32 PreviousSize; - UINT32 Allocations; - UINT32 Size; - - - /* Memory allocation tracking */ - - PreviousAllocations = AcpiGbl_CurrentAllocCount; - PreviousSize = AcpiGbl_CurrentAllocSize; -#endif - - Info.Name = Name; - Info.Args = Args; - Info.Flags = Flags; - - AcpiDbExecuteSetup (&Info); - Status = AcpiDbExecuteMethod (&Info, &ReturnObj); - - -#ifdef ACPI_DEBUG - - /* Memory allocation tracking */ - - Allocations = AcpiGbl_CurrentAllocCount - PreviousAllocations; - Size = AcpiGbl_CurrentAllocSize - PreviousSize; - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); - - if (Allocations > 0) - { - AcpiOsPrintf ("Outstanding: %ld allocations of total size %ld after execution\n", - Allocations, Size); - } -#endif - - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Execution of %s failed with status %s\n", Info.Pathname, AcpiCmFormatException (Status)); - } - - else - { - /* Display a return object, if any */ - - if (ReturnObj.Length) - { - AcpiOsPrintf ("Execution of %s returned object %p\n", Info.Pathname, ReturnObj.Pointer); - AcpiDbDumpObject (ReturnObj.Pointer, 1); - } - } - - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbMethodThread - * - * PARAMETERS: Context - Execution info segment - * - * RETURN: None - * - * DESCRIPTION: Debugger execute thread. Waits for a command line, then - * simply dispatches it. - * - ******************************************************************************/ - -void -AcpiDbMethodThread ( - void *Context) -{ - ACPI_STATUS Status; - DB_METHOD_INFO *Info = Context; - UINT32 i; - ACPI_BUFFER ReturnObj; - - - for (i = 0; i < Info->NumLoops; i++) - { - Status = AcpiDbExecuteMethod (Info, &ReturnObj); - if (ACPI_SUCCESS (Status)) - { - if (ReturnObj.Length) - { - AcpiOsPrintf ("Execution of %s returned object %p\n", Info->Pathname, ReturnObj.Pointer); - AcpiDbDumpObject (ReturnObj.Pointer, 1); - } - } - } - - - /* Signal our completion */ - - AcpiOsSignalSemaphore (Info->ThreadGate, 1); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCreateExecutionThreads - * - * PARAMETERS: NumThreadsArg - Number of threads to create - * NumLoopsArg - Loop count for the thread(s) - * MethodNameArg - Control method to execute - * - * RETURN: None - * - * DESCRIPTION: Create threads to execute method(s) - * - ******************************************************************************/ - -void -AcpiDbCreateExecutionThreads ( - NATIVE_CHAR *NumThreadsArg, - NATIVE_CHAR *NumLoopsArg, - NATIVE_CHAR *MethodNameArg) -{ - ACPI_STATUS Status; - UINT32 NumThreads; - UINT32 NumLoops; - UINT32 i; - ACPI_HANDLE ThreadGate; - - - /* Get the arguments */ - - NumThreads = STRTOUL (NumThreadsArg, NULL, 0); - NumLoops = STRTOUL (NumLoopsArg, NULL, 0); - - if (!NumThreads || !NumLoops) - { - AcpiOsPrintf ("Bad argument: Threads %X, Loops %X\n", NumThreads, NumLoops); - return; - } - - - /* Create the synchronization semaphore */ - - Status = AcpiOsCreateSemaphore (1, 0, &ThreadGate); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not create semaphore, %s\n", AcpiCmFormatException (Status)); - return; - } - - /* Setup the context to be passed to each thread */ - - Info.Name = MethodNameArg; - Info.Args = NULL; - Info.Flags = 0; - Info.NumLoops = NumLoops; - Info.ThreadGate = ThreadGate; - - AcpiDbExecuteSetup (&Info); - - - /* Create the threads */ - - AcpiOsPrintf ("Creating %X threads to execute %X times each\n", NumThreads, NumLoops); - - for (i = 0; i < (NumThreads); i++) - { - AcpiOsQueueForExecution (OSD_PRIORITY_MED, AcpiDbMethodThread, &Info); - } - - - /* Wait for all threads to complete */ - - i = NumThreads; - while (i) /* Brain damage for OSD implementations that only support wait of 1 unit */ - { - Status = AcpiOsWaitSemaphore (ThreadGate, 1, WAIT_FOREVER); - i--; - } - - /* Cleanup and exit */ - - AcpiOsDeleteSemaphore (ThreadGate); - - AcpiDbSetOutputDestination (DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("All threads (%X) have completed\n", NumThreads); - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); -} - - -#endif /* ENABLE_DEBUGGER */ - - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbfileio.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbfileio.c deleted file mode 100644 index e547839..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbfileio.c +++ /dev/null @@ -1,492 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbfileio - Debugger file I/O commands. These can't usually - * be used when running the debugger in Ring 0 (Kernel mode) - * $Revision: 38 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdebug.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acevents.h" -#include "actables.h" - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbfileio") - - -ACPI_PARSE_OBJECT *root; - -#ifdef ACPI_APPLICATION -#include <stdio.h> -FILE *DebugFile = NULL; -#endif - - -/* - * NOTE: this is here for lack of a better place. It is used in all - * flavors of the debugger, need LCD file - */ - -/******************************************************************************* - * - * FUNCTION: AcpiDbMatchArgument - * - * PARAMETERS: UserArgument - User command line - * Arguments - Array of commands to match against - * - * RETURN: Index into command array or ACPI_TYPE_NOT_FOUND if not found - * - * DESCRIPTION: Search command array for a command match - * - ******************************************************************************/ - -OBJECT_TYPE_INTERNAL -AcpiDbMatchArgument ( - NATIVE_CHAR *UserArgument, - ARGUMENT_INFO *Arguments) -{ - UINT32 i; - - - if (!UserArgument || UserArgument[0] == 0) - { - return (ACPI_TYPE_NOT_FOUND); - } - - for (i = 0; Arguments[i].Name; i++) - { - if (STRSTR (Arguments[i].Name, UserArgument) == Arguments[i].Name) - { - return ((OBJECT_TYPE_INTERNAL) i); - } - } - - /* Argument not recognized */ - - return (ACPI_TYPE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCloseDebugFile - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: If open, close the current debug output file - * - ******************************************************************************/ - -void -AcpiDbCloseDebugFile ( - void) -{ - -#ifdef ACPI_APPLICATION - - if (DebugFile) - { - fclose (DebugFile); - DebugFile = NULL; - OutputToFile = FALSE; - AcpiOsPrintf ("Debug output file %s closed\n", DebugFilename); - } -#endif - -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbOpenDebugFile - * - * PARAMETERS: Name - Filename to open - * - * RETURN: Status - * - * DESCRIPTION: Open a file where debug output will be directed. - * - ******************************************************************************/ - -void -AcpiDbOpenDebugFile ( - NATIVE_CHAR *Name) -{ - -#ifdef ACPI_APPLICATION - - AcpiDbCloseDebugFile (); - DebugFile = fopen (Name, "w+"); - if (DebugFile) - { - AcpiOsPrintf ("Debug output file %s opened\n", Name); - STRCPY (DebugFilename, Name); - OutputToFile = TRUE; - } - else - { - AcpiOsPrintf ("Could not open debug file %s\n", Name); - } - -#endif -} - - -#ifdef ACPI_APPLICATION -/******************************************************************************* - * - * FUNCTION: AcpiDbLoadTable - * - * PARAMETERS: fp - File that contains table - * TablePtr - Return value, buffer with table - * TableLenght - Return value, length of table - * - * RETURN: Status - * - * DESCRIPTION: Load the DSDT from the file pointer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbLoadTable( - FILE *fp, - ACPI_TABLE_HEADER **TablePtr, - UINT32 *TableLength) -{ - ACPI_TABLE_HEADER TableHeader; - UINT8 *AmlPtr; - UINT32 AmlLength; - UINT32 Actual; - ACPI_STATUS Status; - - - /* Read the table header */ - - if (fread (&TableHeader, 1, sizeof (TableHeader), fp) != sizeof (ACPI_TABLE_HEADER)) - { - AcpiOsPrintf ("Couldn't read the table header\n"); - return (AE_BAD_SIGNATURE); - } - - - /* Validate the table header/length */ - - Status = AcpiTbValidateTableHeader (&TableHeader); - if ((ACPI_FAILURE (Status)) || - (TableHeader.Length > 524288)) /* 1/2 Mbyte should be enough */ - { - AcpiOsPrintf ("Table header is invalid!\n"); - return (AE_ERROR); - } - - - /* We only support a limited number of table types */ - - if (STRNCMP ((char *) TableHeader.Signature, DSDT_SIG, 4) && - STRNCMP ((char *) TableHeader.Signature, PSDT_SIG, 4) && - STRNCMP ((char *) TableHeader.Signature, SSDT_SIG, 4)) - { - AcpiOsPrintf ("Table signature is invalid\n"); - DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER)); - return (AE_ERROR); - } - - /* Allocate a buffer for the table */ - - *TableLength = TableHeader.Length; - *TablePtr = (ACPI_TABLE_HEADER *) AcpiCmAllocate ((size_t) *TableLength); - if (!*TablePtr) - { - AcpiOsPrintf ("Could not allocate memory for the table (size=%X)\n", TableHeader.Length); - return (AE_NO_MEMORY); - } - - - AmlPtr = (UINT8 *) *TablePtr + sizeof (TableHeader); - AmlLength = *TableLength - sizeof (TableHeader); - - /* Copy the header to the buffer */ - - MEMCPY (*TablePtr, &TableHeader, sizeof (TableHeader)); - - /* Get the rest of the table */ - - Actual = fread (AmlPtr, 1, (size_t) AmlLength, fp); - if (Actual == AmlLength) - { - return (AE_OK); - } - - if (Actual > 0) - { - AcpiOsPrintf ("Warning - reading table, asked for %X got %X\n", AmlLength, Actual); - return (AE_OK); - } - - - AcpiOsPrintf ("Error - could not read the table file\n"); - AcpiCmFree (*TablePtr); - *TablePtr = NULL; - *TableLength = 0; - - return (AE_ERROR); -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AeLocalLoadTable - * - * PARAMETERS: TablePtr - pointer to a buffer containing the entire - * table to be loaded - * - * RETURN: Status - * - * DESCRIPTION: This function is called to load a table from the caller's - * buffer. The buffer must contain an entire ACPI Table including - * a valid header. The header fields will be verified, and if it - * is determined that the table is invalid, the call will fail. - * - * If the call fails an appropriate status will be returned. - * - ******************************************************************************/ - -ACPI_STATUS -AeLocalLoadTable ( - ACPI_TABLE_HEADER *TablePtr) -{ - ACPI_STATUS Status; - ACPI_TABLE_DESC TableInfo; - - - FUNCTION_TRACE ("AeLocalLoadTable"); - - if (!TablePtr) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Install the new table into the local data structures */ - - TableInfo.Pointer = TablePtr; - - Status = AcpiTbInstallTable (NULL, &TableInfo); - if (ACPI_FAILURE (Status)) - { - /* Free table allocated by AcpiTbGetTable */ - - AcpiTbDeleteSingleTable (&TableInfo); - return_ACPI_STATUS (Status); - } - - -#ifndef PARSER_ONLY - Status = AcpiNsLoadTable (TableInfo.InstalledDesc, AcpiGbl_RootNode); - if (ACPI_FAILURE (Status)) - { - /* Uninstall table and free the buffer */ - - AcpiTbUninstallTable (TableInfo.InstalledDesc); - return_ACPI_STATUS (Status); - } -#endif - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbLoadAcpiTable - * - * PARAMETERS: Filname - File where table is located - * - * RETURN: Status - * - * DESCRIPTION: Load an ACPI table from a file - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbLoadAcpiTable ( - NATIVE_CHAR *Filename) -{ -#ifdef ACPI_APPLICATION - FILE *fp; - ACPI_STATUS Status; - ACPI_TABLE_HEADER *TablePtr; - UINT32 TableLength; - - - /* Open the file */ - - fp = fopen (Filename, "rb"); - if (!fp) - { - AcpiOsPrintf ("Could not open file %s\n", Filename); - return (AE_ERROR); - } - - - /* Get the entire file */ - - AcpiOsPrintf ("Loading Acpi table from file %s\n", Filename); - Status = AcpiDbLoadTable (fp, &TablePtr, &TableLength); - fclose(fp); - - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Couldn't get table from the file\n"); - return (Status); - } - - - /* Attempt to recognize and install the table */ - Status = AeLocalLoadTable (TablePtr); - - if (ACPI_FAILURE (Status)) - { - if (Status == AE_EXIST) - { - AcpiOsPrintf ("Table %4.4s is already installed\n", - &TablePtr->Signature); - } - else - { - AcpiOsPrintf ("Could not install table, %s\n", - AcpiCmFormatException (Status)); - } - AcpiCmFree (TablePtr); - return (Status); - } - - AcpiOsPrintf ("%4.4s at %p successfully installed and loaded\n", - &TablePtr->Signature, TablePtr); - - AcpiGbl_AcpiHardwarePresent = FALSE; - -#endif /* ACPI_APPLICATION */ - return (AE_OK); -} - - -#endif /* ENABLE_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbhistry.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbhistry.c deleted file mode 100644 index 765c3e1..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbhistry.c +++ /dev/null @@ -1,301 +0,0 @@ -/****************************************************************************** - * - * Module Name: dbhistry - debugger HISTORY command - * $Revision: 17 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acevents.h" -#include "acinterp.h" -#include "acdebug.h" -#include "actables.h" - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbhistry") - - -#define HI_NO_HISTORY 0 -#define HI_RECORD_HISTORY 1 -#define HISTORY_SIZE 20 - - -typedef struct HistoryInfo -{ - NATIVE_CHAR Command[80]; - UINT32 CmdNum; - -} HISTORY_INFO; - - -HISTORY_INFO HistoryBuffer[HISTORY_SIZE]; -UINT16 LoHistory = 0; -UINT16 NumHistory = 0; -UINT16 NextHistoryIndex = 0; -UINT32 NextCmdNum = 1; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbAddToHistory - * - * PARAMETERS: CommandLine - Command to add - * - * RETURN: None - * - * DESCRIPTION: Add a command line to the history buffer. - * - ******************************************************************************/ - -void -AcpiDbAddToHistory ( - NATIVE_CHAR *CommandLine) -{ - - - /* Put command into the next available slot */ - - STRCPY (HistoryBuffer[NextHistoryIndex].Command, CommandLine); - HistoryBuffer[NextHistoryIndex].CmdNum = NextCmdNum; - - /* Adjust indexes */ - - if ((NumHistory == HISTORY_SIZE) && - (NextHistoryIndex == LoHistory)) - { - LoHistory++; - if (LoHistory >= HISTORY_SIZE) - { - LoHistory = 0; - } - } - - NextHistoryIndex++; - if (NextHistoryIndex >= HISTORY_SIZE) - { - NextHistoryIndex = 0; - } - - - NextCmdNum++; - if (NumHistory < HISTORY_SIZE) - { - NumHistory++; - } - -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayHistory - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display the contents of the history buffer - * - ******************************************************************************/ - -void -AcpiDbDisplayHistory (void) -{ - NATIVE_UINT i; - UINT16 HistoryIndex; - - - HistoryIndex = LoHistory; - - /* Dump entire history buffer */ - - for (i = 0; i < NumHistory; i++) - { - AcpiOsPrintf ("%ld %s\n", HistoryBuffer[HistoryIndex].CmdNum, HistoryBuffer[HistoryIndex].Command); - - HistoryIndex++; - if (HistoryIndex >= HISTORY_SIZE) - { - HistoryIndex = 0; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetFromHistory - * - * PARAMETERS: CommandNumArg - String containing the number of the - * command to be retrieved - * - * RETURN: None - * - * DESCRIPTION: Get a command from the history buffer - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiDbGetFromHistory ( - NATIVE_CHAR *CommandNumArg) -{ - NATIVE_UINT i; - UINT16 HistoryIndex; - UINT32 CmdNum; - - - if (CommandNumArg == NULL) - { - CmdNum = NextCmdNum - 1; - } - - else - { - CmdNum = STRTOUL (CommandNumArg, NULL, 0); - } - - - /* Search history buffer */ - - HistoryIndex = LoHistory; - for (i = 0; i < NumHistory; i++) - { - if (HistoryBuffer[HistoryIndex].CmdNum == CmdNum) - { - /* Found the commnad, return it */ - - return (HistoryBuffer[HistoryIndex].Command); - } - - - HistoryIndex++; - if (HistoryIndex >= HISTORY_SIZE) - { - HistoryIndex = 0; - } - } - - AcpiOsPrintf ("Invalid history number: %d\n", HistoryIndex); - return (NULL); -} - - -#endif /* ENABLE_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbinput.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbinput.c deleted file mode 100644 index 812dbfe..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbinput.c +++ /dev/null @@ -1,989 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbinput - user front-end to the AML debugger - * $Revision: 56 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "actables.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "acdebug.h" - - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbinput") - - -/* - * Globals that are specific to the debugger - */ - -NATIVE_CHAR LineBuf[80]; -NATIVE_CHAR ParsedBuf[80]; -NATIVE_CHAR ScopeBuf[40]; -NATIVE_CHAR DebugFilename[40]; -NATIVE_CHAR *Args[DB_MAX_ARGS]; -NATIVE_CHAR *Buffer; -NATIVE_CHAR *Filename = NULL; -BOOLEAN OutputToFile = FALSE; - - -UINT32 AcpiGbl_DbDebugLevel = 0x0FFFFFFF; -UINT32 AcpiGbl_DbConsoleDebugLevel = NORMAL_DEFAULT | TRACE_TABLES; -UINT8 AcpiGbl_DbOutputFlags = DB_CONSOLE_OUTPUT; - - -BOOLEAN opt_tables = FALSE; -BOOLEAN opt_disasm = FALSE; -BOOLEAN opt_stats = FALSE; -BOOLEAN opt_parse_jit = FALSE; -BOOLEAN opt_verbose = TRUE; -BOOLEAN opt_ini_methods = TRUE; - - -/* - * Top-level debugger commands. - * - * This list of commands must match the string table below it - */ - -enum AcpiAmlDebuggerCommands -{ - CMD_NOT_FOUND = 0, - CMD_NULL, - CMD_ALLOCATIONS, - CMD_ARGS, - CMD_ARGUMENTS, - CMD_BREAKPOINT, - CMD_CALL, - CMD_CLOSE, - CMD_DEBUG, - CMD_DUMP, - CMD_ENABLEACPI, - CMD_EVENT, - CMD_EXECUTE, - CMD_EXIT, - CMD_FIND, - CMD_GO, - CMD_HELP, - CMD_HELP2, - CMD_HISTORY, - CMD_HISTORY_EXE, - CMD_HISTORY_LAST, - CMD_INFORMATION, - CMD_INTO, - CMD_LEVEL, - CMD_LIST, - CMD_LOAD, - CMD_LOCALS, - CMD_METHODS, - CMD_NAMESPACE, - CMD_NOTIFY, - CMD_OBJECT, - CMD_OPEN, - CMD_OWNER, - CMD_PREFIX, - CMD_QUIT, - CMD_REFERENCES, - CMD_RESOURCES, - CMD_RESULTS, - CMD_SET, - CMD_STATS, - CMD_STOP, - CMD_TABLES, - CMD_TERMINATE, - CMD_THREADS, - CMD_TREE, - CMD_UNLOAD -}; - -#define CMD_FIRST_VALID 2 - - -COMMAND_INFO Commands[] = -{ - {"<NOT FOUND>", 0}, - {"<NULL>", 0}, - {"ALLOCATIONS", 0}, - {"ARGS", 0}, - {"ARGUMENTS", 0}, - {"BREAKPOINT", 1}, - {"CALL", 0}, - {"CLOSE", 0}, - {"DEBUG", 1}, - {"DUMP", 1}, - {"ENABLEACPI", 0}, - {"EVENT", 1}, - {"EXECUTE", 1}, - {"EXIT", 0}, - {"FIND", 1}, - {"GO", 0}, - {"HELP", 0}, - {"?", 0}, - {"HISTORY", 0}, - {"!", 1}, - {"!!", 0}, - {"INFORMATION", 0}, - {"INTO", 0}, - {"LEVEL", 0}, - {"LIST", 0}, - {"LOAD", 1}, - {"LOCALS", 0}, - {"METHODS", 0}, - {"NAMESPACE", 0}, - {"NOTIFY", 2}, - {"OBJECT", 1}, - {"OPEN", 1}, - {"OWNER", 1}, - {"PREFIX", 0}, - {"QUIT", 0}, - {"REFERENCES", 1}, - {"RESOURCES", 1}, - {"RESULTS", 0}, - {"SET", 3}, - {"STATS", 0}, - {"STOP", 0}, - {"TABLES", 0}, - {"TERMINATE", 0}, - {"THREADS", 3}, - {"TREE", 0}, - {"UNLOAD", 0}, - {NULL, 0} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayHelp - * - * PARAMETERS: HelpType - Subcommand (optional) - * - * RETURN: None - * - * DESCRIPTION: Print a usage message. - * - ******************************************************************************/ - -void -AcpiDbDisplayHelp ( - NATIVE_CHAR *HelpType) -{ - - - /* No parameter, just give the overview */ - - if (!HelpType) - { - AcpiOsPrintf ("ACPI CA Debugger Commands\n\n"); - AcpiOsPrintf ("The following classes of commands are available. Help is available for\n"); - AcpiOsPrintf ("each class by entering \"Help <ClassName>\"\n\n"); - AcpiOsPrintf (" [GENERAL] General-Purpose Commands\n"); - AcpiOsPrintf (" [NAMESPACE] Namespace Access Commands\n"); - AcpiOsPrintf (" [METHOD] Control Method Execution Commands\n"); - AcpiOsPrintf (" [FILE] File I/O Commands\n"); - return; - - } - - - /* - * Parameter is the command class - * - * The idea here is to keep each class of commands smaller than a screenful - */ - - switch (HelpType[0]) - { - case 'G': - AcpiOsPrintf ("\nGeneral-Purpose Commands\n\n"); - AcpiOsPrintf ("Allocations Display list of current memory allocations\n"); - AcpiOsPrintf ("Dump <Address>|<Namepath>\n"); - AcpiOsPrintf (" [Byte|Word|Dword|Qword] Display ACPI objects or memory\n"); - AcpiOsPrintf ("EnableAcpi Enable ACPI (hardware) mode\n"); - AcpiOsPrintf ("Help This help screen\n"); - AcpiOsPrintf ("History Display command history buffer\n"); - AcpiOsPrintf ("Level [<DebugLevel>] [console] Get/Set debug level for file or console\n"); - AcpiOsPrintf ("Quit or Exit Exit this command\n"); - AcpiOsPrintf ("Stats [Allocations|Memory|Misc\n"); - AcpiOsPrintf (" |Objects|Tables] Display namespace and memory statistics\n"); - AcpiOsPrintf ("Tables Display info about loaded ACPI tables\n"); - AcpiOsPrintf ("Unload Unload an ACPI table\n"); - AcpiOsPrintf ("! <CommandNumber> Execute command from history buffer\n"); - AcpiOsPrintf ("!! Execute last command again\n"); - return; - - case 'N': - AcpiOsPrintf ("\nNamespace Access Commands\n\n"); - AcpiOsPrintf ("Debug <Namepath> [Arguments] Single Step a control method\n"); - AcpiOsPrintf ("Event <F|G> <Value> Generate AcpiEvent (Fixed/GPE)\n"); - AcpiOsPrintf ("Execute <Namepath> [Arguments] Execute control method\n"); - AcpiOsPrintf ("Find <Name> (? is wildcard) Find ACPI name(s) with wildcards\n"); - AcpiOsPrintf ("Method Display list of loaded control methods\n"); - AcpiOsPrintf ("Namespace [<Addr>|<Path>] [Depth] Display loaded namespace tree/subtree\n"); - AcpiOsPrintf ("Notify <NamePath> <Value> Send a notification\n"); - AcpiOsPrintf ("Objects <ObjectType> Display all objects of the given type\n"); - AcpiOsPrintf ("Owner <OwnerId> [Depth] Display loaded namespace by object owner\n"); - AcpiOsPrintf ("Prefix [<NamePath>] Set or Get current execution prefix\n"); - AcpiOsPrintf ("References <Addr> Find all references to object at addr\n"); - AcpiOsPrintf ("Resources xxx Get and display resources\n"); - AcpiOsPrintf ("Terminate Delete namespace and all internal objects\n"); - AcpiOsPrintf ("Thread <Threads><Loops><NamePath> Spawn threads to execute method(s)\n"); - return; - - case 'M': - AcpiOsPrintf ("\nControl Method Execution Commands\n\n"); - AcpiOsPrintf ("Arguments (or Args) Display method arguments\n"); - AcpiOsPrintf ("Breakpoint <AmlOffset> Set an AML execution breakpoint\n"); - AcpiOsPrintf ("Call Run to next control method invocation\n"); - AcpiOsPrintf ("Go Allow method to run to completion\n"); - AcpiOsPrintf ("Information Display info about the current method\n"); - AcpiOsPrintf ("Into Step into (not over) a method call\n"); - AcpiOsPrintf ("List [# of AcpiAml Opcodes] Display method ASL statements\n"); - AcpiOsPrintf ("Locals Display method local variables\n"); - AcpiOsPrintf ("Results Display method result stack\n"); - AcpiOsPrintf ("Set <A|L> <#> <Value> Set method data (Arguments/Locals)\n"); - AcpiOsPrintf ("Stop Terminate control method\n"); - AcpiOsPrintf ("Tree Display control method calling tree\n"); - AcpiOsPrintf ("<Enter> Single step next AML opcode (over calls)\n"); - return; - - case 'F': - AcpiOsPrintf ("\nFile I/O Commands\n\n"); - AcpiOsPrintf ("Close Close debug output file\n"); - AcpiOsPrintf ("Open <Output Filename> Open a file for debug output\n"); - AcpiOsPrintf ("Load <Input Filename> Load ACPI table from a file\n"); - return; - - default: - AcpiOsPrintf ("Unrecognized Command Class: %x\n", HelpType); - return; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetNextToken - * - * PARAMETERS: String - Command buffer - * Next - Return value, end of next token - * - * RETURN: Pointer to the start of the next token. - * - * DESCRIPTION: Command line parsing. Get the next token on the command line - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiDbGetNextToken ( - NATIVE_CHAR *String, - NATIVE_CHAR **Next) -{ - NATIVE_CHAR *Start; - - /* At end of buffer? */ - - if (!String || !(*String)) - { - return (NULL); - } - - - /* Get rid of any spaces at the beginning */ - - if (*String == ' ') - { - while (*String && (*String == ' ')) - { - String++; - } - - if (!(*String)) - { - return (NULL); - } - } - - Start = String; - - /* Find end of token */ - - while (*String && (*String != ' ')) - { - String++; - } - - - if (!(*String)) - { - *Next = NULL; - } - - else - { - *String = 0; - *Next = String + 1; - } - - return (Start); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetLine - * - * PARAMETERS: InputBuffer - Command line buffer - * - * RETURN: None - * - * DESCRIPTION: Get the next command line from the user. Gets entire line - * up to the next newline - * - ******************************************************************************/ - -UINT32 -AcpiDbGetLine ( - NATIVE_CHAR *InputBuffer) -{ - UINT32 i; - UINT32 Count; - NATIVE_CHAR *Next; - NATIVE_CHAR *This; - - - STRCPY (ParsedBuf, InputBuffer); - STRUPR (ParsedBuf); - - This = ParsedBuf; - for (i = 0; i < DB_MAX_ARGS; i++) - { - Args[i] = AcpiDbGetNextToken (This, &Next); - if (!Args[i]) - { - break; - } - - This = Next; - } - - - /* Uppercase the actual command */ - - if (Args[0]) - { - STRUPR (Args[0]); - } - - Count = i; - if (Count) - { - Count--; /* Number of args only */ - } - - return (Count); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbMatchCommand - * - * PARAMETERS: UserCommand - User command line - * - * RETURN: Index into command array, -1 if not found - * - * DESCRIPTION: Search command array for a command match - * - ******************************************************************************/ - -UINT32 -AcpiDbMatchCommand ( - NATIVE_CHAR *UserCommand) -{ - UINT32 i; - - - if (!UserCommand || UserCommand[0] == 0) - { - return (CMD_NULL); - } - - for (i = CMD_FIRST_VALID; Commands[i].Name; i++) - { - if (STRSTR (Commands[i].Name, UserCommand) == Commands[i].Name) - { - return (i); - } - } - - /* Command not recognized */ - - return (CMD_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCommandDispatch - * - * PARAMETERS: InputBuffer - Command line buffer - * WalkState - Current walk - * Op - Current (executing) parse op - * - * RETURN: Status - * - * DESCRIPTION: Command dispatcher. Called from two places: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbCommandDispatch ( - NATIVE_CHAR *InputBuffer, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - UINT32 Temp; - UINT32 CommandIndex; - UINT32 ParamCount; - NATIVE_CHAR *CommandLine; - ACPI_STATUS Status = AE_CTRL_TRUE; - - - /* If AcpiTerminate has been called, terminate this thread */ - - if (AcpiGbl_DbTerminateThreads) - { - return (AE_CTRL_TERMINATE); - } - - ParamCount = AcpiDbGetLine (InputBuffer); - CommandIndex = AcpiDbMatchCommand (Args[0]); - Temp = 0; - - /* Verify that we have the minimum number of params */ - - if (ParamCount < Commands[CommandIndex].MinArgs) - { - AcpiOsPrintf ("%d parameters entered, [%s] requires %d parameters\n", - ParamCount, Commands[CommandIndex].Name, Commands[CommandIndex].MinArgs); - return (AE_CTRL_TRUE); - } - - /* Decode and dispatch the command */ - - switch (CommandIndex) - { - case CMD_NULL: - if (Op) - { - return (AE_OK); - } - break; - - case CMD_ALLOCATIONS: - AcpiCmDumpCurrentAllocations ((UINT32) -1, NULL); - break; - - case CMD_ARGS: - case CMD_ARGUMENTS: - AcpiDbDisplayArguments (); - break; - - case CMD_BREAKPOINT: - AcpiDbSetMethodBreakpoint (Args[1], WalkState, Op); - break; - - case CMD_CALL: - AcpiDbSetMethodCallBreakpoint (Op); - Status = AE_OK; - break; - - case CMD_CLOSE: - AcpiDbCloseDebugFile (); - break; - - case CMD_DEBUG: - AcpiDbExecute (Args[1], &Args[2], EX_SINGLE_STEP); - break; - - case CMD_DUMP: - AcpiDbDecodeAndDisplayObject (Args[1], Args[2]); - break; - - case CMD_ENABLEACPI: - Status = AcpiEnable(); - if (ACPI_FAILURE(Status)) - { - AcpiOsPrintf("AcpiEnable failed (Status=%X)\n", Status); - return (Status); - } - break; - - case CMD_EVENT: - AcpiOsPrintf ("Event command not implemented\n"); - break; - - case CMD_EXECUTE: - AcpiDbExecute (Args[1], &Args[2], EX_NO_SINGLE_STEP); - break; - - case CMD_FIND: - AcpiDbFindNameInNamespace (Args[1]); - break; - - case CMD_GO: - AcpiGbl_CmSingleStep = FALSE; - return (AE_OK); - - case CMD_HELP: - case CMD_HELP2: - AcpiDbDisplayHelp (Args[1]); - break; - - case CMD_HISTORY: - AcpiDbDisplayHistory (); - break; - - case CMD_HISTORY_EXE: - CommandLine = AcpiDbGetFromHistory (Args[1]); - if (!CommandLine) - { - return (AE_CTRL_TRUE); - } - - Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); - if (ACPI_SUCCESS (Status)) - Status = AE_CTRL_TRUE; - return (Status); - break; - - case CMD_HISTORY_LAST: - CommandLine = AcpiDbGetFromHistory (NULL); - if (!CommandLine) - { - return (AE_CTRL_TRUE); - } - - Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); - if (ACPI_SUCCESS (Status)) - Status = AE_CTRL_TRUE; - return (Status); - - case CMD_INFORMATION: - AcpiDbDisplayMethodInfo (Op); - break; - - case CMD_INTO: - if (Op) - { - AcpiGbl_CmSingleStep = TRUE; - -/* TBD: Must get current walk state */ - /* AcpiGbl_MethodBreakpoint = 0; */ - return (AE_OK); - } - break; - - case CMD_LEVEL: - if (ParamCount == 0) - { - AcpiOsPrintf ("Current debug level for file output is: %8.8lX\n", AcpiGbl_DbDebugLevel); - AcpiOsPrintf ("Current debug level for console output is: %8.8lX\n", AcpiGbl_DbConsoleDebugLevel); - } - else if (ParamCount == 2) - { - Temp = AcpiGbl_DbConsoleDebugLevel; - AcpiGbl_DbConsoleDebugLevel = STRTOUL (Args[1], NULL, 16); - AcpiOsPrintf ("Debug Level for console output was %8.8lX, now %8.8lX\n", Temp, AcpiGbl_DbConsoleDebugLevel); - } - else - { - Temp = AcpiGbl_DbDebugLevel; - AcpiGbl_DbDebugLevel = STRTOUL (Args[1], NULL, 16); - AcpiOsPrintf ("Debug Level for file output was %8.8lX, now %8.8lX\n", Temp, AcpiGbl_DbDebugLevel); - } - break; - - case CMD_LIST: - AcpiDbDisassembleAml (Args[1], Op); - break; - - case CMD_LOAD: - Status = AcpiDbLoadAcpiTable (Args[1]); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - break; - - case CMD_LOCALS: - AcpiDbDisplayLocals (); - break; - - case CMD_METHODS: - AcpiDbDisplayObjects ("METHOD", Args[1]); - break; - - case CMD_NAMESPACE: - AcpiDbDumpNamespace (Args[1], Args[2]); - break; - - case CMD_NOTIFY: - Temp = STRTOUL (Args[2], NULL, 0); - AcpiDbSendNotify (Args[1], Temp); - break; - - case CMD_OBJECT: - AcpiDbDisplayObjects (Args[1], Args[2]); - break; - - case CMD_OPEN: - AcpiDbOpenDebugFile (Args[1]); - break; - - case CMD_OWNER: - AcpiDbDumpNamespaceByOwner (Args[1], Args[2]); - break; - - case CMD_PREFIX: - AcpiDbSetScope (Args[1]); - break; - - case CMD_REFERENCES: - AcpiDbFindReferences (Args[1]); - break; - - case CMD_RESOURCES: - AcpiDbDisplayResources (Args[1]); - break; - - case CMD_RESULTS: - AcpiDbDisplayResults (); - break; - - case CMD_SET: - AcpiDbSetMethodData (Args[1], Args[2], Args[3]); - break; - - case CMD_STATS: - AcpiDbDisplayStatistics (Args[1]); - break; - - case CMD_STOP: - return (AE_AML_ERROR); - break; - - case CMD_TABLES: - AcpiDbDisplayTableInfo (Args[1]); - break; - - case CMD_TERMINATE: - AcpiDbSetOutputDestination (DB_REDIRECTABLE_OUTPUT); - AcpiCmSubsystemShutdown (); - - /* TBD: [Restructure] Need some way to re-initialize without re-creating the semaphores! */ - - /* AcpiInitialize (NULL); */ - break; - - case CMD_THREADS: - AcpiDbCreateExecutionThreads (Args[1], Args[2], Args[3]); - break; - - case CMD_TREE: - AcpiDbDisplayCallingTree (); - break; - - case CMD_UNLOAD: - AcpiDbUnloadAcpiTable (Args[1], Args[2]); - break; - - case CMD_EXIT: - case CMD_QUIT: - if (Op) - { - return (AE_AML_ERROR); - } - - if (!OutputToFile) - { - AcpiDbgLevel = DEBUG_DEFAULT; - } - - /* Shutdown */ - - /* AcpiCmSubsystemShutdown (); */ - AcpiDbCloseDebugFile (); - - AcpiGbl_DbTerminateThreads = TRUE; - - return (AE_CTRL_TERMINATE); - - case CMD_NOT_FOUND: - AcpiOsPrintf ("Unknown Command\n"); - return (AE_CTRL_TRUE); - } - - - /* Add all commands that come here to the history buffer */ - - AcpiDbAddToHistory (InputBuffer); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecuteThread - * - * PARAMETERS: Context - Not used - * - * RETURN: None - * - * DESCRIPTION: Debugger execute thread. Waits for a command line, then - * simply dispatches it. - * - ******************************************************************************/ - -void -AcpiDbExecuteThread ( - void *Context) -{ - ACPI_STATUS Status = AE_OK; - - - while (Status != AE_CTRL_TERMINATE) - { - AcpiGbl_MethodExecuting = FALSE; - AcpiGbl_StepToNextCall = FALSE; - - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); - Status = AcpiDbCommandDispatch (LineBuf, NULL, NULL); - AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSingleThread - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Debugger execute thread. Waits for a command line, then - * simply dispatches it. - * - ******************************************************************************/ - -void -AcpiDbSingleThread ( - void) -{ - ACPI_STATUS Status = AE_OK; - - - AcpiGbl_MethodExecuting = FALSE; - AcpiGbl_StepToNextCall = FALSE; - - Status = AcpiDbCommandDispatch (LineBuf, NULL, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbUserCommands - * - * PARAMETERS: Prompt - User prompt (depends on mode) - * Op - Current executing parse op - * - * RETURN: None - * - * DESCRIPTION: Command line execution for the AML debugger. Commands are - * matched and dispatched here. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbUserCommands ( - NATIVE_CHAR Prompt, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - - - /* TBD: [Restructure] Need a separate command line buffer for step mode */ - - while (!AcpiGbl_DbTerminateThreads) - { - /* Force output to console until a command is entered */ - - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); - - /* Different prompt if method is executing */ - - if (!AcpiGbl_MethodExecuting) - { - AcpiOsPrintf ("%1c ", DB_COMMAND_PROMPT); - } - else - { - AcpiOsPrintf ("%1c ", DB_EXECUTE_PROMPT); - } - - /* Get the user input line */ - - AcpiOsGetLine (LineBuf); - - - /* Check for single or multithreaded debug */ - - if (AcpiGbl_DebuggerConfiguration & DEBUGGER_MULTI_THREADED) - { - /* - * Signal the debug thread that we have a command to execute, - * and wait for the command to complete. - */ - - AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - } - - else - { - /* Just call to the command line interpreter */ - - AcpiDbSingleThread (); - } - } - - - /* - * Only this thread (the original thread) should actually terminate the subsystem, - * because all the semaphores are deleted during termination - */ - AcpiTerminate (); - - return (Status); -} - - -#endif /* ENABLE_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbstats.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbstats.c deleted file mode 100644 index f4531ea..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbstats.c +++ /dev/null @@ -1,548 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbstats - Generation and display of ACPI table statistics - * $Revision: 37 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include <acpi.h> -#include <acdebug.h> -#include <amlcode.h> -#include <acparser.h> -#include <acnamesp.h> - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbstats") - -/* - * Statistics subcommands - */ -ARGUMENT_INFO AcpiDbStatTypes [] = -{ - {"ALLOCATIONS"}, - {"OBJECTS"}, - {"MEMORY"}, - {"MISC"}, - {"TABLES"}, - {"SIZES"}, - {NULL} /* Must be null terminated */ -}; - -#define CMD_ALLOCATIONS 0 -#define CMD_OBJECTS 1 -#define CMD_MEMORY 2 -#define CMD_MISC 3 -#define CMD_TABLES 4 -#define CMD_SIZES 5 - - -/* - * Statistic globals - */ -UINT16 AcpiGbl_ObjTypeCount[INTERNAL_TYPE_NODE_MAX+1]; -UINT16 AcpiGbl_NodeTypeCount[INTERNAL_TYPE_NODE_MAX+1]; -UINT16 AcpiGbl_ObjTypeCountMisc; -UINT16 AcpiGbl_NodeTypeCountMisc; -UINT32 NumNodes; -UINT32 NumObjects; - - -UINT32 SizeOfParseTree; -UINT32 SizeOfMethodTrees; -UINT32 SizeOfNodeEntries; -UINT32 SizeOfAcpiObjects; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbEnumerateObject - * - * PARAMETERS: ObjDesc - Object to be counted - * - * RETURN: None - * - * DESCRIPTION: Add this object to the global counts, by object type. - * Recursively handles subobjects and packages. - * - * [TBD] Restructure - remove recursion. - * - ******************************************************************************/ - -void -AcpiDbEnumerateObject ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - UINT32 Type; - UINT32 i; - - - if (!ObjDesc) - { - return; - } - - - /* Enumerate this object first */ - - NumObjects++; - - Type = ObjDesc->Common.Type; - if (Type > INTERNAL_TYPE_NODE_MAX) - { - AcpiGbl_ObjTypeCountMisc++; - } - else - { - AcpiGbl_ObjTypeCount [Type]++; - } - - /* Count the sub-objects */ - - switch (Type) - { - case ACPI_TYPE_PACKAGE: - for (i = 0; i< ObjDesc->Package.Count; i++) - { - AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]); - } - break; - - case ACPI_TYPE_DEVICE: - AcpiDbEnumerateObject (ObjDesc->Device.SysHandler); - AcpiDbEnumerateObject (ObjDesc->Device.DrvHandler); - AcpiDbEnumerateObject (ObjDesc->Device.AddrHandler); - break; - - case ACPI_TYPE_REGION: - AcpiDbEnumerateObject (ObjDesc->Region.AddrHandler); - break; - - case ACPI_TYPE_POWER: - AcpiDbEnumerateObject (ObjDesc->PowerResource.SysHandler); - AcpiDbEnumerateObject (ObjDesc->PowerResource.DrvHandler); - break; - - case ACPI_TYPE_PROCESSOR: - AcpiDbEnumerateObject (ObjDesc->Processor.SysHandler); - AcpiDbEnumerateObject (ObjDesc->Processor.DrvHandler); - AcpiDbEnumerateObject (ObjDesc->Processor.AddrHandler); - break; - - case ACPI_TYPE_THERMAL: - AcpiDbEnumerateObject (ObjDesc->ThermalZone.SysHandler); - AcpiDbEnumerateObject (ObjDesc->ThermalZone.DrvHandler); - AcpiDbEnumerateObject (ObjDesc->ThermalZone.AddrHandler); - break; - } -} - - -#ifndef PARSER_ONLY - -/******************************************************************************* - * - * FUNCTION: AcpiDbClassifyOneObject - * - * PARAMETERS: Callback for WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Enumerate both the object descriptor (including subobjects) and - * the parent namespace node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbClassifyOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Type; - - - NumNodes++; - - Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ObjDesc = ((ACPI_NAMESPACE_NODE *) ObjHandle)->Object; - - AcpiDbEnumerateObject (ObjDesc); - - Type = Node->Type; - if (Type > INTERNAL_TYPE_INVALID) - { - AcpiGbl_NodeTypeCountMisc++; - } - - else - { - AcpiGbl_NodeTypeCount [Type]++; - } - - return AE_OK; - - - /* TBD: These need to be counted during the initial parsing phase */ - /* - if (AcpiPsIsNamedOp (Op->Opcode)) - { - NumNodes++; - } - - if (IsMethod) - { - NumMethodElements++; - } - - NumGrammarElements++; - Op = AcpiPsGetDepthNext (Root, Op); - - SizeOfParseTree = (NumGrammarElements - NumMethodElements) * (UINT32) sizeof (ACPI_PARSE_OBJECT); - SizeOfMethodTrees = NumMethodElements * (UINT32) sizeof (ACPI_PARSE_OBJECT); - SizeOfNodeEntries = NumNodes * (UINT32) sizeof (ACPI_NAMESPACE_NODE); - SizeOfAcpiObjects = NumNodes * (UINT32) sizeof (ACPI_OPERAND_OBJECT); - - */ -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCountNamespaceObjects - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Count and classify the entire namespace, including all - * namespace nodes and attached objects. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbCountNamespaceObjects ( - void) -{ - UINT32 i; - - - NumNodes = 0; - NumObjects = 0; - - AcpiGbl_ObjTypeCountMisc = 0; - for (i = 0; i < INTERNAL_TYPE_INVALID; i++) - { - AcpiGbl_ObjTypeCount [i] = 0; - AcpiGbl_NodeTypeCount [i] = 0; - } - - AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - FALSE, AcpiDbClassifyOneObject, NULL, NULL); - - return (AE_OK); -} - -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayStatistics - * - * PARAMETERS: TypeArg - Subcommand - * - * RETURN: Status - * - * DESCRIPTION: Display various statistics - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbDisplayStatistics ( - NATIVE_CHAR *TypeArg) -{ - UINT32 i; - UINT32 Type; - - - if (!AcpiGbl_DSDT) - { - AcpiOsPrintf ("*** Warning: There is no DSDT loaded\n"); - } - - if (!TypeArg) - { - AcpiOsPrintf ("The following subcommands are available:\n ALLOCATIONS, OBJECTS, MEMORY, MISC, SIZES, TABLES\n"); - return (AE_OK); - } - - STRUPR (TypeArg); - Type = AcpiDbMatchArgument (TypeArg, AcpiDbStatTypes); - if (Type == (UINT32) -1) - { - AcpiOsPrintf ("Invalid or unsupported argument\n"); - return (AE_OK); - } - -#ifndef PARSER_ONLY - - AcpiDbCountNamespaceObjects (); -#endif - - - switch (Type) - { -#ifndef PARSER_ONLY - case CMD_ALLOCATIONS: - AcpiCmDumpAllocationInfo (); - break; -#endif - - case CMD_TABLES: - - AcpiOsPrintf ("ACPI Table Information:\n\n"); - if (AcpiGbl_DSDT) - { - AcpiOsPrintf ("DSDT Length:................% 7ld (%X)\n", AcpiGbl_DSDT->Length, AcpiGbl_DSDT->Length); - } - break; - - case CMD_OBJECTS: - - AcpiOsPrintf ("\nObjects defined in the current namespace:\n\n"); - - AcpiOsPrintf ("%16.16s % 10.10s % 10.10s\n", "ACPI_TYPE", "NODES", "OBJECTS"); - - for (i = 0; i < INTERNAL_TYPE_NODE_MAX; i++) - { - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiCmGetTypeName (i), - AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]); - } - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown", - AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc); - - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:", - NumNodes, NumObjects); - - -/* - AcpiOsPrintf ("\n"); - - AcpiOsPrintf ("ASL/AML Grammar Usage:\n\n"); - AcpiOsPrintf ("Elements Inside Methods:....% 7ld\n", NumMethodElements); - AcpiOsPrintf ("Elements Outside Methods:...% 7ld\n", NumGrammarElements - NumMethodElements); - AcpiOsPrintf ("Total Grammar Elements:.....% 7ld\n", NumGrammarElements); -*/ - break; - - case CMD_MEMORY: - - AcpiOsPrintf ("\nDynamic Memory Estimates:\n\n"); - AcpiOsPrintf ("Parse Tree without Methods:.% 7ld\n", SizeOfParseTree); - AcpiOsPrintf ("Control Method Parse Trees:.% 7ld (If parsed simultaneously)\n", SizeOfMethodTrees); - AcpiOsPrintf ("Namespace Nodes:............% 7ld (%d nodes)\n", sizeof (ACPI_NAMESPACE_NODE) * NumNodes, NumNodes); - AcpiOsPrintf ("Named Internal Objects......% 7ld\n", SizeOfAcpiObjects); - AcpiOsPrintf ("State Cache size............% 7ld\n", AcpiGbl_GenericStateCacheDepth * sizeof (ACPI_GENERIC_STATE)); - AcpiOsPrintf ("Parse Cache size............% 7ld\n", AcpiGbl_ParseCacheDepth * sizeof (ACPI_PARSE_OBJECT)); - AcpiOsPrintf ("Object Cache size...........% 7ld\n", AcpiGbl_ObjectCacheDepth * sizeof (ACPI_OPERAND_OBJECT)); - AcpiOsPrintf ("WalkState Cache size........% 7ld\n", AcpiGbl_WalkStateCacheDepth * sizeof (ACPI_WALK_STATE)); - - AcpiOsPrintf ("\n"); - - AcpiOsPrintf ("Cache Statistics:\n\n"); - AcpiOsPrintf ("State Cache requests........% 7ld\n", AcpiGbl_StateCacheRequests); - AcpiOsPrintf ("State Cache hits............% 7ld\n", AcpiGbl_StateCacheHits); - AcpiOsPrintf ("State Cache depth...........% 7ld (%d remaining entries)\n", AcpiGbl_GenericStateCacheDepth, - MAX_STATE_CACHE_DEPTH - AcpiGbl_GenericStateCacheDepth); - AcpiOsPrintf ("Parse Cache requests........% 7ld\n", AcpiGbl_ParseCacheRequests); - AcpiOsPrintf ("Parse Cache hits............% 7ld\n", AcpiGbl_ParseCacheHits); - AcpiOsPrintf ("Parse Cache depth...........% 7ld (%d remaining entries)\n", AcpiGbl_ParseCacheDepth, - MAX_PARSE_CACHE_DEPTH - AcpiGbl_ParseCacheDepth); - AcpiOsPrintf ("Ext Parse Cache requests....% 7ld\n", AcpiGbl_ExtParseCacheRequests); - AcpiOsPrintf ("Ext Parse Cache hits........% 7ld\n", AcpiGbl_ExtParseCacheHits); - AcpiOsPrintf ("Ext Parse Cache depth.......% 7ld (%d remaining entries)\n", AcpiGbl_ExtParseCacheDepth, - MAX_EXTPARSE_CACHE_DEPTH - AcpiGbl_ExtParseCacheDepth); - AcpiOsPrintf ("Object Cache requests.......% 7ld\n", AcpiGbl_ObjectCacheRequests); - AcpiOsPrintf ("Object Cache hits...........% 7ld\n", AcpiGbl_ObjectCacheHits); - AcpiOsPrintf ("Object Cache depth..........% 7ld (%d remaining entries)\n", AcpiGbl_ObjectCacheDepth, - MAX_OBJECT_CACHE_DEPTH - AcpiGbl_ObjectCacheDepth); - AcpiOsPrintf ("WalkState Cache requests....% 7ld\n", AcpiGbl_WalkStateCacheRequests); - AcpiOsPrintf ("WalkState Cache hits........% 7ld\n", AcpiGbl_WalkStateCacheHits); - AcpiOsPrintf ("WalkState Cache depth.......% 7ld (%d remaining entries)\n", AcpiGbl_WalkStateCacheDepth, - MAX_WALK_CACHE_DEPTH - AcpiGbl_WalkStateCacheDepth); - break; - - case CMD_MISC: - - AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n"); - AcpiOsPrintf ("Calls to AcpiPsFind:.. ........% 7ld\n", AcpiGbl_PsFindCount); - AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n", AcpiGbl_NsLookupCount); - - AcpiOsPrintf ("\n"); - - AcpiOsPrintf ("Mutex usage:\n\n"); - for (i = 0; i < NUM_MTX; i++) - { - AcpiOsPrintf ("%-20s: % 7ld\n", AcpiCmGetMutexName (i), AcpiGbl_AcpiMutexInfo[i].UseCount); - } - break; - - - case CMD_SIZES: - - AcpiOsPrintf ("\nInternal object sizes:\n\n"); - - AcpiOsPrintf ("Common %3d\n", sizeof (ACPI_OBJECT_COMMON)); - AcpiOsPrintf ("Number %3d\n", sizeof (ACPI_OBJECT_INTEGER)); - AcpiOsPrintf ("String %3d\n", sizeof (ACPI_OBJECT_STRING)); - AcpiOsPrintf ("Buffer %3d\n", sizeof (ACPI_OBJECT_BUFFER)); - AcpiOsPrintf ("Package %3d\n", sizeof (ACPI_OBJECT_PACKAGE)); - AcpiOsPrintf ("FieldUnit %3d\n", sizeof (ACPI_OBJECT_FIELD_UNIT)); - AcpiOsPrintf ("Device %3d\n", sizeof (ACPI_OBJECT_DEVICE)); - AcpiOsPrintf ("Event %3d\n", sizeof (ACPI_OBJECT_EVENT)); - AcpiOsPrintf ("Method %3d\n", sizeof (ACPI_OBJECT_METHOD)); - AcpiOsPrintf ("Mutex %3d\n", sizeof (ACPI_OBJECT_MUTEX)); - AcpiOsPrintf ("Region %3d\n", sizeof (ACPI_OBJECT_REGION)); - AcpiOsPrintf ("PowerResource %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE)); - AcpiOsPrintf ("Processor %3d\n", sizeof (ACPI_OBJECT_PROCESSOR)); - AcpiOsPrintf ("ThermalZone %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE)); - AcpiOsPrintf ("Field %3d\n", sizeof (ACPI_OBJECT_FIELD)); - AcpiOsPrintf ("BankField %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD)); - AcpiOsPrintf ("IndexField %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD)); - AcpiOsPrintf ("Reference %3d\n", sizeof (ACPI_OBJECT_REFERENCE)); - AcpiOsPrintf ("NotifyHandler %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER)); - AcpiOsPrintf ("AddrHandler %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER)); - AcpiOsPrintf ("Extra %3d\n", sizeof (ACPI_OBJECT_EXTRA)); - - AcpiOsPrintf ("\n"); - - AcpiOsPrintf ("ParseObject %3d\n", sizeof (ACPI_PARSE_OBJECT)); - AcpiOsPrintf ("Parse2Object %3d\n", sizeof (ACPI_PARSE2_OBJECT)); - AcpiOsPrintf ("OperandObject %3d\n", sizeof (ACPI_OPERAND_OBJECT)); - AcpiOsPrintf ("NamespaceNode %3d\n", sizeof (ACPI_NAMESPACE_NODE)); - - break; - - } - - AcpiOsPrintf ("\n"); - return (AE_OK); -} - - -#endif /* ENABLE_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbutils.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbutils.c deleted file mode 100644 index 2c0bae7..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbutils.c +++ /dev/null @@ -1,465 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbutils - AML debugger utilities - * $Revision: 35 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acevents.h" -#include "acinterp.h" -#include "acdebug.h" -#include "acdispat.h" - - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetOutputDestination - * - * PARAMETERS: OutputFlags - Current flags word - * - * RETURN: None - * - * DESCRIPTION: Set the current destination for debugger output. Alos sets - * the debug output level accordingly. - * - ******************************************************************************/ - -void -AcpiDbSetOutputDestination ( - UINT32 OutputFlags) -{ - - AcpiGbl_DbOutputFlags = (UINT8) OutputFlags; - - if (OutputFlags & DB_REDIRECTABLE_OUTPUT) - { - if (OutputToFile) - { - AcpiDbgLevel = AcpiGbl_DbDebugLevel; - } - } - else - { - AcpiDbgLevel = AcpiGbl_DbConsoleDebugLevel; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpBuffer - * - * PARAMETERS: Address - Pointer to the buffer - * - * RETURN: None - * - * DESCRIPTION: Print a portion of a buffer - * - ******************************************************************************/ - -void -AcpiDbDumpBuffer ( - UINT32 Address) -{ - - AcpiOsPrintf ("\nLocation %X:\n", Address); - - AcpiDbgLevel |= TRACE_TABLES; - AcpiCmDumpBuffer ((UINT8 *) Address, 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpObject - * - * PARAMETERS: ObjDesc - External ACPI object to dump - * Level - Nesting level. - * - * RETURN: None - * - * DESCRIPTION: Dump the contents of an ACPI external object - * - ******************************************************************************/ - -void -AcpiDbDumpObject ( - ACPI_OBJECT *ObjDesc, - UINT32 Level) -{ - UINT32 i; - - - if (!ObjDesc) - { - AcpiOsPrintf ("[Null Object]\n"); - return; - } - - for (i = 0; i < Level; i++) - { - AcpiOsPrintf (" "); - } - - switch (ObjDesc->Type) - { - case ACPI_TYPE_ANY: - - AcpiOsPrintf ("[Object Reference] Value: %p\n", ObjDesc->Reference.Handle); - break; - - - case ACPI_TYPE_INTEGER: - AcpiOsPrintf ("[Number] Value: %ld (%lX)\n", ObjDesc->Integer.Value, ObjDesc->Integer.Value); - break; - - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("[String] Value: "); - for (i = 0; i < ObjDesc->String.Length; i++) - { - AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]); - } - AcpiOsPrintf ("\n"); - break; - - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf ("[Buffer] Value: "); - AcpiCmDumpBuffer ((UINT8 *) ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); - break; - - - case ACPI_TYPE_PACKAGE: - - AcpiOsPrintf ("[Package] Contains %d Elements: \n", ObjDesc->Package.Count); - - for (i = 0; i < ObjDesc->Package.Count; i++) - { - AcpiDbDumpObject (&ObjDesc->Package.Elements[i], Level+1); - } - break; - - - case INTERNAL_TYPE_REFERENCE: - AcpiOsPrintf ("[Object Reference] Value: %p\n", ObjDesc->Reference.Handle); - break; - - case ACPI_TYPE_PROCESSOR: - AcpiOsPrintf ("[Processor]\n"); - break; - - case ACPI_TYPE_POWER: - AcpiOsPrintf ("[Power Resource]\n"); - break; - - default: - - AcpiOsPrintf ("[Unknown Type] %X \n", ObjDesc->Type); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbPrepNamestring - * - * PARAMETERS: Name - String to prepare - * - * RETURN: None - * - * DESCRIPTION: Translate all forward slashes and dots to backslashes. - * - ******************************************************************************/ - -void -AcpiDbPrepNamestring ( - NATIVE_CHAR *Name) -{ - - - if (!Name) - { - return; - } - - STRUPR (Name); - - /* Convert a leading forward slash to a backslash */ - - if (*Name == '/') - { - *Name = '\\'; - } - - /* Ignore a leading backslash, this is the root prefix */ - - if (*Name == '\\') - { - Name++; - } - - /* Convert all slash path separators to dots */ - - while (*Name) - { - if ((*Name == '/') || - (*Name == '\\')) - { - *Name = '.'; - } - - Name++; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSecondPassParse - * - * PARAMETERS: Root - Root of the parse tree - * - * RETURN: Status - * - * DESCRIPTION: Second pass parse of the ACPI tables. We need to wait until - * second pass to parse the control methods - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbSecondPassParse ( - ACPI_PARSE_OBJECT *Root) -{ - ACPI_PARSE_OBJECT *Op = Root; - ACPI_PARSE2_OBJECT *Method; - ACPI_PARSE_OBJECT *SearchOp; - ACPI_PARSE_OBJECT *StartOp; - ACPI_STATUS Status = AE_OK; - UINT32 BaseAmlOffset; - - - AcpiOsPrintf ("Pass two parse ....\n"); - - while (Op) - { - if (Op->Opcode == AML_METHOD_OP) - { - Method = (ACPI_PARSE2_OBJECT *) Op; - Status = AcpiPsParseAml (Op, Method->Data, Method->Length, 0, - NULL, NULL, NULL, AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp); - - - BaseAmlOffset = (Method->Value.Arg)->AmlOffset + 1; - StartOp = (Method->Value.Arg)->Next; - SearchOp = StartOp; - - while (SearchOp) - { - SearchOp->AmlOffset += BaseAmlOffset; - SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); - } - - } - - if (Op->Opcode == AML_REGION_OP) - { - /* TBD: [Investigate] this isn't quite the right thing to do! */ - /* - * - * Method = (ACPI_DEFERRED_OP *) Op; - * Status = AcpiPsParseAml (Op, Method->Body, Method->BodyLength); - */ - } - - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Op = AcpiPsGetDepthNext (Root, Op); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbLocalNsLookup - * - * PARAMETERS: Name - Name to lookup - * - * RETURN: Pointer to a namespace node - * - * DESCRIPTION: Lookup a name in the ACPI namespace - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiDbLocalNsLookup ( - NATIVE_CHAR *Name) -{ - NATIVE_CHAR *InternalPath; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node = NULL; - - - AcpiDbPrepNamestring (Name); - - /* Build an internal namestring */ - - Status = AcpiNsInternalizeName (Name, &InternalPath); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Invalid namestring: %s\n", Name); - return (NULL); - } - - /* Lookup the name */ - - /* TBD: [Investigate] what scope do we use? */ - /* Use the root scope for the start of the search */ - - Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, NULL, &Node); - - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not locate name: %s %s\n", Name, AcpiCmFormatException (Status)); - } - - - AcpiCmFree (InternalPath); - - return (Node); -} - - -#endif /* ENABLE_DEBUGGER */ - - diff --git a/sys/contrib/dev/acpica/Subsystem/Debugger/dbxface.c b/sys/contrib/dev/acpica/Subsystem/Debugger/dbxface.c deleted file mode 100644 index 4116655..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Debugger/dbxface.c +++ /dev/null @@ -1,432 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbxface - AML Debugger external interfaces - * $Revision: 34 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acevents.h" -#include "acinterp.h" -#include "acdebug.h" - - -#ifdef ENABLE_DEBUGGER - -#define _COMPONENT DEBUGGER - MODULE_NAME ("dbxface") - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSingleStep - * - * PARAMETERS: WalkState - Current walk - * Op - Current executing op - * OpType - Type of the current AML Opcode - * - * RETURN: Status - * - * DESCRIPTION: Called just before execution of an AML opcode. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbSingleStep ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT8 OpType) -{ - ACPI_PARSE_OBJECT *Next; - ACPI_STATUS Status = AE_OK; - UINT32 OriginalDebugLevel; - ACPI_PARSE_OBJECT *DisplayOp; - - - /* Is there a breakpoint set? */ - - if (WalkState->MethodBreakpoint) - { - /* Check if the breakpoint has been reached or passed */ - - if (WalkState->MethodBreakpoint <= Op->AmlOffset) - { - /* Hit the breakpoint, resume single step, reset breakpoint */ - - AcpiOsPrintf ("***Break*** at AML offset %X\n", Op->AmlOffset); - AcpiGbl_CmSingleStep = TRUE; - AcpiGbl_StepToNextCall = FALSE; - WalkState->MethodBreakpoint = 0; - } - } - - - /* - * Check if this is an opcode that we are interested in -- - * namely, opcodes that have arguments - */ - - if (Op->Opcode == AML_NAMEDFIELD_OP) - { - return (AE_OK); - } - - switch (OpType) - { - case OPTYPE_UNDEFINED: - case OPTYPE_CONSTANT: /* argument type only */ - case OPTYPE_LITERAL: /* argument type only */ - case OPTYPE_DATA_TERM: /* argument type only */ - case OPTYPE_LOCAL_VARIABLE: /* argument type only */ - case OPTYPE_METHOD_ARGUMENT: /* argument type only */ - return (AE_OK); - break; - - case OPTYPE_NAMED_OBJECT: - switch (Op->Opcode) - { - case AML_NAMEPATH_OP: - return (AE_OK); - break; - } - } - - - /* - * Under certain debug conditions, display this opcode and its operands - */ - - if ((OutputToFile) || - (AcpiGbl_CmSingleStep) || - (AcpiDbgLevel & TRACE_PARSE)) - { - if ((OutputToFile) || - (AcpiDbgLevel & TRACE_PARSE)) - { - AcpiOsPrintf ("\n[AmlDebug] Next AML Opcode to execute:\n"); - } - - /* - * Display this op (and only this op - zero out the NEXT field temporarily, - * and disable parser trace output for the duration of the display because - * we don't want the extraneous debug output) - */ - - OriginalDebugLevel = AcpiDbgLevel; - AcpiDbgLevel &= ~(TRACE_PARSE | TRACE_FUNCTIONS); - Next = Op->Next; - Op->Next = NULL; - - - DisplayOp = Op; - if (Op->Parent) - { - if ((Op->Parent->Opcode == AML_IF_OP) || - (Op->Parent->Opcode == AML_WHILE_OP)) - { - DisplayOp = Op->Parent; - } - } - - /* Now we can display it */ - - AcpiDbDisplayOp (WalkState, DisplayOp, ACPI_UINT32_MAX); - - if ((Op->Opcode == AML_IF_OP) || - (Op->Opcode == AML_WHILE_OP)) - { - if (WalkState->ControlState->Common.Value) - { - AcpiOsPrintf ("Predicate was TRUE, executed block\n"); - } - else - { - AcpiOsPrintf ("Predicate is FALSE, skipping block\n"); - } - } - - else if (Op->Opcode == AML_ELSE_OP) - { - /* TBD */ - } - - - /* Restore everything */ - - Op->Next = Next; - AcpiOsPrintf ("\n"); - AcpiDbgLevel = OriginalDebugLevel; - } - - - /* If we are not single stepping, just continue executing the method */ - - if (!AcpiGbl_CmSingleStep) - { - return (AE_OK); - } - - - /* - * If we are executing a step-to-call command, - * Check if this is a method call. - */ - - if (AcpiGbl_StepToNextCall) - { - if (Op->Opcode != AML_METHODCALL_OP) - { - /* Not a method call, just keep executing */ - - return (AE_OK); - } - - /* Found a method call, stop executing */ - - AcpiGbl_StepToNextCall = FALSE; - } - - - /* - * If the next opcode is a method call, we will "step over" it - * by default. - */ - - if (Op->Opcode == AML_METHODCALL_OP) - { - AcpiGbl_CmSingleStep = FALSE; /* No more single step while executing called method */ - - /* Set the breakpoint on the call, it will stop execution as soon as we return */ - - /* TBD: [Future] don't kill the user breakpoint! */ - - WalkState->MethodBreakpoint = /* Op->AmlOffset + */ 1; /* Must be non-zero! */ - } - - - /* TBD: [Investigate] what are the namespace locking issues here */ - - /* AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); */ - - /* Go into the command loop and await next user command */ - - AcpiGbl_MethodExecuting = TRUE; - Status = AE_CTRL_TRUE; - while (Status == AE_CTRL_TRUE) - { - if (AcpiGbl_DebuggerConfiguration == DEBUGGER_MULTI_THREADED) - { - /* Handshake with the front-end that gets user command lines */ - - AcpiCmReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); - } - - else - { - /* Single threaded, we must get a command line ourselves */ - - /* Force output to console until a command is entered */ - - AcpiDbSetOutputDestination (DB_CONSOLE_OUTPUT); - - /* Different prompt if method is executing */ - - if (!AcpiGbl_MethodExecuting) - { - AcpiOsPrintf ("%1c ", DB_COMMAND_PROMPT); - } - else - { - AcpiOsPrintf ("%1c ", DB_EXECUTE_PROMPT); - } - - /* Get the user input line */ - - AcpiOsGetLine (LineBuf); - } - - Status = AcpiDbCommandDispatch (LineBuf, WalkState, Op); - } - - /* AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); */ - - - /* User commands complete, continue execution of the interrupted method */ - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Init and start debugger - * - ******************************************************************************/ - -int -AcpiDbInitialize (void) -{ - - - /* Init globals */ - - Buffer = AcpiOsAllocate (BUFFER_SIZE); - - /* Initial scope is the root */ - - ScopeBuf [0] = '\\'; - ScopeBuf [1] = 0; - - - /* - * If configured for multi-thread support, the debug executor runs in - * a separate thread so that the front end can be in another address - * space, environment, or even another machine. - */ - - if (AcpiGbl_DebuggerConfiguration & DEBUGGER_MULTI_THREADED) - { - /* These were created with one unit, grab it */ - - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - AcpiCmAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); - - /* Create the debug execution thread to execute commands */ - - AcpiOsQueueForExecution (0, AcpiDbExecuteThread, NULL); - } - - if (!opt_verbose) - { - INDENT_STRING = " "; - opt_disasm = TRUE; - opt_stats = FALSE; - } - - - return (0); -} - - -#endif /* ENABLE_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsfield.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsfield.c deleted file mode 100644 index 11f304d..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsfield.c +++ /dev/null @@ -1,546 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsfield - Dispatcher field routines - * $Revision: 31 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSFIELD_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" - - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dsfield") - - -/* - * Field flags: Bits 00 - 03 : AccessType (AnyAcc, ByteAcc, etc.) - * 04 : LockRule (1 == Lock) - * 05 - 06 : UpdateRule - */ - -#define FIELD_ACCESS_TYPE_MASK 0x0F -#define FIELD_LOCK_RULE_MASK 0x10 -#define FIELD_UPDATE_RULE_MASK 0x60 - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateField - * - * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region - * - * RETURN: Status - * - * DESCRIPTION: Create a new field in the specified operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_AML_ERROR; - ACPI_PARSE_OBJECT *Arg; - ACPI_NAMESPACE_NODE *Node; - UINT8 FieldFlags; - UINT8 AccessAttribute = 0; - UINT32 FieldBitPosition = 0; - - - FUNCTION_TRACE_PTR ("DsCreateField", Op); - - - /* First arg is the name of the parent OpRegion */ - - Arg = Op->Value.Arg; - if (!RegionNode) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.Name, - ACPI_TYPE_REGION, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, - &RegionNode); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Second arg is the field flags */ - - Arg = Arg->Next; - FieldFlags = (UINT8) Arg->Value.Integer; - - /* Each remaining arg is a Named Field */ - - Arg = Arg->Next; - while (Arg) - { - switch (Arg->Opcode) - { - case AML_RESERVEDFIELD_OP: - - FieldBitPosition += Arg->Value.Size; - break; - - - case AML_ACCESSFIELD_OP: - - /* - * Get a new AccessType and AccessAttribute for all - * entries (until end or another AccessAs keyword) - */ - - AccessAttribute = (UINT8) Arg->Value.Integer; - FieldFlags = (UINT8) - ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || - ((UINT8) (Arg->Value.Integer >> 8))); - break; - - - case AML_NAMEDFIELD_OP: - - Status = AcpiNsLookup (WalkState->ScopeInfo, - (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - INTERNAL_TYPE_DEF_FIELD, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &Node); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Initialize an object for the new Node that is on - * the object stack - */ - - Status = AcpiAmlPrepDefFieldValue (Node, RegionNode, FieldFlags, - AccessAttribute, FieldBitPosition, Arg->Value.Size); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Keep track of bit position for *next* field */ - - FieldBitPosition += Arg->Value.Size; - break; - } - - Arg = Arg->Next; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateBankField - * - * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region - * - * RETURN: Status - * - * DESCRIPTION: Create a new bank field in the specified operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateBankField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_AML_ERROR; - ACPI_PARSE_OBJECT *Arg; - ACPI_NAMESPACE_NODE *RegisterNode; - ACPI_NAMESPACE_NODE *Node; - UINT32 BankValue; - UINT8 FieldFlags; - UINT8 AccessAttribute = 0; - UINT32 FieldBitPosition = 0; - - - FUNCTION_TRACE_PTR ("DsCreateBankField", Op); - - - /* First arg is the name of the parent OpRegion */ - - Arg = Op->Value.Arg; - if (!RegionNode) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.Name, - ACPI_TYPE_REGION, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, - &RegionNode); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Second arg is the Bank Register */ - - Arg = Arg->Next; - - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - INTERNAL_TYPE_BANK_FIELD_DEFN, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &RegisterNode); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Third arg is the BankValue */ - - Arg = Arg->Next; - BankValue = Arg->Value.Integer; - - - /* Next arg is the field flags */ - - Arg = Arg->Next; - FieldFlags = (UINT8) Arg->Value.Integer; - - /* Each remaining arg is a Named Field */ - - Arg = Arg->Next; - while (Arg) - { - switch (Arg->Opcode) - { - case AML_RESERVEDFIELD_OP: - - FieldBitPosition += Arg->Value.Size; - break; - - - case AML_ACCESSFIELD_OP: - - /* - * Get a new AccessType and AccessAttribute for - * all entries (until end or another AccessAs keyword) - */ - - AccessAttribute = (UINT8) Arg->Value.Integer; - FieldFlags = (UINT8) - ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || - ((UINT8) (Arg->Value.Integer >> 8))); - break; - - - case AML_NAMEDFIELD_OP: - - Status = AcpiNsLookup (WalkState->ScopeInfo, - (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - INTERNAL_TYPE_DEF_FIELD, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &Node); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Initialize an object for the new Node that is on - * the object stack - */ - - Status = AcpiAmlPrepBankFieldValue (Node, RegionNode, RegisterNode, - BankValue, FieldFlags, AccessAttribute, - FieldBitPosition, Arg->Value.Size); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Keep track of bit position for the *next* field */ - - FieldBitPosition += Arg->Value.Size; - break; - - } - - Arg = Arg->Next; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateIndexField - * - * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region - * - * RETURN: Status - * - * DESCRIPTION: Create a new index field in the specified operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateIndexField ( - ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE RegionNode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg; - ACPI_NAMESPACE_NODE *Node; - ACPI_NAMESPACE_NODE *IndexRegisterNode; - ACPI_NAMESPACE_NODE *DataRegisterNode; - UINT8 FieldFlags; - UINT8 AccessAttribute = 0; - UINT32 FieldBitPosition = 0; - - - FUNCTION_TRACE_PTR ("DsCreateIndexField", Op); - - - Arg = Op->Value.Arg; - - /* First arg is the name of the Index register */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - ACPI_TYPE_ANY, IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &IndexRegisterNode); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Second arg is the data register */ - - Arg = Arg->Next; - - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - INTERNAL_TYPE_INDEX_FIELD_DEFN, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &DataRegisterNode); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* Next arg is the field flags */ - - Arg = Arg->Next; - FieldFlags = (UINT8) Arg->Value.Integer; - - - /* Each remaining arg is a Named Field */ - - Arg = Arg->Next; - while (Arg) - { - switch (Arg->Opcode) - { - case AML_RESERVEDFIELD_OP: - - FieldBitPosition += Arg->Value.Size; - break; - - - case AML_ACCESSFIELD_OP: - - /* - * Get a new AccessType and AccessAttribute for all - * entries (until end or another AccessAs keyword) - */ - - AccessAttribute = (UINT8) Arg->Value.Integer; - FieldFlags = (UINT8) - ((FieldFlags & FIELD_ACCESS_TYPE_MASK) || - ((UINT8) (Arg->Value.Integer >> 8))); - break; - - - case AML_NAMEDFIELD_OP: - - Status = AcpiNsLookup (WalkState->ScopeInfo, - (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Arg)->Name, - INTERNAL_TYPE_INDEX_FIELD, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, &Node); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Initialize an object for the new Node that is on - * the object stack - */ - - Status = AcpiAmlPrepIndexFieldValue (Node, IndexRegisterNode, DataRegisterNode, - FieldFlags, AccessAttribute, - FieldBitPosition, Arg->Value.Size); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Keep track of bit position for the *next* field */ - - FieldBitPosition += Arg->Value.Size; - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("DsEnterIndexField: Invalid opcode in field list: %X\n", - Arg->Opcode)); - Status = AE_AML_ERROR; - break; - } - - Arg = Arg->Next; - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsmethod.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsmethod.c deleted file mode 100644 index 02e1322..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsmethod.c +++ /dev/null @@ -1,645 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsmethod - Parser/Interpreter interface - control method parsing - * $Revision: 56 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSMETHOD_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "actables.h" -#include "acdebug.h" - - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dsmethod") - - -/******************************************************************************* - * - * FUNCTION: AcpiDsParseMethod - * - * PARAMETERS: ObjHandle - Node of the method - * Level - Current nesting level - * Context - Points to a method counter - * ReturnValue - Not used - * - * RETURN: Status - * - * DESCRIPTION: Call the parser and parse the AML that is - * associated with the method. - * - * MUTEX: Assumes parser is locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsParseMethod ( - ACPI_HANDLE ObjHandle) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PARSE_OBJECT *Op; - ACPI_NAMESPACE_NODE *Node; - ACPI_OWNER_ID OwnerId; - - - FUNCTION_TRACE_PTR ("DsParseMethod", ObjHandle); - - - /* Parameter Validation */ - - if (!ObjHandle) - { - return_ACPI_STATUS (AE_NULL_ENTRY); - } - - DEBUG_PRINT (ACPI_INFO, - ("DsParseMethod: **** Parsing [%4.4s] **** NamedObj=%p\n", - &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, ObjHandle)); - - - /* Extract the method object from the method Node */ - - Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ObjDesc = Node->Object; - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - /* Create a mutex for the method if there is a concurrency limit */ - - if ((ObjDesc->Method.Concurrency != INFINITE_CONCURRENCY) && - (!ObjDesc->Method.Semaphore)) - { - Status = AcpiOsCreateSemaphore (1,ObjDesc->Method.Concurrency, - &ObjDesc->Method.Semaphore); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Allocate a new parser op to be the root of the parsed - * method tree - */ - - Op = AcpiPsAllocOp (AML_METHOD_OP); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Init new op with the method name and pointer back to the Node */ - - AcpiPsSetName (Op, Node->Name); - Op->Node = Node; - - - /* - * Parse the method, first pass - * - * The first pass load is - * where newly declared named objects are - * added into the namespace. Actual evaluation of - * the named objects (what would be called a "second - * pass") happens during the actual execution of the - * method so that operands to the named objects can - * take on dynamic run-time values. - */ - - Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode, - ObjDesc->Method.PcodeLength, - ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE, - Node, NULL, NULL, - AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get a new OwnerId for objects created by this method */ - - OwnerId = AcpiCmAllocateOwnerId (OWNER_TYPE_METHOD); - ObjDesc->Method.OwningId = OwnerId; - - DEBUG_PRINT (ACPI_INFO, - ("DsParseMethod: **** [%4.4s] Parsed **** NamedObj=%p Op=%p\n", - &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, ObjHandle, Op)); - - /* Install the parsed tree in the method object */ - /* TBD: [Restructure] Obsolete field? */ - - AcpiPsDeleteParseTree (Op); - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsBeginMethodExecution - * - * PARAMETERS: MethodNode - Node of the method - * ObjDesc - The method object - * - * RETURN: Status - * - * DESCRIPTION: Prepare a method for execution. Parses the method if necessary, - * increments the thread count, and waits at the method semaphore - * for clearance to execute. - * - * MUTEX: Locks/unlocks parser. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsBeginMethodExecution ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("DsBeginMethodExecution", MethodNode); - - - if (!MethodNode) - { - return_ACPI_STATUS (AE_NULL_ENTRY); - } - - ObjDesc = AcpiNsGetAttachedObject (MethodNode); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - - /* - * If there is a concurrency limit on this method, we need to - * obtain a unit from the method semaphore. This releases the - * interpreter if we block - */ - - if (ObjDesc->Method.Semaphore) - { - Status = AcpiAmlSystemWaitSemaphore (ObjDesc->Method.Semaphore, - WAIT_FOREVER); - } - - - /* - * Increment the method parse tree thread count since there - * is one additional thread executing in it. If configured - * for deletion-on-exit, the parse tree will be deleted when - * the last thread completes execution of the method - */ - - ObjDesc->Method.ThreadCount++; - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCallControlMethod - * - * PARAMETERS: WalkState - Current state of the walk - * Op - Current Op to be walked - * - * RETURN: Status - * - * DESCRIPTION: Transfer execution to a called control method - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCallControlMethod ( - ACPI_WALK_LIST *WalkList, - ACPI_WALK_STATE *ThisWalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_WALK_STATE *NextWalkState; - ACPI_PARSE_STATE *ParserState; - UINT32 i; - - - FUNCTION_TRACE_PTR ("DsCallControlMethod", ThisWalkState); - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCall, execute method %p, currentstate=%p\n", - ThisWalkState->PrevOp, ThisWalkState)); - - /* - * Get the namespace entry for the control method we are about to call - */ - - MethodNode = ThisWalkState->MethodCallNode; - if (!MethodNode) - { - return_ACPI_STATUS (AE_NULL_ENTRY); - } - - ObjDesc = AcpiNsGetAttachedObject (MethodNode); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - - /* Init for new method, wait on concurrency semaphore */ - - Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* Create and initialize a new parser state */ - - ParserState = AcpiPsCreateState (ObjDesc->Method.Pcode, - ObjDesc->Method.PcodeLength); - if (!ParserState) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - AcpiPsInitScope (ParserState, NULL); - ParserState->StartNode = MethodNode; - - - /* Create a new state for the preempting walk */ - - NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId, - NULL, ObjDesc, WalkList); - if (!NextWalkState) - { - /* TBD: delete parser state */ - - return_ACPI_STATUS (AE_NO_MEMORY); - } - - NextWalkState->WalkType = WALK_METHOD; - NextWalkState->MethodNode = MethodNode; - NextWalkState->ParserState = ParserState; - NextWalkState->ParseFlags = ThisWalkState->ParseFlags; - NextWalkState->DescendingCallback = ThisWalkState->DescendingCallback; - NextWalkState->AscendingCallback = ThisWalkState->AscendingCallback; - - /* The NextOp of the NextWalk will be the beginning of the method */ - /* TBD: [Restructure] -- obsolete? */ - - NextWalkState->NextOp = NULL; - - /* Open a new scope */ - - Status = AcpiDsScopeStackPush (MethodNode, - ACPI_TYPE_METHOD, NextWalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - - /* - * Initialize the arguments for the method. The resolved - * arguments were put on the previous walk state's operand - * stack. Operands on the previous walk state stack always - * start at index 0. - */ - - Status = AcpiDsMethodDataInitArgs (&ThisWalkState->Operands[0], - ThisWalkState->NumOperands, - NextWalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - - /* Create and init a Root Node */ - - Op = AcpiPsAllocOp (AML_SCOPE_OP); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode, - ObjDesc->Method.PcodeLength, - ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE, - MethodNode, NULL, NULL, - AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp); - AcpiPsDeleteParseTree (Op); - - - /* - * Delete the operands on the previous walkstate operand stack - * (they were copied to new objects) - */ - - for (i = 0; i < ObjDesc->Method.ParamCount; i++) - { - AcpiCmRemoveReference (ThisWalkState->Operands [i]); - ThisWalkState->Operands [i] = NULL; - } - - /* Clear the operand stack */ - - ThisWalkState->NumOperands = 0; - - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCall, starting nested execution, newstate=%p\n", NextWalkState)); - - return_ACPI_STATUS (AE_OK); - - - /* On error, we must delete the new walk state */ - -Cleanup: - AcpiDsTerminateControlMethod (NextWalkState); - AcpiDsDeleteWalkState (NextWalkState); - return_ACPI_STATUS (Status); - -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsRestartControlMethod - * - * PARAMETERS: WalkState - State of the method when it was preempted - * Op - Pointer to new current op - * - * RETURN: Status - * - * DESCRIPTION: Restart a method that was preempted - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsRestartControlMethod ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ReturnDesc) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE_PTR ("DsRestartControlMethod", WalkState); - - - if (ReturnDesc) - { - if (WalkState->ReturnUsed) - { - /* - * Get the return value (if any) from the previous method. - * NULL if no return value - */ - - Status = AcpiDsResultPush (ReturnDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ReturnDesc); - return_ACPI_STATUS (Status); - } - } - - else - { - /* - * Delete the return value if it will not be used by the - * calling method - */ - AcpiCmRemoveReference (ReturnDesc); - } - - } - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsRestart: Method=%p Return=%p ReturnUsed?=%X ResStack=%p State=%p\n", - WalkState->MethodCallOp, ReturnDesc, WalkState->ReturnUsed, - WalkState->Results, WalkState)); - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsTerminateControlMethod - * - * PARAMETERS: WalkState - State of the method - * - * RETURN: Status - * - * DESCRIPTION: Terminate a control method. Delete everything that the method - * created, delete all locals and arguments, and delete the parse - * tree if requested. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsTerminateControlMethod ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *MethodNode; - - - FUNCTION_TRACE_PTR ("DsTerminateControlMethod", WalkState); - - - /* The method object should be stored in the walk state */ - - ObjDesc = WalkState->MethodDesc; - if (!ObjDesc) - { - return_ACPI_STATUS (AE_OK); - } - - /* Delete all arguments and locals */ - - AcpiDsMethodDataDeleteAll (WalkState); - - /* - * Lock the parser while we terminate this method. - * If this is the last thread executing the method, - * we have additional cleanup to perform - */ - - AcpiCmAcquireMutex (ACPI_MTX_PARSER); - - - /* Signal completion of the execution of this method if necessary */ - - if (WalkState->MethodDesc->Method.Semaphore) - { - Status = AcpiOsSignalSemaphore ( - WalkState->MethodDesc->Method.Semaphore, 1); - } - - /* Decrement the thread count on the method parse tree */ - - WalkState->MethodDesc->Method.ThreadCount--; - if (!WalkState->MethodDesc->Method.ThreadCount) - { - /* - * There are no more threads executing this method. Perform - * additional cleanup. - * - * The method Node is stored in the walk state - */ - MethodNode = WalkState->MethodNode; - /* - * Delete any namespace entries created immediately underneath - * the method - */ - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - if (MethodNode->Child) - { - AcpiNsDeleteNamespaceSubtree (MethodNode); - } - - /* - * Delete any namespace entries created anywhere else within - * the namespace - */ - AcpiNsDeleteNamespaceByOwner (WalkState->MethodDesc->Method.OwningId); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - } - - AcpiCmReleaseMutex (ACPI_MTX_PARSER); - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsmthdat.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsmthdat.c deleted file mode 100644 index 0734ce6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsmthdat.c +++ /dev/null @@ -1,897 +0,0 @@ -/******************************************************************************* - * - * Module Name: dsmthdat - control method arguments and local variables - * $Revision: 39 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSMTHDAT_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" - - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dsmthdat") - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataInit - * - * PARAMETERS: WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Initialize the data structures that hold the method's arguments - * and locals. The data struct is an array of NTEs for each. - * This allows RefOf and DeRefOf to work properly for these - * special data types. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataInit ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - - - FUNCTION_TRACE ("DsMethodDataInit"); - - /* - * WalkState fields are initialized to zero by the - * AcpiCmCallocate(). - * - * An Node is assigned to each argument and local so - * that RefOf() can return a pointer to the Node. - */ - - /* Init the method arguments */ - - for (i = 0; i < MTH_NUM_ARGS; i++) - { - MOVE_UNALIGNED32_TO_32 (&WalkState->Arguments[i].Name, - NAMEOF_ARG_NTE); - WalkState->Arguments[i].Name |= (i << 24); - WalkState->Arguments[i].DataType = ACPI_DESC_TYPE_NAMED; - WalkState->Arguments[i].Type = ACPI_TYPE_ANY; - WalkState->Arguments[i].Flags = ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_ARG; - } - - /* Init the method locals */ - - for (i = 0; i < MTH_NUM_LOCALS; i++) - { - MOVE_UNALIGNED32_TO_32 (&WalkState->LocalVariables[i].Name, - NAMEOF_LOCAL_NTE); - - WalkState->LocalVariables[i].Name |= (i << 24); - WalkState->LocalVariables[i].DataType = ACPI_DESC_TYPE_NAMED; - WalkState->LocalVariables[i].Type = ACPI_TYPE_ANY; - WalkState->LocalVariables[i].Flags = ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_LOCAL; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataDeleteAll - * - * PARAMETERS: WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Delete method locals and arguments. Arguments are only - * deleted if this method was called from another method. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataDeleteAll ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 Index; - ACPI_OPERAND_OBJECT *Object; - - - FUNCTION_TRACE ("DsMethodDataDeleteAll"); - - - /* Delete the locals */ - - DEBUG_PRINT (ACPI_INFO, - ("MethodDeleteAll: Deleting local variables in %p\n", WalkState)); - - for (Index = 0; Index < MTH_NUM_LOCALS; Index++) - { - Object = WalkState->LocalVariables[Index].Object; - if (Object) - { - DEBUG_PRINT (TRACE_EXEC, - ("MethodDeleteAll: Deleting Local%d=%p\n", Index, Object)); - - /* Remove first */ - - WalkState->LocalVariables[Index].Object = NULL; - - /* Was given a ref when stored */ - - AcpiCmRemoveReference (Object); - } - } - - - /* Delete the arguments */ - - DEBUG_PRINT (ACPI_INFO, - ("MethodDeleteAll: Deleting arguments in %p\n", WalkState)); - - for (Index = 0; Index < MTH_NUM_ARGS; Index++) - { - Object = WalkState->Arguments[Index].Object; - if (Object) - { - DEBUG_PRINT (TRACE_EXEC, - ("MethodDeleteAll: Deleting Arg%d=%p\n", Index, Object)); - - /* Remove first */ - - WalkState->Arguments[Index].Object = NULL; - - /* Was given a ref when stored */ - - AcpiCmRemoveReference (Object); - } - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataInitArgs - * - * PARAMETERS: *Params - Pointer to a parameter list for the method - * MaxParamCount - The arg count for this method - * WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Initialize arguments for a method - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataInitArgs ( - ACPI_OPERAND_OBJECT **Params, - UINT32 MaxParamCount, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - UINT32 Mindex; - UINT32 Pindex; - - - FUNCTION_TRACE_PTR ("DsMethodDataInitArgs", Params); - - - if (!Params) - { - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataInitArgs: No param list passed to method\n")); - return_ACPI_STATUS (AE_OK); - } - - /* Copy passed parameters into the new method stack frame */ - - for (Pindex = Mindex = 0; - (Mindex < MTH_NUM_ARGS) && (Pindex < MaxParamCount); - Mindex++) - { - if (Params[Pindex]) - { - /* - * A valid parameter. - * Set the current method argument to the - * Params[Pindex++] argument object descriptor - */ - Status = AcpiDsMethodDataSetValue (MTH_TYPE_ARG, Mindex, - Params[Pindex], WalkState); - if (ACPI_FAILURE (Status)) - { - break; - } - - Pindex++; - } - - else - { - break; - } - } - - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataInitArgs: %d args passed to method\n", Pindex)); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataGetEntry - * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG - * Index - Which localVar or argument to get - * Entry - Pointer to where a pointer to the stack - * entry is returned. - * WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Get the address of the stack entry given by Type:Index - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataGetEntry ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT ***Entry) -{ - - FUNCTION_TRACE_U32 ("DsMethodDataGetEntry", Index); - - - /* - * Get the requested object. - * The stack "Type" is either a LocalVariable or an Argument - */ - - switch (Type) - { - - case MTH_TYPE_LOCAL: - - if (Index > MTH_MAX_LOCAL) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: LocalVar index %d is invalid (max %d)\n", - Index, MTH_MAX_LOCAL)); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - *Entry = - (ACPI_OPERAND_OBJECT **) &WalkState->LocalVariables[Index].Object; - break; - - - case MTH_TYPE_ARG: - - if (Index > MTH_MAX_ARG) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Argument index %d is invalid (max %d)\n", - Index, MTH_MAX_ARG)); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - *Entry = - (ACPI_OPERAND_OBJECT **) &WalkState->Arguments[Index].Object; - break; - - - default: - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Stack type %d is invalid\n", - Type)); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataSetEntry - * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG - * Index - Which localVar or argument to get - * Object - Object to be inserted into the stack entry - * WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Insert an object onto the method stack at entry Type:Index. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataSetEntry ( - UINT32 Type, - UINT32 Index, - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **Entry; - - - FUNCTION_TRACE ("DsMethodDataSetEntry"); - - /* Get a pointer to the stack entry to set */ - - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Increment ref count so object can't be deleted while installed */ - - AcpiCmAddReference (Object); - - /* Install the object into the stack entry */ - - *Entry = Object; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataGetType - * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG - * Index - Which localVar or argument whose type - * to get - * WalkState - Current walk state object - * - * RETURN: Data type of selected Arg or Local - * Used only in ExecMonadic2()/TypeOp. - * - ******************************************************************************/ - -OBJECT_TYPE_INTERNAL -AcpiDsMethodDataGetType ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **Entry; - ACPI_OPERAND_OBJECT *Object; - - - FUNCTION_TRACE ("DsMethodDataGetType"); - - - /* Get a pointer to the requested stack entry */ - - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); - if (ACPI_FAILURE (Status)) - { - return_VALUE ((ACPI_TYPE_NOT_FOUND)); - } - - /* Get the object from the method stack */ - - Object = *Entry; - - /* Get the object type */ - - if (!Object) - { - /* Any == 0 => "uninitialized" -- see spec 15.2.3.5.2.28 */ - return_VALUE (ACPI_TYPE_ANY); - } - - return_VALUE (Object->Common.Type); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataGetNte - * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG - * Index - Which localVar or argument whose type - * to get - * WalkState - Current walk state object - * - * RETURN: Get the Node associated with a local or arg. - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiDsMethodDataGetNte ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_NAMESPACE_NODE *Node = NULL; - - - FUNCTION_TRACE ("DsMethodDataGetNte"); - - - switch (Type) - { - - case MTH_TYPE_LOCAL: - - if (Index > MTH_MAX_LOCAL) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: LocalVar index %d is invalid (max %d)\n", - Index, MTH_MAX_LOCAL)); - return_PTR (Node); - } - - Node = &WalkState->LocalVariables[Index]; - break; - - - case MTH_TYPE_ARG: - - if (Index > MTH_MAX_ARG) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Argument index %d is invalid (max %d)\n", - Index, MTH_MAX_ARG)); - return_PTR (Node); - } - - Node = &WalkState->Arguments[Index]; - break; - - - default: - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetEntry: Stack type %d is invalid\n", - Type)); - break; - } - - - return_PTR (Node); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataGetValue - * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG - * Index - Which localVar or argument to get - * WalkState - Current walk state object - * *DestDesc - Ptr to Descriptor into which selected Arg - * or Local value should be copied - * - * RETURN: Status - * - * DESCRIPTION: Retrieve value of selected Arg or Local from the method frame - * at the current top of the method stack. - * Used only in AcpiAmlResolveToValue(). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataGetValue ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **DestDesc) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **Entry; - ACPI_OPERAND_OBJECT *Object; - - - FUNCTION_TRACE ("DsMethodDataGetValue"); - - - /* Validate the object descriptor */ - - if (!DestDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetValue: NULL object descriptor pointer\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Get a pointer to the requested method stack entry */ - - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the object from the method stack */ - - Object = *Entry; - - - /* Examine the returned object, it must be valid. */ - - if (!Object) - { - /* - * Index points to uninitialized object stack value. - * This means that either 1) The expected argument was - * not passed to the method, or 2) A local variable - * was referenced by the method (via the ASL) - * before it was initialized. Either case is an error. - */ - - switch (Type) - { - case MTH_TYPE_ARG: - - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetValue: Uninitialized Arg[%d] at entry %p\n", - Index, Entry)); - - return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG); - break; - - case MTH_TYPE_LOCAL: - - DEBUG_PRINT (ACPI_ERROR, - ("DsMethodDataGetValue: Uninitialized Local[%d] at entry %p\n", - Index, Entry)); - - return_ACPI_STATUS (AE_AML_UNINITIALIZED_LOCAL); - break; - } - } - - - /* - * Index points to initialized and valid object stack value. - * Return an additional reference to the object - */ - - *DestDesc = Object; - AcpiCmAddReference (Object); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataDeleteValue - * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG - * Index - Which localVar or argument to delete - * WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Delete the entry at Type:Index on the method stack. Inserts - * a null into the stack slot after the object is deleted. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataDeleteValue ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **Entry; - ACPI_OPERAND_OBJECT *Object; - - - FUNCTION_TRACE ("DsMethodDataDeleteValue"); - - - /* Get a pointer to the requested entry */ - - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the current entry in this slot k */ - - Object = *Entry; - - /* - * Undefine the Arg or Local by setting its descriptor - * pointer to NULL. Locals/Args can contain both - * ACPI_OPERAND_OBJECTS and ACPI_NAMESPACE_NODEs - */ - *Entry = NULL; - - - if ((Object) && - (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_INTERNAL))) - { - /* - * There is a valid object in this slot - * Decrement the reference count by one to balance the - * increment when the object was stored in the slot. - */ - AcpiCmRemoveReference (Object); - } - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataSetValue - * - * PARAMETERS: Type - Either MTH_TYPE_LOCAL or MTH_TYPE_ARG - * Index - Which localVar or argument to set - * SrcDesc - Value to be stored - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Store a value in an Arg or Local. The SrcDesc is installed - * as the new value for the Arg or Local and the reference count - * for SrcDesc is incremented. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataSetValue ( - UINT32 Type, - UINT32 Index, - ACPI_OPERAND_OBJECT *SrcDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **Entry; - - - FUNCTION_TRACE ("DsMethodDataSetValue"); - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataSetValue: Type=%d Idx=%d Obj=%p\n", - Type, Index, SrcDesc)); - - - /* Parameter validation */ - - if (!SrcDesc) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Get a pointer to the requested method stack entry */ - - Status = AcpiDsMethodDataGetEntry (Type, Index, WalkState, &Entry); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - if (*Entry == SrcDesc) - { - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataSetValue: Obj=%p already installed!\n", - SrcDesc)); - goto Cleanup; - } - - - /* - * If there is an object already in this slot, we either - * have to delete it, or if this is an argument and there - * is an object reference stored there, we have to do - * an indirect store! - */ - - if (*Entry) - { - /* - * Check for an indirect store if an argument - * contains an object reference (stored as an Node). - * We don't allow this automatic dereferencing for - * locals, since a store to a local should overwrite - * anything there, including an object reference. - * - * If both Arg0 and Local0 contain RefOf (Local4): - * - * Store (1, Arg0) - Causes indirect store to local4 - * Store (1, Local0) - Stores 1 in local0, overwriting - * the reference to local4 - * Store (1, DeRefof (Local0)) - Causes indirect store to local4 - * - * Weird, but true. - */ - - if ((Type == MTH_TYPE_ARG) && - (VALID_DESCRIPTOR_TYPE (*Entry, ACPI_DESC_TYPE_NAMED))) - { - DEBUG_PRINT (TRACE_EXEC, - ("DsMethodDataSetValue: Arg (%p) is an ObjRef(Node), storing in %p\n", - SrcDesc, *Entry)); - - /* Detach an existing object from the Node */ - - AcpiNsDetachObject ((ACPI_NAMESPACE_NODE *) *Entry); - - /* - * Store this object into the Node - * (do the indirect store) - */ - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) *Entry, SrcDesc, - SrcDesc->Common.Type); - return_ACPI_STATUS (Status); - } - - - /* - * Perform "Implicit conversion" of the new object to the type of the - * existing object - */ - Status = AcpiAmlConvertToTargetType ((*Entry)->Common.Type, &SrcDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * Delete the existing object - * before storing the new one - */ - AcpiDsMethodDataDeleteValue (Type, Index, WalkState); - } - - - /* - * Install the ObjStack descriptor (*SrcDesc) into - * the descriptor for the Arg or Local. - * Install the new object in the stack entry - * (increments the object reference count by one) - */ - Status = AcpiDsMethodDataSetEntry (Type, Index, SrcDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Normal exit */ - - return_ACPI_STATUS (AE_OK); - - - /* Error exit */ - -Cleanup: - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsobject.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsobject.c deleted file mode 100644 index 13bf56a..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsobject.c +++ /dev/null @@ -1,816 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsobject - Dispatcher object management routines - * $Revision: 57 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSOBJECT_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dsobject") - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitOneObject - * - * PARAMETERS: ObjHandle - Node - * Level - Current nesting level - * Context - Points to a init info struct - * ReturnValue - Not used - * - * RETURN: Status - * - * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object - * within the namespace. - * - * Currently, the only objects that require initialization are: - * 1) Methods - * 2) Op Regions - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - OBJECT_TYPE_INTERNAL Type; - ACPI_STATUS Status; - ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; - UINT8 TableRevision; - - - Info->ObjectCount++; - TableRevision = Info->TableDesc->Pointer->Revision; - - /* - * We are only interested in objects owned by the table that - * was just loaded - */ - - if (((ACPI_NAMESPACE_NODE *) ObjHandle)->OwnerId != - Info->TableDesc->TableId) - { - return (AE_OK); - } - - - /* And even then, we are only interested in a few object types */ - - Type = AcpiNsGetType (ObjHandle); - - switch (Type) - { - - case ACPI_TYPE_REGION: - - AcpiDsInitializeRegion (ObjHandle); - - Info->OpRegionCount++; - break; - - - case ACPI_TYPE_METHOD: - - Info->MethodCount++; - - if (!(AcpiDbgLevel & TRACE_INIT)) - { - DEBUG_PRINT_RAW (ACPI_OK, (".")); - } - - /* - * Set the execution data width (32 or 64) based upon the - * revision number of the parent ACPI table. - */ - - if (TableRevision == 1) - { - ((ACPI_NAMESPACE_NODE *)ObjHandle)->Flags |= ANOBJ_DATA_WIDTH_32; - } - - /* - * Always parse methods to detect errors, we may delete - * the parse tree below - */ - - Status = AcpiDsParseMethod (ObjHandle); - - /* TBD: [Errors] what do we do with an error? */ - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsInitOneObject: Method %p [%4.4s] parse failed! %s\n", - ObjHandle, &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, - AcpiCmFormatException (Status))); - break; - } - - /* - * Delete the parse tree. We simple re-parse the method - * for every execution since there isn't much overhead - */ - AcpiNsDeleteNamespaceSubtree (ObjHandle); - break; - - default: - break; - } - - /* - * We ignore errors from above, and always return OK, since - * we don't want to abort the walk on a single error. - */ - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitializeObjects - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Walk the entire namespace and perform any necessary - * initialization on the objects found therein - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitializeObjects ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NAMESPACE_NODE *StartNode) -{ - ACPI_STATUS Status; - ACPI_INIT_WALK_INFO Info; - - - FUNCTION_TRACE ("DsInitializeObjects"); - - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsInitializeObjects: **** Starting initialization of namespace objects ****\n")); - DEBUG_PRINT_RAW (ACPI_OK, ("Parsing Methods:")); - - - Info.MethodCount = 0; - Info.OpRegionCount = 0; - Info.ObjectCount = 0; - Info.TableDesc = TableDesc; - - - /* Walk entire namespace from the supplied root */ - - Status = AcpiWalkNamespace (ACPI_TYPE_ANY, StartNode, - ACPI_UINT32_MAX, AcpiDsInitOneObject, - &Info, NULL); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsInitializeObjects: WalkNamespace failed! %x\n", Status)); - } - - DEBUG_PRINT_RAW (ACPI_OK, - ("\n%d Control Methods found and parsed (%d nodes total)\n", - Info.MethodCount, Info.ObjectCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("DsInitializeObjects: %d Control Methods found\n", Info.MethodCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("DsInitializeObjects: %d Op Regions found\n", Info.OpRegionCount)); - - return_ACPI_STATUS (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsInitObjectFromOp - * - * PARAMETERS: Op - Parser op used to init the internal object - * Opcode - AML opcode associated with the object - * ObjDesc - Namespace object to be initialized - * - * RETURN: Status - * - * DESCRIPTION: Initialize a namespace object from a parser Op and its - * associated arguments. The namespace object is a more compact - * representation of the Op and its arguments. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsInitObjectFromOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT16 Opcode, - ACPI_OPERAND_OBJECT **ObjDesc) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg; - ACPI_PARSE2_OBJECT *ByteList; - ACPI_OPERAND_OBJECT *ArgDesc; - ACPI_OPCODE_INFO *OpInfo; - - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - /* Unknown opcode */ - - return (AE_TYPE); - } - - - /* Get and prepare the first argument */ - - switch ((*ObjDesc)->Common.Type) - { - case ACPI_TYPE_BUFFER: - - /* First arg is a number */ - - AcpiDsCreateOperand (WalkState, Op->Value.Arg, 0); - ArgDesc = WalkState->Operands [WalkState->NumOperands - 1]; - AcpiDsObjStackPop (1, WalkState); - - /* Resolve the object (could be an arg or local) */ - - Status = AcpiAmlResolveToValue (&ArgDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ArgDesc); - return (Status); - } - - /* We are expecting a number */ - - if (ArgDesc->Common.Type != ACPI_TYPE_INTEGER) - { - DEBUG_PRINT (ACPI_ERROR, - ("InitObject: Expecting number, got obj: %p type %X\n", - ArgDesc, ArgDesc->Common.Type)); - AcpiCmRemoveReference (ArgDesc); - return (AE_TYPE); - } - - /* Get the value, delete the internal object */ - - (*ObjDesc)->Buffer.Length = (UINT32) ArgDesc->Integer.Value; - AcpiCmRemoveReference (ArgDesc); - - /* Allocate the buffer */ - - if ((*ObjDesc)->Buffer.Length == 0) - { - (*ObjDesc)->Buffer.Pointer = NULL; - REPORT_WARNING (("Buffer created with zero length in AML\n")); - break; - } - - else - { - (*ObjDesc)->Buffer.Pointer = - AcpiCmCallocate ((*ObjDesc)->Buffer.Length); - - if (!(*ObjDesc)->Buffer.Pointer) - { - return (AE_NO_MEMORY); - } - } - - /* - * Second arg is the buffer data (optional) - * ByteList can be either individual bytes or a - * string initializer! - */ - - /* skip first arg */ - Arg = Op->Value.Arg; - ByteList = (ACPI_PARSE2_OBJECT *) Arg->Next; - if (ByteList) - { - if (ByteList->Opcode != AML_BYTELIST_OP) - { - DEBUG_PRINT (ACPI_ERROR, - ("InitObject: Expecting bytelist, got: %x\n", - ByteList)); - return (AE_TYPE); - } - - MEMCPY ((*ObjDesc)->Buffer.Pointer, ByteList->Data, - (*ObjDesc)->Buffer.Length); - } - - break; - - - case ACPI_TYPE_PACKAGE: - - /* - * When called, an internal package object has already - * been built and is pointed to by *ObjDesc. - * AcpiDsBuildInternalObject build another internal - * package object, so remove reference to the original - * so that it is deleted. Error checking is done - * within the remove reference function. - */ - AcpiCmRemoveReference(*ObjDesc); - - Status = AcpiDsBuildInternalObject (WalkState, Op, ObjDesc); - break; - - case ACPI_TYPE_INTEGER: - (*ObjDesc)->Integer.Value = Op->Value.Integer; - break; - - - case ACPI_TYPE_STRING: - (*ObjDesc)->String.Pointer = Op->Value.String; - (*ObjDesc)->String.Length = STRLEN (Op->Value.String); - break; - - - case ACPI_TYPE_METHOD: - break; - - - case INTERNAL_TYPE_REFERENCE: - - switch (ACPI_GET_OP_CLASS (OpInfo)) - { - case OPTYPE_LOCAL_VARIABLE: - - /* Split the opcode into a base opcode + offset */ - - (*ObjDesc)->Reference.OpCode = AML_LOCAL_OP; - (*ObjDesc)->Reference.Offset = Opcode - AML_LOCAL_OP; - break; - - case OPTYPE_METHOD_ARGUMENT: - - /* Split the opcode into a base opcode + offset */ - - (*ObjDesc)->Reference.OpCode = AML_ARG_OP; - (*ObjDesc)->Reference.Offset = Opcode - AML_ARG_OP; - break; - - default: /* Constants, Literals, etc.. */ - - if (Op->Opcode == AML_NAMEPATH_OP) - { - /* Node was saved in Op */ - - (*ObjDesc)->Reference.Node = Op->Node; - } - - (*ObjDesc)->Reference.OpCode = Opcode; - break; - } - - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("InitObject: Unimplemented data type: %x\n", - (*ObjDesc)->Common.Type)); - - break; - } - - return (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsBuildInternalSimpleObj - * - * PARAMETERS: Op - Parser object to be translated - * ObjDescPtr - Where the ACPI internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: Translate a parser Op object to the equivalent namespace object - * Simple objects are any objects other than a package object! - * - ****************************************************************************/ - -static ACPI_STATUS -AcpiDsBuildInternalSimpleObj ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT **ObjDescPtr) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - OBJECT_TYPE_INTERNAL Type; - ACPI_STATUS Status; - UINT32 Length; - char *Name; - - - FUNCTION_TRACE ("DsBuildInternalSimpleObj"); - - - if (Op->Opcode == AML_NAMEPATH_OP) - { - /* - * This is an object reference. If The name was - * previously looked up in the NS, it is stored in this op. - * Otherwise, go ahead and look it up now - */ - - if (!Op->Node) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, - Op->Value.String, ACPI_TYPE_ANY, - IMODE_EXECUTE, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, - NULL, - (ACPI_NAMESPACE_NODE **)&(Op->Node)); - - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - Name = NULL; - AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Value.String, &Length, &Name); - - if (Name) - { - REPORT_WARNING (("Reference %s at AML %X not found\n", - Name, Op->AmlOffset)); - AcpiCmFree (Name); - } - else - { - REPORT_WARNING (("Reference %s at AML %X not found\n", - Op->Value.String, Op->AmlOffset)); - } - *ObjDescPtr = NULL; - } - - else - { - return_ACPI_STATUS (Status); - } - } - } - - /* - * The reference will be a Reference - * TBD: [Restructure] unless we really need a separate - * type of INTERNAL_TYPE_REFERENCE change - * AcpiDsMapOpcodeToDataType to handle this case - */ - Type = INTERNAL_TYPE_REFERENCE; - } - else - { - Type = AcpiDsMapOpcodeToDataType (Op->Opcode, NULL); - } - - - /* Create and init the internal ACPI object */ - - ObjDesc = AcpiCmCreateInternalObject (Type); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiDsInitObjectFromOp (WalkState, Op, - Op->Opcode, &ObjDesc); - - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); - } - - *ObjDescPtr = ObjDesc; - - return_ACPI_STATUS (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsBuildInternalPackageObj - * - * PARAMETERS: Op - Parser object to be translated - * ObjDescPtr - Where the ACPI internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: Translate a parser Op package object to the equivalent - * namespace object - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsBuildInternalPackageObj ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT **ObjDescPtr) -{ - ACPI_PARSE_OBJECT *Arg; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("DsBuildInternalPackageObj"); - - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_PACKAGE); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* The first argument must be the package length */ - - Arg = Op->Value.Arg; - ObjDesc->Package.Count = Arg->Value.Integer; - - /* - * Allocate the array of pointers (ptrs to the - * individual objects) Add an extra pointer slot so - * that the list is always null terminated. - */ - - ObjDesc->Package.Elements = - AcpiCmCallocate ((ObjDesc->Package.Count + 1) * - sizeof (void *)); - - if (!ObjDesc->Package.Elements) - { - /* Package vector allocation failure */ - - REPORT_ERROR (("DsBuildInternalPackageObj: Package vector allocation failure\n")); - - AcpiCmDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Package.NextElement = ObjDesc->Package.Elements; - - /* - * Now init the elements of the package - */ - - Arg = Arg->Next; - while (Arg) - { - if (Arg->Opcode == AML_PACKAGE_OP) - { - Status = AcpiDsBuildInternalPackageObj (WalkState, Arg, - ObjDesc->Package.NextElement); - } - - else - { - Status = AcpiDsBuildInternalSimpleObj (WalkState, Arg, - ObjDesc->Package.NextElement); - } - - ObjDesc->Package.NextElement++; - Arg = Arg->Next; - } - - *ObjDescPtr = ObjDesc; - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsBuildInternalObject - * - * PARAMETERS: Op - Parser object to be translated - * ObjDescPtr - Where the ACPI internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: Translate a parser Op object to the equivalent namespace - * object - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsBuildInternalObject ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT **ObjDescPtr) -{ - ACPI_STATUS Status; - - - if (Op->Opcode == AML_PACKAGE_OP) - { - Status = AcpiDsBuildInternalPackageObj (WalkState, Op, - ObjDescPtr); - } - - else - { - Status = AcpiDsBuildInternalSimpleObj (WalkState, Op, - ObjDescPtr); - } - - return (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsCreateNode - * - * PARAMETERS: Op - Parser object to be translated - * ObjDescPtr - Where the ACPI internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsCreateNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE_PTR ("DsCreateNode", Op); - - - if (!Op->Value.Arg) - { - /* No arguments, there is nothing to do */ - - return_ACPI_STATUS (AE_OK); - } - - - /* Build an internal object for the argument(s) */ - - Status = AcpiDsBuildInternalObject (WalkState, - Op->Value.Arg, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* Re-type the object according to it's argument */ - - Node->Type = ObjDesc->Common.Type; - - /* Init obj */ - - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) Node->Type); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - return_ACPI_STATUS (Status); - - -Cleanup: - - AcpiCmRemoveReference (ObjDesc); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsopcode.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsopcode.c deleted file mode 100644 index 5153537..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsopcode.c +++ /dev/null @@ -1,1089 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsopcode - Dispatcher Op Region support and handling of - * "control" opcodes - * $Revision: 32 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSOPCODE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acevents.h" -#include "actables.h" - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dsopcode") - - -/***************************************************************************** - * - * FUNCTION: AcpiDsGetFieldUnitArguments - * - * PARAMETERS: ObjDesc - A valid FieldUnit object - * - * RETURN: Status. - * - * DESCRIPTION: Get FieldUnit Buffer and Index. This implements the late - * evaluation of these field attributes. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsGetFieldUnitArguments ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_OPERAND_OBJECT *ExtraDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *Op; - ACPI_PARSE_OBJECT *FieldOp; - ACPI_STATUS Status; - ACPI_TABLE_DESC *TableDesc; - - - FUNCTION_TRACE_PTR ("DsGetFieldUnitArguments", ObjDesc); - - - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - return_ACPI_STATUS (AE_OK); - } - - - /* Get the AML pointer (method object) and FieldUnit node */ - - ExtraDesc = ObjDesc->FieldUnit.Extra; - Node = ObjDesc->FieldUnit.Node; - - DEBUG_EXEC(AcpiCmDisplayInitPathname (Node, " [Field]")); - DEBUG_PRINT (TRACE_EXEC, - ("DsGetFieldUnitArguments: [%4.4s] FieldUnit JIT Init\n", - &Node->Name)); - - - /* - * Allocate a new parser op to be the root of the parsed - * OpRegion tree - */ - - Op = AcpiPsAllocOp (AML_SCOPE_OP); - if (!Op) - { - return (AE_NO_MEMORY); - } - - /* Save the Node for use in AcpiPsParseAml */ - - Op->Node = AcpiNsGetParentObject (Node); - - /* Get a handle to the parent ACPI table */ - - Status = AcpiTbHandleToObject (Node->OwnerId, &TableDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Pass1: Parse the entire FieldUnit declaration */ - - Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode, - ExtraDesc->Extra.PcodeLength, 0, - NULL, NULL, NULL, AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp); - if (ACPI_FAILURE (Status)) - { - AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (Status); - } - - - /* Get and init the actual FielUnitOp created above */ - - FieldOp = Op->Value.Arg; - Op->Node = Node; - - - FieldOp = Op->Value.Arg; - FieldOp->Node = Node; - AcpiPsDeleteParseTree (Op); - - /* AcpiEvaluate the address and length arguments for the OpRegion */ - - Op = AcpiPsAllocOp (AML_SCOPE_OP); - if (!Op) - { - return (AE_NO_MEMORY); - } - - Op->Node = AcpiNsGetParentObject (Node); - - Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode, - ExtraDesc->Extra.PcodeLength, - ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE, - NULL /*MethodDesc*/, NULL, NULL, - AcpiDsExecBeginOp, AcpiDsExecEndOp); - /* All done with the parse tree, delete it */ - - AcpiPsDeleteParseTree (Op); - - - /* - * The pseudo-method object is no longer needed since the region is - * now initialized - */ - AcpiCmRemoveReference (ObjDesc->FieldUnit.Extra); - ObjDesc->FieldUnit.Extra = NULL; - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsGetRegionArguments - * - * PARAMETERS: ObjDesc - A valid region object - * - * RETURN: Status. - * - * DESCRIPTION: Get region address and length. This implements the late - * evaluation of these region attributes. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsGetRegionArguments ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_OPERAND_OBJECT *ExtraDesc = NULL; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *Op; - ACPI_PARSE_OBJECT *RegionOp; - ACPI_STATUS Status; - ACPI_TABLE_DESC *TableDesc; - - - FUNCTION_TRACE_PTR ("DsGetRegionArguments", ObjDesc); - - - if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) - { - return_ACPI_STATUS (AE_OK); - } - - - /* Get the AML pointer (method object) and region node */ - - ExtraDesc = ObjDesc->Region.Extra; - Node = ObjDesc->Region.Node; - - DEBUG_EXEC(AcpiCmDisplayInitPathname (Node, " [Operation Region]")); - - DEBUG_PRINT (TRACE_EXEC, - ("DsGetRegionArguments: [%4.4s] OpRegion Init at AML %p[%x]\n", - &Node->Name, ExtraDesc->Extra.Pcode, *(UINT32*) ExtraDesc->Extra.Pcode)); - - /* - * Allocate a new parser op to be the root of the parsed - * OpRegion tree - */ - - Op = AcpiPsAllocOp (AML_SCOPE_OP); - if (!Op) - { - return (AE_NO_MEMORY); - } - - /* Save the Node for use in AcpiPsParseAml */ - - Op->Node = AcpiNsGetParentObject (Node); - - /* Get a handle to the parent ACPI table */ - - Status = AcpiTbHandleToObject (Node->OwnerId, &TableDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Parse the entire OpRegion declaration, creating a parse tree */ - - Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode, - ExtraDesc->Extra.PcodeLength, 0, - NULL, NULL, NULL, AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp); - - if (ACPI_FAILURE (Status)) - { - AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (Status); - } - - - /* Get and init the actual RegionOp created above */ - - RegionOp = Op->Value.Arg; - Op->Node = Node; - - - RegionOp = Op->Value.Arg; - RegionOp->Node = Node; - AcpiPsDeleteParseTree (Op); - - /* AcpiEvaluate the address and length arguments for the OpRegion */ - - Op = AcpiPsAllocOp (AML_SCOPE_OP); - if (!Op) - { - return (AE_NO_MEMORY); - } - - Op->Node = AcpiNsGetParentObject (Node); - - Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode, - ExtraDesc->Extra.PcodeLength, - ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE, - NULL /*MethodDesc*/, NULL, NULL, - AcpiDsExecBeginOp, AcpiDsExecEndOp); - - /* All done with the parse tree, delete it */ - - AcpiPsDeleteParseTree (Op); - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsInitializeRegion - * - * PARAMETERS: Op - A valid region Op object - * - * RETURN: Status - * - * DESCRIPTION: - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsInitializeRegion ( - ACPI_HANDLE ObjHandle) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ObjDesc = AcpiNsGetAttachedObject (ObjHandle); - - /* Namespace is NOT locked */ - - Status = AcpiEvInitializeRegion (ObjDesc, FALSE); - - return (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsEvalFieldUnitOperands - * - * PARAMETERS: Op - A valid FieldUnit Op object - * - * RETURN: Status - * - * DESCRIPTION: Get FieldUnit Buffer and Index - * Called from AcpiDsExecEndOp during FieldUnit parse tree walk - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsEvalFieldUnitOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *FieldDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *NextOp; - UINT32 Offset; - UINT32 BitOffset; - UINT16 BitCount; - - - ACPI_OPERAND_OBJECT *ResDesc = NULL; - ACPI_OPERAND_OBJECT *CntDesc = NULL; - ACPI_OPERAND_OBJECT *OffDesc = NULL; - ACPI_OPERAND_OBJECT *SrcDesc = NULL; - UINT32 NumOperands = 3; - - - FUNCTION_TRACE_PTR ("DsEvalFieldUnitOperands", Op); - - - /* - * This is where we evaluate the address and length fields of the OpFieldUnit declaration - */ - - Node = Op->Node; - - /* NextOp points to the op that holds the Buffer */ - NextOp = Op->Value.Arg; - - /* AcpiEvaluate/create the address and length operands */ - - Status = AcpiDsCreateOperands (WalkState, NextOp); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - FieldDesc = AcpiNsGetAttachedObject (Node); - if (!FieldDesc) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - - /* Resolve the operands */ - - Status = AcpiAmlResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Opcode), - NumOperands, "after AcpiAmlResolveOperands"); - - - /* Get the operands */ - - Status |= AcpiDsObjStackPopObject (&ResDesc, WalkState); - if (AML_CREATE_FIELD_OP == Op->Opcode) - { - NumOperands = 4; - Status |= AcpiDsObjStackPopObject (&CntDesc, WalkState); - } - - Status |= AcpiDsObjStackPopObject (&OffDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&SrcDesc, WalkState); - - if (ACPI_FAILURE (Status)) - { - /* Invalid parameters on object stack */ - - DEBUG_PRINT (ACPI_ERROR, - ("ExecCreateField/%s: bad operand(s) (%X)\n", - AcpiPsGetOpcodeName (Op->Opcode), Status)); - - goto Cleanup; - } - - - Offset = (UINT32) OffDesc->Integer.Value; - - - /* - * If ResDesc is a Name, it will be a direct name pointer after - * AcpiAmlResolveOperands() - */ - - if (!VALID_DESCRIPTOR_TYPE (ResDesc, ACPI_DESC_TYPE_NAMED)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField (%s): destination must be a Node\n", - AcpiPsGetOpcodeName (Op->Opcode))); - - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - - /* - * Setup the Bit offsets and counts, according to the opcode - */ - - switch (Op->Opcode) - { - - /* DefCreateBitField */ - - case AML_BIT_FIELD_OP: - - /* Offset is in bits, Field is a bit */ - - BitOffset = Offset; - BitCount = 1; - break; - - - /* DefCreateByteField */ - - case AML_BYTE_FIELD_OP: - - /* Offset is in bytes, field is a byte */ - - BitOffset = 8 * Offset; - BitCount = 8; - break; - - - /* DefCreateWordField */ - - case AML_WORD_FIELD_OP: - - /* Offset is in bytes, field is a word */ - - BitOffset = 8 * Offset; - BitCount = 16; - break; - - - /* DefCreateDWordField */ - - case AML_DWORD_FIELD_OP: - - /* Offset is in bytes, field is a dword */ - - BitOffset = 8 * Offset; - BitCount = 32; - break; - - - /* DefCreateField */ - - case AML_CREATE_FIELD_OP: - - /* Offset is in bits, count is in bits */ - - BitOffset = Offset; - BitCount = (UINT16) CntDesc->Integer.Value; - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Internal error - unknown field creation opcode %02x\n", - Op->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - - /* - * Setup field according to the object type - */ - - switch (SrcDesc->Common.Type) - { - - /* SourceBuff := TermArg=>Buffer */ - - case ACPI_TYPE_BUFFER: - - if (BitOffset + (UINT32) BitCount > - (8 * (UINT32) SrcDesc->Buffer.Length)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Field exceeds Buffer %d > %d\n", - BitOffset + (UINT32) BitCount, - 8 * (UINT32) SrcDesc->Buffer.Length)); - Status = AE_AML_BUFFER_LIMIT; - goto Cleanup; - } - - - /* Construct the remainder of the field object */ - - FieldDesc->FieldUnit.Access = (UINT8) ACCESS_ANY_ACC; - FieldDesc->FieldUnit.LockRule = (UINT8) GLOCK_NEVER_LOCK; - FieldDesc->FieldUnit.UpdateRule = (UINT8) UPDATE_PRESERVE; - FieldDesc->FieldUnit.Length = BitCount; - FieldDesc->FieldUnit.BitOffset = (UINT8) (BitOffset % 8); - FieldDesc->FieldUnit.Offset = DIV_8 (BitOffset); - FieldDesc->FieldUnit.Container = SrcDesc; - - /* Reference count for SrcDesc inherits FieldDesc count */ - - SrcDesc->Common.ReferenceCount = (UINT16) (SrcDesc->Common.ReferenceCount + - FieldDesc->Common.ReferenceCount); - - break; - - - /* Improper object type */ - - default: - - if ((SrcDesc->Common.Type > (UINT8) INTERNAL_TYPE_REFERENCE) || - !AcpiCmValidObjectType (SrcDesc->Common.Type)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Tried to create field in invalid object type %X\n", - SrcDesc->Common.Type)); - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecCreateField: Tried to create field in improper object type - %s\n", - AcpiCmGetTypeName (SrcDesc->Common.Type))); - } - - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - - if (AML_CREATE_FIELD_OP == Op->Opcode) - { - /* Delete object descriptor unique to CreateField */ - - AcpiCmRemoveReference (CntDesc); - CntDesc = NULL; - } - - -Cleanup: - - /* Always delete the operands */ - - AcpiCmRemoveReference (OffDesc); - AcpiCmRemoveReference (SrcDesc); - - if (AML_CREATE_FIELD_OP == Op->Opcode) - { - AcpiCmRemoveReference (CntDesc); - } - - /* On failure, delete the result descriptor */ - - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ResDesc); /* Result descriptor */ - } - - else - { - /* Now the address and length are valid for this opFieldUnit */ - - FieldDesc->FieldUnit.Flags |= AOPOBJ_DATA_VALID; - } - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsEvalRegionOperands - * - * PARAMETERS: Op - A valid region Op object - * - * RETURN: Status - * - * DESCRIPTION: Get region address and length - * Called from AcpiDsExecEndOp during OpRegion parse tree walk - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsEvalRegionOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *OperandDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *NextOp; - - - FUNCTION_TRACE_PTR ("DsEvalRegionOperands", Op); - - - /* - * This is where we evaluate the address and length fields of the OpRegion declaration - */ - - Node = Op->Node; - - /* NextOp points to the op that holds the SpaceID */ - NextOp = Op->Value.Arg; - - /* NextOp points to address op */ - NextOp = NextOp->Next; - - /* AcpiEvaluate/create the address and length operands */ - - Status = AcpiDsCreateOperands (WalkState, NextOp); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Resolve the length and address operands to numbers */ - - Status = AcpiAmlResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, - AcpiPsGetOpcodeName (Op->Opcode), - 1, "after AcpiAmlResolveOperands"); - - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* - * Get the length operand and save it - * (at Top of stack) - */ - OperandDesc = WalkState->Operands[WalkState->NumOperands - 1]; - - ObjDesc->Region.Length = (UINT32) OperandDesc->Integer.Value; - AcpiCmRemoveReference (OperandDesc); - - /* - * Get the address and save it - * (at top of stack - 1) - */ - OperandDesc = WalkState->Operands[WalkState->NumOperands - 2]; - - ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) OperandDesc->Integer.Value; - AcpiCmRemoveReference (OperandDesc); - - - DEBUG_PRINT (TRACE_EXEC, - ("DsEvalRegionOperands: RgnObj %p Addr %X Len %X\n", - ObjDesc, ObjDesc->Region.Address, ObjDesc->Region.Length)); - - /* Now the address and length are valid for this opregion */ - - ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID; - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsExecBeginControlOp - * - * PARAMETERS: WalkList - The list that owns the walk stack - * Op - The control Op - * - * RETURN: Status - * - * DESCRIPTION: Handles all control ops encountered during control method - * execution. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsExecBeginControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GENERIC_STATE *ControlState; - - - DEBUG_PRINT (TRACE_DISPATCH, - ("BeginControlOp: Op=%p Opcode=%2.2X State=%p\n", Op, - Op->Opcode, WalkState)); - - switch (Op->Opcode) - { - case AML_IF_OP: - case AML_WHILE_OP: - - /* - * IF/WHILE: Create a new control state to manage these - * constructs. We need to manage these as a stack, in order - * to handle nesting. - */ - - ControlState = AcpiCmCreateControlState (); - if (!ControlState) - { - Status = AE_NO_MEMORY; - break; - } - - AcpiCmPushGenericState (&WalkState->ControlState, ControlState); - - /* - * Save a pointer to the predicate for multiple executions - * of a loop - */ - WalkState->ControlState->Control.AmlPredicateStart = - WalkState->ParserState->Aml - 1; - /* TBD: can this be removed? */ - /*AcpiPsPkgLengthEncodingSize (GET8 (WalkState->ParserState->Aml));*/ - break; - - - case AML_ELSE_OP: - - /* Predicate is in the state object */ - /* If predicate is true, the IF was executed, ignore ELSE part */ - - if (WalkState->LastPredicate) - { - Status = AE_CTRL_TRUE; - } - - break; - - - case AML_RETURN_OP: - - break; - - - default: - break; - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsExecEndControlOp - * - * PARAMETERS: WalkList - The list that owns the walk stack - * Op - The control Op - * - * RETURN: Status - * - * DESCRIPTION: Handles all control ops encountered during control method - * execution. - * - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsExecEndControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GENERIC_STATE *ControlState; - - - switch (Op->Opcode) - { - case AML_IF_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [IF_OP] Op=%p\n", Op)); - - /* - * Save the result of the predicate in case there is an - * ELSE to come - */ - - WalkState->LastPredicate = - (BOOLEAN) WalkState->ControlState->Common.Value; - - /* - * Pop the control state that was created at the start - * of the IF and free it - */ - - ControlState = - AcpiCmPopGenericState (&WalkState->ControlState); - - AcpiCmDeleteGenericState (ControlState); - - break; - - - case AML_ELSE_OP: - - break; - - - case AML_WHILE_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [WHILE_OP] Op=%p\n", Op)); - - if (WalkState->ControlState->Common.Value) - { - /* Predicate was true, go back and evaluate it again! */ - - Status = AE_CTRL_PENDING; - } - - - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [WHILE_OP] termination! Op=%p\n", Op)); - - /* Pop this control state and free it */ - - ControlState = - AcpiCmPopGenericState (&WalkState->ControlState); - - WalkState->AmlLastWhile = ControlState->Control.AmlPredicateStart; - AcpiCmDeleteGenericState (ControlState); - - break; - - - case AML_RETURN_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: [RETURN_OP] Op=%p Arg=%p\n",Op, Op->Value.Arg)); - - - /* - * One optional operand -- the return value - * It can be either an immediate operand or a result that - * has been bubbled up the tree - */ - if (Op->Value.Arg) - { - /* Return statement has an immediate operand */ - - Status = AcpiDsCreateOperands (WalkState, Op->Value.Arg); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* - * If value being returned is a Reference (such as - * an arg or local), resolve it now because it may - * cease to exist at the end of the method. - */ - - Status = AcpiAmlResolveToValue (&WalkState->Operands [0], WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* - * Get the return value and save as the last result - * value. This is the only place where WalkState->ReturnDesc - * is set to anything other than zero! - */ - - WalkState->ReturnDesc = WalkState->Operands[0]; - } - - else if ((WalkState->Results) && - (WalkState->Results->Results.NumResults > 0)) - { - /* - * The return value has come from a previous calculation. - * - * If value being returned is a Reference (such as - * an arg or local), resolve it now because it may - * cease to exist at the end of the method. - */ - - Status = AcpiAmlResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - WalkState->ReturnDesc = WalkState->Results->Results.ObjDesc [0]; - } - - else - { - /* No return operand */ - - if (WalkState->NumOperands) - { - AcpiCmRemoveReference (WalkState->Operands [0]); - } - - WalkState->Operands [0] = NULL; - WalkState->NumOperands = 0; - WalkState->ReturnDesc = NULL; - } - - - DEBUG_PRINT (TRACE_DISPATCH, - ("EndControlOp: Completed RETURN_OP State=%p, RetVal=%p\n", - WalkState, WalkState->ReturnDesc)); - - /* End the control method execution right now */ - Status = AE_CTRL_TERMINATE; - break; - - - case AML_NOOP_OP: - - /* Just do nothing! */ - break; - - - case AML_BREAK_POINT_OP: - - /* Call up to the OS dependent layer to handle this */ - - AcpiOsBreakpoint (NULL); - - /* If it returns, we are done! */ - - break; - - - case AML_BREAK_OP: - - DEBUG_PRINT (ACPI_INFO, - ("EndControlOp: Break to end of current package, Op=%p\n", Op)); - - /* - * As per the ACPI specification: - * "The break operation causes the current package - * execution to complete" - * "Break -- Stop executing the current code package - * at this point" - * - * Returning AE_FALSE here will cause termination of - * the current package, and execution will continue one - * level up, starting with the completion of the parent Op. - */ - - Status = AE_CTRL_FALSE; - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("EndControlOp: Unknown control opcode=%X Op=%p\n", - Op->Opcode, Op)); - - Status = AE_AML_BAD_OPCODE; - break; - } - - - return (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsutils.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsutils.c deleted file mode 100644 index 9e4d0da..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dsutils.c +++ /dev/null @@ -1,948 +0,0 @@ -/******************************************************************************* - * - * Module Name: dsutils - Dispatcher utilities - * $Revision: 52 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSUTILS_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acdebug.h" - -#define _COMPONENT PARSER - MODULE_NAME ("dsutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiDsIsResultUsed - * - * PARAMETERS: Op - * ResultObj - * WalkState - * - * RETURN: Status - * - * DESCRIPTION: Check if a result object will be used by the parent - * - ******************************************************************************/ - -BOOLEAN -AcpiDsIsResultUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPCODE_INFO *ParentInfo; - - - FUNCTION_TRACE_PTR ("DsIsResultUsed", Op); - - - /* Must have both an Op and a Result Object */ - - if (!Op) - { - DEBUG_PRINT (ACPI_ERROR, ("DsIsResultUsed: Null Op\n")); - return_VALUE (TRUE); - } - - - /* - * If there is no parent, the result can't possibly be used! - * (An executing method typically has no parent, since each - * method is parsed separately) However, a method that is - * invoked from another method has a parent. - */ - if (!Op->Parent) - { - return_VALUE (FALSE); - } - - - /* - * Get info on the parent. The root Op is AML_SCOPE - */ - - ParentInfo = AcpiPsGetOpcodeInfo (Op->Parent->Opcode); - if (ACPI_GET_OP_TYPE (ParentInfo) != ACPI_OP_TYPE_OPCODE) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsIsResultUsed: Unknown parent opcode. Op=%X\n", - Op)); - - return_VALUE (FALSE); - } - - - /* - * Decide what to do with the result based on the parent. If - * the parent opcode will not use the result, delete the object. - * Otherwise leave it as is, it will be deleted when it is used - * as an operand later. - */ - - switch (ACPI_GET_OP_CLASS (ParentInfo)) - { - /* - * In these cases, the parent will never use the return object - */ - case OPTYPE_CONTROL: /* IF, ELSE, WHILE only */ - - switch (Op->Parent->Opcode) - { - case AML_RETURN_OP: - - /* Never delete the return value associated with a return opcode */ - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result used, [RETURN] opcode=%X Op=%X\n", - Op->Opcode, Op)); - return_VALUE (TRUE); - break; - - case AML_IF_OP: - case AML_WHILE_OP: - - /* - * If we are executing the predicate AND this is the predicate op, - * we will use the return value! - */ - - if ((WalkState->ControlState->Common.State == CONTROL_PREDICATE_EXECUTING) && - (WalkState->ControlState->Control.PredicateOp == Op)) - { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result used as a predicate, [IF/WHILE] opcode=%X Op=%X\n", - Op->Opcode, Op)); - return_VALUE (TRUE); - } - - break; - } - - - /* Fall through to not used case below */ - - - case OPTYPE_NAMED_OBJECT: /* Scope, method, etc. */ - - /* - * These opcodes allow TermArg(s) as operands and therefore - * method calls. The result is used. - */ - if ((Op->Parent->Opcode == AML_REGION_OP) || - (Op->Parent->Opcode == AML_CREATE_FIELD_OP) || - (Op->Parent->Opcode == AML_BIT_FIELD_OP) || - (Op->Parent->Opcode == AML_BYTE_FIELD_OP) || - (Op->Parent->Opcode == AML_WORD_FIELD_OP) || - (Op->Parent->Opcode == AML_DWORD_FIELD_OP) || - (Op->Parent->Opcode == AML_QWORD_FIELD_OP)) - { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result used, [Region or CreateField] opcode=%X Op=%X\n", - Op->Opcode, Op)); - return_VALUE (TRUE); - } - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsIsResultUsed: Result not used, Parent opcode=%X Op=%X\n", - Op->Opcode, Op)); - - return_VALUE (FALSE); - break; - - /* - * In all other cases. the parent will actually use the return - * object, so keep it. - */ - default: - break; - } - - return_VALUE (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsDeleteResultIfNotUsed - * - * PARAMETERS: Op - * ResultObj - * WalkState - * - * RETURN: Status - * - * DESCRIPTION: Used after interpretation of an opcode. If there is an internal - * result descriptor, check if the parent opcode will actually use - * this result. If not, delete the result now so that it will - * not become orphaned. - * - ******************************************************************************/ - -void -AcpiDsDeleteResultIfNotUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT *ResultObj, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE_PTR ("DsDeleteResultIfNotUsed", ResultObj); - - - if (!Op) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsDeleteResultIfNotUsed: Null Op=%X\n", - Op)); - return_VOID; - } - - if (!ResultObj) - { - return_VOID; - } - - - if (!AcpiDsIsResultUsed (Op, WalkState)) - { - /* - * Must pop the result stack (ObjDesc should be equal - * to ResultObj) - */ - - Status = AcpiDsResultPop (&ObjDesc, WalkState); - if (ACPI_SUCCESS (Status)) - { - AcpiCmRemoveReference (ResultObj); - } - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateOperand - * - * PARAMETERS: WalkState - * Arg - * - * RETURN: Status - * - * DESCRIPTION: Translate a parse tree object that is an argument to an AML - * opcode to the equivalent interpreter object. This may include - * looking up a name or entering a new name into the internal - * namespace. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateOperand ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Arg, - UINT32 ArgIndex) -{ - ACPI_STATUS Status = AE_OK; - NATIVE_CHAR *NameString; - UINT32 NameLength; - OBJECT_TYPE_INTERNAL DataType; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PARSE_OBJECT *ParentOp; - UINT16 Opcode; - UINT32 Flags; - OPERATING_MODE InterpreterMode; - - - FUNCTION_TRACE_PTR ("DsCreateOperand", Arg); - - - /* A valid name must be looked up in the namespace */ - - if ((Arg->Opcode == AML_NAMEPATH_OP) && - (Arg->Value.String)) - { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperand: Getting a name: Arg=%p\n", Arg)); - - /* Get the entire name string from the AML stream */ - - Status = AcpiAmlGetNameString (ACPI_TYPE_ANY, - Arg->Value.Buffer, - &NameString, - &NameLength); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * All prefixes have been handled, and the name is - * in NameString - */ - - /* - * Differentiate between a namespace "create" operation - * versus a "lookup" operation (IMODE_LOAD_PASS2 vs. - * IMODE_EXECUTE) in order to support the creation of - * namespace objects during the execution of control methods. - */ - - ParentOp = Arg->Parent; - if ((AcpiPsIsNodeOp (ParentOp->Opcode)) && - (ParentOp->Opcode != AML_METHODCALL_OP) && - (ParentOp->Opcode != AML_REGION_OP) && - (ParentOp->Opcode != AML_NAMEPATH_OP)) - { - /* Enter name into namespace if not found */ - - InterpreterMode = IMODE_LOAD_PASS2; - } - - else - { - /* Return a failure if name not found */ - - InterpreterMode = IMODE_EXECUTE; - } - - Status = AcpiNsLookup (WalkState->ScopeInfo, NameString, - ACPI_TYPE_ANY, InterpreterMode, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, - WalkState, - (ACPI_NAMESPACE_NODE **) &ObjDesc); - - /* Free the namestring created above */ - - AcpiCmFree (NameString); - - /* - * The only case where we pass through (ignore) a NOT_FOUND - * error is for the CondRefOf opcode. - */ - - if (Status == AE_NOT_FOUND) - { - if (ParentOp->Opcode == AML_COND_REF_OF_OP) - { - /* - * For the Conditional Reference op, it's OK if - * the name is not found; We just need a way to - * indicate this to the interpreter, set the - * object to the root - */ - ObjDesc = (ACPI_OPERAND_OBJECT *) AcpiGbl_RootNode; - Status = AE_OK; - } - - else - { - /* - * We just plain didn't find it -- which is a - * very serious error at this point - */ - Status = AE_AML_NAME_NOT_FOUND; - } - } - - /* Check status from the lookup */ - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Put the resulting object onto the current object stack */ - - Status = AcpiDsObjStackPush (ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); - } - - - else - { - /* Check for null name case */ - - if (Arg->Opcode == AML_NAMEPATH_OP) - { - /* - * If the name is null, this means that this is an - * optional result parameter that was not specified - * in the original ASL. Create an Reference for a - * placeholder - */ - Opcode = AML_ZERO_OP; /* Has no arguments! */ - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperand: Null namepath: Arg=%p\n", Arg)); - - /* - * TBD: [Investigate] anything else needed for the - * zero op lvalue? - */ - } - - else - { - Opcode = Arg->Opcode; - } - - - /* Get the data type of the argument */ - - DataType = AcpiDsMapOpcodeToDataType (Opcode, &Flags); - if (DataType == INTERNAL_TYPE_INVALID) - { - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - if (Flags & OP_HAS_RETURN_VALUE) - { - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperand: Argument previously created, already stacked \n")); - - DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (WalkState->Operands [WalkState->NumOperands - 1], WalkState)); - - /* - * Use value that was already previously returned - * by the evaluation of this argument - */ - - Status = AcpiDsResultPopFromBottom (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* - * Only error is underflow, and this indicates - * a missing or null operand! - */ - DEBUG_PRINT (ACPI_ERROR, - ("DsCreateOperand: Missing or null operand, %s\n", AcpiCmFormatException (Status))); - return_ACPI_STATUS (Status); - } - - } - - else - { - /* Create an ACPI_INTERNAL_OBJECT for the argument */ - - ObjDesc = AcpiCmCreateInternalObject (DataType); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize the new object */ - - Status = AcpiDsInitObjectFromOp (WalkState, Arg, - Opcode, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - AcpiCmDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (Status); - } - } - - /* Put the operand object on the object stack */ - - Status = AcpiDsObjStackPush (ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateOperands - * - * PARAMETERS: FirstArg - First argument of a parser argument tree - * - * RETURN: Status - * - * DESCRIPTION: Convert an operator's arguments from a parse tree format to - * namespace objects and place those argument object on the object - * stack in preparation for evaluation by the interpreter. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *FirstArg) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PARSE_OBJECT *Arg; - UINT32 ArgCount = 0; - - - FUNCTION_TRACE_PTR ("DsCreateOperands", FirstArg); - - /* For all arguments in the list... */ - - Arg = FirstArg; - while (Arg) - { - Status = AcpiDsCreateOperand (WalkState, Arg, ArgCount); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - DEBUG_PRINT (TRACE_DISPATCH, - ("DsCreateOperands: Arg #%d (%p) done, Arg1=%p\n", - ArgCount, Arg, FirstArg)); - - /* Move on to next argument, if any */ - - Arg = Arg->Next; - ArgCount++; - } - - return_ACPI_STATUS (Status); - - -Cleanup: - /* - * We must undo everything done above; meaning that we must - * pop everything off of the operand stack and delete those - * objects - */ - - AcpiDsObjStackPopAndDelete (ArgCount, WalkState); - - DEBUG_PRINT (ACPI_ERROR, - ("DsCreateOperands: Error while creating Arg %d - %s\n", - (ArgCount + 1), AcpiCmFormatException (Status))); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResolveOperands - * - * PARAMETERS: WalkState - Current walk state with operands on stack - * - * RETURN: Status - * - * DESCRIPTION: Resolve all operands to their values. Used to prepare - * arguments to a control method invocation (a call from one - * method to another.) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResolveOperands ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("DsResolveOperands", WalkState); - - - /* - * Attempt to resolve each of the valid operands - * Method arguments are passed by value, not by reference - */ - - /* - * TBD: [Investigate] Note from previous parser: - * RefOf problem with AcpiAmlResolveToValue() conversion. - */ - - for (i = 0; i < WalkState->NumOperands; i++) - { - Status = AcpiAmlResolveToValue (&WalkState->Operands[i], WalkState); - if (ACPI_FAILURE (Status)) - { - break; - } - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMapOpcodeToDataType - * - * PARAMETERS: Opcode - AML opcode to map - * OutFlags - Additional info about the opcode - * - * RETURN: The ACPI type associated with the opcode - * - * DESCRIPTION: Convert a raw AML opcode to the associated ACPI data type, - * if any. If the opcode returns a value as part of the - * intepreter execution, a flag is returned in OutFlags. - * - ******************************************************************************/ - -OBJECT_TYPE_INTERNAL -AcpiDsMapOpcodeToDataType ( - UINT16 Opcode, - UINT32 *OutFlags) -{ - OBJECT_TYPE_INTERNAL DataType = INTERNAL_TYPE_INVALID; - ACPI_OPCODE_INFO *OpInfo; - UINT32 Flags = 0; - - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - /* Unknown opcode */ - - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unknown AML opcode: %x\n", - Opcode)); - - return (DataType); - } - - switch (ACPI_GET_OP_CLASS (OpInfo)) - { - - case OPTYPE_LITERAL: - - switch (Opcode) - { - case AML_BYTE_OP: - case AML_WORD_OP: - case AML_DWORD_OP: - - DataType = ACPI_TYPE_INTEGER; - break; - - - case AML_STRING_OP: - - DataType = ACPI_TYPE_STRING; - break; - - case AML_NAMEPATH_OP: - DataType = INTERNAL_TYPE_REFERENCE; - break; - - default: - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unknown (type LITERAL) AML opcode: %x\n", - Opcode)); - break; - } - break; - - - case OPTYPE_DATA_TERM: - - switch (Opcode) - { - case AML_BUFFER_OP: - - DataType = ACPI_TYPE_BUFFER; - break; - - case AML_PACKAGE_OP: - - DataType = ACPI_TYPE_PACKAGE; - break; - - default: - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unknown (type DATA_TERM) AML opcode: %x\n", - Opcode)); - break; - } - break; - - - case OPTYPE_CONSTANT: - case OPTYPE_METHOD_ARGUMENT: - case OPTYPE_LOCAL_VARIABLE: - - DataType = INTERNAL_TYPE_REFERENCE; - break; - - - case OPTYPE_MONADIC2: - case OPTYPE_MONADIC2R: - case OPTYPE_DYADIC2: - case OPTYPE_DYADIC2R: - case OPTYPE_DYADIC2S: - case OPTYPE_INDEX: - case OPTYPE_MATCH: - case OPTYPE_RETURN: - - Flags = OP_HAS_RETURN_VALUE; - DataType = ACPI_TYPE_ANY; - break; - - case OPTYPE_METHOD_CALL: - - Flags = OP_HAS_RETURN_VALUE; - DataType = ACPI_TYPE_METHOD; - break; - - - case OPTYPE_NAMED_OBJECT: - - DataType = AcpiDsMapNamedOpcodeToDataType (Opcode); - break; - - - case OPTYPE_DYADIC1: - case OPTYPE_CONTROL: - - /* No mapping needed at this time */ - - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("MapOpcode: Unimplemented data type opcode: %x\n", - Opcode)); - break; - } - - /* Return flags to caller if requested */ - - if (OutFlags) - { - *OutFlags = Flags; - } - - return (DataType); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMapNamedOpcodeToDataType - * - * PARAMETERS: Opcode - The Named AML opcode to map - * - * RETURN: The ACPI type associated with the named opcode - * - * DESCRIPTION: Convert a raw Named AML opcode to the associated data type. - * Named opcodes are a subsystem of the AML opcodes. - * - ******************************************************************************/ - -OBJECT_TYPE_INTERNAL -AcpiDsMapNamedOpcodeToDataType ( - UINT16 Opcode) -{ - OBJECT_TYPE_INTERNAL DataType; - - - /* Decode Opcode */ - - switch (Opcode) - { - case AML_SCOPE_OP: - DataType = INTERNAL_TYPE_SCOPE; - break; - - case AML_DEVICE_OP: - DataType = ACPI_TYPE_DEVICE; - break; - - case AML_THERMAL_ZONE_OP: - DataType = ACPI_TYPE_THERMAL; - break; - - case AML_METHOD_OP: - DataType = ACPI_TYPE_METHOD; - break; - - case AML_POWER_RES_OP: - DataType = ACPI_TYPE_POWER; - break; - - case AML_PROCESSOR_OP: - DataType = ACPI_TYPE_PROCESSOR; - break; - - case AML_DEF_FIELD_OP: /* DefFieldOp */ - DataType = INTERNAL_TYPE_DEF_FIELD_DEFN; - break; - - case AML_INDEX_FIELD_OP: /* IndexFieldOp */ - DataType = INTERNAL_TYPE_INDEX_FIELD_DEFN; - break; - - case AML_BANK_FIELD_OP: /* BankFieldOp */ - DataType = INTERNAL_TYPE_BANK_FIELD_DEFN; - break; - - case AML_NAMEDFIELD_OP: /* NO CASE IN ORIGINAL */ - DataType = ACPI_TYPE_ANY; - break; - - case AML_NAME_OP: /* NameOp - special code in original */ - case AML_NAMEPATH_OP: - DataType = ACPI_TYPE_ANY; - break; - - case AML_ALIAS_OP: - DataType = INTERNAL_TYPE_ALIAS; - break; - - case AML_MUTEX_OP: - DataType = ACPI_TYPE_MUTEX; - break; - - case AML_EVENT_OP: - DataType = ACPI_TYPE_EVENT; - break; - - case AML_REGION_OP: - DataType = ACPI_TYPE_REGION; - break; - - - default: - DataType = ACPI_TYPE_ANY; - break; - - } - - return (DataType); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswexec.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswexec.c deleted file mode 100644 index d3c04a6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswexec.c +++ /dev/null @@ -1,829 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswexec - Dispatcher method execution callbacks; - * dispatch to interpreter. - * $Revision: 55 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSWEXEC_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acdebug.h" - - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dswexec") - - -/***************************************************************************** - * - * FUNCTION: AcpiDsGetPredicateValue - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * - * RETURN: Status - * - * DESCRIPTION: Get the result of a predicate evaluation - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsGetPredicateValue ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT32 HasResultObj) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE_PTR ("DsGetPredicateValue", WalkState); - - - WalkState->ControlState->Common.State = 0; - - if (HasResultObj) - { - Status = AcpiDsResultPop (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsGetPredicateValue: Could not get result from predicate evaluation, %s\n", - AcpiCmFormatException (Status))); - - return_ACPI_STATUS (Status); - } - } - - else - { - Status = AcpiDsCreateOperand (WalkState, Op, 0); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiAmlResolveToValue (&WalkState->Operands [0], WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ObjDesc = WalkState->Operands [0]; - } - - if (!ObjDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecEndOp: No predicate ObjDesc=%X State=%X\n", - ObjDesc, WalkState)); - - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - - /* - * Result of predicate evaluation currently must - * be a number - */ - - if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecEndOp: Bad predicate (not a number) ObjDesc=%X State=%X Type=%X\n", - ObjDesc, WalkState, ObjDesc->Common.Type)); - - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - - /* Truncate the predicate to 32-bits if necessary */ - - AcpiAmlTruncateFor32bitTable (ObjDesc, WalkState); - - /* - * Save the result of the predicate evaluation on - * the control stack - */ - - if (ObjDesc->Integer.Value) - { - WalkState->ControlState->Common.Value = TRUE; - } - - else - { - /* - * Predicate is FALSE, we will just toss the - * rest of the package - */ - - WalkState->ControlState->Common.Value = FALSE; - Status = AE_CTRL_FALSE; - } - - -Cleanup: - - DEBUG_PRINT (TRACE_EXEC, - ("ExecEndOp: Completed a predicate eval=%X Op=%X\n", - WalkState->ControlState->Common.Value, Op)); - - /* Break to debugger to display result */ - - DEBUGGER_EXEC (AcpiDbDisplayResultObject (ObjDesc, WalkState)); - - /* - * Delete the predicate result object (we know that - * we don't need it anymore) - */ - - AcpiCmRemoveReference (ObjDesc); - - WalkState->ControlState->Common.State = CONTROL_NORMAL; - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsExecBeginOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * Op - Op that has been just been reached in the - * walk; Arguments have not been evaluated yet. - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during the execution of control - * methods. This is where most operators and operands are - * dispatched to the interpreter. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsExecBeginOp ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - ACPI_OPCODE_INFO *OpInfo; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("DsExecBeginOp", Op); - - - if (!Op) - { - Status = AcpiDsLoad2BeginOp (Opcode, NULL, WalkState, OutOp); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Op = *OutOp; - } - - if (Op == WalkState->Origin) - { - if (OutOp) - { - *OutOp = Op; - } - - return_ACPI_STATUS (AE_OK); - } - - /* - * If the previous opcode was a conditional, this opcode - * must be the beginning of the associated predicate. - * Save this knowledge in the current scope descriptor - */ - - if ((WalkState->ControlState) && - (WalkState->ControlState->Common.State == - CONTROL_CONDITIONAL_EXECUTING)) - { - DEBUG_PRINT (TRACE_EXEC, ("BeginOp: Exec predicate Op=%X State=%X\n", - Op, WalkState)); - - WalkState->ControlState->Common.State = CONTROL_PREDICATE_EXECUTING; - - /* Save start of predicate */ - - WalkState->ControlState->Control.PredicateOp = Op; - } - - - OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - - /* We want to send namepaths to the load code */ - - if (Op->Opcode == AML_NAMEPATH_OP) - { - OpInfo->Flags = OPTYPE_NAMED_OBJECT; - } - - - /* - * Handle the opcode based upon the opcode type - */ - - switch (ACPI_GET_OP_CLASS (OpInfo)) - { - case OPTYPE_CONTROL: - - Status = AcpiDsResultStackPush (WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiDsExecBeginControlOp (WalkState, Op); - break; - - - case OPTYPE_NAMED_OBJECT: - - if (WalkState->WalkType == WALK_METHOD) - { - /* - * Found a named object declaration during method - * execution; we must enter this object into the - * namespace. The created object is temporary and - * will be deleted upon completion of the execution - * of this method. - */ - - Status = AcpiDsLoad2BeginOp (Op->Opcode, Op, WalkState, NULL); - } - - - if (Op->Opcode == AML_REGION_OP) - { - Status = AcpiDsResultStackPush (WalkState); - } - - break; - - - /* most operators with arguments */ - - case OPTYPE_MONADIC1: - case OPTYPE_DYADIC1: - case OPTYPE_MONADIC2: - case OPTYPE_MONADIC2R: - case OPTYPE_DYADIC2: - case OPTYPE_DYADIC2R: - case OPTYPE_DYADIC2S: - case OPTYPE_RECONFIGURATION: - case OPTYPE_INDEX: - case OPTYPE_MATCH: - case OPTYPE_FATAL: - case OPTYPE_CREATE_FIELD: - - /* Start a new result/operand state */ - - Status = AcpiDsResultStackPush (WalkState); - break; - - - default: - break; - } - - /* Nothing to do here during method execution */ - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsExecEndOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * Op - Op that has been just been completed in the - * walk; Arguments have now been evaluated. - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during the execution of control - * methods. The only thing we really need to do here is to - * notice the beginning of IF, ELSE, and WHILE blocks. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsExecEndOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - UINT16 Opcode; - UINT8 Optype; - ACPI_PARSE_OBJECT *NextOp; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *FirstArg; - ACPI_OPERAND_OBJECT *ResultObj = NULL; - ACPI_OPCODE_INFO *OpInfo; - UINT32 OperandIndex; - - - FUNCTION_TRACE_PTR ("DsExecEndOp", Op); - - - Opcode = (UINT16) Op->Opcode; - - - OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - DEBUG_PRINT (ACPI_ERROR, ("ExecEndOp: Unknown opcode. Op=%X\n", - Op)); - - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - Optype = (UINT8) ACPI_GET_OP_CLASS (OpInfo); - FirstArg = Op->Value.Arg; - - /* Init the walk state */ - - WalkState->NumOperands = 0; - WalkState->ReturnDesc = NULL; - WalkState->OpInfo = OpInfo; - WalkState->Opcode = Opcode; - - - /* Call debugger for single step support (DEBUG build only) */ - - DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, Optype)); - DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); - - - /* Decode the opcode */ - - switch (Optype) - { - case OPTYPE_UNDEFINED: - - DEBUG_PRINT (ACPI_ERROR, ("ExecEndOp: Undefined opcode type Op=%X\n", - Op)); - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - break; - - - case OPTYPE_BOGUS: - DEBUG_PRINT (TRACE_DISPATCH, - ("ExecEndOp: Internal opcode=%X type Op=%X\n", - Opcode, Op)); - break; - - case OPTYPE_CONSTANT: /* argument type only */ - case OPTYPE_LITERAL: /* argument type only */ - case OPTYPE_DATA_TERM: /* argument type only */ - case OPTYPE_LOCAL_VARIABLE: /* argument type only */ - case OPTYPE_METHOD_ARGUMENT: /* argument type only */ - break; - - - /* most operators with arguments */ - - case OPTYPE_MONADIC1: - case OPTYPE_DYADIC1: - case OPTYPE_MONADIC2: - case OPTYPE_MONADIC2R: - case OPTYPE_DYADIC2: - case OPTYPE_DYADIC2R: - case OPTYPE_DYADIC2S: - case OPTYPE_RECONFIGURATION: - case OPTYPE_INDEX: - case OPTYPE_MATCH: - case OPTYPE_FATAL: - - - /* Build resolved operand stack */ - - Status = AcpiDsCreateOperands (WalkState, FirstArg); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - OperandIndex = WalkState->NumOperands - 1; - - - /* Done with this result state (Now that operand stack is built) */ - - Status = AcpiDsResultStackPop (WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - switch (Optype) - { - case OPTYPE_MONADIC1: - - /* 1 Operand, 0 ExternalResult, 0 InternalResult */ - - Status = AcpiAmlExecMonadic1 (Opcode, WalkState); - break; - - - case OPTYPE_MONADIC2: - - /* 1 Operand, 0 ExternalResult, 1 InternalResult */ - - Status = AcpiAmlExecMonadic2 (Opcode, WalkState, &ResultObj); - break; - - - case OPTYPE_MONADIC2R: - - /* 1 Operand, 1 ExternalResult, 1 InternalResult */ - - Status = AcpiAmlExecMonadic2R (Opcode, WalkState, &ResultObj); - break; - - - case OPTYPE_DYADIC1: - - /* 2 Operands, 0 ExternalResult, 0 InternalResult */ - - Status = AcpiAmlExecDyadic1 (Opcode, WalkState); - break; - - - case OPTYPE_DYADIC2: - - /* 2 Operands, 0 ExternalResult, 1 InternalResult */ - - Status = AcpiAmlExecDyadic2 (Opcode, WalkState, &ResultObj); - break; - - - case OPTYPE_DYADIC2R: - - /* 2 Operands, 1 or 2 ExternalResults, 1 InternalResult */ - - Status = AcpiAmlExecDyadic2R (Opcode, WalkState, &ResultObj); - break; - - - case OPTYPE_DYADIC2S: /* Synchronization Operator */ - - /* 2 Operands, 0 ExternalResult, 1 InternalResult */ - - Status = AcpiAmlExecDyadic2S (Opcode, WalkState, &ResultObj); - break; - - - case OPTYPE_INDEX: /* Type 2 opcode with 3 operands */ - - /* 3 Operands, 1 ExternalResult, 1 InternalResult */ - - Status = AcpiAmlExecIndex (WalkState, &ResultObj); - break; - - - case OPTYPE_MATCH: /* Type 2 opcode with 6 operands */ - - /* 6 Operands, 0 ExternalResult, 1 InternalResult */ - - Status = AcpiAmlExecMatch (WalkState, &ResultObj); - break; - - - case OPTYPE_RECONFIGURATION: - - /* 1 or 2 operands, 0 Internal Result */ - - Status = AcpiAmlExecReconfiguration (Opcode, WalkState); - break; - - - case OPTYPE_FATAL: - - /* 3 Operands, 0 ExternalResult, 0 InternalResult */ - - Status = AcpiAmlExecFatal (WalkState); - break; - } - - /* - * If a result object was returned from above, push it on the - * current result stack - */ - if (ACPI_SUCCESS (Status) && - ResultObj) - { - Status = AcpiDsResultPush (ResultObj, WalkState); - } - - break; - - - case OPTYPE_CONTROL: /* Type 1 opcode, IF/ELSE/WHILE/NOOP */ - - /* 1 Operand, 0 ExternalResult, 0 InternalResult */ - - Status = AcpiDsExecEndControlOp (WalkState, Op); - - AcpiDsResultStackPop (WalkState); - break; - - - case OPTYPE_METHOD_CALL: - - DEBUG_PRINT (TRACE_DISPATCH, - ("ExecEndOp: Method invocation, Op=%X\n", Op)); - - /* - * (AML_METHODCALL) Op->Value->Arg->Node contains - * the method Node pointer - */ - /* NextOp points to the op that holds the method name */ - - NextOp = FirstArg; - Node = NextOp->Node; - - /* NextOp points to first argument op */ - - NextOp = NextOp->Next; - - /* - * Get the method's arguments and put them on the operand stack - */ - Status = AcpiDsCreateOperands (WalkState, NextOp); - if (ACPI_FAILURE (Status)) - { - break; - } - - /* - * Since the operands will be passed to another - * control method, we must resolve all local - * references here (Local variables, arguments - * to *this* method, etc.) - */ - - Status = AcpiDsResolveOperands (WalkState); - if (ACPI_FAILURE (Status)) - { - break; - } - - /* - * Tell the walk loop to preempt this running method and - * execute the new method - */ - Status = AE_CTRL_TRANSFER; - - /* - * Return now; we don't want to disturb anything, - * especially the operand count! - */ - return_ACPI_STATUS (Status); - break; - - - case OPTYPE_CREATE_FIELD: - - DEBUG_PRINT (TRACE_EXEC, - ("ExecEndOp: Executing CreateField Buffer/Index Op=%X\n", - Op)); - - Status = AcpiDsLoad2EndOp (WalkState, Op); - if (ACPI_FAILURE (Status)) - { - break; - } - - Status = AcpiDsEvalFieldUnitOperands (WalkState, Op); - break; - - - case OPTYPE_NAMED_OBJECT: - - Status = AcpiDsLoad2EndOp (WalkState, Op); - if (ACPI_FAILURE (Status)) - { - break; - } - - switch (Op->Opcode) - { - case AML_REGION_OP: - - DEBUG_PRINT (TRACE_EXEC, - ("ExecEndOp: Executing OpRegion Address/Length Op=%X\n", - Op)); - - Status = AcpiDsEvalRegionOperands (WalkState, Op); - if (ACPI_FAILURE (Status)) - { - break; - } - - Status = AcpiDsResultStackPop (WalkState); - break; - - - case AML_METHOD_OP: - break; - - - case AML_ALIAS_OP: - - /* Alias creation was already handled by call - to psxload above */ - break; - - - default: - /* Nothing needs to be done */ - - Status = AE_OK; - break; - } - - break; - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("ExecEndOp: Unimplemented opcode, type=%X Opcode=%X Op=%X\n", - Optype, Op->Opcode, Op)); - - Status = AE_NOT_IMPLEMENTED; - break; - } - - - /* - * ACPI 2.0 support for 64-bit integers: - * Truncate numeric result value if we are executing from a 32-bit ACPI table - */ - AcpiAmlTruncateFor32bitTable (ResultObj, WalkState); - - /* - * Check if we just completed the evaluation of a - * conditional predicate - */ - - if ((WalkState->ControlState) && - (WalkState->ControlState->Common.State == - CONTROL_PREDICATE_EXECUTING) && - (WalkState->ControlState->Control.PredicateOp == Op)) - { - Status = AcpiDsGetPredicateValue (WalkState, Op, (UINT32) ResultObj); - ResultObj = NULL; - } - - -Cleanup: - if (ResultObj) - { - /* Break to debugger to display result */ - - DEBUGGER_EXEC (AcpiDbDisplayResultObject (ResultObj, WalkState)); - - /* - * Delete the result op if and only if: - * Parent will not use the result -- such as any - * non-nested type2 op in a method (parent will be method) - */ - AcpiDsDeleteResultIfNotUsed (Op, ResultObj, WalkState); - } - - /* Always clear the object stack */ - - /* TBD: [Investigate] Clear stack of return value, - but don't delete it */ - WalkState->NumOperands = 0; - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswload.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswload.c deleted file mode 100644 index 47d57a2..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswload.c +++ /dev/null @@ -1,929 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswload - Dispatcher namespace load callbacks - * $Revision: 26 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSWLOAD_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acevents.h" - - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dswload") - - -/***************************************************************************** - * - * FUNCTION: AcpiDsLoad1BeginOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * Op - Op that has been just been reached in the - * walk; Arguments have not been evaluated yet. - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during the loading of ACPI tables. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsLoad1BeginOp ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - OBJECT_TYPE_INTERNAL DataType; - NATIVE_CHAR *Path; - - - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1BeginOp: Op=%p State=%p\n", Op, WalkState)); - - - /* We are only interested in opcodes that have an associated name */ - - if (!AcpiPsIsNamedOp (Opcode)) - { - *OutOp = Op; - return (AE_OK); - } - - - /* Check if this object has already been installed in the namespace */ - - if (Op && Op->Node) - { - *OutOp = Op; - return (AE_OK); - } - - Path = AcpiPsGetNextNamestring (WalkState->ParserState); - - /* Map the raw opcode into an internal object type */ - - DataType = AcpiDsMapNamedOpcodeToDataType (Opcode); - - - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1BeginOp: State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); - - - if (Opcode == AML_SCOPE_OP) - { - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1BeginOp: State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); - } - - /* - * Enter the named type into the internal namespace. We enter the name - * as we go downward in the parse tree. Any necessary subobjects that involve - * arguments to the opcode must be created as we go back up the parse tree later. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, - DataType, IMODE_LOAD_PASS1, - NS_NO_UPSEARCH, WalkState, &(Node)); - - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - if (!Op) - { - /* Create a new op */ - - Op = AcpiPsAllocOp (Opcode); - if (!Op) - { - return (AE_NO_MEMORY); - } - } - - /* Initialize */ - - ((ACPI_PARSE2_OBJECT *)Op)->Name = Node->Name; - - /* - * Put the Node in the "op" object that the parser uses, so we - * can get it again quickly when this scope is closed - */ - Op->Node = Node; - - - AcpiPsAppendArg (AcpiPsGetParentScope (WalkState->ParserState), Op); - - *OutOp = Op; - - return (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsLoad1EndOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * Op - Op that has been just been completed in the - * walk; Arguments have now been evaluated. - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during the loading of the namespace, - * both control methods and everything else. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsLoad1EndOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - OBJECT_TYPE_INTERNAL DataType; - - - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1EndOp: Op=%p State=%p\n", Op, WalkState)); - - /* We are only interested in opcodes that have an associated name */ - - if (!AcpiPsIsNamedOp (Op->Opcode)) - { - return (AE_OK); - } - - - /* Get the type to determine if we should pop the scope */ - - DataType = AcpiDsMapNamedOpcodeToDataType (Op->Opcode); - - if (Op->Opcode == AML_NAME_OP) - { - /* For Name opcode, check the argument */ - - if (Op->Value.Arg) - { - DataType = AcpiDsMapOpcodeToDataType ( - (Op->Value.Arg)->Opcode, NULL); - ((ACPI_NAMESPACE_NODE *)Op->Node)->Type = - (UINT8) DataType; - } - } - - - /* Pop the scope stack */ - - if (AcpiNsOpensScope (DataType)) - { - - DEBUG_PRINT (TRACE_DISPATCH, - ("Load1EndOp/%s: Popping scope for Op %p\n", - AcpiCmGetTypeName (DataType), Op)); - AcpiDsScopeStackPop (WalkState); - } - - return (AE_OK); - -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsLoad2BeginOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * Op - Op that has been just been reached in the - * walk; Arguments have not been evaluated yet. - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during the loading of ACPI tables. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsLoad2BeginOp ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - OBJECT_TYPE_INTERNAL DataType; - NATIVE_CHAR *BufferPtr; - void *Original = NULL; - - - DEBUG_PRINT (TRACE_DISPATCH, - ("Load2BeginOp: Op=%p State=%p\n", Op, WalkState)); - - - /* We only care about Namespace opcodes here */ - - if (!AcpiPsIsNamespaceOp (Opcode) && - Opcode != AML_NAMEPATH_OP) - { - return (AE_OK); - } - - - /* Temp! same code as in psparse */ - - if (!AcpiPsIsNamedOp (Opcode)) - { - return (AE_OK); - } - - if (Op) - { - /* - * Get the name we are going to enter or lookup in the namespace - */ - if (Opcode == AML_NAMEPATH_OP) - { - /* For Namepath op, get the path string */ - - BufferPtr = Op->Value.String; - if (!BufferPtr) - { - /* No name, just exit */ - - return (AE_OK); - } - } - - else - { - /* Get name from the op */ - - BufferPtr = (NATIVE_CHAR *) &((ACPI_PARSE2_OBJECT *)Op)->Name; - } - } - - else - { - BufferPtr = AcpiPsGetNextNamestring (WalkState->ParserState); - } - - - /* Map the raw opcode into an internal object type */ - - DataType = AcpiDsMapNamedOpcodeToDataType (Opcode); - - DEBUG_PRINT (TRACE_DISPATCH, - ("Load2BeginOp: State=%p Op=%p Type=%x\n", WalkState, Op, DataType)); - - - if (Opcode == AML_DEF_FIELD_OP || - Opcode == AML_BANK_FIELD_OP || - Opcode == AML_INDEX_FIELD_OP) - { - Node = NULL; - Status = AE_OK; - } - - else if (Opcode == AML_NAMEPATH_OP) - { - /* - * The NamePath is an object reference to an existing object. Don't enter the - * name into the namespace, but look it up for use later - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, - DataType, IMODE_EXECUTE, - NS_SEARCH_PARENT, WalkState, - &(Node)); - } - - else - { - if (Op && Op->Node) - { - Original = Op->Node; - Node = Op->Node; - - if (AcpiNsOpensScope (DataType)) - { - Status = AcpiDsScopeStackPush (Node, - DataType, - WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - } - return (AE_OK); - } - - /* - * Enter the named type into the internal namespace. We enter the name - * as we go downward in the parse tree. Any necessary subobjects that involve - * arguments to the opcode must be created as we go back up the parse tree later. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, - DataType, IMODE_EXECUTE, - NS_NO_UPSEARCH, WalkState, - &(Node)); - } - - if (ACPI_SUCCESS (Status)) - { - if (!Op) - { - /* Create a new op */ - - Op = AcpiPsAllocOp (Opcode); - if (!Op) - { - return (AE_NO_MEMORY); - } - - /* Initialize */ - - ((ACPI_PARSE2_OBJECT *)Op)->Name = Node->Name; - *OutOp = Op; - } - - - /* - * Put the Node in the "op" object that the parser uses, so we - * can get it again quickly when this scope is closed - */ - Op->Node = Node; - - if (Original) - { - DEBUG_PRINT (ACPI_INFO, - ("Lookup: old %p new %p\n", Original, Node)); - - if (Original != Node) - { - DEBUG_PRINT (ACPI_INFO, - ("Lookup match error: old %p new %p\n", Original, Node)); - } - } - } - - - return (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsLoad2EndOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * Op - Op that has been just been completed in the - * walk; Arguments have now been evaluated. - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during the loading of the namespace, - * both control methods and everything else. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsLoad2EndOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - OBJECT_TYPE_INTERNAL DataType; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *Arg; - ACPI_NAMESPACE_NODE *NewNode; - - - DEBUG_PRINT (TRACE_DISPATCH, ("Load2EndOp: Op=%p State=%p\n", Op, WalkState)); - - if (!AcpiPsIsNamespaceObjectOp (Op->Opcode)) - { - return (AE_OK); - } - - if (Op->Opcode == AML_SCOPE_OP) - { - DEBUG_PRINT (TRACE_DISPATCH, - ("Load2EndOp: ending scope Op=%p State=%p\n", Op, WalkState)); - - if (((ACPI_PARSE2_OBJECT *)Op)->Name == -1) - { - DEBUG_PRINT (ACPI_ERROR, - ("Load2EndOp: Un-named scope! Op=%p State=%p\n", Op, - WalkState)); - return (AE_OK); - } - } - - - DataType = AcpiDsMapNamedOpcodeToDataType (Op->Opcode); - - /* - * Get the Node/name from the earlier lookup - * (It was saved in the *op structure) - */ - Node = Op->Node; - - /* - * Put the Node on the object stack (Contains the ACPI Name of - * this object) - */ - - WalkState->Operands[0] = (void *) Node; - WalkState->NumOperands = 1; - - /* Pop the scope stack */ - - if (AcpiNsOpensScope (DataType)) - { - - DEBUG_PRINT (TRACE_DISPATCH, - ("AmlEndNamespaceScope/%s: Popping scope for Op %p\n", - AcpiCmGetTypeName (DataType), Op)); - AcpiDsScopeStackPop (WalkState); - } - - - /* - * Named operations are as follows: - * - * AML_SCOPE - * AML_DEVICE - * AML_THERMALZONE - * AML_METHOD - * AML_POWERRES - * AML_PROCESSOR - * AML_FIELD - * AML_INDEXFIELD - * AML_BANKFIELD - * AML_NAMEDFIELD - * AML_NAME - * AML_ALIAS - * AML_MUTEX - * AML_EVENT - * AML_OPREGION - * AML_CREATEFIELD - * AML_CREATEBITFIELD - * AML_CREATEBYTEFIELD - * AML_CREATEWORDFIELD - * AML_CREATEDWORDFIELD - * AML_METHODCALL - */ - - - /* Decode the opcode */ - - Arg = Op->Value.Arg; - - switch (Op->Opcode) - { - - case AML_CREATE_FIELD_OP: - case AML_BIT_FIELD_OP: - case AML_BYTE_FIELD_OP: - case AML_WORD_FIELD_OP: - case AML_DWORD_FIELD_OP: - - /* - * Create the field object, but the field buffer and index must - * be evaluated later during the execution phase - */ - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-CreateXxxField: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - /* Get the NameString argument */ - - if (Op->Opcode == AML_CREATE_FIELD_OP) - { - Arg = AcpiPsGetArg (Op, 3); - } - else - { - /* Create Bit/Byte/Word/Dword field */ - - Arg = AcpiPsGetArg (Op, 2); - } - - /* - * Enter the NameString into the namespace - */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, - Arg->Value.String, - INTERNAL_TYPE_DEF_ANY, - IMODE_LOAD_PASS1, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - WalkState, &(NewNode)); - - if (ACPI_SUCCESS (Status)) - { - /* We could put the returned object (Node) on the object stack for later, but - * for now, we will put it in the "op" object that the parser uses, so we - * can get it again at the end of this scope - */ - Op->Node = NewNode; - - /* - * If there is no object attached to the node, this node was just created and - * we need to create the field object. Otherwise, this was a lookup of an - * existing node and we don't want to create the field object again. - */ - if (!NewNode->Object) - { - /* - * The Field definition is not fully parsed at this time. - * (We must save the address of the AML for the buffer and index operands) - */ - Status = AcpiAmlExecCreateField (((ACPI_PARSE2_OBJECT *) Op)->Data, - ((ACPI_PARSE2_OBJECT *) Op)->Length, - NewNode, WalkState); - } - } - - - break; - - - case AML_METHODCALL_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("RESOLVING-MethodCall: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - /* - * Lookup the method name and save the Node - */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Value.String, - ACPI_TYPE_ANY, IMODE_LOAD_PASS2, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, - WalkState, &(NewNode)); - - if (ACPI_SUCCESS (Status)) - { - -/* has name already been resolved by here ??*/ - - /* TBD: [Restructure] Make sure that what we found is indeed a method! */ - /* We didn't search for a method on purpose, to see if the name would resolve! */ - - /* We could put the returned object (Node) on the object stack for later, but - * for now, we will put it in the "op" object that the parser uses, so we - * can get it again at the end of this scope - */ - Op->Node = NewNode; - } - - - break; - - - case AML_PROCESSOR_OP: - - /* Nothing to do other than enter object into namespace */ - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Processor: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - Status = AcpiAmlExecCreateProcessor (Op, (ACPI_HANDLE) Node); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - DEBUG_PRINT (TRACE_DISPATCH, - ("Completed Processor Init, Op=%p State=%p entry=%p\n", - Op, WalkState, Node)); - break; - - - case AML_POWER_RES_OP: - - /* Nothing to do other than enter object into namespace */ - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-PowerResource: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - Status = AcpiAmlExecCreatePowerResource (Op, (ACPI_HANDLE) Node); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - DEBUG_PRINT (TRACE_DISPATCH, - ("Completed PowerResource Init, Op=%p State=%p entry=%p\n", - Op, WalkState, Node)); - break; - - - case AML_THERMAL_ZONE_OP: - - /* Nothing to do other than enter object into namespace */ - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-ThermalZone: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - break; - - - case AML_DEF_FIELD_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Field: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - Arg = Op->Value.Arg; - - Status = AcpiDsCreateField (Op, - Arg->Node, - WalkState); - break; - - - case AML_INDEX_FIELD_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-IndexField: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - Arg = Op->Value.Arg; - - Status = AcpiDsCreateIndexField (Op, - (ACPI_HANDLE) Arg->Node, - WalkState); - break; - - - case AML_BANK_FIELD_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-BankField: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - Arg = Op->Value.Arg; - Status = AcpiDsCreateBankField (Op, - Arg->Node, - WalkState); - break; - - - /* - * MethodOp PkgLength NamesString MethodFlags TermList - */ - case AML_METHOD_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Method: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - if (!Node->Object) - { - Status = AcpiAmlExecCreateMethod (((ACPI_PARSE2_OBJECT *) Op)->Data, - ((ACPI_PARSE2_OBJECT *) Op)->Length, - Arg->Value.Integer, (ACPI_HANDLE) Node); - } - - break; - - - case AML_MUTEX_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Mutex: Op=%p State=%p\n", Op, WalkState)); - - Status = AcpiDsCreateOperands (WalkState, Arg); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiAmlExecCreateMutex (WalkState); - break; - - - case AML_EVENT_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Event: Op=%p State=%p\n", Op, WalkState)); - - Status = AcpiDsCreateOperands (WalkState, Arg); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiAmlExecCreateEvent (WalkState); - break; - - - case AML_REGION_OP: - - if (Node->Object) - { - break; - } - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Opregion: Op=%p State=%p NamedObj=%p\n", Op, WalkState, Node)); - - - /* - * The OpRegion is not fully parsed at this time. Only valid argument is the SpaceId. - * (We must save the address of the AML of the address and length operands) - */ - - Status = AcpiAmlExecCreateRegion (((ACPI_PARSE2_OBJECT *) Op)->Data, - ((ACPI_PARSE2_OBJECT *) Op)->Length, - (ACPI_ADDRESS_SPACE_TYPE) Arg->Value.Integer, - WalkState); - - DEBUG_PRINT (TRACE_DISPATCH, - ("Completed OpRegion Init, Op=%p State=%p entry=%p\n", - Op, WalkState, Node)); - break; - - - /* Namespace Modifier Opcodes */ - - case AML_ALIAS_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Alias: Op=%p State=%p\n", Op, WalkState)); - - Status = AcpiDsCreateOperands (WalkState, Arg); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiAmlExecCreateAlias (WalkState); - break; - - - case AML_NAME_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-Name: Op=%p State=%p\n", Op, WalkState)); - - /* - * Because of the execution pass through the non-control-method - * parts of the table, we can arrive here twice. Only init - * the named object node the first time through - */ - - if (!Node->Object) - { - Status = AcpiDsCreateNode (WalkState, Node, Op); - } - - break; - - - case AML_NAMEPATH_OP: - - DEBUG_PRINT (TRACE_DISPATCH, - ("LOADING-NamePath object: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - break; - - - default: - break; - } - - -Cleanup: - - /* Remove the Node pushed at the very beginning */ - - AcpiDsObjStackPop (1, WalkState); - return (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswscope.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswscope.c deleted file mode 100644 index 6e7d7ff..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswscope.c +++ /dev/null @@ -1,268 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswscope - Scope stack manipulation - * $Revision: 42 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSWSCOPE_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acdispat.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("dswscope") - - -#define STACK_POP(head) head - - -/**************************************************************************** - * - * FUNCTION: AcpiDsScopeStackClear - * - * PARAMETERS: None - * - * DESCRIPTION: Pop (and free) everything on the scope stack except the - * root scope object (which remains at the stack top.) - * - ***************************************************************************/ - -void -AcpiDsScopeStackClear ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *ScopeInfo; - - - while (WalkState->ScopeInfo) - { - /* Pop a scope off the stack */ - - ScopeInfo = WalkState->ScopeInfo; - WalkState->ScopeInfo = ScopeInfo->Scope.Next; - - DEBUG_PRINT (TRACE_EXEC, - ("Popped object type %X\n", ScopeInfo->Common.Value)); - AcpiCmDeleteGenericState (ScopeInfo); - } -} - - -/**************************************************************************** - * - * FUNCTION: AcpiDsScopeStackPush - * - * PARAMETERS: *Node, - Name to be made current - * Type, - Type of frame being pushed - * - * DESCRIPTION: Push the current scope on the scope stack, and make the - * passed Node current. - * - ***************************************************************************/ - -ACPI_STATUS -AcpiDsScopeStackPush ( - ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *ScopeInfo; - - - FUNCTION_TRACE ("DsScopeStackPush"); - - - if (!Node) - { - /* invalid scope */ - - REPORT_ERROR (("DsScopeStackPush: null scope passed\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Make sure object type is valid */ - - if (!AcpiAmlValidateObjectType (Type)) - { - REPORT_WARNING (("DsScopeStackPush: type code out of range\n")); - } - - - /* Allocate a new scope object */ - - ScopeInfo = AcpiCmCreateGenericState (); - if (!ScopeInfo) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Init new scope object */ - - ScopeInfo->Scope.Node = Node; - ScopeInfo->Common.Value = (UINT16) Type; - - /* Push new scope object onto stack */ - - AcpiCmPushGenericState (&WalkState->ScopeInfo, ScopeInfo); - - return_ACPI_STATUS (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiDsScopeStackPop - * - * PARAMETERS: Type - The type of frame to be found - * - * DESCRIPTION: Pop the scope stack until a frame of the requested type - * is found. - * - * RETURN: Count of frames popped. If no frame of the requested type - * was found, the count is returned as a negative number and - * the scope stack is emptied (which sets the current scope - * to the root). If the scope stack was empty at entry, the - * function is a no-op and returns 0. - * - ***************************************************************************/ - -ACPI_STATUS -AcpiDsScopeStackPop ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *ScopeInfo; - - - FUNCTION_TRACE ("DsScopeStackPop"); - - /* - * Pop scope info object off the stack. - */ - - ScopeInfo = AcpiCmPopGenericState (&WalkState->ScopeInfo); - if (!ScopeInfo) - { - return_ACPI_STATUS (AE_STACK_UNDERFLOW); - } - - DEBUG_PRINT (TRACE_EXEC, - ("Popped object type %X\n", ScopeInfo->Common.Value)); - - AcpiCmDeleteGenericState (ScopeInfo); - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswstate.c b/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswstate.c deleted file mode 100644 index dc0b394..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Dispatcher/dswstate.c +++ /dev/null @@ -1,1149 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswstate - Dispatcher parse tree walk management routines - * $Revision: 38 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __DSWSTATE_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "acinterp.h" - -#define _COMPONENT DISPATCHER - MODULE_NAME ("dswstate") - - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultInsert - * - * PARAMETERS: Object - Object to push - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Push an object onto this walk's result stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultInsert ( - void *Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - State = WalkState->Results; - if (!State) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultInsert: No result object pushed! State=%p\n", - WalkState)); - return (AE_NOT_EXIST); - } - - if (Index >= OBJ_NUM_OPERANDS) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultInsert: Index out of range: %X Obj=%p State=%p Num=%X\n", - Index, Object, WalkState, State->Results.NumResults)); - return (AE_BAD_PARAMETER); - } - - if (!Object) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultInsert: Null Object! Index=%X Obj=%p State=%p Num=%X\n", - Index, Object, WalkState, State->Results.NumResults)); - return (AE_BAD_PARAMETER); - } - - State->Results.ObjDesc [Index] = Object; - State->Results.NumResults++; - - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackPush: Obj=%p [%s] State=%p Num=%X Cur=%X\n", - Object, Object ? AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL", - WalkState, State->Results.NumResults, WalkState->CurrentResult)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultRemove - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop an object off the bottom of this walk's result stack. In - * other words, this is a FIFO. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultRemove ( - ACPI_OPERAND_OBJECT **Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - State = WalkState->Results; - if (!State) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultRemove: No result object pushed! State=%p\n", - WalkState)); - return (AE_NOT_EXIST); - } - - if (Index >= OBJ_NUM_OPERANDS) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultRemove: Index out of range: %X State=%p Num=%X\n", - Index, WalkState, State->Results.NumResults)); - } - - - /* Check for a valid result object */ - - if (!State->Results.ObjDesc [Index]) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultStackRemove: Null operand! State=%p #Ops=%X, Index=%X\n", - WalkState, State->Results.NumResults, Index)); - return (AE_AML_NO_RETURN_VALUE); - } - - /* Remove the object */ - - State->Results.NumResults--; - - *Object = State->Results.ObjDesc [Index]; - State->Results.ObjDesc [Index] = NULL; - - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackRemove: Obj=%p [%s] Index=%X State=%p Num=%X\n", - *Object, (*Object) ? AcpiCmGetTypeName ((*Object)->Common.Type) : "NULL", - Index, WalkState, State->Results.NumResults)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultPop - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop an object off the bottom of this walk's result stack. In - * other words, this is a FIFO. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultPop ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState) -{ - UINT32 Index; - ACPI_GENERIC_STATE *State; - - - State = WalkState->Results; - if (!State) - { - return (AE_OK); - } - - - if (!State->Results.NumResults) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPop: Result stack is empty! State=%p\n", - WalkState)); - return (AE_AML_NO_RETURN_VALUE); - } - - /* Remove top element */ - - State->Results.NumResults--; - - for (Index = OBJ_NUM_OPERANDS; Index; Index--) - { - /* Check for a valid result object */ - - if (State->Results.ObjDesc [Index -1]) - { - *Object = State->Results.ObjDesc [Index -1]; - State->Results.ObjDesc [Index -1] = NULL; - - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackRemove: Obj=%p [%s] Index=%X State=%p Num=%X\n", - *Object, (*Object) ? AcpiCmGetTypeName ((*Object)->Common.Type) : "NULL", - Index -1, WalkState, State->Results.NumResults)); - - return (AE_OK); - } - } - - - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPop: No result objects! State=%p\n", - WalkState)); - return (AE_AML_NO_RETURN_VALUE); -} - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultPopFromBottom - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop an object off the bottom of this walk's result stack. In - * other words, this is a FIFO. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultPopFromBottom ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState) -{ - UINT32 Index; - ACPI_GENERIC_STATE *State; - - - State = WalkState->Results; - if (!State) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPopFromBottom: Warning: No result object pushed! State=%p\n", - WalkState)); - return (AE_NOT_EXIST); - } - - - if (!State->Results.NumResults) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPopFromBottom: No result objects! State=%p\n", - WalkState)); - return (AE_AML_NO_RETURN_VALUE); - } - - /* Remove Bottom element */ - - *Object = State->Results.ObjDesc [0]; - - - /* Push entire stack down one element */ - - for (Index = 0; Index < State->Results.NumResults; Index++) - { - State->Results.ObjDesc [Index] = State->Results.ObjDesc [Index + 1]; - } - - State->Results.NumResults--; - - /* Check for a valid result object */ - - if (!*Object) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPopFromBottom: Null operand! State=%p #Ops=%X, Index=%X\n", - WalkState, State->Results.NumResults, Index)); - return (AE_AML_NO_RETURN_VALUE); - } - - DEBUG_PRINT (TRACE_EXEC, - ("DsResultPopFromBottom: Obj=%p [%s], Results=%p State=%p\n", - *Object, (*Object) ? AcpiCmGetTypeName ((*Object)->Common.Type) : "NULL", - State, WalkState)); - - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultPush - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Push an object onto the current result stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultPush ( - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - State = WalkState->Results; - if (!State) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPush: No result stack frame\n")); - return (AE_AML_INTERNAL); - } - - if (State->Results.NumResults == OBJ_NUM_OPERANDS) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPush: Result stack overflow: Obj=%p State=%p Num=%X\n", - Object, WalkState, State->Results.NumResults)); - return (AE_STACK_OVERFLOW); - } - - if (!Object) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsResultPush: Null Object! Obj=%p State=%p Num=%X\n", - Object, WalkState, State->Results.NumResults)); - return (AE_BAD_PARAMETER); - } - - - State->Results.ObjDesc [State->Results.NumResults] = Object; - State->Results.NumResults++; - - DEBUG_PRINT (TRACE_EXEC, - ("DsResultPush: Obj=%p [%s] State=%p Num=%X Cur=%X\n", - Object, Object ? AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type) : "NULL", - WalkState, State->Results.NumResults, WalkState->CurrentResult)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultStackPush - * - * PARAMETERS: Object - Object to push - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultStackPush ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - State = AcpiCmCreateGenericState (); - if (!State) - { - return (AE_NO_MEMORY); - } - - AcpiCmPushGenericState (&WalkState->Results, State); - - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackPush: Results=%p State=%p\n", - State, WalkState)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultStackPop - * - * PARAMETERS: WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultStackPop ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - /* Check for stack underflow */ - - if (WalkState->Results == NULL) - { - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackPop: Underflow - State=%p\n", - WalkState)); - return (AE_AML_NO_OPERAND); - } - - - State = AcpiCmPopGenericState (&WalkState->Results); - - DEBUG_PRINT (TRACE_EXEC, - ("DsResultStackPop: Result=%p RemainingResults=%X State=%p\n", - State, State->Results.NumResults, WalkState)); - - AcpiCmDeleteGenericState (State); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackDeleteAll - * - * PARAMETERS: WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Clear the object stack by deleting all objects that are on it. - * Should be used with great care, if at all! - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackDeleteAll ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - - - FUNCTION_TRACE_PTR ("DsObjStackDeleteAll", WalkState); - - - /* The stack size is configurable, but fixed */ - - for (i = 0; i < OBJ_NUM_OPERANDS; i++) - { - if (WalkState->Operands[i]) - { - AcpiCmRemoveReference (WalkState->Operands[i]); - WalkState->Operands[i] = NULL; - } - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPush - * - * PARAMETERS: Object - Object to push - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Push an object onto this walk's object/operand stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPush ( - void *Object, - ACPI_WALK_STATE *WalkState) -{ - - - /* Check for stack overflow */ - - if (WalkState->NumOperands >= OBJ_NUM_OPERANDS) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsObjStackPush: overflow! Obj=%p State=%p #Ops=%X\n", - Object, WalkState, WalkState->NumOperands)); - return (AE_STACK_OVERFLOW); - } - - /* Put the object onto the stack */ - - WalkState->Operands [WalkState->NumOperands] = Object; - WalkState->NumOperands++; - - DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPush: Obj=%p [%s] State=%p #Ops=%X\n", - Object, AcpiCmGetTypeName (((ACPI_OPERAND_OBJECT *) Object)->Common.Type), - WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPopObject - * - * PARAMETERS: PopCount - Number of objects/entries to pop - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop this walk's object stack. Objects on the stack are NOT - * deleted by this routine. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPopObject ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState) -{ - - - /* Check for stack underflow */ - - if (WalkState->NumOperands == 0) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsObjStackPop: Missing operand/stack empty! State=%p #Ops=%X\n", - WalkState, WalkState->NumOperands)); - return (AE_AML_NO_OPERAND); - } - - - /* Pop the stack */ - - WalkState->NumOperands--; - - /* Check for a valid operand */ - - if (!WalkState->Operands [WalkState->NumOperands]) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsObjStackPop: Null operand! State=%p #Ops=%X\n", - WalkState, WalkState->NumOperands)); - return (AE_AML_NO_OPERAND); - } - - /* Get operand and set stack entry to null */ - - *Object = WalkState->Operands [WalkState->NumOperands]; - WalkState->Operands [WalkState->NumOperands] = NULL; - - DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPopObject: Obj=%p [%s] State=%p #Ops=%X\n", - *Object, AcpiCmGetTypeName ((*Object)->Common.Type), - WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPop - * - * PARAMETERS: PopCount - Number of objects/entries to pop - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop this walk's object stack. Objects on the stack are NOT - * deleted by this routine. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPop ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - - - for (i = 0; i < PopCount; i++) - { - /* Check for stack underflow */ - - if (WalkState->NumOperands == 0) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsObjStackPop: Underflow! Count=%X State=%p #Ops=%X\n", - PopCount, WalkState, WalkState->NumOperands)); - return (AE_STACK_UNDERFLOW); - } - - /* Just set the stack entry to null */ - - WalkState->NumOperands--; - WalkState->Operands [WalkState->NumOperands] = NULL; - } - - DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPop: Count=%X State=%p #Ops=%X\n", - PopCount, WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPopAndDelete - * - * PARAMETERS: PopCount - Number of objects/entries to pop - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop this walk's object stack and delete each object that is - * popped off. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPopAndDelete ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_OPERAND_OBJECT *ObjDesc; - - - for (i = 0; i < PopCount; i++) - { - /* Check for stack underflow */ - - if (WalkState->NumOperands == 0) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsObjStackPop: Underflow! Count=%X State=%p #Ops=%X\n", - PopCount, WalkState, WalkState->NumOperands)); - return (AE_STACK_UNDERFLOW); - } - - /* Pop the stack and delete an object if present in this stack entry */ - - WalkState->NumOperands--; - ObjDesc = WalkState->Operands [WalkState->NumOperands]; - if (ObjDesc) - { - AcpiCmRemoveReference (WalkState->Operands [WalkState->NumOperands]); - WalkState->Operands [WalkState->NumOperands] = NULL; - } - } - - DEBUG_PRINT (TRACE_EXEC, ("DsObjStackPop: Count=%X State=%p #Ops=%X\n", - PopCount, WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackGetValue - * - * PARAMETERS: Index - Stack index whose value is desired. Based - * on the top of the stack (index=0 == top) - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Retrieve an object from this walk's object stack. Index must - * be within the range of the current stack pointer. - * - ******************************************************************************/ - -void * -AcpiDsObjStackGetValue ( - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - - FUNCTION_TRACE_PTR ("DsObjStackGetValue", WalkState); - - - /* Can't do it if the stack is empty */ - - if (WalkState->NumOperands == 0) - { - return_VALUE (NULL); - } - - /* or if the index is past the top of the stack */ - - if (Index > (WalkState->NumOperands - (UINT32) 1)) - { - return_VALUE (NULL); - } - - - return_PTR (WalkState->Operands[(NATIVE_UINT)(WalkState->NumOperands - 1) - - Index]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsGetCurrentWalkState - * - * PARAMETERS: WalkList - Get current active state for this walk list - * - * RETURN: Pointer to the current walk state - * - * DESCRIPTION: Get the walk state that is at the head of the list (the "current" - * walk state. - * - ******************************************************************************/ - -ACPI_WALK_STATE * -AcpiDsGetCurrentWalkState ( - ACPI_WALK_LIST *WalkList) - -{ - - DEBUG_PRINT (TRACE_PARSE, ("DsGetCurrentWalkState, =%p\n", WalkList->WalkState)); - - if (!WalkList) - { - return (NULL); - } - - return (WalkList->WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsPushWalkState - * - * PARAMETERS: WalkState - State to push - * WalkList - The list that owns the walk stack - * - * RETURN: None - * - * DESCRIPTION: Place the WalkState at the head of the state list. - * - ******************************************************************************/ - -static void -AcpiDsPushWalkState ( - ACPI_WALK_STATE *WalkState, - ACPI_WALK_LIST *WalkList) -{ - - - FUNCTION_TRACE ("DsPushWalkState"); - - - WalkState->Next = WalkList->WalkState; - WalkList->WalkState = WalkState; - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsPopWalkState - * - * PARAMETERS: WalkList - The list that owns the walk stack - * - * RETURN: A WalkState object popped from the stack - * - * DESCRIPTION: Remove and return the walkstate object that is at the head of - * the walk stack for the given walk list. NULL indicates that - * the list is empty. - * - ******************************************************************************/ - -ACPI_WALK_STATE * -AcpiDsPopWalkState ( - ACPI_WALK_LIST *WalkList) -{ - ACPI_WALK_STATE *WalkState; - - - FUNCTION_TRACE ("DsPopWalkState"); - - - WalkState = WalkList->WalkState; - - if (WalkState) - { - /* Next walk state becomes the current walk state */ - - WalkList->WalkState = WalkState->Next; - - /* - * Don't clear the NEXT field, this serves as an indicator - * that there is a parent WALK STATE - * WalkState->Next = NULL; - */ - } - - return_PTR (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateWalkState - * - * PARAMETERS: Origin - Starting point for this walk - * WalkList - Owning walk list - * - * RETURN: Pointer to the new walk state. - * - * DESCRIPTION: Allocate and initialize a new walk state. The current walk state - * is set to this new state. - * - ******************************************************************************/ - -ACPI_WALK_STATE * -AcpiDsCreateWalkState ( - ACPI_OWNER_ID OwnerId, - ACPI_PARSE_OBJECT *Origin, - ACPI_OPERAND_OBJECT *MthDesc, - ACPI_WALK_LIST *WalkList) -{ - ACPI_WALK_STATE *WalkState; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("DsCreateWalkState"); - - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - AcpiGbl_WalkStateCacheRequests++; - - /* Check the cache first */ - - if (AcpiGbl_WalkStateCache) - { - /* There is an object available, use it */ - - WalkState = AcpiGbl_WalkStateCache; - AcpiGbl_WalkStateCache = WalkState->Next; - - AcpiGbl_WalkStateCacheHits++; - AcpiGbl_WalkStateCacheDepth--; - - DEBUG_PRINT (TRACE_EXEC, ("DsCreateWalkState: State %p from cache\n", WalkState)); - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - } - - else - { - /* The cache is empty, create a new object */ - - /* Avoid deadlock with AcpiCmCallocate */ - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - - WalkState = AcpiCmCallocate (sizeof (ACPI_WALK_STATE)); - if (!WalkState) - { - return_VALUE (NULL); - } - } - - WalkState->DataType = ACPI_DESC_TYPE_WALK; - WalkState->OwnerId = OwnerId; - WalkState->Origin = Origin; - WalkState->MethodDesc = MthDesc; - - /* Init the method args/local */ - -#ifndef _ACPI_ASL_COMPILER - AcpiDsMethodDataInit (WalkState); -#endif - - /* Create an initial result stack entry */ - - Status = AcpiDsResultStackPush (WalkState); - if (ACPI_FAILURE (Status)) - { - return_VALUE (NULL); - } - - - /* Put the new state at the head of the walk list */ - - AcpiDsPushWalkState (WalkState, WalkList); - - return_PTR (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsDeleteWalkState - * - * PARAMETERS: WalkState - State to delete - * - * RETURN: Status - * - * DESCRIPTION: Delete a walk state including all internal data structures - * - ******************************************************************************/ - -void -AcpiDsDeleteWalkState ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - FUNCTION_TRACE_PTR ("DsDeleteWalkState", WalkState); - - - if (!WalkState) - { - return; - } - - if (WalkState->DataType != ACPI_DESC_TYPE_WALK) - { - DEBUG_PRINT (ACPI_ERROR, - ("DsDeleteWalkState: **** %p not a valid walk state\n", WalkState)); - return; - } - - - /* Always must free any linked control states */ - - while (WalkState->ControlState) - { - State = WalkState->ControlState; - WalkState->ControlState = State->Common.Next; - - AcpiCmDeleteGenericState (State); - } - - /* Always must free any linked parse states */ - - while (WalkState->ScopeInfo) - { - State = WalkState->ScopeInfo; - WalkState->ScopeInfo = State->Common.Next; - - AcpiCmDeleteGenericState (State); - } - - /* Always must free any stacked result states */ - - while (WalkState->Results) - { - State = WalkState->Results; - WalkState->Results = State->Common.Next; - - AcpiCmDeleteGenericState (State); - } - - - /* If walk cache is full, just free this wallkstate object */ - - if (AcpiGbl_WalkStateCacheDepth >= MAX_WALK_CACHE_DEPTH) - { - AcpiCmFree (WalkState); - } - - /* Otherwise put this object back into the cache */ - - else - { - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - - /* Clear the state */ - - MEMSET (WalkState, 0, sizeof (ACPI_WALK_STATE)); - WalkState->DataType = ACPI_DESC_TYPE_WALK; - - /* Put the object at the head of the global cache list */ - - WalkState->Next = AcpiGbl_WalkStateCache; - AcpiGbl_WalkStateCache = WalkState; - AcpiGbl_WalkStateCacheDepth++; - - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - } - - return_VOID; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiDsDeleteWalkStateCache - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Purge the global state object cache. Used during subsystem - * termination. - * - ******************************************************************************/ - -void -AcpiDsDeleteWalkStateCache ( - void) -{ - ACPI_WALK_STATE *Next; - - - FUNCTION_TRACE ("DsDeleteWalkStateCache"); - - - /* Traverse the global cache list */ - - while (AcpiGbl_WalkStateCache) - { - /* Delete one cached state object */ - - Next = AcpiGbl_WalkStateCache->Next; - AcpiCmFree (AcpiGbl_WalkStateCache); - AcpiGbl_WalkStateCache = Next; - AcpiGbl_WalkStateCacheDepth--; - } - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evevent.c b/sys/contrib/dev/acpica/Subsystem/Events/evevent.c deleted file mode 100644 index 2738ea8..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evevent.c +++ /dev/null @@ -1,954 +0,0 @@ -/****************************************************************************** - * - * Module Name: evevent - Fixed and General Purpose AcpiEvent - * handling and dispatch - * $Revision: 34 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "achware.h" -#include "acevents.h" -#include "acnamesp.h" -#include "accommon.h" - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evevent") - - -/************************************************************************** - * - * FUNCTION: AcpiEvInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Ensures that the system control interrupt (SCI) is properly - * configured, disables SCI event sources, installs the SCI - * handler - * - *************************************************************************/ - -ACPI_STATUS -AcpiEvInitialize ( - void) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("EvInitialize"); - - - /* Make sure we have ACPI tables */ - - if (!AcpiGbl_DSDT) - { - DEBUG_PRINT (ACPI_WARN, ("EvInitialize: No ACPI tables present!\n")); - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - - /* Make sure the BIOS supports ACPI mode */ - - if (SYS_MODE_LEGACY == AcpiHwGetModeCapabilities()) - { - DEBUG_PRINT (ACPI_WARN, - ("EvInitialize: Only legacy mode supported!\n")); - return_ACPI_STATUS (AE_ERROR); - } - - - AcpiGbl_OriginalMode = AcpiHwGetMode(); - - /* - * Initialize the Fixed and General Purpose AcpiEvents prior. This is - * done prior to enabling SCIs to prevent interrupts from occuring - * before handers are installed. - */ - - Status = AcpiEvFixedEventInitialize (); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize fixed events.\n")); - return_ACPI_STATUS (Status); - } - - Status = AcpiEvGpeInitialize (); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize general purpose events.\n")); - return_ACPI_STATUS (Status); - } - - /* Install the SCI handler */ - - Status = AcpiEvInstallSciHandler (); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to install System Control Interrupt Handler\n")); - return_ACPI_STATUS (Status); - } - - - /* Install handlers for control method GPE handlers (_Lxx, _Exx) */ - - Status = AcpiEvInitGpeControlMethods (); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize Gpe control methods\n")); - return_ACPI_STATUS (Status); - } - - /* Install the handler for the Global Lock */ - - Status = AcpiEvInitGlobalLockHandler (); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_FATAL, - ("EvInitialize: Unable to initialize Global Lock handler\n")); - return_ACPI_STATUS (Status); - } - - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvFixedEventInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Initialize the Fixed AcpiEvent data structures - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvFixedEventInitialize(void) -{ - int i = 0; - - /* Initialize the structure that keeps track of fixed event handlers */ - - for (i = 0; i < NUM_FIXED_EVENTS; i++) - { - AcpiGbl_FixedEventHandlers[i].Handler = NULL; - AcpiGbl_FixedEventHandlers[i].Context = NULL; - } - - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, TMR_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, GBL_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, PWRBTN_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, SLPBTN_EN, 0); - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RTC_EN, 0); - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvFixedEventDetect - * - * PARAMETERS: None - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Checks the PM status register for fixed events - * - ******************************************************************************/ - -UINT32 -AcpiEvFixedEventDetect(void) -{ - UINT32 IntStatus = INTERRUPT_NOT_HANDLED; - UINT32 StatusRegister; - UINT32 EnableRegister; - - /* - * Read the fixed feature status and enable registers, as all the cases - * depend on their values. - */ - - StatusRegister = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_STS); - EnableRegister = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_EN); - - DEBUG_PRINT (TRACE_INTERRUPTS, - ("Fixed AcpiEvent Block: Enable = %08x\tStatus = %08x\n", - EnableRegister, StatusRegister)); - - - /* power management timer roll over */ - - if ((StatusRegister & ACPI_STATUS_PMTIMER) && - (EnableRegister & ACPI_ENABLE_PMTIMER)) - { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_PMTIMER); - } - - /* global event (BIOS want's the global lock) */ - - if ((StatusRegister & ACPI_STATUS_GLOBAL) && - (EnableRegister & ACPI_ENABLE_GLOBAL)) - { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_GLOBAL); - } - - /* power button event */ - - if ((StatusRegister & ACPI_STATUS_POWER_BUTTON) && - (EnableRegister & ACPI_ENABLE_POWER_BUTTON)) - { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_POWER_BUTTON); - } - - /* sleep button event */ - - if ((StatusRegister & ACPI_STATUS_SLEEP_BUTTON) && - (EnableRegister & ACPI_ENABLE_SLEEP_BUTTON)) - { - IntStatus |= AcpiEvFixedEventDispatch (ACPI_EVENT_SLEEP_BUTTON); - } - - return (IntStatus); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvFixedEventDispatch - * - * PARAMETERS: Event - Event type - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Clears the status bit for the requested event, calls the - * handler that previously registered for the event. - * - ******************************************************************************/ - -UINT32 -AcpiEvFixedEventDispatch ( - UINT32 Event) -{ - UINT32 RegisterId; - - /* Clear the status bit */ - - switch (Event) - { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_STS; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_STS; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_STS; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_STS; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_STS; - break; - - default: - return 0; - break; - } - - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK, RegisterId, 1); - - /* - * Make sure we've got a handler. If not, report an error. - * The event is disabled to prevent further interrupts. - */ - if (NULL == AcpiGbl_FixedEventHandlers[Event].Handler) - { - RegisterId = (PM1_EN | REGISTER_BIT_ID(RegisterId)); - - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK, - RegisterId, 0); - - REPORT_ERROR ( - ("EvGpeDispatch: No installed handler for fixed event [%08X]\n", - Event)); - - return (INTERRUPT_NOT_HANDLED); - } - - /* Invoke the handler */ - - return ((AcpiGbl_FixedEventHandlers[Event].Handler)( - AcpiGbl_FixedEventHandlers[Event].Context)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvGpeInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Initialize the GPE data structures - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvGpeInitialize (void) -{ - UINT32 i; - UINT32 j; - UINT32 RegisterIndex; - UINT32 GpeNumber; - UINT16 Gpe0RegisterCount; - UINT16 Gpe1RegisterCount; - - - FUNCTION_TRACE ("EvGpeInitialize"); - - /* - * Set up various GPE counts - * - * You may ask,why are the GPE register block lengths divided by 2? - * From the ACPI 2.0 Spec, section, 4.7.1.6 General-Purpose Event - * Registers, we have, - * - * "Each register block contains two registers of equal length - * GPEx_STS and GPEx_EN (where x is 0 or 1). The length of the - * GPE0_STS and GPE0_EN registers is equal to half the GPE0_LEN - * The length of the GPE1_STS and GPE1_EN registers is equal to - * half the GPE1_LEN. If a generic register block is not supported - * then its respective block pointer and block length values in the - * FADT table contain zeros. The GPE0_LEN and GPE1_LEN do not need - * to be the same size." - */ - - Gpe0RegisterCount = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); - Gpe1RegisterCount = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); - AcpiGbl_GpeRegisterCount = Gpe0RegisterCount + Gpe1RegisterCount; - - if (!AcpiGbl_GpeRegisterCount) - { - REPORT_WARNING (("Zero GPEs are defined in the FADT\n")); - return_ACPI_STATUS (AE_OK); - } - - /* - * Allocate the Gpe information block - */ - - AcpiGbl_GpeRegisters = AcpiCmCallocate (AcpiGbl_GpeRegisterCount * - sizeof (ACPI_GPE_REGISTERS)); - if (!AcpiGbl_GpeRegisters) - { - DEBUG_PRINT (ACPI_ERROR, - ("Could not allocate the GpeRegisters block\n")); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Allocate the Gpe dispatch handler block - * There are eight distinct GP events per register. - * Initialization to zeros is sufficient - */ - - AcpiGbl_GpeInfo = AcpiCmCallocate (MUL_8 (AcpiGbl_GpeRegisterCount) * - sizeof (ACPI_GPE_LEVEL_INFO)); - if (!AcpiGbl_GpeInfo) - { - AcpiCmFree (AcpiGbl_GpeRegisters); - DEBUG_PRINT (ACPI_ERROR, ("Could not allocate the GpeInfo block\n")); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Set the Gpe validation table to GPE_INVALID */ - - MEMSET (AcpiGbl_GpeValid, (int) ACPI_GPE_INVALID, NUM_GPE); - - /* - * Initialize the Gpe information and validation blocks. A goal of these - * blocks is to hide the fact that there are two separate GPE register sets - * In a given block, the status registers occupy the first half, and - * the enable registers occupy the second half. - */ - - /* GPE Block 0 */ - - RegisterIndex = 0; - - for (i = 0; i < Gpe0RegisterCount; i++) - { - AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + i); - - AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + i + Gpe0RegisterCount); - - AcpiGbl_GpeRegisters[RegisterIndex].GpeBase = (UINT8) MUL_8 (i); - - for (j = 0; j < 8; j++) - { - GpeNumber = AcpiGbl_GpeRegisters[RegisterIndex].GpeBase + j; - AcpiGbl_GpeValid[GpeNumber] = (UINT8) RegisterIndex; - } - - /* - * Clear the status/enable registers. Note that status registers - * are cleared by writing a '1', while enable registers are cleared - * by writing a '0'. - */ - AcpiOsOut8 (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, 0x00); - AcpiOsOut8 (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr, 0xFF); - - RegisterIndex++; - } - - /* GPE Block 1 */ - - for (i = 0; i < Gpe1RegisterCount; i++) - { - AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + i); - - AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr = - (UINT16) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + i + Gpe1RegisterCount); - - AcpiGbl_GpeRegisters[RegisterIndex].GpeBase = - (UINT8) (AcpiGbl_FADT->Gpe1Base + MUL_8 (i)); - - for (j = 0; j < 8; j++) - { - GpeNumber = AcpiGbl_GpeRegisters[RegisterIndex].GpeBase + j; - AcpiGbl_GpeValid[GpeNumber] = (UINT8) RegisterIndex; - } - - /* - * Clear the status/enable registers. Note that status registers - * are cleared by writing a '1', while enable registers are cleared - * by writing a '0'. - */ - AcpiOsOut8 (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, 0x00); - AcpiOsOut8 (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr, 0xFF); - - RegisterIndex++; - } - - DEBUG_PRINT (ACPI_INFO, - ("GPE registers: %X@%p (Blk0) %X@%p (Blk1)\n", - Gpe0RegisterCount, AcpiGbl_FADT->XGpe0Blk.Address, Gpe1RegisterCount, - AcpiGbl_FADT->XGpe1Blk.Address)); - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvSaveMethodInfo - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Called from AcpiWalkNamespace. Expects each object to be a - * control method under the _GPE portion of the namespace. - * Extract the name and GPE type from the object, saving this - * information for quick lookup during GPE dispatch - * - * The name of each GPE control method is of the form: - * "_Lnn" or "_Enn" - * Where: - * L - means that the GPE is level triggered - * E - means that the GPE is edge triggered - * nn - is the GPE number - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvSaveMethodInfo ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *ObjDesc, - void **ReturnValue) -{ - UINT32 GpeNumber; - NATIVE_CHAR Name[ACPI_NAME_SIZE + 1]; - UINT8 Type; - - - /* Extract the name from the object and convert to a string */ - - MOVE_UNALIGNED32_TO_32 (Name, &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name); - Name[ACPI_NAME_SIZE] = 0; - - /* - * Edge/Level determination is based on the 2nd INT8 of the method name - */ - if (Name[1] == 'L') - { - Type = ACPI_EVENT_LEVEL_TRIGGERED; - } - else if (Name[1] == 'E') - { - Type = ACPI_EVENT_EDGE_TRIGGERED; - } - else - { - /* Unknown method type, just ignore it! */ - - DEBUG_PRINT (ACPI_ERROR, - ("EvSaveMethodInfo: Unknown GPE method type: %s (name not of form _Lnn or _Enn)\n", - Name)); - return (AE_OK); - } - - /* Convert the last two characters of the name to the Gpe Number */ - - GpeNumber = STRTOUL (&Name[2], NULL, 16); - if (GpeNumber == ACPI_UINT32_MAX) - { - /* Conversion failed; invalid method, just ignore it */ - - DEBUG_PRINT (ACPI_ERROR, - ("EvSaveMethodInfo: Could not extract GPE number from name: %s (name not of form _Lnn or _Enn)\n", - Name)); - return (AE_OK); - } - - /* Ensure that we have a valid GPE number */ - - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) - { - /* Not valid, all we can do here is ignore it */ - - return (AE_OK); - } - - /* - * Now we can add this information to the GpeInfo block - * for use during dispatch of this GPE. - */ - - AcpiGbl_GpeInfo [GpeNumber].Type = Type; - AcpiGbl_GpeInfo [GpeNumber].MethodHandle = ObjHandle; - - - /* - * Enable the GPE (SCIs should be disabled at this point) - */ - - AcpiHwEnableGpe (GpeNumber); - - DEBUG_PRINT (ACPI_INFO, - ("EvSaveMethodInfo: Registered GPE method %s as GPE number %X\n", - Name, GpeNumber)); - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvInitGpeControlMethods - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Obtain the control methods associated with the GPEs. - * - * NOTE: Must be called AFTER namespace initialization! - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInitGpeControlMethods (void) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("EvInitGpeControlMethods"); - - - /* Get a permanent handle to the _GPE object */ - - Status = AcpiGetHandle (NULL, "\\_GPE", &AcpiGbl_GpeObjHandle); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Traverse the namespace under \_GPE to find all methods there */ - - Status = AcpiWalkNamespace (ACPI_TYPE_METHOD, AcpiGbl_GpeObjHandle, - ACPI_UINT32_MAX, AcpiEvSaveMethodInfo, - NULL, NULL); - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvGpeDetect - * - * PARAMETERS: None - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Detect if any GP events have occurred - * - ******************************************************************************/ - -UINT32 -AcpiEvGpeDetect (void) -{ - UINT32 IntStatus = INTERRUPT_NOT_HANDLED; - UINT32 i; - UINT32 j; - UINT8 EnabledStatusByte; - UINT8 BitMask; - - - /* - * Read all of the 8-bit GPE status and enable registers - * in both of the register blocks, saving all of it. - * Find all currently active GP events. - */ - - for (i = 0; i < AcpiGbl_GpeRegisterCount; i++) - { - AcpiGbl_GpeRegisters[i].Status = - AcpiOsIn8 (AcpiGbl_GpeRegisters[i].StatusAddr); - - AcpiGbl_GpeRegisters[i].Enable = - AcpiOsIn8 (AcpiGbl_GpeRegisters[i].EnableAddr); - - DEBUG_PRINT (TRACE_INTERRUPTS, - ("GPE block at %x - Enable: %08x\tStatus: %08x\n", - AcpiGbl_GpeRegisters[i].EnableAddr, AcpiGbl_GpeRegisters[i].Status, AcpiGbl_GpeRegisters[i].Enable)); - - /* First check if there is anything active at all in this register */ - - EnabledStatusByte = (UINT8) (AcpiGbl_GpeRegisters[i].Status & - AcpiGbl_GpeRegisters[i].Enable); - - if (!EnabledStatusByte) - { - /* No active GPEs in this register, move on */ - - continue; - } - - /* Now look at the individual GPEs in this byte register */ - - for (j = 0, BitMask = 1; j < 8; j++, BitMask <<= 1) - { - /* Examine one GPE bit */ - - if (EnabledStatusByte & BitMask) - { - /* - * Found an active GPE. Dispatch the event to a handler - * or method. - */ - IntStatus |= - AcpiEvGpeDispatch (AcpiGbl_GpeRegisters[i].GpeBase + j); - } - } - } - - return (IntStatus); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvAsynchExecuteGpeMethod - * - * PARAMETERS: GpeNumber - The 0-based Gpe number - * - * RETURN: None - * - * DESCRIPTION: Perform the actual execution of a GPE control method. This - * function is called from an invocation of AcpiOsQueueForExecution - * (and therefore does NOT execute at interrupt level) so that - * the control method itself is not executed in the context of - * the SCI interrupt handler. - * - ******************************************************************************/ - -static void -AcpiEvAsynchExecuteGpeMethod ( - void *Context) -{ - UINT32 GpeNumber = (UINT32) Context; - ACPI_GPE_LEVEL_INFO GpeInfo; - - - FUNCTION_TRACE ("EvAsynchExecuteGpeMethod"); - - /* - * Take a snapshot of the GPE info for this level - */ - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); - GpeInfo = AcpiGbl_GpeInfo [GpeNumber]; - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); - - /* - * Method Handler (_Lxx, _Exx): - * ---------------------------- - * Evaluate the _Lxx/_Exx control method that corresponds to this GPE. - */ - if (GpeInfo.MethodHandle) - { - AcpiNsEvaluateByHandle (GpeInfo.MethodHandle, NULL, NULL); - } - - /* - * Level-Triggered? - * ---------------- - * If level-triggered we clear the GPE status bit after handling the event. - */ - if (GpeInfo.Type & ACPI_EVENT_LEVEL_TRIGGERED) - { - AcpiHwClearGpe (GpeNumber); - } - - /* - * Enable the GPE. - */ - AcpiHwEnableGpe (GpeNumber); - - return_VOID; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvGpeDispatch - * - * PARAMETERS: GpeNumber - The 0-based Gpe number - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Handle and dispatch a General Purpose AcpiEvent. - * Clears the status bit for the requested event. - * - * TBD: [Investigate] is this still valid or necessary: - * The Gpe handler differs from the fixed events in that it clears the enable - * bit rather than the status bit to clear the interrupt. This allows - * software outside of interrupt context to determine what caused the SCI and - * dispatch the correct AML. - * - ******************************************************************************/ - -UINT32 -AcpiEvGpeDispatch ( - UINT32 GpeNumber) -{ - ACPI_GPE_LEVEL_INFO GpeInfo; - - FUNCTION_TRACE ("EvGpeDispatch"); - - /*DEBUG_INCREMENT_EVENT_COUNT (EVENT_GENERAL);*/ - - /* - * Valid GPE number? - */ - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) - { - DEBUG_PRINT (ACPI_ERROR, ("Invalid GPE bit [%X].\n", GpeNumber)); - return_VALUE (INTERRUPT_NOT_HANDLED); - } - - /* - * Disable the GPE. - */ - AcpiHwDisableGpe (GpeNumber); - - GpeInfo = AcpiGbl_GpeInfo [GpeNumber]; - - /* - * Edge-Triggered? - * --------------- - * If edge-triggered, clear the GPE status bit now. Note that - * level-triggered events are cleared after the GPE is serviced. - */ - if (GpeInfo.Type & ACPI_EVENT_EDGE_TRIGGERED) - { - AcpiHwClearGpe (GpeNumber); - } - /* - * Function Handler (e.g. EC)? - */ - if (GpeInfo.Handler) - { - /* Invoke function handler (at interrupt level). */ - GpeInfo.Handler (GpeInfo.Context); - - /* Level-Triggered? */ - if (GpeInfo.Type & ACPI_EVENT_LEVEL_TRIGGERED) - { - AcpiHwClearGpe (GpeNumber); - } - - /* Enable GPE */ - AcpiHwEnableGpe (GpeNumber); - } - /* - * Method Handler (e.g. _Exx/_Lxx)? - */ - else if (GpeInfo.MethodHandle) - { - if (ACPI_FAILURE(AcpiOsQueueForExecution (OSD_PRIORITY_GPE, - AcpiEvAsynchExecuteGpeMethod, (void*)(NATIVE_UINT)GpeNumber))) - { - /* - * Shoudn't occur, but if it does report an error. Note that - * the GPE will remain disabled until the ACPI Core Subsystem - * is restarted, or the handler is removed/reinstalled. - */ - REPORT_ERROR (("AcpiEvGpeDispatch: Unable to queue handler for GPE bit [%X]\n", GpeNumber)); - } - } - /* - * No Handler? Report an error and leave the GPE disabled. - */ - else - { - REPORT_ERROR (("AcpiEvGpeDispatch: No installed handler for GPE [%X]\n", GpeNumber)); - - /* Level-Triggered? */ - if (GpeInfo.Type & ACPI_EVENT_LEVEL_TRIGGERED) - { - AcpiHwClearGpe (GpeNumber); - } - } - - return_VALUE (INTERRUPT_HANDLED); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evmisc.c b/sys/contrib/dev/acpica/Subsystem/Events/evmisc.c deleted file mode 100644 index 516774e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evmisc.c +++ /dev/null @@ -1,486 +0,0 @@ -/****************************************************************************** - * - * Module Name: evmisc - ACPI device notification handler dispatch - * and ACPI Global Lock support - * $Revision: 22 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "achware.h" - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evmisc") - - -/************************************************************************** - * - * FUNCTION: AcpiEvNotifyDispatch - * - * PARAMETERS: - * - * RETURN: None. - * - * DESCRIPTION: Dispatch a device notification event to a previously - * installed handler. - * - *************************************************************************/ - -void -AcpiEvNotifyDispatch ( - ACPI_HANDLE Device, - UINT32 NotifyValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *HandlerObj; - NOTIFY_HANDLER Handler; - - - /* - * For value 1 (Ejection Request), some device method may need to be run. - * For value 2 (Device Wake) if _PRW exists, the _PS0 method may need to be run. - * For value 0x80 (Status Change) on the power button or sleep button, - * initiate soft-off or sleep operation? - */ - - - DEBUG_PRINT (ACPI_INFO, - ("Dispatching Notify(%X) on device %p\n", NotifyValue, Device)); - - switch (NotifyValue) - { - case 0: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Re-enumerate Devices\n")); - break; - - case 1: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Ejection Request\n")); - break; - - case 2: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Device Wake\n")); - break; - - case 0x80: - DEBUG_PRINT (ACPI_INFO, ("Notify value: Status Change\n")); - break; - - default: - DEBUG_PRINT (ACPI_INFO, ("Unknown Notify Value: %lx \n", NotifyValue)); - break; - } - - - /* - * Invoke a global notify handler if installed. - * This is done _before_ we invoke the per-device handler attached to the device. - */ - - if (NotifyValue <= MAX_SYS_NOTIFY) - { - /* Global system notification handler */ - - if (AcpiGbl_SysNotify.Handler) - { - AcpiGbl_SysNotify.Handler (Device, NotifyValue, - AcpiGbl_SysNotify.Context); - } - } - - else - { - /* Global driver notification handler */ - - if (AcpiGbl_DrvNotify.Handler) - { - AcpiGbl_DrvNotify.Handler (Device, NotifyValue, - AcpiGbl_DrvNotify.Context); - } - } - - - /* - * Get the notify object which must be attached to the device Node - */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Device); - if (!ObjDesc) - { - /* There can be no notify handler for this device */ - - DEBUG_PRINT (ACPI_INFO, - ("No notify handler for device %p \n", Device)); - return; - } - - - /* We have the notify object, Get the right handler */ - - if (NotifyValue <= MAX_SYS_NOTIFY) - { - HandlerObj = ObjDesc->Device.SysHandler; - } - else - { - HandlerObj = ObjDesc->Device.DrvHandler; - } - - /* Validate the handler */ - - if (!HandlerObj) - { - /* There is no notify handler for this device */ - - DEBUG_PRINT (ACPI_INFO, - ("No notify handler for device %p \n", Device)); - return; - } - - /* There is a handler, invoke it */ - - Handler = HandlerObj->NotifyHandler.Handler; - Handler (Device, NotifyValue, HandlerObj->NotifyHandler.Context); - -} - - -/*************************************************************************** - * - * FUNCTION: AcpiEvGlobalLockThread - * - * RETURN: None - * - * DESCRIPTION: Invoked by SCI interrupt handler upon acquisition of the - * Global Lock. Simply signal all threads that are waiting - * for the lock. - * - **************************************************************************/ - -static void -AcpiEvGlobalLockThread ( - void *Context) -{ - - /* Signal threads that are waiting for the lock */ - - if (AcpiGbl_GlobalLockThreadCount) - { - /* Send sufficient units to the semaphore */ - - AcpiOsSignalSemaphore (AcpiGbl_GlobalLockSemaphore, - AcpiGbl_GlobalLockThreadCount); - } -} - - -/*************************************************************************** - * - * FUNCTION: AcpiEvGlobalLockHandler - * - * RETURN: Status - * - * DESCRIPTION: Invoked directly from the SCI handler when a global lock - * release interrupt occurs. Grab the global lock and queue - * the global lock thread for execution - * - **************************************************************************/ - -static UINT32 -AcpiEvGlobalLockHandler ( - void *Context) -{ - BOOLEAN Acquired = FALSE; - void *GlobalLock; - - - /* - * Attempt to get the lock - * If we don't get it now, it will be marked pending and we will - * take another interrupt when it becomes free. - */ - - GlobalLock = AcpiGbl_FACS->GlobalLock; - ACPI_ACQUIRE_GLOBAL_LOCK (GlobalLock, Acquired); - if (Acquired) - { - /* Got the lock, now wake all threads waiting for it */ - - AcpiGbl_GlobalLockAcquired = TRUE; - - /* Run the Global Lock thread which will signal all waiting threads */ - - AcpiOsQueueForExecution (OSD_PRIORITY_HIGH, AcpiEvGlobalLockThread, - Context); - } - - return (INTERRUPT_HANDLED); -} - - -/*************************************************************************** - * - * FUNCTION: AcpiEvInitGlobalLockHandler - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for the global lock release event - * - **************************************************************************/ - -ACPI_STATUS -AcpiEvInitGlobalLockHandler (void) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("EvInitGlobalLockHandler"); - - - Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler, NULL); - - return_ACPI_STATUS (Status); -} - - -/*************************************************************************** - * - * FUNCTION: AcpiEvAcquireGlobalLock - * - * RETURN: Status - * - * DESCRIPTION: Attempt to gain ownership of the Global Lock. - * - **************************************************************************/ - -ACPI_STATUS -AcpiEvAcquireGlobalLock(void) -{ - ACPI_STATUS Status = AE_OK; - BOOLEAN Acquired = FALSE; - void *GlobalLock; - - - FUNCTION_TRACE ("EvAcquireGlobalLock"); - - - /* One more thread wants the global lock */ - - AcpiGbl_GlobalLockThreadCount++; - - - /* If we (OS side) have the hardware lock already, we are done */ - - if (AcpiGbl_GlobalLockAcquired) - { - return_ACPI_STATUS (AE_OK); - } - - /* Only if the FACS is valid */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_OK); - } - - - /* We must acquire the actual hardware lock */ - - GlobalLock = AcpiGbl_FACS->GlobalLock; - ACPI_ACQUIRE_GLOBAL_LOCK (GlobalLock, Acquired); - if (Acquired) - { - /* We got the lock */ - - DEBUG_PRINT (ACPI_INFO, ("Acquired the HW Global Lock\n")); - - AcpiGbl_GlobalLockAcquired = TRUE; - - return_ACPI_STATUS (AE_OK); - } - - - /* - * Did not get the lock. The pending bit was set above, and we must now - * wait until we get the global lock released interrupt. - */ - - DEBUG_PRINT (ACPI_INFO, ("Waiting for the HW Global Lock\n")); - - /* - * Acquire the global lock semaphore first. - * Since this wait will block, we must release the interpreter - */ - - Status = AcpiAmlSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, - ACPI_UINT32_MAX); - - return_ACPI_STATUS (Status); -} - - -/*************************************************************************** - * - * FUNCTION: AcpiEvReleaseGlobalLock - * - * DESCRIPTION: Releases ownership of the Global Lock. - * - **************************************************************************/ - -void -AcpiEvReleaseGlobalLock (void) -{ - BOOLEAN Pending = FALSE; - void *GlobalLock; - - - FUNCTION_TRACE ("EvReleaseGlobalLock"); - - if (!AcpiGbl_GlobalLockThreadCount) - { - REPORT_WARNING(("Releasing a non-acquired Global Lock\n")); - return_VOID; - } - - /* One fewer thread has the global lock */ - - AcpiGbl_GlobalLockThreadCount--; - - /* Have all threads released the lock? */ - - if (!AcpiGbl_GlobalLockThreadCount) - { - /* - * No more threads holding lock, we can do the actual hardware - * release - */ - - GlobalLock = AcpiGbl_FACS->GlobalLock; - ACPI_RELEASE_GLOBAL_LOCK (GlobalLock, Pending); - AcpiGbl_GlobalLockAcquired = FALSE; - - /* - * If the pending bit was set, we must write GBL_RLS to the control - * register - */ - if (Pending) - { - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, - GBL_RLS, 1); - } - } - - return_VOID; -} diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evregion.c b/sys/contrib/dev/acpica/Subsystem/Events/evregion.c deleted file mode 100644 index e9ebad9..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evregion.c +++ /dev/null @@ -1,778 +0,0 @@ -/****************************************************************************** - * - * Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch - * $Revision: 96 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVREGION_C__ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "amlcode.h" - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evregion") - - -/************************************************************************** - * - * FUNCTION: AcpiEvInstallDefaultAddressSpaceHandlers - * - * PARAMETERS: - * - * RETURN: Status - * - * DESCRIPTION: Installs the core subsystem address space handlers. - * - *************************************************************************/ - -ACPI_STATUS -AcpiEvInstallDefaultAddressSpaceHandlers ( - void) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("EvInstallDefaultAddressSpaceHandlers"); - - /* - * All address spaces (PCI Config, EC, SMBus) are scope dependent - * and registration must occur for a specific device. In the case - * system memory and IO address spaces there is currently no device - * associated with the address space. For these we use the root. - * We install the default PCI config space handler at the root so - * that this space is immediately available even though the we have - * not enumerated all the PCI Root Buses yet. This is to conform - * to the ACPI specification which states that the PCI config - * space must be always available -- even though we are nowhere - * near ready to find the PCI root buses at this point. - * - * NOTE: We ignore AE_EXIST because this means that a handler has - * already been installed (via AcpiInstallAddressSpaceHandler) - */ - - Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, - ADDRESS_SPACE_SYSTEM_MEMORY, - ACPI_DEFAULT_HANDLER, NULL, NULL); - if ((ACPI_FAILURE (Status)) && - (Status != AE_EXIST)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, - ADDRESS_SPACE_SYSTEM_IO, - ACPI_DEFAULT_HANDLER, NULL, NULL); - if ((ACPI_FAILURE (Status)) && - (Status != AE_EXIST)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, - ADDRESS_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL); - if ((ACPI_FAILURE (Status)) && - (Status != AE_EXIST)) - { - return_ACPI_STATUS (Status); - } - - - return_ACPI_STATUS (AE_OK); -} - - -/* TBD: [Restructure] Move elsewhere */ - -/************************************************************************** - * - * FUNCTION: AcpiEvExecuteRegMethod - * - * PARAMETERS: RegionObj - Object structure - * Function - On (1) or Off (0) - * - * RETURN: Status - * - * DESCRIPTION: Execute _REG method for a region - * - *************************************************************************/ - -static ACPI_STATUS -AcpiEvExecuteRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj, - UINT32 Function) -{ - ACPI_OPERAND_OBJECT *Params[3]; - ACPI_OPERAND_OBJECT SpaceIdDesc; - ACPI_OPERAND_OBJECT FunctionDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("EvExecuteRegMethod"); - - - if (RegionObj->Region.Extra->Extra.Method_REG == NULL) - { - return_ACPI_STATUS (AE_OK); - } - - /* - * _REG method has two arguments - * Arg0: Integer: Operation region space ID - * Same value as RegionObj->Region.SpaceId - * Arg1: Integer: connection status - * 1 for connecting the handler, - * 0 for disconnecting the handler - * Passed as a parameter - */ - - AcpiCmInitStaticObject (&SpaceIdDesc); - AcpiCmInitStaticObject (&FunctionDesc); - - /* - * Method requires two parameters. - */ - Params [0] = &SpaceIdDesc; - Params [1] = &FunctionDesc; - Params [2] = NULL; - - /* - * Set up the parameter objects - */ - SpaceIdDesc.Common.Type = ACPI_TYPE_INTEGER; - SpaceIdDesc.Integer.Value = RegionObj->Region.SpaceId; - - FunctionDesc.Common.Type = ACPI_TYPE_INTEGER; - FunctionDesc.Integer.Value = Function; - - /* - * Execute the method, no return value - */ - DEBUG_EXEC(AcpiCmDisplayInitPathname (RegionObj->Region.Extra->Extra.Method_REG, " [Method]")); - Status = AcpiNsEvaluateByHandle (RegionObj->Region.Extra->Extra.Method_REG, Params, NULL); - return_ACPI_STATUS (Status); -} - - -/************************************************************************** - * - * FUNCTION: AcpiEvAddressSpaceDispatch - * - * PARAMETERS: RegionObj - internal region object - * SpaceId - ID of the address space (0-255) - * Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * - * RETURN: Status - * - * DESCRIPTION: Dispatch an address space or operation region access to - * a previously installed handler. - * - *************************************************************************/ - -ACPI_STATUS -AcpiEvAddressSpaceDispatch ( - ACPI_OPERAND_OBJECT *RegionObj, - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value) -{ - ACPI_STATUS Status; - ADDRESS_SPACE_HANDLER Handler; - ADDRESS_SPACE_SETUP RegionSetup; - ACPI_OPERAND_OBJECT *HandlerDesc; - void *RegionContext = NULL; - - - FUNCTION_TRACE ("EvAddressSpaceDispatch"); - - - /* - * Check for an installed handler - */ - HandlerDesc = RegionObj->Region.AddrHandler; - - if (!HandlerDesc) - { - DEBUG_PRINT (TRACE_OPREGION, - ("Dispatch address access region %p, no handler\n", RegionObj)); - return_ACPI_STATUS(AE_NOT_EXIST); - } - - /* - * It may be the case that the region has never been initialized - * Some types of regions require special init code - */ - if (!(RegionObj->Region.Flags & AOPOBJ_INITIALIZED)) - { - /* - * This region has not been initialized yet, do it - */ - RegionSetup = HandlerDesc->AddrHandler.Setup; - if (!RegionSetup) - { - /* - * Bad news, no init routine and not init'd - */ - DEBUG_PRINT (ACPI_ERROR, - ("EvAddressSpaceDispatch: No init routine for region %p\n", - RegionObj)); - return_ACPI_STATUS (AE_UNKNOWN_STATUS); - } - - /* - * We must exit the interpreter because the region setup will potentially - * execute control methods - */ - AcpiAmlExitInterpreter (); - - Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE, - HandlerDesc->AddrHandler.Context, - &RegionContext); - - /* Re-enter the interpreter */ - - AcpiAmlEnterInterpreter (); - - /* - * Init routine may fail - */ - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("EvAddressSpaceDispatch: %s from region init, SpaceID %X\n", - AcpiCmFormatException (Status), RegionObj->Region.SpaceId)); - return_ACPI_STATUS(Status); - } - - RegionObj->Region.Flags |= AOPOBJ_INITIALIZED; - - /* - * Save the returned context for use in all accesses to - * this particular region. - */ - RegionObj->Region.Extra->Extra.RegionContext = RegionContext; - } - - /* - * We have everything we need, begin the process - */ - Handler = HandlerDesc->AddrHandler.Handler; - - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), - ("Addrhandler %p (%p), Address %p\n", - &RegionObj->Region.AddrHandler->AddrHandler, Handler, Address)); - - if (!(HandlerDesc->AddrHandler.Flags & ADDR_HANDLER_DEFAULT_INSTALLED)) - { - /* - * For handlers other than the default (supplied) handlers, we must - * exit the interpreter because the handler *might* block -- we don't - * know what it will do, so we can't hold the lock on the intepreter. - */ - AcpiAmlExitInterpreter(); - } - - /* - * Invoke the handler. - */ - Status = Handler (Function, Address, BitWidth, Value, - HandlerDesc->AddrHandler.Context, - RegionObj->Region.Extra->Extra.RegionContext); - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("EvAddressSpaceDispatch: %s from handler, SpaceID %X\n", - AcpiCmFormatException (Status), RegionObj->Region.SpaceId)); - } - - if (!(HandlerDesc->AddrHandler.Flags & ADDR_HANDLER_DEFAULT_INSTALLED)) - { - /* We just returned from a non-default handler, we must re-enter the - interpreter */ - - AcpiAmlEnterInterpreter (); - } - - return_ACPI_STATUS (Status); -} - -/****************************************************************************** - * - * FUNCTION: AcpiEvDisassociateRegionFromHandler - * - * PARAMETERS: RegionObj - Region Object - * AcpiNsIsLocked - Namespace Region Already Locked? - * - * RETURN: None - * - * DESCRIPTION: Break the association between the handler and the region - * this is a two way association. - * - ******************************************************************************/ - -void -AcpiEvDisassociateRegionFromHandler( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked) -{ - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT **LastObjPtr; - ADDRESS_SPACE_SETUP RegionSetup; - void *RegionContext; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("EvDisassociateRegionFromHandler"); - - RegionContext = RegionObj->Region.Extra->Extra.RegionContext; - - /* - * Get the address handler from the region object - */ - - HandlerObj = RegionObj->Region.AddrHandler; - if (!HandlerObj) - { - /* - * This region has no handler, all done - */ - return_VOID; - } - - - /* - * Find this region in the handler's list - */ - - ObjDesc = HandlerObj->AddrHandler.RegionList; - LastObjPtr = &HandlerObj->AddrHandler.RegionList; - - while (ObjDesc) - { - /* - * See if this is the one - */ - if (ObjDesc == RegionObj) - { - DEBUG_PRINT (TRACE_OPREGION, - ("Removing Region %p from address handler %p\n", - RegionObj, HandlerObj)); - /* - * This is it, remove it from the handler's list - */ - *LastObjPtr = ObjDesc->Region.Next; - ObjDesc->Region.Next = NULL; /* Must clear field */ - - if (AcpiNsIsLocked) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - } - - /* - * Now stop region accesses by executing the _REG method - */ - AcpiEvExecuteRegMethod (RegionObj, 0); - - if (AcpiNsIsLocked) - { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - } - - /* - * Call the setup handler with the deactivate notification - */ - RegionSetup = HandlerObj->AddrHandler.Setup; - Status = RegionSetup (RegionObj, ACPI_REGION_DEACTIVATE, - HandlerObj->AddrHandler.Context, - &RegionContext); - - /* - * Init routine may fail, Just ignore errors - */ - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("EvDisassociateRegionFromHandler: %s from region init, SpaceID %X\n", - AcpiCmFormatException (Status), RegionObj->Region.SpaceId)); - } - - RegionObj->Region.Flags &= ~(AOPOBJ_INITIALIZED); - - /* - * Remove handler reference in the region - * - * NOTE: this doesn't mean that the region goes away - * The region is just inaccessible as indicated to - * the _REG method - * - * If the region is on the handler's list - * this better be the region's handler - */ - ACPI_ASSERT (RegionObj->Region.AddrHandler == HandlerObj); - - RegionObj->Region.AddrHandler = NULL; - - return_VOID; - - } /* found the right handler */ - - /* - * Move through the linked list of handlers - */ - LastObjPtr = &ObjDesc->Region.Next; - ObjDesc = ObjDesc->Region.Next; - } - - /* - * If we get here, the region was not in the handler's region list - */ - DEBUG_PRINT (TRACE_OPREGION, - ("Cannot remove region %p from address handler %p\n", - RegionObj, HandlerObj)); - - return_VOID; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvAssociateRegionAndHandler - * - * PARAMETERS: HandlerObj - Handler Object - * RegionObj - Region Object - * AcpiNsIsLocked - Namespace Region Already Locked? - * - * RETURN: None - * - * DESCRIPTION: Create the association between the handler and the region - * this is a two way association. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvAssociateRegionAndHandler ( - ACPI_OPERAND_OBJECT *HandlerObj, - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("EvAssociateRegionAndHandler"); - - - DEBUG_PRINT (TRACE_OPREGION, ("Adding Region %p to address handler %p\n", - RegionObj, HandlerObj)); - - ACPI_ASSERT (RegionObj->Region.SpaceId == HandlerObj->AddrHandler.SpaceId); - ACPI_ASSERT (RegionObj->Region.AddrHandler == 0); - - /* - * Link this region to the front of the handler's list - */ - - RegionObj->Region.Next = HandlerObj->AddrHandler.RegionList; - HandlerObj->AddrHandler.RegionList = RegionObj; - - /* - * set the region's handler - */ - -/* - HandlerObj->Common.ReferenceCount = - (UINT16) (HandlerObj->Common.ReferenceCount + - RegionObj->Common.ReferenceCount - 1); -*/ - RegionObj->Region.AddrHandler = HandlerObj; - - /* - * Last thing, tell all users that this region is usable - */ - if (AcpiNsIsLocked) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - } - - Status = AcpiEvExecuteRegMethod (RegionObj, 1); - - if (AcpiNsIsLocked) - { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - } - - return_ACPI_STATUS (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiEvAddrHandlerHelper - * - * PARAMETERS: Handle - Node to be dumped - * Level - Nesting level of the handle - * Context - Passed into AcpiNsWalkNamespace - * - * DESCRIPTION: This routine checks to see if the object is a Region if it - * is then the address handler is installed in it. - * - * If the Object is a Device, and the device has a handler of - * the same type then the search is terminated in that branch. - * - * This is because the existing handler is closer in proximity - * to any more regions than the one we are trying to install. - * - ***************************************************************************/ - -ACPI_STATUS -AcpiEvAddrHandlerHelper ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *TmpObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - HandlerObj = (ACPI_OPERAND_OBJECT *) Context; - - /* Parameter validation */ - - if (!HandlerObj) - { - return (AE_OK); - } - - /* Convert and validate the device handle */ - - Node = AcpiNsConvertHandleToEntry (ObjHandle); - if (!Node) - { - return (AE_BAD_PARAMETER); - } - - /* - * We only care about regions.and objects - * that can have address handlers - */ - - if ((Node->Type != ACPI_TYPE_DEVICE) && - (Node->Type != ACPI_TYPE_REGION) && - (Node != AcpiGbl_RootNode)) - { - return (AE_OK); - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); - if (!ObjDesc) - { - /* - * The object DNE, we don't care about it - */ - return (AE_OK); - } - - /* - * Devices are handled different than regions - */ - if (IS_THIS_OBJECT_TYPE (ObjDesc, ACPI_TYPE_DEVICE)) - { - /* - * See if this guy has any handlers - */ - TmpObj = ObjDesc->Device.AddrHandler; - while (TmpObj) - { - /* - * Now let's see if it's for the same address space. - */ - if (TmpObj->AddrHandler.SpaceId == HandlerObj->AddrHandler.SpaceId) - { - /* - * It's for the same address space - */ - - DEBUG_PRINT (TRACE_OPREGION, - ("Found handler for region %s in device %p(%p) handler %p\n", - AcpiCmGetRegionName (HandlerObj->AddrHandler.SpaceId), ObjDesc, TmpObj, HandlerObj)); - - /* - * Since the object we found it on was a device, then it - * means that someone has already installed a handler for - * the branch of the namespace from this device on. Just - * bail out telling the walk routine to not traverse this - * branch. This preserves the scoping rule for handlers. - */ - return (AE_CTRL_DEPTH); - } - - /* - * Move through the linked list of handlers - */ - TmpObj = TmpObj->AddrHandler.Next; - } - - /* - * As long as the device didn't have a handler for this - * space we don't care about it. We just ignore it and - * proceed. - */ - return (AE_OK); - } - - /* - * Only here if it was a region - */ - ACPI_ASSERT (ObjDesc->Common.Type == ACPI_TYPE_REGION); - - if (ObjDesc->Region.SpaceId != HandlerObj->AddrHandler.SpaceId) - { - /* - * This region is for a different address space - * ignore it - */ - return (AE_OK); - } - - /* - * Now we have a region and it is for the handler's address - * space type. - * - * First disconnect region for any previous handler (if any) - */ - AcpiEvDisassociateRegionFromHandler (ObjDesc, FALSE); - - /* - * Then connect the region to the new handler - */ - Status = AcpiEvAssociateRegionAndHandler (HandlerObj, ObjDesc, FALSE); - - return (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evrgnini.c b/sys/contrib/dev/acpica/Subsystem/Events/evrgnini.c deleted file mode 100644 index f2ed119..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evrgnini.c +++ /dev/null @@ -1,557 +0,0 @@ -/****************************************************************************** - * - * Module Name: evrgnini- ACPI AddressSpace (OpRegion) init - * $Revision: 33 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVRGNINI_C__ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "amlcode.h" - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evrgnini") - - -/***************************************************************************** - * - * FUNCTION: AcpiEvSystemMemoryRegionSetup - * - * PARAMETERS: RegionObj - region we are interested in - * Function - start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Do any prep work for region handling, a nop for now - * - ****************************************************************************/ - -ACPI_STATUS -AcpiEvSystemMemoryRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - FUNCTION_TRACE ("EvSystemMemoryRegionSetup"); - - - if (Function == ACPI_REGION_DEACTIVATE) - { - if (*RegionContext) - { - AcpiCmFree (*RegionContext); - *RegionContext = NULL; - } - return_ACPI_STATUS (AE_OK); - } - - - /* Activate. Create a new context */ - - *RegionContext = AcpiCmCallocate (sizeof (MEM_HANDLER_CONTEXT)); - if (!(*RegionContext)) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - return_ACPI_STATUS (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiEvIoSpaceRegionSetup - * - * PARAMETERS: RegionObj - region we are interested in - * Function - start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Do any prep work for region handling - * - ****************************************************************************/ - -ACPI_STATUS -AcpiEvIoSpaceRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - FUNCTION_TRACE ("EvIoSpaceRegionSetup"); - - if (Function == ACPI_REGION_DEACTIVATE) - { - *RegionContext = NULL; - } - else - { - *RegionContext = HandlerContext; - } - - return_ACPI_STATUS (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiEvPciConfigRegionSetup - * - * PARAMETERS: RegionObj - region we are interested in - * Function - start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Do any prep work for region handling - * - * MUTEX: Assumes namespace is not locked - * - ****************************************************************************/ - -ACPI_STATUS -AcpiEvPciConfigRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - ACPI_STATUS Status = AE_OK; - ACPI_INTEGER Temp; - PCI_HANDLER_CONTEXT *PciContext = *RegionContext; - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *RegionObj = (ACPI_OPERAND_OBJECT *) Handle; - DEVICE_ID ObjectHID; - - FUNCTION_TRACE ("EvPciConfigRegionSetup"); - - HandlerObj = RegionObj->Region.AddrHandler; - - if (!HandlerObj) - { - /* - * No installed handler. This shouldn't happen because the dispatch - * routine checks before we get here, but we check again just in case. - */ - DEBUG_PRINT (TRACE_OPREGION, - ("Attempting to init a region %X, with no handler\n", RegionObj)); - return_ACPI_STATUS(AE_NOT_EXIST); - } - - if (Function == ACPI_REGION_DEACTIVATE) - { - if (PciContext) - { - AcpiCmFree (PciContext); - *RegionContext = NULL; - } - - return_ACPI_STATUS (Status); - } - - - /* Create a new context */ - - PciContext = AcpiCmCallocate (sizeof(PCI_HANDLER_CONTEXT)); - if (!PciContext) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * For PCI Config space access, we have to pass the segment, bus, - * device and function numbers. This routine must acquire those. - */ - - /* - * First get device and function numbers from the _ADR object - * in the parent's scope. - */ - ACPI_ASSERT(RegionObj->Region.Node); - - Node = AcpiNsGetParentObject (RegionObj->Region.Node); - - - /* AcpiEvaluate the _ADR object */ - - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__ADR, Node, &Temp); - /* - * The default is zero, since the allocation above zeroed the data, just - * do nothing on failures. - */ - if (ACPI_SUCCESS (Status)) - { - /* - * Got it.. - */ - PciContext->DevFunc = (UINT32) Temp; - } - - /* - * Get the _SEG and _BBN values from the device upon which the handler - * is installed. - * - * We need to get the _SEG and _BBN objects relative to the PCI BUS device. - * This is the device the handler has been registered to handle. - */ - - /* - * If the AddrHandler.Node is still pointing to the root, we need - * to scan upward for a PCI Root bridge and re-associate the OpRegion - * handlers with that device. - */ - if (HandlerObj->AddrHandler.Node == AcpiGbl_RootNode) - { - /* - * Node is currently the parent object - */ - while (Node != AcpiGbl_RootNode) - { - Status = AcpiCmExecute_HID(Node, &ObjectHID); - - if (ACPI_SUCCESS (Status)) - { - if (!(STRNCMP(ObjectHID.Buffer, PCI_ROOT_HID_STRING, - sizeof (PCI_ROOT_HID_STRING)))) - { - AcpiInstallAddressSpaceHandler(Node, - ADDRESS_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL); - - break; - } - } - - Node = AcpiNsGetParentObject(Node); - } - } - else - { - Node = HandlerObj->AddrHandler.Node; - } - - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__SEG, Node, &Temp); - if (ACPI_SUCCESS (Status)) - { - /* - * Got it.. - */ - PciContext->Seg = (UINT32) Temp; - } - - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__BBN, Node, &Temp); - if (ACPI_SUCCESS (Status)) - { - /* - * Got it.. - */ - PciContext->Bus = (UINT32) Temp; - } - - *RegionContext = PciContext; - - return_ACPI_STATUS (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiEvDefaultRegionSetup - * - * PARAMETERS: RegionObj - region we are interested in - * Function - start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Do any prep work for region handling - * - ****************************************************************************/ - -ACPI_STATUS -AcpiEvDefaultRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - FUNCTION_TRACE ("EvDefaultRegionSetup"); - - if (Function == ACPI_REGION_DEACTIVATE) - { - *RegionContext = NULL; - } - else - { - *RegionContext = HandlerContext; - } - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvInitializeRegion - * - * PARAMETERS: RegionObj - Region we are initializing - * - * RETURN: Status - * - * DESCRIPTION: Initializes the region, finds any _REG methods and saves them - * for execution at a later time - * - * Get the appropriate address space handler for a newly - * created region. - * - * This also performs address space specific intialization. For - * example, PCI regions must have an _ADR object that contains - * a PCI address in the scope of the defintion. This address is - * required to perform an access to PCI config space. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInitializeRegion ( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsLocked) -{ - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_ADDRESS_SPACE_TYPE SpaceId; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; - - - FUNCTION_TRACE_U32 ("EvInitializeRegion", AcpiNsLocked); - - - if (!RegionObj) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - ACPI_ASSERT(RegionObj->Region.Node); - - Node = AcpiNsGetParentObject (RegionObj->Region.Node); - SpaceId = RegionObj->Region.SpaceId; - - RegionObj->Region.AddrHandler = NULL; - RegionObj->Region.Extra->Extra.Method_REG = NULL; - RegionObj->Region.Flags &= ~(AOPOBJ_INITIALIZED); - - /* - * Find any "_REG" associated with this region definition - */ - Status = AcpiNsSearchNode (*RegNamePtr, Node, - ACPI_TYPE_METHOD, &MethodNode); - if (ACPI_SUCCESS (Status)) - { - /* - * The _REG method is optional and there can be only one per region - * definition. This will be executed when the handler is attached - * or removed - */ - RegionObj->Region.Extra->Extra.Method_REG = MethodNode; - } - - /* - * The following loop depends upon the root Node having no parent - * ie: AcpiGbl_RootNode->ParentEntry being set to NULL - */ - while (Node) - { - /* - * Check to see if a handler exists - */ - HandlerObj = NULL; - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); - if (ObjDesc) - { - /* - * can only be a handler if the object exists - */ - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - - HandlerObj = ObjDesc->Device.AddrHandler; - break; - - case ACPI_TYPE_PROCESSOR: - - HandlerObj = ObjDesc->Processor.AddrHandler; - break; - - case ACPI_TYPE_THERMAL: - - HandlerObj = ObjDesc->ThermalZone.AddrHandler; - break; - } - - while (HandlerObj) - { - /* - * This guy has at least one address handler - * see if it has the type we want - */ - if (HandlerObj->AddrHandler.SpaceId == SpaceId) - { - DEBUG_PRINT (TRACE_OPREGION, - ("Found handler %p for region %p in obj %p\n", - HandlerObj, RegionObj, ObjDesc)); - - /* - * Found it! Now update the region and the handler - */ - AcpiEvAssociateRegionAndHandler (HandlerObj, RegionObj, AcpiNsLocked); - return_ACPI_STATUS (AE_OK); - } - - HandlerObj = HandlerObj->AddrHandler.Next; - - } /* while handlerobj */ - } - - /* - * This one does not have the handler we need - * Pop up one level - */ - Node = AcpiNsGetParentObject (Node); - - } /* while Node != ROOT */ - - /* - * If we get here, there is no handler for this region - */ - DEBUG_PRINT (TRACE_OPREGION, - ("No handler for RegionType %s(%X) (RegionObj %p)\n", - AcpiCmGetRegionName (SpaceId), SpaceId, RegionObj)); - - return_ACPI_STATUS (AE_NOT_EXIST); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evsci.c b/sys/contrib/dev/acpica/Subsystem/Events/evsci.c deleted file mode 100644 index 130156c..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evsci.c +++ /dev/null @@ -1,436 +0,0 @@ -/******************************************************************************* - * - * Module Name: evsci - System Control Interrupt configuration and - * legacy to ACPI mode state transition functions - * $Revision: 69 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acnamesp.h" -#include "achware.h" -#include "acevents.h" - - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evsci") - - -/* - * Elements correspond to counts for TMR, NOT_USED, GBL, PWR_BTN, SLP_BTN, RTC, - * and GENERAL respectively. These counts are modified by the ACPI interrupt - * handler. - * - * TBD: [Investigate] Note that GENERAL should probably be split out into - * one element for each bit in the GPE registers - */ - - -/******************************************************************************* - * - * FUNCTION: AcpiEvSciHandler - * - * PARAMETERS: Context - Calling Context - * - * RETURN: Status code indicates whether interrupt was handled. - * - * DESCRIPTION: Interrupt handler that will figure out what function or - * control method to call to deal with a SCI. Installed - * using BU interrupt support. - * - ******************************************************************************/ - -static UINT32 -AcpiEvSciHandler (void *Context) -{ - UINT32 InterruptHandled = INTERRUPT_NOT_HANDLED; - - - FUNCTION_TRACE("EvSciHandler"); - - - /* - * Make sure that ACPI is enabled by checking SCI_EN. Note that we are - * required to treat the SCI interrupt as sharable, level, active low. - */ - if (!AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_DO_NOT_LOCK, SCI_EN)) - { - /* ACPI is not enabled; this interrupt cannot be for us */ - - return_VALUE (INTERRUPT_NOT_HANDLED); - } - - /* - * Fixed AcpiEvents: - * ------------- - * Check for and dispatch any Fixed AcpiEvents that have occurred - */ - InterruptHandled |= AcpiEvFixedEventDetect (); - - /* - * GPEs: - * ----- - * Check for and dispatch any GPEs that have occurred - */ - InterruptHandled |= AcpiEvGpeDetect (); - - return_VALUE (InterruptHandled); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvInstallSciHandler - * - * PARAMETERS: none - * - * RETURN: Status - * - * DESCRIPTION: Installs SCI handler. - * - ******************************************************************************/ - -UINT32 -AcpiEvInstallSciHandler (void) -{ - UINT32 Except = AE_OK; - - - FUNCTION_TRACE ("EvInstallSciHandler"); - - - Except = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT->SciInt, - AcpiEvSciHandler, - NULL); - - return_ACPI_STATUS (Except); -} - - -/****************************************************************************** - - * - * FUNCTION: AcpiEvRemoveSciHandler - * - * PARAMETERS: none - * - * RETURN: E_OK if handler uninstalled OK, E_ERROR if handler was not - * installed to begin with - * - * DESCRIPTION: Restores original status of all fixed event enable bits and - * removes SCI handler. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvRemoveSciHandler (void) -{ - FUNCTION_TRACE ("EvRemoveSciHandler"); - -#if 0 - /* TBD:[Investigate] Figure this out!! Disable all events first ??? */ - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (TMR_FIXED_EVENT)) - { - AcpiEventDisableEvent (TMR_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (GBL_FIXED_EVENT)) - { - AcpiEventDisableEvent (GBL_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (PWR_BTN_FIXED_EVENT)) - { - AcpiEventDisableEvent (PWR_BTN_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (SLP_BTN_FIXED_EVENT)) - { - AcpiEventDisableEvent (SLP_BTN_FIXED_EVENT); - } - - if (OriginalFixedEnableBitStatus ^ 1 << AcpiEventIndex (RTC_FIXED_EVENT)) - { - AcpiEventDisableEvent (RTC_FIXED_EVENT); - } - - OriginalFixedEnableBitStatus = 0; - -#endif - - AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT->SciInt, - AcpiEvSciHandler); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvSciCount - * - * PARAMETERS: Event Event that generated an SCI. - * - * RETURN: Number of SCI's for requested event since last time - * SciOccured() was called for this event. - * - * DESCRIPTION: Checks to see if SCI has been generated from requested source - * since the last time this function was called. - * - ******************************************************************************/ - -#ifdef ACPI_DEBUG - -UINT32 -AcpiEvSciCount ( - UINT32 Event) -{ - UINT32 Count; - - FUNCTION_TRACE ("EvSciCount"); - - /* - * Elements correspond to counts for TMR, NOT_USED, GBL, - * PWR_BTN, SLP_BTN, RTC, and GENERAL respectively. - */ - - if (Event >= NUM_FIXED_EVENTS) - { - Count = (UINT32) -1; - } - else - { - Count = AcpiGbl_EventCount[Event]; - } - - return_VALUE (Count); -} - -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiEvRestoreAcpiState - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Restore the original ACPI state of the machine - * - ******************************************************************************/ - -void -AcpiEvRestoreAcpiState (void) -{ - UINT32 Index; - - - FUNCTION_TRACE ("EvRestoreAcpiState"); - - - /* Restore the state of the chipset enable bits. */ - - if (AcpiGbl_RestoreAcpiChipset == TRUE) - { - /* Restore the fixed events */ - - if (AcpiHwRegisterRead (ACPI_MTX_LOCK, PM1_EN) != - AcpiGbl_Pm1EnableRegisterSave) - { - AcpiHwRegisterWrite (ACPI_MTX_LOCK, PM1_EN, - AcpiGbl_Pm1EnableRegisterSave); - } - - - /* Ensure that all status bits are clear */ - - AcpiHwClearAcpiStatus (); - - - /* Now restore the GPEs */ - - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); Index++) - { - if (AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index) != - AcpiGbl_Gpe0EnableRegisterSave[Index]) - { - AcpiHwRegisterWrite (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index, - AcpiGbl_Gpe0EnableRegisterSave[Index]); - } - } - - /* GPE 1 present? */ - - if (AcpiGbl_FADT->Gpe1BlkLen) - { - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); Index++) - { - if (AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index) != - AcpiGbl_Gpe1EnableRegisterSave[Index]) - { - AcpiHwRegisterWrite (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index, - AcpiGbl_Gpe1EnableRegisterSave[Index]); - } - } - } - - if (AcpiHwGetMode() != AcpiGbl_OriginalMode) - { - AcpiHwSetMode (AcpiGbl_OriginalMode); - } - } - - return_VOID; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvTerminate - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: free memory allocated for table storage. - * - ******************************************************************************/ - -void -AcpiEvTerminate (void) -{ - - FUNCTION_TRACE ("EvTerminate"); - - - /* - * Free global tables, etc. - */ - - if (AcpiGbl_GpeRegisters) - { - AcpiCmFree (AcpiGbl_GpeRegisters); - } - - if (AcpiGbl_GpeInfo) - { - AcpiCmFree (AcpiGbl_GpeInfo); - } - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evxface.c b/sys/contrib/dev/acpica/Subsystem/Events/evxface.c deleted file mode 100644 index 89f9b8a..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evxface.c +++ /dev/null @@ -1,769 +0,0 @@ -/****************************************************************************** - * - * Module Name: evxface - External interfaces for ACPI events - * $Revision: 101 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial prton of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVXFACE_C__ - -#include "acpi.h" -#include "achware.h" -#include "acnamesp.h" -#include "acevents.h" -#include "amlcode.h" -#include "acinterp.h" - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evxface") - - -/****************************************************************************** - * - * FUNCTION: AcpiInstallFixedEventHandler - * - * PARAMETERS: Event - Event type to enable. - * Handler - Pointer to the handler function for the - * event - * Context - Value passed to the handler on each GPE - * - * RETURN: Status - * - * DESCRIPTION: Saves the pointer to the handler function and then enables the - * event. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallFixedEventHandler ( - UINT32 Event, - FIXED_EVENT_HANDLER Handler, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiInstallFixedEventHandler"); - - - /* Sanity check the parameters. */ - - if (Event >= NUM_FIXED_EVENTS) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); - - /* Don't allow two handlers. */ - - if (NULL != AcpiGbl_FixedEventHandlers[Event].Handler) - { - Status = AE_EXIST; - goto Cleanup; - } - - - /* Install the handler before enabling the event - just in case... */ - - AcpiGbl_FixedEventHandlers[Event].Handler = Handler; - AcpiGbl_FixedEventHandlers[Event].Context = Context; - - Status = AcpiEnableEvent(Event, ACPI_EVENT_FIXED); - - if (!ACPI_SUCCESS(Status)) - { - DEBUG_PRINT (ACPI_WARN, ("Could not enable fixed event.\n")); - - /* Remove the handler */ - - AcpiGbl_FixedEventHandlers[Event].Handler = NULL; - AcpiGbl_FixedEventHandlers[Event].Context = NULL; - - Status = AE_ERROR; - goto Cleanup; - } - - DEBUG_PRINT (ACPI_INFO, - ("Enabled fixed event %X, Handler=%p\n", Event, Handler)); - - -Cleanup: - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiRemoveFixedEventHandler - * - * PARAMETERS: Event - Event type to disable. - * Handler - Address of the handler - * - * RETURN: Status - * - * DESCRIPTION: Disables the event and unregisters the event handler. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveFixedEventHandler ( - UINT32 Event, - FIXED_EVENT_HANDLER Handler) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiRemoveFixedEventHandler"); - - - /* Sanity check the parameters. */ - - if (Event >= NUM_FIXED_EVENTS) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); - - /* Disable the event before removing the handler - just in case... */ - - Status = AcpiDisableEvent(Event, ACPI_EVENT_FIXED); - - if (!ACPI_SUCCESS(Status)) - { - DEBUG_PRINT (ACPI_WARN, - ("Could not write to fixed event enable register.\n")); - - Status = AE_ERROR; - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); - } - - /* Remove the handler */ - - AcpiGbl_FixedEventHandlers[Event].Handler = NULL; - AcpiGbl_FixedEventHandlers[Event].Context = NULL; - - DEBUG_PRINT (ACPI_INFO, ("Disabled fixed event %X.\n", Event)); - - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiInstallNotifyHandler - * - * PARAMETERS: Device - The device for which notifies will be handled - * HandlerType - The type of handler: - * ACPI_SYSTEM_NOTIFY: SystemHandler (00-7f) - * ACPI_DEVICE_NOTIFY: DriverHandler (80-ff) - * Handler - Address of the handler - * Context - Value passed to the handler on each GPE - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for notifies on an ACPI device - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - NOTIFY_HANDLER Handler, - void *Context) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *NotifyObj; - ACPI_NAMESPACE_NODE *DeviceNode; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiInstallNotifyHandler"); - - - /* Parameter validation */ - - if ((!Handler) || - (HandlerType > ACPI_MAX_NOTIFY_HANDLER_TYPE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Convert and validate the device handle */ - - DeviceNode = AcpiNsConvertHandleToEntry (Device); - if (!DeviceNode) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* - * Root Object: - * ------------ - * Registering a notify handler on the root object indicates that the - * caller wishes to receive notifications for all objects. Note that - * only one <external> global handler can be regsitered (per notify type). - */ - if (Device == ACPI_ROOT_OBJECT) - { - /* Make sure the handler is not already installed */ - - if (((HandlerType == ACPI_SYSTEM_NOTIFY) && - AcpiGbl_SysNotify.Handler) || - ((HandlerType == ACPI_DEVICE_NOTIFY) && - AcpiGbl_DrvNotify.Handler)) - { - Status = AE_EXIST; - goto UnlockAndExit; - } - - if (HandlerType == ACPI_SYSTEM_NOTIFY) - { - AcpiGbl_SysNotify.Node = DeviceNode; - AcpiGbl_SysNotify.Handler = Handler; - AcpiGbl_SysNotify.Context = Context; - } - else /* ACPI_DEVICE_NOTIFY */ - { - AcpiGbl_DrvNotify.Node = DeviceNode; - AcpiGbl_DrvNotify.Handler = Handler; - AcpiGbl_DrvNotify.Context = Context; - } - - /* Global notify handler installed */ - } - - /* - * Other Objects: - * -------------- - * Caller will only receive notifications specific to the target object. - * Note that only certain object types can receive notifications. - */ - else { - /* - * These are the ONLY objects that can receive ACPI notifications - */ - if ((DeviceNode->Type != ACPI_TYPE_DEVICE) && - (DeviceNode->Type != ACPI_TYPE_PROCESSOR) && - (DeviceNode->Type != ACPI_TYPE_POWER) && - (DeviceNode->Type != ACPI_TYPE_THERMAL)) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) DeviceNode); - if (ObjDesc) - { - - /* Object exists - make sure there's no handler */ - - if (((HandlerType == ACPI_SYSTEM_NOTIFY) && - ObjDesc->Device.SysHandler) || - ((HandlerType == ACPI_DEVICE_NOTIFY) && - ObjDesc->Device.DrvHandler)) - { - Status = AE_EXIST; - goto UnlockAndExit; - } - } - - else - { - /* Create a new object */ - - ObjDesc = AcpiCmCreateInternalObject (DeviceNode->Type); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Attach new object to the Node */ - - Status = AcpiNsAttachObject (Device, ObjDesc, (UINT8) DeviceNode->Type); - - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - } - - /* Install the handler */ - - NotifyObj = AcpiCmCreateInternalObject (INTERNAL_TYPE_NOTIFY); - if (!NotifyObj) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - NotifyObj->NotifyHandler.Node = DeviceNode; - NotifyObj->NotifyHandler.Handler = Handler; - NotifyObj->NotifyHandler.Context = Context; - - - if (HandlerType == ACPI_SYSTEM_NOTIFY) - { - ObjDesc->Device.SysHandler = NotifyObj; - } - else /* ACPI_DEVICE_NOTIFY */ - { - ObjDesc->Device.DrvHandler = NotifyObj; - } - } - -UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiRemoveNotifyHandler - * - * PARAMETERS: Device - The device for which notifies will be handled - * HandlerType - The type of handler: - * ACPI_SYSTEM_NOTIFY: SystemHandler (00-7f) - * ACPI_DEVICE_NOTIFY: DriverHandler (80-ff) - * Handler - Address of the handler - * RETURN: Status - * - * DESCRIPTION: Remove a handler for notifies on an ACPI device - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - NOTIFY_HANDLER Handler) -{ - ACPI_OPERAND_OBJECT *NotifyObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *DeviceNode; - ACPI_STATUS Status = AE_OK; - - FUNCTION_TRACE ("AcpiRemoveNotifyHandler"); - - /* Parameter validation */ - - if ((!Handler) || - (HandlerType > ACPI_MAX_NOTIFY_HANDLER_TYPE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Convert and validate the device handle */ - - DeviceNode = AcpiNsConvertHandleToEntry (Device); - if (!DeviceNode) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* - * Root Object: - * ------------ - */ - if (Device == ACPI_ROOT_OBJECT) { - - DEBUG_PRINT(ACPI_INFO, ("Removing notify handler for ROOT object.\n")); - - if (((HandlerType == ACPI_SYSTEM_NOTIFY) && - !AcpiGbl_SysNotify.Handler) || - ((HandlerType == ACPI_DEVICE_NOTIFY) && - !AcpiGbl_DrvNotify.Handler)) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - if (HandlerType == ACPI_SYSTEM_NOTIFY) { - AcpiGbl_SysNotify.Node = NULL; - AcpiGbl_SysNotify.Handler = NULL; - AcpiGbl_SysNotify.Context = NULL; - } - else { - AcpiGbl_DrvNotify.Node = NULL; - AcpiGbl_DrvNotify.Handler = NULL; - AcpiGbl_DrvNotify.Context = NULL; - } - } - - /* - * Other Objects: - * -------------- - */ - else { - /* - * These are the ONLY objects that can receive ACPI notifications - */ - if ((DeviceNode->Type != ACPI_TYPE_DEVICE) && - (DeviceNode->Type != ACPI_TYPE_PROCESSOR) && - (DeviceNode->Type != ACPI_TYPE_POWER) && - (DeviceNode->Type != ACPI_TYPE_THERMAL)) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) DeviceNode); - if (!ObjDesc) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - /* Object exists - make sure there's an existing handler */ - - if (HandlerType == ACPI_SYSTEM_NOTIFY) - { - NotifyObj = ObjDesc->Device.SysHandler; - } - else - { - NotifyObj = ObjDesc->Device.DrvHandler; - } - - if ((!NotifyObj) || - (NotifyObj->NotifyHandler.Handler != Handler)) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Remove the handler */ - - if (HandlerType == ACPI_SYSTEM_NOTIFY) - { - ObjDesc->Device.SysHandler = NULL; - } - else - { - ObjDesc->Device.DrvHandler = NULL; - } - - AcpiCmRemoveReference (NotifyObj); - } - - -UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiInstallGpeHandler - * - * PARAMETERS: GpeNumber - The GPE number. The numbering scheme is - * bank 0 first, then bank 1. - * Type - Whether this GPE should be treated as an - * edge- or level-triggered interrupt. - * Handler - Address of the handler - * Context - Value passed to the handler on each GPE - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for a General Purpose Event. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallGpeHandler ( - UINT32 GpeNumber, - UINT32 Type, - GPE_HANDLER Handler, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - - FUNCTION_TRACE ("AcpiInstallGpeHandler"); - - /* Parameter validation */ - - if (!Handler || (GpeNumber > NUM_GPE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Ensure that we have a valid GPE number */ - - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); - - /* Make sure that there isn't a handler there already */ - - if (AcpiGbl_GpeInfo[GpeNumber].Handler) - { - Status = AE_EXIST; - goto Cleanup; - } - - /* Install the handler */ - - AcpiGbl_GpeInfo[GpeNumber].Handler = Handler; - AcpiGbl_GpeInfo[GpeNumber].Context = Context; - AcpiGbl_GpeInfo[GpeNumber].Type = (UINT8) Type; - - /* Clear the GPE (of stale events), the enable it */ - - AcpiHwClearGpe (GpeNumber); - AcpiHwEnableGpe (GpeNumber); - -Cleanup: - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiRemoveGpeHandler - * - * PARAMETERS: GpeNumber - The event to remove a handler - * Handler - Address of the handler - * - * RETURN: Status - * - * DESCRIPTION: Remove a handler for a General Purpose AcpiEvent. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveGpeHandler ( - UINT32 GpeNumber, - GPE_HANDLER Handler) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiRemoveGpeHandler"); - - - /* Parameter validation */ - - if (!Handler || (GpeNumber > NUM_GPE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Ensure that we have a valid GPE number */ - - if (AcpiGbl_GpeValid[GpeNumber] == ACPI_GPE_INVALID) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Disable the GPE before removing the handler */ - - AcpiHwDisableGpe (GpeNumber); - - AcpiCmAcquireMutex (ACPI_MTX_EVENTS); - - /* Make sure that the installed handler is the same */ - - if (AcpiGbl_GpeInfo[GpeNumber].Handler != Handler) - { - AcpiHwEnableGpe (GpeNumber); - Status = AE_BAD_PARAMETER; - goto Cleanup; - } - - /* Remove the handler */ - - AcpiGbl_GpeInfo[GpeNumber].Handler = NULL; - AcpiGbl_GpeInfo[GpeNumber].Context = NULL; - -Cleanup: - AcpiCmReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiAcquireGlobalLock - * - * PARAMETERS: Timeout - How long the caller is willing to wait - * OutHandle - A handle to the lock if acquired - * - * RETURN: Status - * - * DESCRIPTION: Acquire the ACPI Global Lock - * - ******************************************************************************/ -ACPI_STATUS -AcpiAcquireGlobalLock ( - void) -{ - ACPI_STATUS Status; - - - AcpiAmlEnterInterpreter (); - - /* - * TBD: [Restructure] add timeout param to internal interface, and - * perhaps INTERPRETER_LOCKED - */ - - Status = AcpiEvAcquireGlobalLock (); - AcpiAmlExitInterpreter (); - - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiReleaseGlobalLock - * - * PARAMETERS: Handle - Returned from AcpiAcquireGlobalLock - * - * RETURN: Status - * - * DESCRIPTION: Release the ACPI Global Lock - * - ******************************************************************************/ - -ACPI_STATUS -AcpiReleaseGlobalLock ( - void) -{ - AcpiEvReleaseGlobalLock (); - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evxfevnt.c b/sys/contrib/dev/acpica/Subsystem/Events/evxfevnt.c deleted file mode 100644 index 463985d..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evxfevnt.c +++ /dev/null @@ -1,624 +0,0 @@ -/****************************************************************************** - * - * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable - * $Revision: 28 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial prton of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVXFEVNT_C__ - -#include "acpi.h" -#include "achware.h" -#include "acnamesp.h" -#include "acevents.h" -#include "amlcode.h" -#include "acinterp.h" - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evxfevnt") - - -/************************************************************************** - * - * FUNCTION: AcpiEnable - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Transfers the system into ACPI mode. - * - *************************************************************************/ - -ACPI_STATUS -AcpiEnable (void) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiEnable"); - - - /* Make sure we've got ACPI tables */ - - if (!AcpiGbl_DSDT) - { - DEBUG_PRINT (ACPI_WARN, ("No ACPI tables present!\n")); - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* Make sure the BIOS supports ACPI mode */ - - if (SYS_MODE_LEGACY == AcpiHwGetModeCapabilities()) - { - DEBUG_PRINT (ACPI_WARN, - ("AcpiEnable: Only legacy mode supported!\n")); - return_ACPI_STATUS (AE_ERROR); - } - - /* Transition to ACPI mode */ - - Status = AcpiHwSetMode (SYS_MODE_ACPI); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_FATAL, ("Could not transition to ACPI mode.\n")); - return_ACPI_STATUS (Status); - } - - DEBUG_PRINT (ACPI_OK, ("Transition to ACPI mode successful\n")); - - return_ACPI_STATUS (Status); -} - - -/************************************************************************** - * - * FUNCTION: AcpiDisable - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Returns the system to original ACPI/legacy mode, and - * uninstalls the SCI interrupt handler. - * - *************************************************************************/ - -ACPI_STATUS -AcpiDisable (void) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiDisable"); - - - /* Restore original mode */ - - Status = AcpiHwSetMode (AcpiGbl_OriginalMode); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, ("Unable to transition to original mode")); - return_ACPI_STATUS (Status); - } - - /* Unload the SCI interrupt handler */ - - AcpiEvRemoveSciHandler (); - AcpiEvRestoreAcpiState (); - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEnableEvent - * - * PARAMETERS: Event - The fixed event or GPE to be enabled - * Type - The type of event - * - * RETURN: Status - * - * DESCRIPTION: Enable an ACPI event (fixed and general purpose) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnableEvent ( - UINT32 Event, - UINT32 Type) -{ - ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - - - FUNCTION_TRACE ("AcpiEnableEvent"); - - - /* The Type must be either Fixed AcpiEvent or GPE */ - - switch (Type) - { - - case ACPI_EVENT_FIXED: - - /* Decode the Fixed AcpiEvent */ - - switch (Event) - { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_EN; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_EN; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_EN; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_EN; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_EN; - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - break; - } - - /* - * Enable the requested fixed event (by writing a one to the - * enable register bit) - */ - - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1); - - if (1 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId)) - { - DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit clear when it should be set,\n")); - return_ACPI_STATUS (AE_ERROR); - } - - break; - - - case ACPI_EVENT_GPE: - - /* Ensure that we have a valid GPE number */ - - if ((Event >= NUM_GPE) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Enable the requested GPE number */ - - AcpiHwEnableGpe (Event); - break; - - - default: - - Status = AE_BAD_PARAMETER; - } - - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiDisableEvent - * - * PARAMETERS: Event - The fixed event or GPE to be enabled - * Type - The type of event - * - * RETURN: Status - * - * DESCRIPTION: Disable an ACPI event (fixed and general purpose) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDisableEvent ( - UINT32 Event, - UINT32 Type) -{ - ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - - - FUNCTION_TRACE ("AcpiDisableEvent"); - - - /* The Type must be either Fixed AcpiEvent or GPE */ - - switch (Type) - { - - case ACPI_EVENT_FIXED: - - /* Decode the Fixed AcpiEvent */ - - switch (Event) - { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_EN; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_EN; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_EN; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_EN; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_EN; - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - break; - } - - /* - * Disable the requested fixed event (by writing a zero to the - * enable register bit) - */ - - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 0); - - if (0 != AcpiHwRegisterBitAccess(ACPI_READ, ACPI_MTX_LOCK, RegisterId)) - { - DEBUG_PRINT(ACPI_ERROR, ("Fixed event bit set when it should be clear,\n")); - return_ACPI_STATUS (AE_ERROR); - } - - break; - - - case ACPI_EVENT_GPE: - - /* Ensure that we have a valid GPE number */ - - if ((Event >= NUM_GPE) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Disable the requested GPE number */ - - AcpiHwDisableGpe (Event); - break; - - - default: - Status = AE_BAD_PARAMETER; - } - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiClearEvent - * - * PARAMETERS: Event - The fixed event or GPE to be cleared - * Type - The type of event - * - * RETURN: Status - * - * DESCRIPTION: Clear an ACPI event (fixed and general purpose) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiClearEvent ( - UINT32 Event, - UINT32 Type) -{ - ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - - - FUNCTION_TRACE ("AcpiClearEvent"); - - - /* The Type must be either Fixed AcpiEvent or GPE */ - - switch (Type) - { - - case ACPI_EVENT_FIXED: - - /* Decode the Fixed AcpiEvent */ - - switch (Event) - { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_STS; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_STS; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_STS; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_STS; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_STS; - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - break; - } - - /* - * Clear the requested fixed event (By writing a one to the - * status register bit) - */ - - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, RegisterId, 1); - break; - - - case ACPI_EVENT_GPE: - - /* Ensure that we have a valid GPE number */ - - if ((Event >= NUM_GPE) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - AcpiHwClearGpe (Event); - break; - - - default: - - Status = AE_BAD_PARAMETER; - } - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiGetEventStatus - * - * PARAMETERS: Event - The fixed event or GPE - * Type - The type of event - * Status - Where the current status of the event will - * be returned - * - * RETURN: Status - * - * DESCRIPTION: Obtains and returns the current status of the event - * - ******************************************************************************/ - - -ACPI_STATUS -AcpiGetEventStatus ( - UINT32 Event, - UINT32 Type, - ACPI_EVENT_STATUS *EventStatus) -{ - ACPI_STATUS Status = AE_OK; - UINT32 RegisterId; - - - FUNCTION_TRACE ("AcpiGetEventStatus"); - - - if (!EventStatus) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* The Type must be either Fixed AcpiEvent or GPE */ - - switch (Type) - { - - case ACPI_EVENT_FIXED: - - /* Decode the Fixed AcpiEvent */ - - switch (Event) - { - case ACPI_EVENT_PMTIMER: - RegisterId = TMR_STS; - break; - - case ACPI_EVENT_GLOBAL: - RegisterId = GBL_STS; - break; - - case ACPI_EVENT_POWER_BUTTON: - RegisterId = PWRBTN_STS; - break; - - case ACPI_EVENT_SLEEP_BUTTON: - RegisterId = SLPBTN_STS; - break; - - case ACPI_EVENT_RTC: - RegisterId = RTC_STS; - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - break; - } - - /* Get the status of the requested fixed event */ - - *EventStatus = AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, RegisterId); - break; - - - case ACPI_EVENT_GPE: - - /* Ensure that we have a valid GPE number */ - - if ((Event >= NUM_GPE) || - (AcpiGbl_GpeValid[Event] == ACPI_GPE_INVALID)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Obtain status on the requested GPE number */ - - AcpiHwGetGpeStatus (Event, EventStatus); - break; - - - default: - Status = AE_BAD_PARAMETER; - } - - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Events/evxfregn.c b/sys/contrib/dev/acpica/Subsystem/Events/evxfregn.c deleted file mode 100644 index 7c05f50..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Events/evxfregn.c +++ /dev/null @@ -1,515 +0,0 @@ -/****************************************************************************** - * - * Module Name: evxfregn - External Interfaces, ACPI Operation Regions and - * Address Spaces. - * $Revision: 27 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial prton of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EVXFREGN_C__ - -#include "acpi.h" -#include "achware.h" -#include "acnamesp.h" -#include "acevents.h" -#include "amlcode.h" -#include "acinterp.h" - -#define _COMPONENT EVENT_HANDLING - MODULE_NAME ("evxfregn") - - -/****************************************************************************** - * - * FUNCTION: AcpiInstallAddressSpaceHandler - * - * PARAMETERS: Device - Handle for the device - * SpaceId - The address space ID - * Handler - Address of the handler - * Setup - Address of the setup function - * Context - Value passed to the handler on each access - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for all OpRegions of a given SpaceId. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler, - ADDRESS_SPACE_SETUP Setup, - void *Context) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status = AE_OK; - OBJECT_TYPE_INTERNAL Type; - UINT16 Flags = 0; - - - FUNCTION_TRACE ("AcpiInstallAddressSpaceHandler"); - - /* Parameter validation */ - - if ((!Device) || - ((!Handler) && (Handler != ACPI_DEFAULT_HANDLER)) || - (SpaceId > ACPI_MAX_ADDRESS_SPACE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Convert and validate the device handle */ - - Node = AcpiNsConvertHandleToEntry (Device); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* - * This registration is valid for only the types below - * and the root. This is where the default handlers - * get placed. - */ - - if ((Node->Type != ACPI_TYPE_DEVICE) && - (Node->Type != ACPI_TYPE_PROCESSOR) && - (Node->Type != ACPI_TYPE_THERMAL) && - (Node != AcpiGbl_RootNode)) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - if (Handler == ACPI_DEFAULT_HANDLER) - { - Flags = ADDR_HANDLER_DEFAULT_INSTALLED; - - switch (SpaceId) - { - case ADDRESS_SPACE_SYSTEM_MEMORY: - Handler = AcpiAmlSystemMemorySpaceHandler; - Setup = AcpiEvSystemMemoryRegionSetup; - break; - - case ADDRESS_SPACE_SYSTEM_IO: - Handler = AcpiAmlSystemIoSpaceHandler; - Setup = AcpiEvIoSpaceRegionSetup; - break; - - case ADDRESS_SPACE_PCI_CONFIG: - Handler = AcpiAmlPciConfigSpaceHandler; - Setup = AcpiEvPciConfigRegionSetup; - break; - - default: - Status = AE_NOT_EXIST; - goto UnlockAndExit; - break; - } - } - - /* - * If the caller hasn't specified a setup routine, use the default - */ - if (!Setup) - { - Setup = AcpiEvDefaultRegionSetup; - } - - /* - * Check for an existing internal object - */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); - if (ObjDesc) - { - /* - * The object exists. - * Make sure the handler is not already installed. - */ - - /* check the address handler the user requested */ - - HandlerObj = ObjDesc->Device.AddrHandler; - while (HandlerObj) - { - /* - * We have an Address handler, see if user requested this - * address space. - */ - if(HandlerObj->AddrHandler.SpaceId == SpaceId) - { - Status = AE_EXIST; - goto UnlockAndExit; - } - - /* - * Move through the linked list of handlers - */ - HandlerObj = HandlerObj->AddrHandler.Next; - } - } - - else - { - DEBUG_PRINT (TRACE_OPREGION, - ("Creating object on Device %p while installing handler\n", - Node)); - - /* ObjDesc does not exist, create one */ - - if (Node->Type == ACPI_TYPE_ANY) - { - Type = ACPI_TYPE_DEVICE; - } - - else - { - Type = Node->Type; - } - - ObjDesc = AcpiCmCreateInternalObject (Type); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Init new descriptor */ - - ObjDesc->Common.Type = (UINT8) Type; - - /* Attach the new object to the Node */ - - Status = AcpiNsAttachObject (Node, ObjDesc, (UINT8) Type); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - goto UnlockAndExit; - } - } - - DEBUG_PRINT (TRACE_OPREGION, - ("Installing address handler for region %s(%X) on Device %p(%p)\n", - AcpiCmGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); - - /* - * Now we can install the handler - * - * At this point we know that there is no existing handler. - * So, we just allocate the object for the handler and link it - * into the list. - */ - HandlerObj = AcpiCmCreateInternalObject (INTERNAL_TYPE_ADDRESS_HANDLER); - if (!HandlerObj) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - HandlerObj->AddrHandler.SpaceId = (UINT8) SpaceId; - HandlerObj->AddrHandler.Hflags = Flags; - HandlerObj->AddrHandler.Next = ObjDesc->Device.AddrHandler; - HandlerObj->AddrHandler.RegionList = NULL; - HandlerObj->AddrHandler.Node = Node; - HandlerObj->AddrHandler.Handler = Handler; - HandlerObj->AddrHandler.Context = Context; - HandlerObj->AddrHandler.Setup = Setup; - - /* - * Now walk the namespace finding all of the regions this - * handler will manage. - * - * We start at the device and search the branch toward - * the leaf nodes until either the leaf is encountered or - * a device is detected that has an address handler of the - * same type. - * - * In either case we back up and search down the remainder - * of the branch - */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Device, - ACPI_UINT32_MAX, NS_WALK_UNLOCK, - AcpiEvAddrHandlerHelper, - HandlerObj, NULL); - - /* - * Place this handler 1st on the list - */ - - HandlerObj->Common.ReferenceCount = - (UINT16) (HandlerObj->Common.ReferenceCount + - ObjDesc->Common.ReferenceCount - 1); - ObjDesc->Device.AddrHandler = HandlerObj; - - -UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiRemoveAddressSpaceHandler - * - * PARAMETERS: SpaceId - The address space ID - * Handler - Address of the handler - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for accesses on an Operation Region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *RegionObj; - ACPI_OPERAND_OBJECT **LastObjPtr; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiRemoveAddressSpaceHandler"); - - - /* Parameter validation */ - - if ((!Device) || - ((!Handler) && (Handler != ACPI_DEFAULT_HANDLER)) || - (SpaceId > ACPI_MAX_ADDRESS_SPACE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Convert and validate the device handle */ - - Node = AcpiNsConvertHandleToEntry (Device); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - - /* Make sure the internal object exists */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); - if (!ObjDesc) - { - /* - * The object DNE. - */ - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - /* - * find the address handler the user requested - */ - - HandlerObj = ObjDesc->Device.AddrHandler; - LastObjPtr = &ObjDesc->Device.AddrHandler; - while (HandlerObj) - { - /* - * We have a handler, see if user requested this one - */ - - if(HandlerObj->AddrHandler.SpaceId == SpaceId) - { - /* - * Got it, first dereference this in the Regions - */ - DEBUG_PRINT (TRACE_OPREGION, - ("Removing address handler %p(%p) for region %s on Device %p(%p)\n", - HandlerObj, Handler, AcpiCmGetRegionName (SpaceId), - Node, ObjDesc)); - - RegionObj = HandlerObj->AddrHandler.RegionList; - - /* Walk the handler's region list */ - - while (RegionObj) - { - /* - * First disassociate the handler from the region. - * - * NOTE: this doesn't mean that the region goes away - * The region is just inaccessible as indicated to - * the _REG method - */ - AcpiEvDisassociateRegionFromHandler(RegionObj, FALSE); - - /* - * Walk the list, since we took the first region and it - * was removed from the list by the dissassociate call - * we just get the first item on the list again - */ - RegionObj = HandlerObj->AddrHandler.RegionList; - - } - - /* - * Remove this Handler object from the list - */ - *LastObjPtr = HandlerObj->AddrHandler.Next; - - /* - * Now we can delete the handler object - */ - AcpiCmRemoveReference (HandlerObj); - AcpiCmRemoveReference (HandlerObj); - - goto UnlockAndExit; - } - - /* - * Move through the linked list of handlers - */ - LastObjPtr = &HandlerObj->AddrHandler.Next; - HandlerObj = HandlerObj->AddrHandler.Next; - } - - - /* - * The handler does not exist - */ - DEBUG_PRINT (TRACE_OPREGION, - ("Unable to remove address handler %p for %s(%X), DevNode %p, obj %p\n", - Handler, AcpiCmGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); - - Status = AE_NOT_EXIST; - - -UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Hardware/hwacpi.c b/sys/contrib/dev/acpica/Subsystem/Hardware/hwacpi.c deleted file mode 100644 index d8b5f10..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Hardware/hwacpi.c +++ /dev/null @@ -1,446 +0,0 @@ - -/****************************************************************************** - * - * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface - * $Revision: 36 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __HWACPI_C__ - -#include "acpi.h" -#include "achware.h" - - -#define _COMPONENT HARDWARE - MODULE_NAME ("hwacpi") - - -/****************************************************************************** - * - * FUNCTION: AcpiHwInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Initialize and validate various ACPI registers - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwInitialize ( - void) -{ - ACPI_STATUS Status = AE_OK; - UINT32 Index; - - - FUNCTION_TRACE ("HwInitialize"); - - - /* We must have the ACPI tables by the time we get here */ - - if (!AcpiGbl_FADT) - { - AcpiGbl_RestoreAcpiChipset = FALSE; - - DEBUG_PRINT (ACPI_ERROR, ("HwInitialize: No FADT!\n")); - - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* Must support *some* mode! */ -/* - if (!(SystemFlags & SYS_MODES_MASK)) - { - RestoreAcpiChipset = FALSE; - - DEBUG_PRINT (ACPI_ERROR, - ("CmHardwareInitialize: Supported modes uninitialized!\n")); - return_ACPI_STATUS (AE_ERROR); - } - -*/ - - - switch (AcpiGbl_SystemFlags & SYS_MODES_MASK) - { - /* Identify current ACPI/legacy mode */ - - case (SYS_MODE_ACPI): - - AcpiGbl_OriginalMode = SYS_MODE_ACPI; - DEBUG_PRINT (ACPI_INFO, ("System supports ACPI mode only.\n")); - break; - - - case (SYS_MODE_LEGACY): - - AcpiGbl_OriginalMode = SYS_MODE_LEGACY; - DEBUG_PRINT (ACPI_INFO, - ("Tables loaded from buffer, hardware assumed to support LEGACY mode only.\n")); - break; - - - case (SYS_MODE_ACPI | SYS_MODE_LEGACY): - - if (AcpiHwGetMode () == SYS_MODE_ACPI) - { - AcpiGbl_OriginalMode = SYS_MODE_ACPI; - } - else - { - AcpiGbl_OriginalMode = SYS_MODE_LEGACY; - } - - DEBUG_PRINT (ACPI_INFO, - ("System supports both ACPI and LEGACY modes.\n")); - - DEBUG_PRINT (ACPI_INFO, - ("System is currently in %s mode.\n", - (AcpiGbl_OriginalMode == SYS_MODE_ACPI) ? "ACPI" : "LEGACY")); - break; - } - - - if (AcpiGbl_SystemFlags & SYS_MODE_ACPI) - { - /* Target system supports ACPI mode */ - - /* - * The purpose of this code is to save the initial state - * of the ACPI event enable registers. An exit function will be - * registered which will restore this state when the application - * exits. The exit function will also clear all of the ACPI event - * status bits prior to restoring the original mode. - * - * The location of the PM1aEvtBlk enable registers is defined as the - * base of PM1aEvtBlk + DIV_2(PM1aEvtBlkLength). Since the spec further - * fully defines the PM1aEvtBlk to be a total of 4 bytes, the offset - * for the enable registers is always 2 from the base. It is hard - * coded here. If this changes in the spec, this code will need to - * be modified. The PM1bEvtBlk behaves as expected. - */ - - AcpiGbl_Pm1EnableRegisterSave = (UINT16) AcpiHwRegisterRead (ACPI_MTX_LOCK, PM1_EN); - - - /* - * The GPEs behave similarly, except that the length of the register - * block is not fixed, so the buffer must be allocated with malloc - */ - - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) && - AcpiGbl_FADT->Gpe0BlkLen) - { - /* GPE0 specified in FADT */ - - AcpiGbl_Gpe0EnableRegisterSave = - AcpiCmAllocate (DIV_2 (AcpiGbl_FADT->Gpe0BlkLen)); - if (!AcpiGbl_Gpe0EnableRegisterSave) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Save state of GPE0 enable bits */ - - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); Index++) - { - AcpiGbl_Gpe0EnableRegisterSave[Index] = - (UINT8) AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE0_EN_BLOCK | Index); - } - } - - else - { - AcpiGbl_Gpe0EnableRegisterSave = NULL; - } - - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) && - AcpiGbl_FADT->Gpe1BlkLen) - { - /* GPE1 defined */ - - AcpiGbl_Gpe1EnableRegisterSave = - AcpiCmAllocate (DIV_2 (AcpiGbl_FADT->Gpe1BlkLen)); - if (!AcpiGbl_Gpe1EnableRegisterSave) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* save state of GPE1 enable bits */ - - for (Index = 0; Index < DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); Index++) - { - AcpiGbl_Gpe1EnableRegisterSave[Index] = - (UINT8) AcpiHwRegisterRead (ACPI_MTX_LOCK, GPE1_EN_BLOCK | Index); - } - } - - else - { - AcpiGbl_Gpe1EnableRegisterSave = NULL; - } - } - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwSetMode - * - * PARAMETERS: Mode - SYS_MODE_ACPI or SYS_MODE_LEGACY - * - * RETURN: Status - * - * DESCRIPTION: Transitions the system into the requested mode or does nothing - * if the system is already in that mode. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwSetMode ( - UINT32 Mode) -{ - - ACPI_STATUS Status = AE_ERROR; - - FUNCTION_TRACE ("HwSetMode"); - - - if (Mode == SYS_MODE_ACPI) - { - /* BIOS should have disabled ALL fixed and GP events */ - - AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->AcpiEnable); - DEBUG_PRINT (ACPI_INFO, ("Attempting to enable ACPI mode\n")); - } - - else if (Mode == SYS_MODE_LEGACY) - { - /* - * BIOS should clear all fixed status bits and restore fixed event - * enable bits to default - */ - - AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->AcpiDisable); - DEBUG_PRINT (ACPI_INFO, - ("Attempting to enable Legacy (non-ACPI) mode\n")); - } - - if (AcpiHwGetMode () == Mode) - { - DEBUG_PRINT (ACPI_INFO, ("Mode %X successfully enabled\n", Mode)); - Status = AE_OK; - } - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwGetMode - * - * PARAMETERS: none - * - * RETURN: SYS_MODE_ACPI or SYS_MODE_LEGACY - * - * DESCRIPTION: Return current operating state of system. Determined by - * querying the SCI_EN bit. - * - ******************************************************************************/ - -UINT32 -AcpiHwGetMode (void) -{ - - FUNCTION_TRACE ("HwGetMode"); - - - if (AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, SCI_EN)) - { - return_VALUE (SYS_MODE_ACPI); - } - else - { - return_VALUE (SYS_MODE_LEGACY); - } -} - -/****************************************************************************** - * - * FUNCTION: AcpiHwGetModeCapabilities - * - * PARAMETERS: none - * - * RETURN: logical OR of SYS_MODE_ACPI and SYS_MODE_LEGACY determined at initial - * system state. - * - * DESCRIPTION: Returns capablities of system - * - ******************************************************************************/ - -UINT32 -AcpiHwGetModeCapabilities (void) -{ - - FUNCTION_TRACE ("HwGetModeCapabilities"); - - - if (!(AcpiGbl_SystemFlags & SYS_MODES_MASK)) - { - if (AcpiHwGetMode () == SYS_MODE_LEGACY) - { - /* - * Assume that if this call is being made, AcpiInit has been called - * and ACPI support has been established by the presence of the - * tables. Therefore since we're in SYS_MODE_LEGACY, the system - * must support both modes - */ - - AcpiGbl_SystemFlags |= (SYS_MODE_ACPI | SYS_MODE_LEGACY); - } - - else - { - /* TBD: [Investigate] !!! this may be unsafe... */ - /* - * system is is ACPI mode, so try to switch back to LEGACY to see if - * it is supported - */ - AcpiHwSetMode (SYS_MODE_LEGACY); - - if (AcpiHwGetMode () == SYS_MODE_LEGACY) - { - /* Now in SYS_MODE_LEGACY, so both are supported */ - - AcpiGbl_SystemFlags |= (SYS_MODE_ACPI | SYS_MODE_LEGACY); - AcpiHwSetMode (SYS_MODE_ACPI); - } - - else - { - /* Still in SYS_MODE_ACPI so this must be an ACPI only system */ - - AcpiGbl_SystemFlags |= SYS_MODE_ACPI; - } - } - } - - return_VALUE (AcpiGbl_SystemFlags & SYS_MODES_MASK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Hardware/hwcpu32.c b/sys/contrib/dev/acpica/Subsystem/Hardware/hwcpu32.c deleted file mode 100644 index 8401061..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Hardware/hwcpu32.c +++ /dev/null @@ -1,837 +0,0 @@ -/****************************************************************************** - * - * Name: hwcpu32.c - CPU support for IA32 (Throttling, CxStates) - * $Revision: 40 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acnamesp.h" -#include "achware.h" - -#define _COMPONENT HARDWARE - MODULE_NAME ("Hwcpu32") - - -#define BIT_4 0x10 /* TBD: [investigate] is this correct? */ - - -/**************************************************************************** - * - * FUNCTION: AcpiHwEnterC1 - * - * PARAMETERS: PblkAddress - Address of the processor control block - * PmTimerTicks - Number of PM timer ticks elapsed while asleep - * - * RETURN: Function status. - * - * DESCRIPTION: Set C1 state on IA32 processor (halt) - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwEnterC1( - ACPI_IO_ADDRESS PblkAddress, - UINT32 *PmTimerTicks) -{ - UINT32 Timer = 0; - - - if (!PmTimerTicks) - { - /* - * Enter C1: - * --------- - */ - enable(); - halt(); - *PmTimerTicks = ACPI_UINT32_MAX; - } - else - { - Timer = AcpiHwPmtTicks (); - - /* - * Enter C1: - * --------- - */ - enable (); - halt (); - - /* - * Compute Time in C1: - * ------------------- - */ - Timer = AcpiHwPmtTicks () - Timer; - - *PmTimerTicks = Timer; - } - - return (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiHwEnterC2 - * - * PARAMETERS: PblkAddress - Address of the processor control block - * PmTimerTicks - Number of PM timer ticks elapsed while asleep - * - * RETURN: <none> - * - * DESCRIPTION: Set C2 state on IA32 processor - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwEnterC2( - ACPI_IO_ADDRESS PblkAddress, - UINT32 *PmTimerTicks) -{ - UINT32 Timer = 0; - - - if (!PblkAddress || !PmTimerTicks) - { - return (AE_BAD_PARAMETER); - } - - /* - * Disable interrupts before all C2/C3 transitions. - */ - disable (); - - Timer = AcpiHwPmtTicks (); - - /* - * Enter C2: - * --------- - * Read from the P_LVL2 (P_BLK+4) register to invoke a C2 transition. - */ - AcpiOsIn8 ((ACPI_IO_ADDRESS) (PblkAddress + 4)); - - /* - * Perform Dummy Op: - * ----------------- - * We have to do something useless after reading LVL2 because chipsets - * cannot guarantee that STPCLK# gets asserted in time to freeze execution. - */ - AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL); - - /* - * Compute Time in C2: - * ------------------- - */ - Timer = AcpiHwPmtTicks () - Timer; - - *PmTimerTicks = Timer; - - /* - * Re-enable interrupts after coming out of C2/C3. - */ - enable (); - - return (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiHwEnterC3 - * - * PARAMETERS: PblkAddress - Address of the processor control block - * PmTimerTicks - Number of PM timer ticks elapsed while asleep - * - * RETURN: Status of function - * - * DESCRIPTION: Set C3 state on IA32 processor (UP only, cache coherency via - * disabling bus mastering) - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwEnterC3( - ACPI_IO_ADDRESS PblkAddress, - UINT32 *PmTimerTicks) -{ - UINT32 Timer = 0; - UINT32 BusMasterStatus = 0; - - - if (!PblkAddress || !PmTimerTicks) - { - return (AE_BAD_PARAMETER); - } - - /* - * Check the BM_STS bit, if it is set, do not enter C3 - * but clear the bit (with a write) and exit, telling - * the calling module that we spent zero time in C3. - * If bus mastering continues, this action should - * eventually cause a demotion to C2 - */ - if (1 == (BusMasterStatus = - AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, BM_STS))) - { - /* - * Clear the BM_STS bit by setting it. - */ - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_STS, 1); - *PmTimerTicks = 0; - return (AE_OK); - } - - /* - * Disable interrupts before all C2/C3 transitions. - */ - disable(); - - /* - * Disable Bus Mastering: - * ---------------------- - * Set the PM2_CNT.ARB_DIS bit (bit #0), preserving all other bits. - */ - AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, ARB_DIS, 1); - - /* - * Get the timer base before entering C state - */ - Timer = AcpiHwPmtTicks (); - - /* - * Enter C3: - * --------- - * Read from the P_LVL3 (P_BLK+5) register to invoke a C3 transition. - */ - AcpiOsIn8 ((ACPI_IO_ADDRESS)(PblkAddress + 5)); - - /* - * Perform Dummy Op: - * ----------------- - * We have to do something useless after reading LVL3 because chipsets - * cannot guarantee that STPCLK# gets asserted in time to freeze execution. - */ - AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL); - /* - * Immediately compute the time in the C state - */ - Timer = AcpiHwPmtTicks() - Timer; - - /* - * Re-Enable Bus Mastering: - * ------------------------ - * Clear the PM2_CNT.ARB_DIS bit (bit #0), preserving all other bits. - */ - AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, ARB_DIS, 0); - - /* TBD: [Unhandled]: Support 24-bit timers (this algorithm assumes 32-bit) */ - - *PmTimerTicks = Timer; - - /* - * Re-enable interrupts after coming out of C2/C3. - */ - enable(); - - return (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiHwEnterCx - * - * PARAMETERS: ProcessorHandle - handle of the processor - * - * RETURN: Status of function - * - * DESCRIPTION: Invoke the currently active processor Cx handler to put this - * processor to sleep. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwEnterCx ( - ACPI_IO_ADDRESS PblkAddress, - UINT32 *PmTimerTicks) -{ - - if (!AcpiHwCxHandlers[AcpiHwActiveCxState]) - { - return (AE_SUPPORT); - } - - return (AcpiHwCxHandlers[AcpiHwActiveCxState] (PblkAddress, PmTimerTicks)); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiHwSetCx - * - * PARAMETERS: State - value (1-3) of the Cx state to 'make active' - * - * RETURN: Function status. - * - * DESCRIPTION: Sets the state to use during calls to AcpiHwEnterCx(). - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwSetCx ( - UINT32 CxState) -{ - /* - * Supported State? - * ---------------- - */ - if ((CxState < 1) || (CxState > 3)) - { - return (AE_BAD_PARAMETER); - } - - if (!AcpiHwCxHandlers[CxState]) - { - return (AE_SUPPORT); - } - - /* - * New Cx State? - * ------------- - * We only care when moving from one state to another... - */ - if (AcpiHwActiveCxState == CxState) - { - return (AE_OK); - } - - /* - * Prepare to Use New State: - * ------------------------- - * If the new CxState is C3, the BM_RLD bit must be set to allow - * the generation of a bus master requets to cause the processor - * in the C3 state to transition to the C0 state. - */ - switch (CxState) - { - case 3: - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_RLD, 1); - break; - } - - /* - * Clean up from Old State: - * ------------------------ - * If the old CxState was C3, the BM_RLD bit is reset. When the - * bit is reset, the generation of a bus master request does not - * effect any processor in the C3 state. - */ - switch (AcpiHwActiveCxState) - { - case 3: - AcpiHwRegisterBitAccess (ACPI_WRITE, ACPI_MTX_LOCK, BM_RLD, 0); - break; - } - - /* - * Enable: - * ------- - */ - AcpiHwActiveCxState = CxState; - - return (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiHwGetCxInfo - * - * PARAMETERS: CxStates - Information (latencies) on all Cx states - * - * RETURN: Status of function - * - * DESCRIPTION: This function is called both to initialize Cx handling - * and retrieve the current Cx information (latency values). - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwGetCxInfo ( - UINT32 CxStates[]) -{ - BOOLEAN SMP_system = FALSE; - - - FUNCTION_TRACE("HwGetCxInfo"); - - - if (!CxStates) - { - return_ACPI_STATUS(AE_BAD_PARAMETER); - } - - /* - * TBD: [Unhandled] need to init SMP_system using info from the MAPIC - * table. - */ - - /* - * Set Defaults: - * ------------- - * C0 and C1 support is implied (but what about that PROC_C1 register - * in the FADT?!?!). Set C2/C3 to max. latency (not supported until - * proven otherwise). - */ - CxStates[0] = 0; - CxStates[1] = 0; - CxStates[2] = MAX_CX_STATE_LATENCY; - CxStates[3] = MAX_CX_STATE_LATENCY; - - /* - * C2 Supported? - * ------------- - * We're only supporting C2 when the latency is <= 100 microseconds, - * and on SMP systems when P_LVL2_UP (which indicates C2 only on UP) - * is not set. - */ - if (AcpiGbl_FADT->Plvl2Lat <= 100) - { - if (!SMP_system) - { - AcpiHwCxHandlers[2] = AcpiHwEnterC2; - CxStates[2] = AcpiGbl_FADT->Plvl2Lat; - } - - else if (!AcpiGbl_FADT->Plvl2Up) - { - AcpiHwCxHandlers[2] = AcpiHwEnterC2; - CxStates[2] = AcpiGbl_FADT->Plvl2Lat; - } - } - - /* - * C3 Supported? - * ------------- - * We're only supporting C3 on UP systems when the latency is - * <= 1000 microseconds and that include the ability to disable - * Bus Mastering while in C3 (ARB_DIS) but allows Bus Mastering - * requests to wake the system from C3 (BM_RLD). Note his method - * of maintaining cache coherency (disabling of bus mastering) - * cannot be used on SMP systems, and flushing caches (e.g. WBINVD) - * is simply too costly (at this time). - */ - if (AcpiGbl_FADT->Plvl3Lat <= 1000) - { - if (!SMP_system && (AcpiGbl_FADT->XPm2CntBlk.Address && - AcpiGbl_FADT->Pm2CntLen)) - { - AcpiHwCxHandlers[3] = AcpiHwEnterC3; - CxStates[3] = AcpiGbl_FADT->Plvl3Lat; - } - } - - return_ACPI_STATUS(AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiHwGetCxHandler - * - * PARAMETERS: State - the Cx state - * Handler - pointer to location for the returned handler - * - * RETURN: Status of function - * - * DESCRIPTION: This function is called to get an installed Cx state handler. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwGetCxHandler ( - UINT32 CxState, - ACPI_C_STATE_HANDLER *Handler) -{ - FUNCTION_TRACE ("HwGetCxHandler"); - - - if ((CxState == 0) || (CxState >= MAX_CX_STATES) || !Handler) - { - return_ACPI_STATUS(AE_BAD_PARAMETER); - } - - *Handler = AcpiHwCxHandlers[CxState]; - - return_ACPI_STATUS(AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiHwSetCxHandler - * - * PARAMETERS: CxState - the Cx state - * Handler - new Cx state handler - * - * RETURN: Status of function - * - * DESCRIPTION: This function is called to install a new Cx state handler. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiHwSetCxHandler ( - UINT32 CxState, - ACPI_C_STATE_HANDLER Handler) -{ - FUNCTION_TRACE ("HwSetCxHandler"); - - - if ((CxState == 0) || (CxState >= MAX_CX_STATES) || !Handler) - { - return_ACPI_STATUS(AE_BAD_PARAMETER); - } - - AcpiHwCxHandlers[CxState] = Handler; - - return_ACPI_STATUS(AE_OK); -} - - -/************************************************************************** - * - * FUNCTION: AcpiHwLocalPow - * - * PARAMETERS: x,y operands - * - * RETURN: result - * - * DESCRIPTION: Compute x ^ y - * - *************************************************************************/ - -NATIVE_UINT -AcpiHwLocalPow ( - NATIVE_UINT x, - NATIVE_UINT y) -{ - NATIVE_UINT i; - NATIVE_UINT Result = 1; - - - for (i = 0; i < y; i++) - { - Result = Result * x; - } - - return (Result); -} - - -/************************************************************************** - * - * FUNCTION: AcpiHwEnableThrottling - * - * PARAMETERS: PblkAddress - Address of Pcnt (Processor Control) - * register - * - * RETURN: none - * - * DESCRIPTION: Enable throttling by setting the THT_EN bit. - * - *************************************************************************/ - -void -AcpiHwEnableThrottling ( - ACPI_IO_ADDRESS PblkAddress) -{ - UINT32 PblkValue; - - - FUNCTION_TRACE ("EnableThrottling"); - - - PblkValue = AcpiOsIn32 (PblkAddress); - PblkValue = PblkValue | BIT_4; - AcpiOsOut32 (PblkAddress, PblkValue); - - return_VOID; -} - - -/************************************************************************** - * - * FUNCTION: AcpiHwDisableThrottling - * - * PARAMETERS: PblkAddress - Address of Pcnt (Processor Control) - * register - * - * RETURN: none - * - * DESCRIPTION:Disable throttling by clearing the THT_EN bit - * - *************************************************************************/ - -void -AcpiHwDisableThrottling ( - ACPI_IO_ADDRESS PblkAddress) -{ - UINT32 PblkValue; - - - FUNCTION_TRACE ("DisableThrottling"); - - - PblkValue = AcpiOsIn32 (PblkAddress); - PblkValue = PblkValue & (~(UINT32)BIT_4); - AcpiOsOut32 (PblkAddress, PblkValue); - - return_VOID; -} - - -/************************************************************************** - * - * FUNCTION: AcpiHwGetDutyCycle - * - * PARAMETERS: DutyOffset Pcnt register duty cycle field offset - * PblkAddress Pcnt register address in chipset - * NumThrottleStates # of CPU throttle states this system - * supports - * - * RETURN: none - * - * DESCRIPTION: Get the duty cycle from the chipset - * - *************************************************************************/ - -UINT32 -AcpiHwGetDutyCycle ( - UINT8 DutyOffset, - ACPI_IO_ADDRESS PblkAddress, - UINT32 NumThrottleStates) -{ - NATIVE_UINT Index; - UINT32 Duty32Value; - UINT32 PcntMaskOffDutyField; - - - FUNCTION_TRACE ("GetDutyCycle"); - - - /* - * Use NumThrottleStates - 1 as mask [ex. 8 - 1 = 7 (Fh)] - * and then shift it into the right position - */ - PcntMaskOffDutyField = NumThrottleStates - 1; - - /* - * Read in the current value from the port - */ - Duty32Value = AcpiOsIn32 ((ACPI_IO_ADDRESS) PblkAddress); - - /* - * Shift the the value to LSB - */ - for (Index = 0; Index < (NATIVE_UINT) DutyOffset; Index++) - { - Duty32Value = Duty32Value >> 1; - } - - /* - * Get the duty field only - */ - Duty32Value = Duty32Value & PcntMaskOffDutyField; - - return_VALUE ((UINT32) Duty32Value); -} - - -/************************************************************************** - * - * FUNCTION: AcpiHwProgramDutyCycle - * - * PARAMETERS: DutyOffset Pcnt register duty cycle field offset - * DutyCycle duty cycle to program into chipset - * PblkAddress Pcnt register address in chipset - * NumThrottleStates # of CPU throttle states this system - * supports - * - * RETURN: none - * - * DESCRIPTION: Program chipset with specified duty cycle by bit-shifting the - * duty cycle bits to the appropriate offset, reading the duty - * cycle register, OR-ing in the duty cycle, and writing it to - * the Pcnt register. - * - *************************************************************************/ - -void -AcpiHwProgramDutyCycle ( - UINT8 DutyOffset, - UINT32 DutyCycle, - ACPI_IO_ADDRESS PblkAddress, - UINT32 NumThrottleStates) -{ - NATIVE_UINT Index; - UINT32 Duty32Value; - UINT32 PcntMaskOffDutyField; - UINT32 PortValue; - - - FUNCTION_TRACE ("HwProgramDutyCycle"); - - - /* - * valid DutyCycle passed - */ - Duty32Value = DutyCycle; - - /* - * use NumThrottleStates - 1 as mask [ex. 8 - 1 = 7 (Fh)] - * and then shift it into the right position - */ - PcntMaskOffDutyField = NumThrottleStates - 1; - - /* - * Shift the mask - */ - for (Index = 0; Index < (NATIVE_UINT) DutyOffset; Index++) - { - PcntMaskOffDutyField = PcntMaskOffDutyField << 1; - Duty32Value = Duty32Value << 1; - } - - /* - * Read in the current value from the port - */ - PortValue = AcpiOsIn32 ((ACPI_IO_ADDRESS) PblkAddress); - - /* - * Mask off the duty field so we don't OR in junk! - */ - PortValue = PortValue & (~PcntMaskOffDutyField); - - /* - * OR in the bits we want to write out to the port - */ - PortValue = (PortValue | Duty32Value) & (~(UINT32)BIT_4); - - /* - * write it to the port - */ - AcpiOsOut32 ((ACPI_IO_ADDRESS) PblkAddress, PortValue); - - return_VOID; -} diff --git a/sys/contrib/dev/acpica/Subsystem/Hardware/hwgpe.c b/sys/contrib/dev/acpica/Subsystem/Hardware/hwgpe.c deleted file mode 100644 index 52851fa..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Hardware/hwgpe.c +++ /dev/null @@ -1,301 +0,0 @@ - -/****************************************************************************** - * - * Module Name: hwgpe - Low level GPE enable/disable/clear functions - * $Revision: 28 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "achware.h" -#include "acnamesp.h" -#include "acevents.h" - -#define _COMPONENT HARDWARE - MODULE_NAME ("hwgpe") - - -/****************************************************************************** - * - * FUNCTION: AcpiHwEnableGpe - * - * PARAMETERS: GpeNumber - The GPE - * - * RETURN: None - * - * DESCRIPTION: Enable a single GPE. - * - ******************************************************************************/ - -void -AcpiHwEnableGpe ( - UINT32 GpeNumber) -{ - UINT8 InByte; - UINT32 RegisterIndex; - UINT8 BitMask; - - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; - - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; - - /* - * Read the current value of the register, set the appropriate bit - * to enable the GPE, and write out the new register. - */ - InByte = AcpiOsIn8 (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr); - AcpiOsOut8 (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, - (UINT8)(InByte | BitMask)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwDisableGpe - * - * PARAMETERS: GpeNumber - The GPE - * - * RETURN: None - * - * DESCRIPTION: Disable a single GPE. - * - ******************************************************************************/ - -void -AcpiHwDisableGpe ( - UINT32 GpeNumber) -{ - UINT8 InByte; - UINT32 RegisterIndex; - UINT8 BitMask; - - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; - - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; - - /* - * Read the current value of the register, clear the appropriate bit, - * and write out the new register value to disable the GPE. - */ - InByte = AcpiOsIn8 (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr); - AcpiOsOut8 (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, - (UINT8)(InByte & ~BitMask)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwClearGpe - * - * PARAMETERS: GpeNumber - The GPE - * - * RETURN: None - * - * DESCRIPTION: Clear a single GPE. - * - ******************************************************************************/ - -void -AcpiHwClearGpe ( - UINT32 GpeNumber) -{ - UINT32 RegisterIndex; - UINT8 BitMask; - - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; - - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; - - /* - * Write a one to the appropriate bit in the status register to - * clear this GPE. - */ - AcpiOsOut8 (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr, BitMask); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwGetGpeStatus - * - * PARAMETERS: GpeNumber - The GPE - * - * RETURN: None - * - * DESCRIPTION: Return the status of a single GPE. - * - ******************************************************************************/ - -void -AcpiHwGetGpeStatus ( - UINT32 GpeNumber, - ACPI_EVENT_STATUS *EventStatus) -{ - UINT8 InByte = 0; - UINT32 RegisterIndex = 0; - UINT8 BitMask = 0; - - if (!EventStatus) - { - return; - } - - (*EventStatus) = 0; - - /* - * Translate GPE number to index into global registers array. - */ - RegisterIndex = AcpiGbl_GpeValid[GpeNumber]; - - /* - * Figure out the bit offset for this GPE within the target register. - */ - BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)]; - - /* - * Enabled?: - */ - InByte = AcpiOsIn8 (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr); - - if (BitMask & InByte) - { - (*EventStatus) |= ACPI_EVENT_FLAG_ENABLED; - } - - /* - * Set? - */ - InByte = AcpiOsIn8 (AcpiGbl_GpeRegisters[RegisterIndex].StatusAddr); - - if (BitMask & InByte) - { - (*EventStatus) |= ACPI_EVENT_FLAG_SET; - } -} diff --git a/sys/contrib/dev/acpica/Subsystem/Hardware/hwregs.c b/sys/contrib/dev/acpica/Subsystem/Hardware/hwregs.c deleted file mode 100644 index 1c47c67..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Hardware/hwregs.c +++ /dev/null @@ -1,1140 +0,0 @@ - -/******************************************************************************* - * - * Module Name: hwregs - Read/write access functions for the various ACPI - * control and status registers. - * $Revision: 88 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __HWREGS_C__ - -#include "acpi.h" -#include "achware.h" -#include "acnamesp.h" - -#define _COMPONENT HARDWARE - MODULE_NAME ("hwregs") - - -/* This matches the #defines in actypes.h. */ - -NATIVE_CHAR *SleepStateTable[] = {"\\_S0_","\\_S1_","\\_S2_","\\_S3_", - "\\_S4_","\\_S5_","\\_S4B"}; - - -/******************************************************************************* - * - * FUNCTION: AcpiHwGetBitShift - * - * PARAMETERS: Mask - Input mask to determine bit shift from. - * Must have at least 1 bit set. - * - * RETURN: Bit location of the lsb of the mask - * - * DESCRIPTION: Returns the bit number for the low order bit that's set. - * - ******************************************************************************/ - -UINT32 -AcpiHwGetBitShift ( - UINT32 Mask) -{ - UINT32 Shift; - - - FUNCTION_TRACE ("HwGetBitShift"); - - - for (Shift = 0; ((Mask >> Shift) & 1) == 0; Shift++) - { ; } - - return_VALUE (Shift); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiHwClearAcpiStatus - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Clears all fixed and general purpose status bits - * - ******************************************************************************/ - -void -AcpiHwClearAcpiStatus (void) -{ - UINT16 GpeLength; - UINT16 Index; - - - FUNCTION_TRACE ("HwClearAcpiStatus"); - - - DEBUG_PRINT (TRACE_IO, ("About to write %04X to %04X\n", - ALL_FIXED_STS_BITS, - (UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address))); - - - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); - - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_STS, ALL_FIXED_STS_BITS); - - - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address)) - { - AcpiOsOut16 ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address), - (UINT16) ALL_FIXED_STS_BITS); - } - - /* now clear the GPE Bits */ - - if (AcpiGbl_FADT->Gpe0BlkLen) - { - GpeLength = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); - - for (Index = 0; Index < GpeLength; Index++) - { - AcpiOsOut8 ((ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + Index), - (UINT8) 0xff); - } - } - - if (AcpiGbl_FADT->Gpe1BlkLen) - { - GpeLength = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); - - for (Index = 0; Index < GpeLength; Index++) - { - AcpiOsOut8 ((ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + Index), - (UINT8) 0xff); - } - } - - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiHwObtainSleepTypeRegisterData - * - * PARAMETERS: SleepState - Numeric state requested - * *Slp_TypA - Pointer to byte to receive SLP_TYPa value - * *Slp_TypB - Pointer to byte to receive SLP_TYPb value - * - * RETURN: Status - ACPI status - * - * DESCRIPTION: AcpiHwObtainSleepTypeRegisterData() obtains the SLP_TYP and - * SLP_TYPb values for the sleep state requested. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwObtainSleepTypeRegisterData ( - UINT8 SleepState, - UINT8 *Slp_TypA, - UINT8 *Slp_TypB) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE ("HwObtainSleepTypeRegisterData"); - - - /* - * Validate parameters - */ - - if ((SleepState > ACPI_S_STATES_MAX) || - !Slp_TypA || !Slp_TypB) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * AcpiEvaluate the namespace object containing the values for this state - */ - - Status = AcpiNsEvaluateByName (SleepStateTable[SleepState], NULL, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (!ObjDesc) - { - REPORT_ERROR (("Missing Sleep State object\n")); - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* - * We got something, now ensure it is correct. The object must - * be a package and must have at least 2 numeric values as the - * two elements - */ - - Status = AcpiCmResolvePackageReferences(ObjDesc); - - if (ObjDesc->Package.Count < 2) - { - /* Must have at least two elements */ - - REPORT_ERROR (("Sleep State package does not have at least two elements\n")); - Status = AE_ERROR; - } - - else if (((ObjDesc->Package.Elements[0])->Common.Type != - ACPI_TYPE_INTEGER) || - ((ObjDesc->Package.Elements[1])->Common.Type != - ACPI_TYPE_INTEGER)) - { - /* Must have two */ - - REPORT_ERROR (("Sleep State package elements are not both of type Number\n")); - Status = AE_ERROR; - } - - else - { - /* - * Valid _Sx_ package size, type, and value - */ - *Slp_TypA = (UINT8) (ObjDesc->Package.Elements[0])->Integer.Value; - - *Slp_TypB = (UINT8) (ObjDesc->Package.Elements[1])->Integer.Value; - } - - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("SleepTypeRegisterData: Bad Sleep object %p type %X\n", - ObjDesc, ObjDesc->Common.Type)); - } - - AcpiCmRemoveReference (ObjDesc); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiHwRegisterBitAccess - * - * PARAMETERS: ReadWrite - Either ACPI_READ or ACPI_WRITE. - * UseLock - Lock the hardware - * RegisterId - index of ACPI Register to access - * Value - (only used on write) value to write to the - * Register. Shifted all the way right. - * - * RETURN: Value written to or read from specified Register. This value - * is shifted all the way right. - * - * DESCRIPTION: Generic ACPI Register read/write function. - * - ******************************************************************************/ - -UINT32 -AcpiHwRegisterBitAccess ( - NATIVE_UINT ReadWrite, - BOOLEAN UseLock, - UINT32 RegisterId, - ...) /* Value (only used on write) */ -{ - UINT32 RegisterValue = 0; - UINT32 Mask = 0; - UINT32 Value = 0; - - FUNCTION_TRACE ("HwRegisterBitAccess"); - - - if (ReadWrite == ACPI_WRITE) - { - va_list marker; - - va_start (marker, RegisterId); - Value = va_arg (marker, UINT32); - va_end (marker); - } - - if (ACPI_MTX_LOCK == UseLock) { - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); - } - - /* - * Decode the Register ID - * Register id = Register block id | bit id - * - * Check bit id to fine locate Register offset. - * check Mask to determine Register offset, and then read-write. - */ - - switch (REGISTER_BLOCK_ID(RegisterId)) - { - case PM1_STS: - - switch (RegisterId) - { - case TMR_STS: - Mask = TMR_STS_MASK; - break; - - case BM_STS: - Mask = BM_STS_MASK; - break; - - case GBL_STS: - Mask = GBL_STS_MASK; - break; - - case PWRBTN_STS: - Mask = PWRBTN_STS_MASK; - break; - - case SLPBTN_STS: - Mask = SLPBTN_STS_MASK; - break; - - case RTC_STS: - Mask = RTC_STS_MASK; - break; - - case WAK_STS: - Mask = WAK_STS_MASK; - break; - - default: - Mask = 0; - break; - } - - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_STS); - - if (ReadWrite == ACPI_WRITE) - { - /* - * Status Registers are different from the rest. Clear by - * writing 1, writing 0 has no effect. So, the only relevent - * information is the single bit we're interested in, all - * others should be written as 0 so they will be left - * unchanged - */ - - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - - if (Value) - { - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_STS, (UINT16) Value); - - RegisterValue = 0; - } - } - - break; - - - case PM1_EN: - - switch (RegisterId) - { - case TMR_EN: - Mask = TMR_EN_MASK; - break; - - case GBL_EN: - Mask = GBL_EN_MASK; - break; - - case PWRBTN_EN: - Mask = PWRBTN_EN_MASK; - break; - - case SLPBTN_EN: - Mask = SLPBTN_EN_MASK; - break; - - case RTC_EN: - Mask = RTC_EN_MASK; - break; - - default: - Mask = 0; - break; - } - - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_EN); - - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; - - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, PM1_EN, (UINT16) RegisterValue); - } - - break; - - - case PM1_CONTROL: - - switch (RegisterId) - { - case SCI_EN: - Mask = SCI_EN_MASK; - break; - - case BM_RLD: - Mask = BM_RLD_MASK; - break; - - case GBL_RLS: - Mask = GBL_RLS_MASK; - break; - - case SLP_TYPE_A: - case SLP_TYPE_B: - Mask = SLP_TYPE_X_MASK; - break; - - case SLP_EN: - Mask = SLP_EN_MASK; - break; - - default: - Mask = 0; - break; - } - - - /* - * Read the PM1 Control register. - * Note that at this level, the fact that there are actually TWO - * registers (A and B) and that B may not exist, are abstracted. - */ - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM1_CONTROL); - - DEBUG_PRINT (TRACE_IO, ("PM1 control: Read %X\n", RegisterValue)); - - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; - - /* - * SLP_TYPE_x Registers are written differently - * than any other control Registers with - * respect to A and B Registers. The value - * for A may be different than the value for B - * - * Therefore, pass the RegisterId, not just generic PM1_CONTROL, - * because we need to do different things. Yuck. - */ - - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - RegisterId, (UINT16) RegisterValue); - } - break; - - - case PM2_CONTROL: - - switch (RegisterId) - { - case ARB_DIS: - Mask = ARB_DIS_MASK; - break; - - default: - Mask = 0; - break; - } - - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL); - - DEBUG_PRINT (TRACE_IO, ("PM2 control: Read %X from %p\n", - RegisterValue, ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address))); - - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; - - DEBUG_PRINT (TRACE_IO, - ("About to write %04X to %p\n", RegisterValue, - AcpiGbl_FADT->XPm2CntBlk.Address)); - - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - PM2_CONTROL, (UINT8) (RegisterValue)); - } - break; - - - case PM_TIMER: - - Mask = TMR_VAL_MASK; - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - PM_TIMER); - DEBUG_PRINT (TRACE_IO, ("PM_TIMER: Read %X from %p\n", - RegisterValue, ACPI_GET_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address))); - - break; - - - case GPE1_EN_BLOCK: - case GPE1_STS_BLOCK: - case GPE0_EN_BLOCK: - case GPE0_STS_BLOCK: - - /* Determine the bit to be accessed - * - * (UINT32) RegisterId: - * 31 24 16 8 0 - * +--------+--------+--------+--------+ - * | gpe_block_id | gpe_bit_number | - * +--------+--------+--------+--------+ - * - * gpe_block_id is one of GPE[01]_EN_BLOCK and GPE[01]_STS_BLOCK - * gpe_bit_number is relative from the gpe_block (0x00~0xFF) - */ - - Mask = REGISTER_BIT_ID(RegisterId); /* gpe_bit_number */ - RegisterId = REGISTER_BLOCK_ID(RegisterId) | (Mask >> 3); - Mask = AcpiGbl_DecodeTo8bit [Mask % 8]; - - /* - * The base address of the GPE 0 Register Block - * Plus 1/2 the length of the GPE 0 Register Block - * The enable Register is the Register following the Status Register - * and each Register is defined as 1/2 of the total Register Block - */ - - /* - * This sets the bit within EnableBit that needs to be written to - * the Register indicated in Mask to a 1, all others are 0 - */ - - /* Now get the current Enable Bits in the selected Reg */ - - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, RegisterId); - DEBUG_PRINT (TRACE_IO, ("GPE Enable bits: Read %X from %X\n", - RegisterValue, RegisterId)); - - if (ReadWrite == ACPI_WRITE) - { - RegisterValue &= ~Mask; - Value <<= AcpiHwGetBitShift (Mask); - Value &= Mask; - RegisterValue |= Value; - - /* This write will put the Action state into the General Purpose */ - /* Enable Register indexed by the value in Mask */ - - DEBUG_PRINT (TRACE_IO, ("About to write %04X to %04X\n", - RegisterValue, RegisterId)); - AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - RegisterId, (UINT8) RegisterValue); - RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, RegisterId); - } - break; - - - case SMI_CMD_BLOCK: - case PROCESSOR_BLOCK: - /* not used */ - default: - - Mask = 0; - break; - } - - if (ACPI_MTX_LOCK == UseLock) { - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); - } - - - RegisterValue &= Mask; - RegisterValue >>= AcpiHwGetBitShift (Mask); - - DEBUG_PRINT (TRACE_IO, ("Register I/O: returning %X\n", RegisterValue)); - return_VALUE (RegisterValue); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwRegisterRead - * - * PARAMETERS: UseLock - Mutex hw access. - * RegisterId - RegisterID + Offset. - * - * RETURN: Value read or written. - * - * DESCRIPTION: Acpi register read function. Registers are read at the - * given offset. - * - ******************************************************************************/ - -UINT32 -AcpiHwRegisterRead ( - BOOLEAN UseLock, - UINT32 RegisterId) -{ - UINT32 Value = 0; - UINT32 BankOffset; - - FUNCTION_TRACE ("AcpiHwRegisterRead"); - - if (ACPI_MTX_LOCK == UseLock) - { - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); - } - - - switch (REGISTER_BLOCK_ID(RegisterId)) - { - case PM1_STS: /* 16-bit access */ - - Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, 0); - Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bEvtBlk, 0); - break; - - - case PM1_EN: /* 16-bit access*/ - - BankOffset = DIV_2 (AcpiGbl_FADT->Pm1EvtLen); - Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset); - Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset); - break; - - - case PM1_CONTROL: /* 16-bit access */ - - Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aCntBlk, 0); - Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bCntBlk, 0); - break; - - - case PM2_CONTROL: /* 8-bit access */ - - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XPm2CntBlk, 0); - break; - - - case PM_TIMER: /* 32-bit access */ - - Value = AcpiHwLowLevelRead (32, &AcpiGbl_FADT->XPmTmrBlk, 0); - break; - - - case GPE0_STS_BLOCK: /* 8-bit access */ - - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe0Blk, 0); - break; - - - case GPE0_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe0Blk, BankOffset); - break; - - - case GPE1_STS_BLOCK: /* 8-bit access */ - - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe1Blk, 0); - break; - - - case GPE1_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); - Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe1Blk, BankOffset); - break; - - - case SMI_CMD_BLOCK: /* 8bit */ - - Value = (UINT32) AcpiOsIn8 (AcpiGbl_FADT->SmiCmd); - break; - - - default: - Value = 0; - break; - } - - - if (ACPI_MTX_LOCK == UseLock) - { - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); - } - - return_VALUE (Value); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwRegisterWrite - * - * PARAMETERS: UseLock - Mutex hw access. - * RegisterId - RegisterID + Offset. - * - * RETURN: Value read or written. - * - * DESCRIPTION: Acpi register Write function. Registers are written at the - * given offset. - * - ******************************************************************************/ - -void -AcpiHwRegisterWrite ( - BOOLEAN UseLock, - UINT32 RegisterId, - UINT32 Value) -{ - UINT32 BankOffset; - - FUNCTION_TRACE ("AcpiHwRegisterWrite"); - - - if (ACPI_MTX_LOCK == UseLock) - { - AcpiCmAcquireMutex (ACPI_MTX_HARDWARE); - } - - - switch (REGISTER_BLOCK_ID (RegisterId)) - { - case PM1_STS: /* 16-bit access */ - - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, 0); - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, 0); - break; - - - case PM1_EN: /* 16-bit access*/ - - BankOffset = DIV_2 (AcpiGbl_FADT->Pm1EvtLen); - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset); - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset); - break; - - - case PM1_CONTROL: /* 16-bit access */ - - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0); - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0); - break; - - - case PM1A_CONTROL: /* 16-bit access */ - - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0); - break; - - - case PM1B_CONTROL: /* 16-bit access */ - - AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0); - break; - - - case PM2_CONTROL: /* 8-bit access */ - - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XPm2CntBlk, 0); - break; - - - case PM_TIMER: /* 32-bit access */ - - AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT->XPmTmrBlk, 0); - break; - - - case GPE0_STS_BLOCK: /* 8-bit access */ - - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe0Blk, 0); - break; - - - case GPE0_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe0BlkLen); - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe0Blk, BankOffset); - break; - - - case GPE1_STS_BLOCK: /* 8-bit access */ - - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe1Blk, 0); - break; - - - case GPE1_EN_BLOCK: /* 8-bit access */ - - BankOffset = DIV_2 (AcpiGbl_FADT->Gpe1BlkLen); - AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe1Blk, BankOffset); - break; - - - case SMI_CMD_BLOCK: /* 8bit */ - - /* For 2.0, SMI_CMD is always in IO space */ - /* TBD: what about 1.0? 0.71? */ - - AcpiOsOut8 (AcpiGbl_FADT->SmiCmd, (UINT8) Value); - break; - - - default: - Value = 0; - break; - } - - - if (ACPI_MTX_LOCK == UseLock) - { - AcpiCmReleaseMutex (ACPI_MTX_HARDWARE); - } - - return_VOID; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwLowLevelRead - * - * PARAMETERS: Register - GAS register structure - * Offset - Offset from the base address in the GAS - * Width - 8, 16, or 32 - * - * RETURN: Value read - * - * DESCRIPTION: Read from either memory, IO, or PCI config space. - * - ******************************************************************************/ - -UINT32 -AcpiHwLowLevelRead ( - UINT32 Width, - ACPI_GAS *Reg, - UINT32 Offset) -{ - UINT32 Value = 0; - ACPI_PHYSICAL_ADDRESS MemAddress; - ACPI_IO_ADDRESS IoAddress; - UINT32 PciRegister; - UINT32 PciDevFunc; - - - /* - * Must have a valid pointer to a GAS structure, and - * a non-zero address within - */ - if ((!Reg) || - (!ACPI_VALID_ADDRESS (Reg->Address))) - { - return 0; - } - - - /* - * Three address spaces supported: - * Memory, Io, or PCI config. - */ - - switch (Reg->AddressSpaceId) - { - case ADDRESS_SPACE_SYSTEM_MEMORY: - - MemAddress = (ACPI_PHYSICAL_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); - - switch (Width) - { - case 8: - Value = AcpiOsMemIn8 (MemAddress); - break; - case 16: - Value = AcpiOsMemIn16 (MemAddress); - break; - case 32: - Value = AcpiOsMemIn32 (MemAddress); - break; - } - break; - - - case ADDRESS_SPACE_SYSTEM_IO: - - IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); - - switch (Width) - { - case 8: - Value = AcpiOsIn8 (IoAddress); - break; - case 16: - Value = AcpiOsIn16 (IoAddress); - break; - case 32: - Value = AcpiOsIn32 (IoAddress); - break; - } - break; - - - case ADDRESS_SPACE_PCI_CONFIG: - - PciDevFunc = ACPI_PCI_DEVFUN (ACPI_GET_ADDRESS (Reg->Address)); - PciRegister = ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + Offset; - - switch (Width) - { - case 8: - AcpiOsReadPciCfgByte (0, PciDevFunc, PciRegister, (UINT8 *) &Value); - break; - case 16: - AcpiOsReadPciCfgWord (0, PciDevFunc, PciRegister, (UINT16 *) &Value); - break; - case 32: - AcpiOsReadPciCfgDword (0, PciDevFunc, PciRegister, (UINT32 *) &Value); - break; - } - break; - } - - return Value; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwLowLevelWrite - * - * PARAMETERS: Width - 8, 16, or 32 - * Value - To be written - * Register - GAS register structure - * Offset - Offset from the base address in the GAS - * - * - * RETURN: Value read - * - * DESCRIPTION: Read from either memory, IO, or PCI config space. - * - ******************************************************************************/ - -void -AcpiHwLowLevelWrite ( - UINT32 Width, - UINT32 Value, - ACPI_GAS *Reg, - UINT32 Offset) -{ - ACPI_PHYSICAL_ADDRESS MemAddress; - ACPI_IO_ADDRESS IoAddress; - UINT32 PciRegister; - UINT32 PciDevFunc; - - - /* - * Must have a valid pointer to a GAS structure, and - * a non-zero address within - */ - if ((!Reg) || - (!ACPI_VALID_ADDRESS (Reg->Address))) - { - return; - } - - - /* - * Three address spaces supported: - * Memory, Io, or PCI config. - */ - - switch (Reg->AddressSpaceId) - { - case ADDRESS_SPACE_SYSTEM_MEMORY: - - MemAddress = (ACPI_PHYSICAL_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); - - switch (Width) - { - case 8: - AcpiOsMemOut8 (MemAddress, (UINT8) Value); - break; - case 16: - AcpiOsMemOut16 (MemAddress, (UINT16) Value); - break; - case 32: - AcpiOsMemOut32 (MemAddress, (UINT32) Value); - break; - } - break; - - - case ADDRESS_SPACE_SYSTEM_IO: - - IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset); - - switch (Width) - { - case 8: - AcpiOsOut8 (IoAddress, (UINT8) Value); - break; - case 16: - AcpiOsOut16 (IoAddress, (UINT16) Value); - break; - case 32: - AcpiOsOut32 (IoAddress, (UINT32) Value); - break; - } - break; - - - case ADDRESS_SPACE_PCI_CONFIG: - - PciDevFunc = ACPI_PCI_DEVFUN (ACPI_GET_ADDRESS (Reg->Address)); - PciRegister = ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + Offset; - - switch (Width) - { - case 8: - AcpiOsWritePciCfgByte (0, PciDevFunc, PciRegister, (UINT8) Value); - break; - case 16: - AcpiOsWritePciCfgWord (0, PciDevFunc, PciRegister, (UINT16) Value); - break; - case 32: - AcpiOsWritePciCfgDword (0, PciDevFunc, PciRegister, (UINT32) Value); - break; - } - break; - } -} diff --git a/sys/contrib/dev/acpica/Subsystem/Hardware/hwsleep.c b/sys/contrib/dev/acpica/Subsystem/Hardware/hwsleep.c deleted file mode 100644 index ba7b341..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Hardware/hwsleep.c +++ /dev/null @@ -1,295 +0,0 @@ - -/****************************************************************************** - * - * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface - * $Revision: 7 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acnamesp.h" -#include "achware.h" - -#define _COMPONENT HARDWARE - MODULE_NAME ("hwsleep") - - -/****************************************************************************** - * - * FUNCTION: AcpiSetFirmwareWakingVector - * - * PARAMETERS: PhysicalAddress - Physical address of ACPI real mode - * entry point. - * - * RETURN: AE_OK or AE_ERROR - * - * DESCRIPTION: Access function for dFirmwareWakingVector field in FACS - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress) -{ - - FUNCTION_TRACE ("AcpiSetFirmwareWakingVector"); - - - /* Make sure that we have an FACS */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* Set the vector */ - - if (AcpiGbl_FACS->VectorWidth == 32) - { - * (UINT32 *) AcpiGbl_FACS->FirmwareWakingVector = (UINT32) PhysicalAddress; - } - else - { - *AcpiGbl_FACS->FirmwareWakingVector = PhysicalAddress; - } - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiGetFirmwareWakingVector - * - * PARAMETERS: *PhysicalAddress - Output buffer where contents of - * the FirmwareWakingVector field of - * the FACS will be stored. - * - * RETURN: Status - * - * DESCRIPTION: Access function for dFirmwareWakingVector field in FACS - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS *PhysicalAddress) -{ - - FUNCTION_TRACE ("AcpiGetFirmwareWakingVector"); - - - if (!PhysicalAddress) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Make sure that we have an FACS */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* Get the vector */ - - if (AcpiGbl_FACS->VectorWidth == 32) - { - *PhysicalAddress = * (UINT32 *) AcpiGbl_FACS->FirmwareWakingVector; - } - else - { - *PhysicalAddress = *AcpiGbl_FACS->FirmwareWakingVector; - } - - return_ACPI_STATUS (AE_OK); -} - -/****************************************************************************** - * - * FUNCTION: AcpiEnterSleepState - * - * PARAMETERS: SleepState - Which sleep state to enter - * - * RETURN: Status - * - * DESCRIPTION: Enter a system sleep state (see ACPI 2.0 spec p 231) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnterSleepState ( - UINT8 SleepState) -{ - ACPI_STATUS Status; - ACPI_OBJECT_LIST ArgList; - ACPI_OBJECT Arg; - UINT8 TypeA; - UINT8 TypeB; - UINT16 PM1AControl; - UINT16 PM1BControl; - - FUNCTION_TRACE ("AcpiEnterSleepState"); - - /* - * _PSW methods could be run here to enable wake-on keyboard, LAN, etc. - */ - - Status = AcpiHwObtainSleepTypeRegisterData(SleepState, &TypeA, &TypeB); - - if (!ACPI_SUCCESS(Status)) - { - return Status; - } - - /* run the _PTS and _GTS methods */ - MEMSET(&ArgList, 0, sizeof(ArgList)); - ArgList.Count = 1; - ArgList.Pointer = &Arg; - - MEMSET(&Arg, 0, sizeof(Arg)); - Arg.Type = ACPI_TYPE_INTEGER; - Arg.Integer.Value = SleepState; - - AcpiEvaluateObject(NULL, "\\_PTS", &ArgList, NULL); - AcpiEvaluateObject(NULL, "\\_GTS", &ArgList, NULL); - - /* clear wake status */ - AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, WAK_STS, 1); - - PM1AControl = (UINT16) AcpiHwRegisterRead(ACPI_MTX_LOCK, PM1_CONTROL); - - /* mask off SLP_EN and SLP_TYP fields */ - PM1AControl &= 0xC3FF; - - /* mask in SLP_EN */ - PM1AControl |= (1 << AcpiHwGetBitShift (SLP_EN_MASK)); - - PM1BControl = PM1AControl; - - /* mask in SLP_TYP */ - PM1AControl |= (TypeA << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); - PM1BControl |= (TypeB << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); - - DEBUG_PRINT(ACPI_OK, ("Entering S%d\n", SleepState)); - - disable(); - - AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1A_CONTROL, PM1AControl); - AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1B_CONTROL, PM1BControl); - AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1_CONTROL, - (1 << AcpiHwGetBitShift (SLP_EN_MASK))); - - enable(); - - return_ACPI_STATUS (AE_OK); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Hardware/hwtimer.c b/sys/contrib/dev/acpica/Subsystem/Hardware/hwtimer.c deleted file mode 100644 index 52139ed..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Hardware/hwtimer.c +++ /dev/null @@ -1,307 +0,0 @@ - -/****************************************************************************** - * - * Name: hwtimer.c - ACPI Power Management Timer Interface - * $Revision: 5 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "achware.h" - -#define _COMPONENT HARDWARE - MODULE_NAME ("hwtimer") - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTimerResolution - * - * PARAMETERS: none - * - * RETURN: Number of bits of resolution in the PM Timer (24 or 32). - * - * DESCRIPTION: Obtains resolution of the ACPI PM Timer. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTimerResolution ( - UINT32 *Resolution) -{ - FUNCTION_TRACE ("AcpiGetTimerResolution"); - - if (!Resolution) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (0 == AcpiGbl_FADT->TmrValExt) - { - *Resolution = 24; - } - else - { - *Resolution = 32; - } - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTimer - * - * PARAMETERS: none - * - * RETURN: Current value of the ACPI PM Timer (in ticks). - * - * DESCRIPTION: Obtains current value of ACPI PM Timer. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTimer ( - UINT32 *Ticks) -{ - FUNCTION_TRACE ("AcpiGetTimer"); - - if (!Ticks) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - *Ticks = AcpiOsIn32 ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address)); - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTimerDuration - * - * PARAMETERS: StartTicks - * EndTicks - * TimeElapsed - * - * RETURN: TimeElapsed - * - * DESCRIPTION: Computes the time elapsed (in microseconds) between two - * PM Timer time stamps, taking into account the possibility of - * rollovers, the timer resolution, and timer frequency. - * - * The PM Timer's clock ticks at roughly 3.6 times per - * _microsecond_, and its clock continues through Cx state - * transitions (unlike many CPU timestamp counters) -- making it - * a versatile and accurate timer. - * - * Note that this function accomodates only a single timer - * rollover. Thus for 24-bit timers, this function should only - * be used for calculating durations less than ~4.6 seconds - * (~20 hours for 32-bit timers). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTimerDuration ( - UINT32 StartTicks, - UINT32 EndTicks, - UINT32 *TimeElapsed) -{ - UINT32 DeltaTicks = 0; - UINT32 Seconds = 0; - UINT32 Milliseconds = 0; - UINT32 Microseconds = 0; - UINT32 Remainder = 0; - - FUNCTION_TRACE ("AcpiGetTimerDuration"); - - if (!TimeElapsed) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Compute Tick Delta: - * ------------------- - * Handle (max one) timer rollovers on 24- versus 32-bit timers. - */ - if (StartTicks < EndTicks) - { - DeltaTicks = EndTicks - StartTicks; - } - else if (StartTicks > EndTicks) - { - /* 24-bit Timer */ - if (0 == AcpiGbl_FADT->TmrValExt) - { - DeltaTicks = (((0x00FFFFFF - StartTicks) + EndTicks) & 0x00FFFFFF); - } - /* 32-bit Timer */ - else - { - DeltaTicks = (0xFFFFFFFF - StartTicks) + EndTicks; - } - } - else - { - *TimeElapsed = 0; - return_ACPI_STATUS (AE_OK); - } - - /* - * Compute Duration: - * ----------------- - * Since certain compilers (gcc/Linux, argh!) don't support 64-bit - * divides in kernel-space we have to do some trickery to preserve - * accuracy while using 32-bit math. - * - * TODO: Change to use 64-bit math when supported. - * - * The process is as follows: - * 1. Compute the number of seconds by dividing Delta Ticks by - * the timer frequency. - * 2. Compute the number of milliseconds in the remainder from step #1 - * by multiplying by 1000 and then dividing by the timer frequency. - * 3. Compute the number of microseconds in the remainder from step #2 - * by multiplying by 1000 and then dividing by the timer frequency. - * 4. Add the results from steps 1, 2, and 3 to get the total duration. - * - * Example: The time elapsed for DeltaTicks = 0xFFFFFFFF should be - * 1199864031 microseconds. This is computed as follows: - * Step #1: Seconds = 1199; Remainder = 3092840 - * Step #2: Milliseconds = 864; Remainder = 113120 - * Step #3: Microseconds = 31; Remainder = <don't care!> - */ - - /* Step #1 */ - Seconds = DeltaTicks / PM_TIMER_FREQUENCY; - Remainder = DeltaTicks % PM_TIMER_FREQUENCY; - - /* Step #2 */ - Milliseconds = (Remainder * 1000) / PM_TIMER_FREQUENCY; - Remainder = (Remainder * 1000) % PM_TIMER_FREQUENCY; - - /* Step #3 */ - Microseconds = (Remainder * 1000) / PM_TIMER_FREQUENCY; - - /* Step #4 */ - *TimeElapsed = Seconds * 1000000; - *TimeElapsed += Milliseconds * 1000; - *TimeElapsed += Microseconds; - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Hardware/hwxface.c b/sys/contrib/dev/acpica/Subsystem/Hardware/hwxface.c deleted file mode 100644 index 3bece9a..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Hardware/hwxface.c +++ /dev/null @@ -1,737 +0,0 @@ - -/****************************************************************************** - * - * Name: hwxface.c - Hardware access external interfaces - * $Revision: 37 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acnamesp.h" -#include "achware.h" - -#define _COMPONENT HARDWARE - MODULE_NAME ("hwxface") - - -/****************************************************************************** - * - * Hardware globals - * - ******************************************************************************/ - - -ACPI_C_STATE_HANDLER AcpiHwCxHandlers[MAX_CX_STATES] = - {NULL, AcpiHwEnterC1, NULL, NULL}; - -UINT32 AcpiHwActiveCxState = 1; - - -/**************************************************************************** - * - * FUNCTION: AcpiGetProcessorThrottlingInfo - * - * PARAMETERS: ProcessorHandle - handle for the cpu to get info about - * UserBuffer - caller supplied buffer - * - * RETURN: Status of function - * - * DESCRIPTION: Get throttling capabilities for the processor, this routine - * builds the data directly into the callers buffer - * - ****************************************************************************/ - -ACPI_STATUS -AcpiGetProcessorThrottlingInfo ( - ACPI_HANDLE ProcessorHandle, - ACPI_BUFFER *UserBuffer) -{ - NATIVE_UINT PercentStep; - NATIVE_UINT NextPercent; - NATIVE_UINT NumThrottleStates; - NATIVE_UINT BufferSpaceNeeded; - NATIVE_UINT i; - UINT8 DutyWidth; - ACPI_NAMESPACE_NODE *CpuNode; - ACPI_OPERAND_OBJECT *CpuObj; - ACPI_CPU_THROTTLING_STATE *StatePtr; - - - FUNCTION_TRACE ("AcpiGetProcessorThrottlingInfo"); - - - /* - * Have to at least have a buffer to return info in - */ - if (!UserBuffer) - { - return_ACPI_STATUS(AE_BAD_PARAMETER); - } - - /* - * Convert and validate the device handle - */ - - CpuNode = AcpiNsConvertHandleToEntry (ProcessorHandle); - if (!CpuNode) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Check for an existing internal object - */ - - CpuObj = AcpiNsGetAttachedObject ((ACPI_HANDLE) CpuNode); - if (!CpuObj) - { - return_ACPI_STATUS (AE_NOT_FOUND); - } - - /* - * (Duty Width on IA-64 is zero) - */ - DutyWidth = AcpiGbl_FADT->DutyWidth; - - /* - * P0 must always have a P_BLK all others may be null - * in either case, we can't throttle a processor that has no P_BLK - * - * Also if no Duty width, one state and it is 100% - * - */ - if (!CpuObj->Processor.Length || !DutyWidth || - (ACPI_UINT16_MAX < CpuObj->Processor.Address)) - { - /* - * AcpiEven though we can't throttle, we still have one state (100%) - */ - NumThrottleStates = 1; - } - - else - { - NumThrottleStates = (int) AcpiHwLocalPow (2,DutyWidth); - } - - BufferSpaceNeeded = NumThrottleStates * sizeof (ACPI_CPU_THROTTLING_STATE); - - if ((UserBuffer->Length < BufferSpaceNeeded) || !UserBuffer->Pointer) - { - UserBuffer->Length = BufferSpaceNeeded; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - UserBuffer->Length = BufferSpaceNeeded; - StatePtr = (ACPI_CPU_THROTTLING_STATE *) UserBuffer->Pointer; - PercentStep = 1000 / NumThrottleStates; - - /* - * Build each entry in the buffer. Note that we're using the value - * 1000 and dividing each state by 10 to better avoid round-off - * accumulation. Also note that the throttling STATES are ordered - * sequentially from 100% (state 0) on down (e.g. 87.5% = state 1), - * which is exactly opposite from duty cycle values (12.5% = state 1). - */ - for (i = 0, NextPercent = 1000; i < NumThrottleStates; i++) - { - StatePtr[i].StateNumber = i; - StatePtr[i].PercentOfClock = NextPercent / 10; - NextPercent -= PercentStep; - } - - return_ACPI_STATUS(AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiGetProcessorThrottlingState - * - * PARAMETERS: ProcessorHandle - handle for the cpu to throttle - * ThrottleState - throttling state to enter - * - * RETURN: Status of function - * - * DESCRIPTION: Get current hardware throttling state - * - ****************************************************************************/ - -ACPI_STATUS -AcpiGetProcessorThrottlingState ( - ACPI_HANDLE ProcessorHandle, - UINT32 *ThrottleState) -{ - ACPI_NAMESPACE_NODE *CpuNode; - ACPI_OPERAND_OBJECT *CpuObj; - UINT32 NumThrottleStates; - UINT32 DutyCycle; - UINT8 DutyOffset; - UINT8 DutyWidth; - - - FUNCTION_TRACE ("AcpiGetProcessorThrottlingState"); - - - /* Convert and validate the device handle */ - - CpuNode = AcpiNsConvertHandleToEntry (ProcessorHandle); - if (!CpuNode || !ThrottleState) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Check for an existing internal object */ - - CpuObj = AcpiNsGetAttachedObject ((ACPI_HANDLE) CpuNode); - if (!CpuObj) - { - return_ACPI_STATUS (AE_NOT_FOUND); - } - - /* - * No Duty fields in IA64 tables - */ - DutyOffset = AcpiGbl_FADT->DutyOffset; - DutyWidth = AcpiGbl_FADT->DutyWidth; - - /* - * Must have a valid P_BLK P0 must have a P_BLK all others may be null - * in either case, we can't thottle a processor that has no P_BLK - * that means we are in the only supported state (0 - 100%) - * - * also, if DutyWidth is zero there are no additional states - */ - if (!CpuObj->Processor.Length || !DutyWidth || - (ACPI_UINT16_MAX < CpuObj->Processor.Address)) - { - *ThrottleState = 0; - return_ACPI_STATUS(AE_OK); - } - - NumThrottleStates = (UINT32) AcpiHwLocalPow (2,DutyWidth); - - /* - * Get the current duty cycle value. - */ - DutyCycle = AcpiHwGetDutyCycle (DutyOffset, - CpuObj->Processor.Address, - NumThrottleStates); - - /* - * Convert duty cycle to throttling state (invert). - */ - if (DutyCycle == 0) - { - *ThrottleState = 0; - } - - else - { - *ThrottleState = NumThrottleStates - DutyCycle; - } - - return_ACPI_STATUS(AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiSetProcessorThrottlingState - * - * PARAMETERS: ProcessorHandle - handle for the cpu to throttle - * ThrottleState - throttling state to enter - * - * RETURN: Status of function - * - * DESCRIPTION: Set hardware into requested throttling state, the handle - * passed in must have a valid P_BLK - * - ****************************************************************************/ - -ACPI_STATUS -AcpiSetProcessorThrottlingState ( - ACPI_HANDLE ProcessorHandle, - UINT32 ThrottleState) -{ - ACPI_NAMESPACE_NODE *CpuNode; - ACPI_OPERAND_OBJECT *CpuObj; - UINT32 NumThrottleStates = 0; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT32 DutyCycle = 0; - - - FUNCTION_TRACE ("AcpiSetProcessorThrottlingState"); - - - /* Convert and validate the device handle */ - - CpuNode = AcpiNsConvertHandleToEntry (ProcessorHandle); - if (!CpuNode) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Check for an existing internal object */ - - CpuObj = AcpiNsGetAttachedObject ((ACPI_HANDLE) CpuNode); - if (!CpuObj) - { - return_ACPI_STATUS (AE_NOT_FOUND); - } - - /* - * No Duty fields in IA64 tables - */ - DutyOffset = AcpiGbl_FADT->DutyOffset; - DutyWidth = AcpiGbl_FADT->DutyWidth; - - /* - * Must have a valid P_BLK P0 must have a P_BLK all others may be null - * in either case, we can't thottle a processor that has no P_BLK - * that means we are in the only supported state (0 - 100%) - * - * also, if DutyWidth is zero there are no additional states - */ - if (!CpuObj->Processor.Length || !DutyWidth || - (ACPI_UINT16_MAX < CpuObj->Processor.Address)) - { - /* - * If caller wants to set the state to the only state we handle - * we're done. - */ - if (ThrottleState == 0) - { - return_ACPI_STATUS (AE_OK); - } - - /* - * Can't set this state - */ - return_ACPI_STATUS (AE_SUPPORT); - } - - NumThrottleStates = (UINT32) AcpiHwLocalPow (2,DutyWidth); - - /* - * Convert throttling state to duty cycle (invert). - */ - if (ThrottleState > 0) - { - DutyCycle = NumThrottleStates - ThrottleState; - } - - /* - * Turn off throttling (don't muck with the h/w while throttling). - */ - AcpiHwDisableThrottling (CpuObj->Processor.Address); - - /* - * Program the throttling state. - */ - AcpiHwProgramDutyCycle (DutyOffset, DutyCycle, - CpuObj->Processor.Address, NumThrottleStates); - - /* - * Only enable throttling for non-zero states (0 - 100%) - */ - if (ThrottleState) - { - AcpiHwEnableThrottling (CpuObj->Processor.Address); - } - - return_ACPI_STATUS(AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiGetProcessorCxInfo - * - * PARAMETERS: ProcessorHandle - handle for the cpu return info about - * UserBuffer - caller supplied buffer - * - * RETURN: Status of function - * - * DESCRIPTION: Get Cx state latencies, this routine - * builds the data directly into the callers buffer - * - * - ****************************************************************************/ - -ACPI_STATUS -AcpiGetProcessorCxInfo ( - ACPI_HANDLE ProcessorHandle, - ACPI_BUFFER *UserBuffer) -{ - ACPI_STATUS Status = AE_OK; - UINT32 CxStateLatencies[4] = {0, 0, 0, 0}; - NATIVE_UINT BufferSpaceNeeded = 0; - ACPI_CX_STATE *StatePtr = NULL; - NATIVE_UINT i = 0; - - - FUNCTION_TRACE ("AcpiGetProcessorCxInfo"); - - - /* - * Have to at least have a buffer to return info in - */ - if (!UserBuffer) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiHwGetCxInfo (CxStateLatencies); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - BufferSpaceNeeded = 4 * sizeof (ACPI_CX_STATE); - - if ((UserBuffer->Length < BufferSpaceNeeded) || !UserBuffer->Pointer) - { - UserBuffer->Length = BufferSpaceNeeded; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - UserBuffer->Length = BufferSpaceNeeded; - - StatePtr = (ACPI_CX_STATE *) UserBuffer->Pointer; - - for (i = 0; i < 4; i++) - { - StatePtr[i].StateNumber = i; - StatePtr[i].Latency = CxStateLatencies[i]; - } - - return_ACPI_STATUS (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiSetProcessorSleepState - * - * PARAMETERS: ProcessorHandle - handle for the cpu return info about - * CxState - the Cx sleeping state (C1-C3) to make - * 'active' - * - * RETURN: Status of function - * - * DESCRIPTION: Sets which Cx state will be used during calls to - * AcpiProcessorSleep () - * - ****************************************************************************/ - -ACPI_STATUS -AcpiSetProcessorSleepState ( - ACPI_HANDLE ProcessorHandle, - UINT32 CxState) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiSetProcessorSleepState"); - - - Status = AcpiHwSetCx (CxState); - - return_ACPI_STATUS (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiProcessorSleep - * - * PARAMETERS: ProcessorHandle - handle for the cpu to put to sleep (Cx) - * TimeSleeping - time (in microseconds) elapsed while - * sleeping - * - * RETURN: Status of function - * - * DESCRIPTION: Puts the processor into the currently active sleep state (Cx) - * - ****************************************************************************/ - -ACPI_STATUS -AcpiProcessorSleep ( - ACPI_HANDLE ProcessorHandle, - UINT32 *PmTimerTicks) -{ - ACPI_NAMESPACE_NODE *CpuNode = NULL; - ACPI_OPERAND_OBJECT *CpuObj = NULL; - ACPI_IO_ADDRESS Address = 0; - - - /* - * Convert ProcessorHandle to PblkAddres... - */ - - /* Convert and validate the device handle */ - - CpuNode = AcpiNsConvertHandleToEntry (ProcessorHandle); - if (!CpuNode) - { - return (AE_BAD_PARAMETER); - } - - /* Check for an existing internal object */ - - CpuObj = AcpiNsGetAttachedObject ((ACPI_HANDLE) CpuNode); - if (!CpuObj) - { - return (AE_NOT_FOUND); - } - - /* Get the processor register block (P_BLK) address */ - - Address = CpuObj->Processor.Address; - if (!CpuObj->Processor.Length) - { - /* Ensure a NULL addresss (note that P_BLK isn't required for C1) */ - - Address = 0; - } - - /* - * Enter the currently active Cx sleep state. - */ - return (AcpiHwEnterCx (Address, PmTimerTicks)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTimer - * - * PARAMETERS: none - * - * RETURN: Current value of the ACPI PMT (timer) - * - * DESCRIPTION: Obtains current value of ACPI PMT - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTimer ( - UINT32 *OutTicks) -{ - FUNCTION_TRACE ("AcpiGetTimer"); - - - if (!OutTicks) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - *OutTicks = AcpiHwPmtTicks (); - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiSetFirmwareWakingVector - * - * PARAMETERS: PhysicalAddress - Physical address of ACPI real mode - * entry point. - * - * RETURN: AE_OK or AE_ERROR - * - * DESCRIPTION: Access function for dFirmwareWakingVector field in FACS - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress) -{ - - FUNCTION_TRACE ("AcpiSetFirmwareWakingVector"); - - - /* Make sure that we have an FACS */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* Set the vector */ - - if (AcpiGbl_FACS->VectorWidth == 32) - { - * (UINT32 *) AcpiGbl_FACS->FirmwareWakingVector = (UINT32) PhysicalAddress; - } - else - { - *AcpiGbl_FACS->FirmwareWakingVector = PhysicalAddress; - } - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiGetFirmwareWakingVector - * - * PARAMETERS: *PhysicalAddress - Output buffer where contents of - * the FirmwareWakingVector field of - * the FACS will be stored. - * - * RETURN: Status - * - * DESCRIPTION: Access function for dFirmwareWakingVector field in FACS - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS *PhysicalAddress) -{ - - FUNCTION_TRACE ("AcpiGetFirmwareWakingVector"); - - - if (!PhysicalAddress) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Make sure that we have an FACS */ - - if (!AcpiGbl_FACS) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* Get the vector */ - - if (AcpiGbl_FACS->VectorWidth == 32) - { - *PhysicalAddress = * (UINT32 *) AcpiGbl_FACS->FirmwareWakingVector; - } - else - { - *PhysicalAddress = *AcpiGbl_FACS->FirmwareWakingVector; - } - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Include/accommon.h b/sys/contrib/dev/acpica/Subsystem/Include/accommon.h deleted file mode 100644 index 3872386..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/accommon.h +++ /dev/null @@ -1,818 +0,0 @@ -/****************************************************************************** - * - * Name: accommon.h -- prototypes for the common (subsystem-wide) procedures - * $Revision: 90 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _ACCOMMON_H -#define _ACCOMMON_H - - - -typedef -ACPI_STATUS (*ACPI_PKG_CALLBACK) ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context); - - - -ACPI_STATUS -AcpiCmWalkPackageTree ( - ACPI_OPERAND_OBJECT *SourceObject, - void *TargetObject, - ACPI_PKG_CALLBACK WalkCallback, - void *Context); - - -typedef struct acpi_pkg_info -{ - UINT8 *FreeSpace; - UINT32 Length; - UINT32 ObjectSpace; - UINT32 NumPackages; -} ACPI_PKG_INFO; - -#define REF_INCREMENT (UINT16) 0 -#define REF_DECREMENT (UINT16) 1 -#define REF_FORCE_DELETE (UINT16) 2 - -/* AcpiCmDumpBuffer */ - -#define DB_BYTE_DISPLAY 1 -#define DB_WORD_DISPLAY 2 -#define DB_DWORD_DISPLAY 4 -#define DB_QWORD_DISPLAY 8 - - -/* Global initialization interfaces */ - -void -AcpiCmInitGlobals ( - void); - -void -AcpiCmTerminate ( - void); - - -/* - * CmInit - miscellaneous initialization and shutdown - */ - -ACPI_STATUS -AcpiCmHardwareInitialize ( - void); - -ACPI_STATUS -AcpiCmSubsystemShutdown ( - void); - -ACPI_STATUS -AcpiCmValidateFadt ( - void); - -/* - * CmGlobal - Global data structures and procedures - */ - -#ifdef ACPI_DEBUG - -NATIVE_CHAR * -AcpiCmGetMutexName ( - UINT32 MutexId); - -NATIVE_CHAR * -AcpiCmGetTypeName ( - UINT32 Type); - -NATIVE_CHAR * -AcpiCmGetRegionName ( - UINT8 SpaceId); - -#endif - - -BOOLEAN -AcpiCmValidObjectType ( - UINT32 Type); - -ACPI_OWNER_ID -AcpiCmAllocateOwnerId ( - UINT32 IdType); - - -/* - * CmClib - Local implementations of C library functions - */ - -#ifndef ACPI_USE_SYSTEM_CLIBRARY - -NATIVE_UINT -AcpiCmStrlen ( - const NATIVE_CHAR *String); - -NATIVE_CHAR * -AcpiCmStrcpy ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString); - -NATIVE_CHAR * -AcpiCmStrncpy ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString, - NATIVE_UINT Count); - -UINT32 -AcpiCmStrncmp ( - const NATIVE_CHAR *String1, - const NATIVE_CHAR *String2, - NATIVE_UINT Count); - -UINT32 -AcpiCmStrcmp ( - const NATIVE_CHAR *String1, - const NATIVE_CHAR *String2); - -NATIVE_CHAR * -AcpiCmStrcat ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString); - -NATIVE_CHAR * -AcpiCmStrncat ( - NATIVE_CHAR *DstString, - const NATIVE_CHAR *SrcString, - NATIVE_UINT Count); - -UINT32 -AcpiCmStrtoul ( - const NATIVE_CHAR *String, - NATIVE_CHAR **Terminator, - NATIVE_UINT Base); - -NATIVE_CHAR * -AcpiCmStrstr ( - NATIVE_CHAR *String1, - NATIVE_CHAR *String2); - -NATIVE_CHAR * -AcpiCmStrupr ( - NATIVE_CHAR *SrcString); - -void * -AcpiCmMemcpy ( - void *Dest, - const void *Src, - NATIVE_UINT Count); - -void * -AcpiCmMemset ( - void *Dest, - NATIVE_UINT Value, - NATIVE_UINT Count); - -UINT32 -AcpiCmToUpper ( - UINT32 c); - -UINT32 -AcpiCmToLower ( - UINT32 c); - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ - -/* - * CmCopy - Object construction and conversion interfaces - */ - -ACPI_STATUS -AcpiCmBuildSimpleObject( - ACPI_OPERAND_OBJECT *Obj, - ACPI_OBJECT *UserObj, - UINT8 *DataSpace, - UINT32 *BufferSpaceUsed); - -ACPI_STATUS -AcpiCmBuildPackageObject ( - ACPI_OPERAND_OBJECT *Obj, - UINT8 *Buffer, - UINT32 *SpaceUsed); - -ACPI_STATUS -AcpiCmCopyIobjectToEobject ( - ACPI_OPERAND_OBJECT *Obj, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiCmCopyEsimpleToIsimple( - ACPI_OBJECT *UserObj, - ACPI_OPERAND_OBJECT *Obj); - -ACPI_STATUS -AcpiCmCopyEobjectToIobject ( - ACPI_OBJECT *Obj, - ACPI_OPERAND_OBJECT *InternalObj); - -ACPI_STATUS -AcpiCmCopyISimpleToIsimple ( - ACPI_OPERAND_OBJECT *SourceObj, - ACPI_OPERAND_OBJECT *DestObj); - -ACPI_STATUS -AcpiCmCopyIpackageToIpackage ( - ACPI_OPERAND_OBJECT *SourceObj, - ACPI_OPERAND_OBJECT *DestObj, - ACPI_WALK_STATE *WalkState); - - -/* - * CmCreate - Object creation - */ - -ACPI_STATUS -AcpiCmUpdateObjectReference ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action); - -ACPI_OPERAND_OBJECT * -_CmCreateInternalObject ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - OBJECT_TYPE_INTERNAL Type); - - -/* - * CmDebug - Debug interfaces - */ - -UINT32 -GetDebugLevel ( - void); - -void -SetDebugLevel ( - UINT32 level); - -void -FunctionTrace ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName); - -void -FunctionTracePtr ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - void *Pointer); - -void -FunctionTraceU32 ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - UINT32 Integer); - -void -FunctionTraceStr ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - NATIVE_CHAR *String); - -void -FunctionExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName); - -void -FunctionStatusExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - ACPI_STATUS Status); - -void -FunctionValueExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - ACPI_INTEGER Value); - -void -FunctionPtrExit ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - NATIVE_CHAR *FunctionName, - UINT8 *Ptr); - -void -DebugPrintPrefix ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber); - -void -DebugPrint ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - UINT32 PrintLevel, - NATIVE_CHAR *Format, ...); - -void -DebugPrintRaw ( - NATIVE_CHAR *Format, ...); - -void -_ReportInfo ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId); - -void -_ReportError ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId); - -void -_ReportWarning ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId); - -void -AcpiCmDumpBuffer ( - UINT8 *Buffer, - UINT32 Count, - UINT32 Display, - UINT32 componentId); - - -/* - * CmDelete - Object deletion - */ - -void -AcpiCmDeleteInternalObj ( - ACPI_OPERAND_OBJECT *Object); - -void -AcpiCmDeleteInternalPackageObject ( - ACPI_OPERAND_OBJECT *Object); - -void -AcpiCmDeleteInternalSimpleObject ( - ACPI_OPERAND_OBJECT *Object); - -ACPI_STATUS -AcpiCmDeleteInternalObjectList ( - ACPI_OPERAND_OBJECT **ObjList); - - -/* - * CmEval - object evaluation - */ - -/* Method name strings */ - -#define METHOD_NAME__HID "_HID" -#define METHOD_NAME__UID "_UID" -#define METHOD_NAME__ADR "_ADR" -#define METHOD_NAME__STA "_STA" -#define METHOD_NAME__REG "_REG" -#define METHOD_NAME__SEG "_SEG" -#define METHOD_NAME__BBN "_BBN" - - -ACPI_STATUS -AcpiCmEvaluateNumericObject ( - NATIVE_CHAR *ObjectName, - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_INTEGER *Address); - -ACPI_STATUS -AcpiCmExecute_HID ( - ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Hid); - -ACPI_STATUS -AcpiCmExecute_STA ( - ACPI_NAMESPACE_NODE *DeviceNode, - UINT32 *StatusFlags); - -ACPI_STATUS -AcpiCmExecute_UID ( - ACPI_NAMESPACE_NODE *DeviceNode, - DEVICE_ID *Uid); - - -/* - * CmError - exception interfaces - */ - -NATIVE_CHAR * -AcpiCmFormatException ( - ACPI_STATUS Status); - - -/* - * CmMutex - mutual exclusion interfaces - */ - -ACPI_STATUS -AcpiCmMutexInitialize ( - void); - -void -AcpiCmMutexTerminate ( - void); - -ACPI_STATUS -AcpiCmCreateMutex ( - ACPI_MUTEX_HANDLE MutexId); - -ACPI_STATUS -AcpiCmDeleteMutex ( - ACPI_MUTEX_HANDLE MutexId); - -ACPI_STATUS -AcpiCmAcquireMutex ( - ACPI_MUTEX_HANDLE MutexId); - -ACPI_STATUS -AcpiCmReleaseMutex ( - ACPI_MUTEX_HANDLE MutexId); - - -/* - * CmObject - internal object create/delete/cache routines - */ - -void * -_CmAllocateObjectDesc ( - NATIVE_CHAR *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId); - -#define AcpiCmCreateInternalObject(t) _CmCreateInternalObject(_THIS_MODULE,__LINE__,_COMPONENT,t) -#define AcpiCmAllocateObjectDesc() _CmAllocateObjectDesc(_THIS_MODULE,__LINE__,_COMPONENT) - -void -AcpiCmDeleteObjectDesc ( - ACPI_OPERAND_OBJECT *Object); - -BOOLEAN -AcpiCmValidInternalObject ( - void *Object); - - -/* - * CmRefCnt - Object reference count management - */ - -void -AcpiCmAddReference ( - ACPI_OPERAND_OBJECT *Object); - -void -AcpiCmRemoveReference ( - ACPI_OPERAND_OBJECT *Object); - -/* - * CmSize - Object size routines - */ - -ACPI_STATUS -AcpiCmGetSimpleObjectSize ( - ACPI_OPERAND_OBJECT *Obj, - UINT32 *ObjLength); - -ACPI_STATUS -AcpiCmGetPackageObjectSize ( - ACPI_OPERAND_OBJECT *Obj, - UINT32 *ObjLength); - -ACPI_STATUS -AcpiCmGetObjectSize( - ACPI_OPERAND_OBJECT *Obj, - UINT32 *ObjLength); - - -/* - * CmState - Generic state creation/cache routines - */ - -void -AcpiCmPushGenericState ( - ACPI_GENERIC_STATE **ListHead, - ACPI_GENERIC_STATE *State); - -ACPI_GENERIC_STATE * -AcpiCmPopGenericState ( - ACPI_GENERIC_STATE **ListHead); - - -ACPI_GENERIC_STATE * -AcpiCmCreateGenericState ( - void); - -ACPI_GENERIC_STATE * -AcpiCmCreateUpdateState ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action); - -ACPI_GENERIC_STATE * -AcpiCmCreatePkgState ( - void *InternalObject, - void *ExternalObject, - UINT16 Index); - -ACPI_STATUS -AcpiCmCreateUpdateStateAndPush ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action, - ACPI_GENERIC_STATE **StateList); - -ACPI_STATUS -AcpiCmCreatePkgStateAndPush ( - void *InternalObject, - void *ExternalObject, - UINT16 Index, - ACPI_GENERIC_STATE **StateList); - -ACPI_GENERIC_STATE * -AcpiCmCreateControlState ( - void); - -void -AcpiCmDeleteGenericState ( - ACPI_GENERIC_STATE *State); - -void -AcpiCmDeleteGenericStateCache ( - void); - -void -AcpiCmDeleteObjectCache ( - void); - -/* - * Cmutils - */ - -BOOLEAN -AcpiCmValidAcpiName ( - UINT32 Name); - -BOOLEAN -AcpiCmValidAcpiCharacter ( - NATIVE_CHAR Character); - -ACPI_STATUS -AcpiCmResolvePackageReferences ( - ACPI_OPERAND_OBJECT *ObjDesc); - -#ifdef ACPI_DEBUG - -void -AcpiCmDisplayInitPathname ( - ACPI_HANDLE ObjHandle, - char *Path); - -#endif - - -/* - * Memory allocation functions and related macros. - * Macros that expand to include filename and line number - */ - -void * -_CmAllocate ( - UINT32 Size, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line); - -void * -_CmCallocate ( - UINT32 Size, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line); - -void -_CmFree ( - void *Address, - UINT32 Component, - NATIVE_CHAR *Module, - UINT32 Line); - -void -AcpiCmInitStaticObject ( - ACPI_OPERAND_OBJECT *ObjDesc); - -#define AcpiCmAllocate(a) _CmAllocate(a,_COMPONENT,_THIS_MODULE,__LINE__) -#define AcpiCmCallocate(a) _CmCallocate(a, _COMPONENT,_THIS_MODULE,__LINE__) -#define AcpiCmFree(a) _CmFree(a,_COMPONENT,_THIS_MODULE,__LINE__) - -#ifndef ACPI_DEBUG_TRACK_ALLOCATIONS - -#define AcpiCmAddElementToAllocList(a,b,c,d,e,f) -#define AcpiCmDeleteElementFromAllocList(a,b,c,d) -#define AcpiCmDumpCurrentAllocations(a,b) -#define AcpiCmDumpAllocationInfo() - -#define DECREMENT_OBJECT_METRICS(a) -#define INCREMENT_OBJECT_METRICS(a) -#define INITIALIZE_ALLOCATION_METRICS() -#define DECREMENT_NAME_TABLE_METRICS(a) -#define INCREMENT_NAME_TABLE_METRICS(a) - -#else - -#define INITIALIZE_ALLOCATION_METRICS() \ - AcpiGbl_CurrentObjectCount = 0; \ - AcpiGbl_CurrentObjectSize = 0; \ - AcpiGbl_RunningObjectCount = 0; \ - AcpiGbl_RunningObjectSize = 0; \ - AcpiGbl_MaxConcurrentObjectCount = 0; \ - AcpiGbl_MaxConcurrentObjectSize = 0; \ - AcpiGbl_CurrentAllocSize = 0; \ - AcpiGbl_CurrentAllocCount = 0; \ - AcpiGbl_RunningAllocSize = 0; \ - AcpiGbl_RunningAllocCount = 0; \ - AcpiGbl_MaxConcurrentAllocSize = 0; \ - AcpiGbl_MaxConcurrentAllocCount = 0; \ - AcpiGbl_CurrentNodeCount = 0; \ - AcpiGbl_CurrentNodeSize = 0; \ - AcpiGbl_MaxConcurrentNodeCount = 0 - - -#define DECREMENT_OBJECT_METRICS(a) \ - AcpiGbl_CurrentObjectCount--; \ - AcpiGbl_CurrentObjectSize -= a - -#define INCREMENT_OBJECT_METRICS(a) \ - AcpiGbl_CurrentObjectCount++; \ - AcpiGbl_RunningObjectCount++; \ - if (AcpiGbl_MaxConcurrentObjectCount < AcpiGbl_CurrentObjectCount) \ - { \ - AcpiGbl_MaxConcurrentObjectCount = AcpiGbl_CurrentObjectCount; \ - } \ - AcpiGbl_RunningObjectSize += a; \ - AcpiGbl_CurrentObjectSize += a; \ - if (AcpiGbl_MaxConcurrentObjectSize < AcpiGbl_CurrentObjectSize) \ - { \ - AcpiGbl_MaxConcurrentObjectSize = AcpiGbl_CurrentObjectSize; \ - } - -#define DECREMENT_NAME_TABLE_METRICS(a) \ - AcpiGbl_CurrentNodeCount--; \ - AcpiGbl_CurrentNodeSize -= (a) - -#define INCREMENT_NAME_TABLE_METRICS(a) \ - AcpiGbl_CurrentNodeCount++; \ - AcpiGbl_CurrentNodeSize+= (a); \ - if (AcpiGbl_MaxConcurrentNodeCount < AcpiGbl_CurrentNodeCount) \ - { \ - AcpiGbl_MaxConcurrentNodeCount = AcpiGbl_CurrentNodeCount; \ - } \ - - -void -AcpiCmDumpAllocationInfo ( - void); - -void -AcpiCmDumpCurrentAllocations ( - UINT32 Component, - NATIVE_CHAR *Module); - -#endif - - -#endif /* _ACCOMMON_H */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acconfig.h b/sys/contrib/dev/acpica/Subsystem/Include/acconfig.h deleted file mode 100644 index b3c7ed6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acconfig.h +++ /dev/null @@ -1,244 +0,0 @@ -/****************************************************************************** - * - * Name: acconfig.h - Global configuration constants - * $Revision: 55 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _ACCONFIG_H -#define _ACCONFIG_H - - -/****************************************************************************** - * - * Compile-time options - * - *****************************************************************************/ - -/* - * ACPI_DEBUG - This switch enables all the debug facilities of the ACPI - * subsystem. This includes the DEBUG_PRINT output statements - * When disabled, all DEBUG_PRINT statements are compiled out. - * - * ACPI_APPLICATION - Use this switch if the subsystem is going to be run - * at the application level. - * - */ - - -/****************************************************************************** - * - * Subsystem Constants - * - *****************************************************************************/ - - -/* Version string */ - -#define ACPI_CA_VERSION 0x20010208 - - -/* Maximum objects in the various object caches */ - -#define MAX_STATE_CACHE_DEPTH 64 /* State objects for stacks */ -#define MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */ -#define MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */ -#define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */ -#define MAX_WALK_CACHE_DEPTH 2 /* Objects for parse tree walks (method execution) */ - - -/* String size constants */ - -#define MAX_STRING_LENGTH 512 -#define PATHNAME_MAX 256 /* A full namespace pathname */ - - -/* Maximum count for a semaphore object */ - -#define MAX_SEMAPHORE_COUNT 256 - - -/* Max reference count (for debug only) */ - -#define MAX_REFERENCE_COUNT 0x200 - - -/* Size of cached memory mapping for system memory operation region */ - -#define SYSMEM_REGION_WINDOW_SIZE 4096 - - -/* - * Debugger threading model - * Use single threaded if the entire subsystem is contained in an application - * Use multiple threaded when the the subsystem is running in the kernel. - * - * By default the model is single threaded if ACPI_APPLICATION is set, - * multi-threaded if ACPI_APPLICATION is not set. - */ - -#define DEBUGGER_SINGLE_THREADED 0 -#define DEBUGGER_MULTI_THREADED 1 - -#ifdef ACPI_APPLICATION -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED - -#else -#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED -#endif - - -/****************************************************************************** - * - * ACPI Specification constants (Do not change unless the specification changes) - * - *****************************************************************************/ - -/* - * Method info (in WALK_STATE), containing local variables and argumetns - */ - -#define MTH_NUM_LOCALS 8 -#define MTH_MAX_LOCAL 7 - -#define MTH_NUM_ARGS 7 -#define MTH_MAX_ARG 6 - -/* Maximum length of resulting string when converting from a buffer */ - -#define ACPI_MAX_STRING_CONVERSION 200 - -/* - * Operand Stack (in WALK_STATE), Must be large enough to contain MTH_MAX_ARG - */ - -#define OBJ_NUM_OPERANDS 8 -#define OBJ_MAX_OPERAND 7 - -/* Names within the namespace are 4 bytes long */ - -#define ACPI_NAME_SIZE 4 -#define PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 INT8 for separator */ -#define PATH_SEPARATOR '.' - - -/* Constants used in searching for the RSDP in low memory */ - -#define LO_RSDP_WINDOW_BASE 0 /* Physical Address */ -#define HI_RSDP_WINDOW_BASE 0xE0000 /* Physical Address */ -#define LO_RSDP_WINDOW_SIZE 0x400 -#define HI_RSDP_WINDOW_SIZE 0x20000 -#define RSDP_SCAN_STEP 16 - - -#endif /* _ACCONFIG_H */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acdebug.h b/sys/contrib/dev/acpica/Subsystem/Include/acdebug.h deleted file mode 100644 index 88a41b6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acdebug.h +++ /dev/null @@ -1,498 +0,0 @@ -/****************************************************************************** - * - * Name: acdebug.h - ACPI/AML debugger - * $Revision: 41 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACDEBUG_H__ -#define __ACDEBUG_H__ - - -#define DB_MAX_ARGS 8 /* Must be max method args + 1 */ - -#define DB_COMMAND_PROMPT '-' -#define DB_EXECUTE_PROMPT '%' - - -extern int optind; -extern NATIVE_CHAR *optarg; -extern UINT8 *AmlPtr; -extern UINT32 AcpiAmlLength; - -extern BOOLEAN opt_tables; -extern BOOLEAN opt_disasm; -extern BOOLEAN opt_stats; -extern BOOLEAN opt_parse_jit; -extern BOOLEAN opt_verbose; -extern BOOLEAN opt_ini_methods; - - -extern NATIVE_CHAR *Args[DB_MAX_ARGS]; -extern NATIVE_CHAR LineBuf[80]; -extern NATIVE_CHAR ScopeBuf[40]; -extern NATIVE_CHAR DebugFilename[40]; -extern BOOLEAN OutputToFile; -extern NATIVE_CHAR *Buffer; -extern NATIVE_CHAR *Filename; -extern NATIVE_CHAR *INDENT_STRING; -extern UINT8 AcpiGbl_DbOutputFlags; -extern UINT32 AcpiGbl_DbDebugLevel; -extern UINT32 AcpiGbl_DbConsoleDebugLevel; - -extern UINT32 NumNames; -extern UINT32 NumMethods; -extern UINT32 NumRegions; -extern UINT32 NumPackages; -extern UINT32 NumAliases; -extern UINT32 NumDevices; -extern UINT32 NumFieldDefs; -extern UINT32 NumThermalZones; -extern UINT32 NumNodes; -extern UINT32 NumGrammarElements; -extern UINT32 NumMethodElements ; -extern UINT32 NumMutexes; -extern UINT32 NumPowerResources; -extern UINT32 NumBankFields ; -extern UINT32 NumIndexFields; -extern UINT32 NumEvents; - -extern UINT32 SizeOfParseTree; -extern UINT32 SizeOfMethodTrees; -extern UINT32 SizeOfNTEs; -extern UINT32 SizeOfAcpiObjects; - - -#define BUFFER_SIZE 4196 - -#define DB_REDIRECTABLE_OUTPUT 0x01 -#define DB_CONSOLE_OUTPUT 0x02 -#define DB_DUPLICATE_OUTPUT 0x03 - - -typedef struct CommandInfo -{ - NATIVE_CHAR *Name; /* Command Name */ - UINT8 MinArgs; /* Minimum arguments required */ - -} COMMAND_INFO; - - -typedef struct ArgumentInfo -{ - NATIVE_CHAR *Name; /* Argument Name */ - -} ARGUMENT_INFO; - - -#define PARAM_LIST(pl) pl - -#define DBTEST_OUTPUT_LEVEL(lvl) if (opt_verbose) - -#define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\ - AcpiOsPrintf PARAM_LIST(fp);} - -#define EX_NO_SINGLE_STEP 1 -#define EX_SINGLE_STEP 2 - - -/* Prototypes */ - - -/* - * dbapi - external debugger interfaces - */ - -int -AcpiDbInitialize ( - void); - -ACPI_STATUS -AcpiDbSingleStep ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT8 OpType); - - -/* - * dbcmds - debug commands and output routines - */ - - -void -AcpiDbDisplayTableInfo ( - NATIVE_CHAR *TableArg); - -void -AcpiDbUnloadAcpiTable ( - NATIVE_CHAR *TableArg, - NATIVE_CHAR *InstanceArg); - -void -AcpiDbSetMethodBreakpoint ( - NATIVE_CHAR *Location, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbSetMethodCallBreakpoint ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbDisassembleAml ( - NATIVE_CHAR *Statements, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbDumpNamespace ( - NATIVE_CHAR *StartArg, - NATIVE_CHAR *DepthArg); - -void -AcpiDbDumpNamespaceByOwner ( - NATIVE_CHAR *OwnerArg, - NATIVE_CHAR *DepthArg); - -void -AcpiDbSendNotify ( - NATIVE_CHAR *Name, - UINT32 Value); - -void -AcpiDbSetMethodData ( - NATIVE_CHAR *TypeArg, - NATIVE_CHAR *IndexArg, - NATIVE_CHAR *ValueArg); - -ACPI_STATUS -AcpiDbDisplayObjects ( - NATIVE_CHAR *ObjTypeArg, - NATIVE_CHAR *DisplayCountArg); - -ACPI_STATUS -AcpiDbFindNameInNamespace ( - NATIVE_CHAR *NameArg); - -void -AcpiDbSetScope ( - NATIVE_CHAR *Name); - -void -AcpiDbFindReferences ( - NATIVE_CHAR *ObjectArg); - -void -AcpiDbDisplayResources ( - NATIVE_CHAR *ObjectArg); - - -/* - * dbdisasm - AML disassembler - */ - -void -AcpiDbDisplayOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Origin, - UINT32 NumOpcodes); - -void -AcpiDbDisplayNamestring ( - NATIVE_CHAR *Name); - -void -AcpiDbDisplayPath ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbDisplayOpcode ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbDecodeInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc); - - -/* - * dbdisply - debug display commands - */ - - -void -AcpiDbDisplayMethodInfo ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbDecodeAndDisplayObject ( - NATIVE_CHAR *Target, - NATIVE_CHAR *OutputType); - -void -AcpiDbDisplayResultObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDbDisplayAllMethods ( - NATIVE_CHAR *DisplayCountArg); - -void -AcpiDbDisplayInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -void -AcpiDbDisplayArguments ( - void); - -void -AcpiDbDisplayLocals ( - void); - -void -AcpiDbDisplayResults ( - void); - -void -AcpiDbDisplayCallingTree ( - void); - -void -AcpiDbDisplayArgumentObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - - -/* - * dbexec - debugger control method execution - */ - -void -AcpiDbExecute ( - NATIVE_CHAR *Name, - NATIVE_CHAR **Args, - UINT32 Flags); - -void -AcpiDbCreateExecutionThreads ( - NATIVE_CHAR *NumThreadsArg, - NATIVE_CHAR *NumLoopsArg, - NATIVE_CHAR *MethodNameArg); - - -/* - * dbfileio - Debugger file I/O commands - */ - -OBJECT_TYPE_INTERNAL -AcpiDbMatchArgument ( - NATIVE_CHAR *UserArgument, - ARGUMENT_INFO *Arguments); - - -void -AcpiDbCloseDebugFile ( - void); - -void -AcpiDbOpenDebugFile ( - NATIVE_CHAR *Name); - -ACPI_STATUS -AcpiDbLoadAcpiTable ( - NATIVE_CHAR *Filename); - - -/* - * dbhistry - debugger HISTORY command - */ - -void -AcpiDbAddToHistory ( - NATIVE_CHAR *CommandLine); - -void -AcpiDbDisplayHistory (void); - -NATIVE_CHAR * -AcpiDbGetFromHistory ( - NATIVE_CHAR *CommandNumArg); - - -/* - * dbinput - user front-end to the AML debugger - */ - -ACPI_STATUS -AcpiDbCommandDispatch ( - NATIVE_CHAR *InputBuffer, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbExecuteThread ( - void *Context); - -ACPI_STATUS -AcpiDbUserCommands ( - NATIVE_CHAR Prompt, - ACPI_PARSE_OBJECT *Op); - - -/* - * dbstats - Generation and display of ACPI table statistics - */ - -void -AcpiDbGenerateStatistics ( - ACPI_PARSE_OBJECT *Root, - BOOLEAN IsMethod); - - -ACPI_STATUS -AcpiDbDisplayStatistics ( - NATIVE_CHAR *TypeArg); - - -/* - * dbutils - AML debugger utilities - */ - -void -AcpiDbSetOutputDestination ( - UINT32 Where); - -void -AcpiDbDumpBuffer ( - UINT32 Address); - -void -AcpiDbDumpObject ( - ACPI_OBJECT *ObjDesc, - UINT32 Level); - -void -AcpiDbPrepNamestring ( - NATIVE_CHAR *Name); - - -ACPI_STATUS -AcpiDbSecondPassParse ( - ACPI_PARSE_OBJECT *Root); - -ACPI_NAMESPACE_NODE * -AcpiDbLocalNsLookup ( - NATIVE_CHAR *Name); - - -#endif /* __ACDEBUG_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acdispat.h b/sys/contrib/dev/acpica/Subsystem/Include/acdispat.h deleted file mode 100644 index 0a7b4d5..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acdispat.h +++ /dev/null @@ -1,546 +0,0 @@ -/****************************************************************************** - * - * Name: acdispat.h - dispatcher (parser to interpreter interface) - * $Revision: 35 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef _ACDISPAT_H_ -#define _ACDISPAT_H_ - - -#define NAMEOF_LOCAL_NTE "__L0" -#define NAMEOF_ARG_NTE "__A0" - - -/* For AcpiDsMethodDataSetValue */ - -#define MTH_TYPE_LOCAL 0 -#define MTH_TYPE_ARG 1 - - -/* Common interfaces */ - -ACPI_STATUS -AcpiDsObjStackPush ( - void *Object, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsObjStackPop ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState); - -void * -AcpiDsObjStackGetValue ( - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsObjStackPopObject ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState); - - -/* dsopcode - support for late evaluation */ - -ACPI_STATUS -AcpiDsGetFieldUnitArguments ( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiDsGetRegionArguments ( - ACPI_OPERAND_OBJECT *RgnDesc); - - -/* dsctrl - Parser/Interpreter interface, control stack routines */ - - -ACPI_STATUS -AcpiDsExecBeginControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsExecEndControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - - -/* dsexec - Parser/Interpreter interface, method execution callbacks */ - - -ACPI_STATUS -AcpiDsGetPredicateValue ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT32 HasResultObj); - -ACPI_STATUS -AcpiDsExecBeginOp ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -ACPI_STATUS -AcpiDsExecEndOp ( - ACPI_WALK_STATE *State, - ACPI_PARSE_OBJECT *Op); - - -/* dsfield - Parser/Interpreter interface for AML fields */ - - -ACPI_STATUS -AcpiDsCreateField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsCreateBankField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsCreateIndexField ( - ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE RegionNode, - ACPI_WALK_STATE *WalkState); - - -/* dsload - Parser/Interpreter interface, namespace load callbacks */ - -ACPI_STATUS -AcpiDsLoad1BeginOp ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -ACPI_STATUS -AcpiDsLoad1EndOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsLoad2BeginOp ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -ACPI_STATUS -AcpiDsLoad2EndOp ( - ACPI_WALK_STATE *State, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsLoad3BeginOp ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -ACPI_STATUS -AcpiDsLoad3EndOp ( - ACPI_WALK_STATE *State, - ACPI_PARSE_OBJECT *Op); - - -/* dsmthdat - method data (locals/args) */ - - -ACPI_STATUS -AcpiDsMethodDataGetEntry ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT ***Node); - -ACPI_STATUS -AcpiDsMethodDataDeleteAll ( - ACPI_WALK_STATE *WalkState); - -BOOLEAN -AcpiDsIsMethodValue ( - ACPI_OPERAND_OBJECT *ObjDesc); - -OBJECT_TYPE_INTERNAL -AcpiDsMethodDataGetType ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodDataGetValue ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **DestDesc); - -ACPI_STATUS -AcpiDsMethodDataSetValue ( - UINT32 Type, - UINT32 Index, - ACPI_OPERAND_OBJECT *SrcDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodDataDeleteValue ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodDataInitArgs ( - ACPI_OPERAND_OBJECT **Params, - UINT32 MaxParamCount, - ACPI_WALK_STATE *WalkState); - -ACPI_NAMESPACE_NODE * -AcpiDsMethodDataGetNte ( - UINT32 Type, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodDataInit ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodDataSetEntry ( - UINT32 Type, - UINT32 Index, - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState); - - -/* dsmethod - Parser/Interpreter interface - control method parsing */ - -ACPI_STATUS -AcpiDsParseMethod ( - ACPI_HANDLE ObjHandle); - -ACPI_STATUS -AcpiDsCallControlMethod ( - ACPI_WALK_LIST *WalkList, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsRestartControlMethod ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ReturnDesc); - -ACPI_STATUS -AcpiDsTerminateControlMethod ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsBeginMethodExecution ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc); - - -/* dsobj - Parser/Interpreter interface - object initialization and conversion */ - -ACPI_STATUS -AcpiDsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -ACPI_STATUS -AcpiDsInitializeObjects ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NAMESPACE_NODE *StartNode); - -ACPI_STATUS -AcpiDsBuildInternalPackageObj ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *op, - ACPI_OPERAND_OBJECT **ObjDesc); - -ACPI_STATUS -AcpiDsBuildInternalObject ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *op, - ACPI_OPERAND_OBJECT **ObjDescPtr); - -ACPI_STATUS -AcpiDsInitObjectFromOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT16 Opcode, - ACPI_OPERAND_OBJECT **ObjDesc); - -ACPI_STATUS -AcpiDsCreateNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - ACPI_PARSE_OBJECT *Op); - - -/* dsregn - Parser/Interpreter interface - Op Region parsing */ - -ACPI_STATUS -AcpiDsEvalFieldUnitOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsEvalRegionOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsInitializeRegion ( - ACPI_HANDLE ObjHandle); - - -/* dsutils - Parser/Interpreter interface utility routines */ - -BOOLEAN -AcpiDsIsResultUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState); - -void -AcpiDsDeleteResultIfNotUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT *ResultObj, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsCreateOperand ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Arg, - UINT32 ArgsRemaining); - -ACPI_STATUS -AcpiDsCreateOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *FirstArg); - -ACPI_STATUS -AcpiDsResolveOperands ( - ACPI_WALK_STATE *WalkState); - -OBJECT_TYPE_INTERNAL -AcpiDsMapOpcodeToDataType ( - UINT16 Opcode, - UINT32 *OutFlags); - -OBJECT_TYPE_INTERNAL -AcpiDsMapNamedOpcodeToDataType ( - UINT16 Opcode); - - -/* - * dswscope - Scope Stack manipulation - */ - -ACPI_STATUS -AcpiDsScopeStackPush ( - ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, - ACPI_WALK_STATE *WalkState); - - -ACPI_STATUS -AcpiDsScopeStackPop ( - ACPI_WALK_STATE *WalkState); - -void -AcpiDsScopeStackClear ( - ACPI_WALK_STATE *WalkState); - - -/* AcpiDswstate - parser WALK_STATE management routines */ - -ACPI_WALK_STATE * -AcpiDsCreateWalkState ( - ACPI_OWNER_ID OwnerId, - ACPI_PARSE_OBJECT *Origin, - ACPI_OPERAND_OBJECT *MthDesc, - ACPI_WALK_LIST *WalkList); - -ACPI_STATUS -AcpiDsObjStackDeleteAll ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsObjStackPopAndDelete ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState); - -void -AcpiDsDeleteWalkState ( - ACPI_WALK_STATE *WalkState); - -ACPI_WALK_STATE * -AcpiDsPopWalkState ( - ACPI_WALK_LIST *WalkList); - -ACPI_STATUS -AcpiDsResultStackPop ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultStackPush ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultStackClear ( - ACPI_WALK_STATE *WalkState); - -ACPI_WALK_STATE * -AcpiDsGetCurrentWalkState ( - ACPI_WALK_LIST *WalkList); - -void -AcpiDsDeleteWalkStateCache ( - void); - -ACPI_STATUS -AcpiDsResultInsert ( - void *Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultRemove ( - ACPI_OPERAND_OBJECT **Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultPop ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultPush ( - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultPopFromBottom ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState); - -#endif /* _ACDISPAT_H_ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acefi.h b/sys/contrib/dev/acpica/Subsystem/Include/acefi.h deleted file mode 100644 index f0611f6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acefi.h +++ /dev/null @@ -1,136 +0,0 @@ -/****************************************************************************** - * - * Name: acefi.h - OS specific defines, etc. - * $Revision: 6 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACEFI_H__ -#define __ACEFI_H__ - -#define ACPI_OS_NAME "AED EFI" - -#include <efi.h> -#include <efistdarg.h> -#include <efilib.h> - - -/* _int64 works for both IA32 and IA64 */ - -#define COMPILER_DEPENDENT_UINT64 unsigned __int64 - -/* warn C4142: redefinition of type */ - -#pragma warning(disable:4142) - - -#endif /* __ACEFI_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acenv.h b/sys/contrib/dev/acpica/Subsystem/Include/acenv.h deleted file mode 100644 index f49098a..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acenv.h +++ /dev/null @@ -1,379 +0,0 @@ -/****************************************************************************** - * - * Name: acenv.h - Generation environment specific items - * $Revision: 70 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACENV_H__ -#define __ACENV_H__ - - -/* - * Configuration for ACPI tools and utilities - */ - -#ifdef _ACPI_DUMP_APP -#define ACPI_DEBUG -#define ACPI_APPLICATION -#define ENABLE_DEBUGGER -#define ACPI_USE_SYSTEM_CLIBRARY -#define PARSER_ONLY -#endif - -#ifdef _ACPI_EXEC_APP -#undef DEBUGGER_THREADING -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED -#define ACPI_DEBUG -#define ACPI_APPLICATION -#define ENABLE_DEBUGGER -#define ACPI_USE_SYSTEM_CLIBRARY -#endif - -#ifdef _ACPI_ASL_COMPILER -#define ACPI_DEBUG -#define ACPI_APPLICATION -#define ENABLE_DEBUGGER -#define ACPI_USE_SYSTEM_CLIBRARY -#endif - -/* - * Memory allocation tracking. Used only if - * 1) This is the debug version - * 2) This is NOT a 16-bit version of the code (not enough real-mode memory) - */ -#ifdef ACPI_DEBUG -#ifndef _IA16 -#define ACPI_DEBUG_TRACK_ALLOCATIONS -#endif -#endif - -/* - * Environment configuration. The purpose of this file is to interface to the - * local generation environment. - * - * 1) ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library. - * Otherwise, local versions of string/memory functions will be used. - * 2) ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and - * the standard header files may be used. - * - * The ACPI subsystem only uses low level C library functions that do not call - * operating system services and may therefore be inlined in the code. - * - * It may be necessary to tailor these include files to the target - * generation environment. - * - * - * Functions and constants used from each header: - * - * string.h: memcpy - * memset - * strcat - * strcmp - * strcpy - * strlen - * strncmp - * strncat - * strncpy - * - * stdlib.h: strtoul - * - * stdarg.h: va_list - * va_arg - * va_start - * va_end - * - */ - -/*! [Begin] no source code translation */ - -#ifdef _LINUX -#include "aclinux.h" - -#elif _AED_EFI -#include "acefi.h" - -#elif WIN32 -#include "acwin.h" - -#elif __FreeBSD__ -#include "acfreebsd.h" - -#else - -/* All other environments */ - -#define ACPI_USE_STANDARD_HEADERS - -/* Name of host operating system (returned by the _OS_ namespace object) */ - -#define ACPI_OS_NAME "Intel ACPI/CA Core Subsystem" - -#endif - - -/*! [End] no source code translation !*/ - -/****************************************************************************** - * - * C library configuration - * - *****************************************************************************/ - -#ifdef ACPI_USE_SYSTEM_CLIBRARY -/* - * Use the standard C library headers. - * We want to keep these to a minimum. - * - */ - -#ifdef ACPI_USE_STANDARD_HEADERS -/* - * Use the standard headers from the standard locations - */ -#include <stdarg.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> - -#endif /* ACPI_USE_STANDARD_HEADERS */ - -/* - * We will be linking to the standard Clib functions - */ - -#define STRSTR(s1,s2) strstr((s1), (s2)) -#define STRUPR(s) strupr((s)) -#define STRLEN(s) strlen((s)) -#define STRCPY(d,s) strcpy((d), (s)) -#define STRNCPY(d,s,n) strncpy((d), (s), (NATIVE_INT)(n)) -#define STRNCMP(d,s,n) strncmp((d), (s), (NATIVE_INT)(n)) -#define STRCMP(d,s) strcmp((d), (s)) -#define STRCAT(d,s) strcat((d), (s)) -#define STRNCAT(d,s,n) strncat((d), (s), (NATIVE_INT)(n)) -#define STRTOUL(d,s,n) strtoul((d), (s), (NATIVE_INT)(n)) -#define MEMCPY(d,s,n) memcpy((d), (s), (NATIVE_INT)(n)) -#define MEMSET(d,s,n) memset((d), (s), (NATIVE_INT)(n)) -#define TOUPPER toupper -#define TOLOWER tolower -#define IS_XDIGIT isxdigit - -/****************************************************************************** - * - * Not using native C library, use local implementations - * - *****************************************************************************/ -#else - -/* - * Use local definitions of C library macros and functions - * NOTE: The function implementations may not be as efficient - * as an inline or assembly code implementation provided by a - * native C library. - */ - -#ifndef va_arg - -#ifndef _VALIST -#define _VALIST -typedef char *va_list; -#endif /* _VALIST */ - -/* - * Storage alignment properties - */ - -#define _AUPBND (sizeof(int) - 1) -#define _ADNBND (sizeof(int) - 1) - -/* - * Variable argument list macro definitions - */ - -#define _Bnd(X, bnd) (((sizeof(X)) + (bnd)) & (~(bnd))) -#define va_arg(ap, T) (*(T *)(((ap)+=((_Bnd(T, _AUPBND)))-(_Bnd(T,_ADNBND))))) -#define va_end(ap) (void)0 -#define va_start(ap, A) (void)((ap)=(((char*)&(A))+(_Bnd(A,_AUPBND)))) - -#endif /* va_arg */ - - -#define STRSTR(s1,s2) AcpiCmStrstr ((s1), (s2)) -#define STRUPR(s) AcpiCmStrupr ((s)) -#define STRLEN(s) AcpiCmStrlen ((s)) -#define STRCPY(d,s) AcpiCmStrcpy ((d), (s)) -#define STRNCPY(d,s,n) AcpiCmStrncpy ((d), (s), (n)) -#define STRNCMP(d,s,n) AcpiCmStrncmp ((d), (s), (n)) -#define STRCMP(d,s) AcpiCmStrcmp ((d), (s)) -#define STRCAT(d,s) AcpiCmStrcat ((d), (s)) -#define STRNCAT(d,s,n) AcpiCmStrncat ((d), (s), (n)) -#define STRTOUL(d,s,n) AcpiCmStrtoul ((d), (s),(n)) -#define MEMCPY(d,s,n) AcpiCmMemcpy ((d), (s), (n)) -#define MEMSET(d,v,n) AcpiCmMemset ((d), (v), (n)) -#define TOUPPER AcpiCmToUpper -#define TOLOWER AcpiCmToLower - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ - - -/****************************************************************************** - * - * Assembly code macros - * - *****************************************************************************/ - -/* - * Handle platform- and compiler-specific assembly language differences. - * These should already have been defined by the platform includes above. - * - * Notes: - * 1) Interrupt 3 is used to break into a debugger - * 2) Interrupts are turned off during ACPI register setup - */ - -/* Unrecognized compiler, use defaults */ -#ifndef ACPI_ASM_MACROS - -#define ACPI_ASM_MACROS -#define causeinterrupt(level) -#define BREAKPOINT3 -#define disable() -#define enable() -#define halt() -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) - -#endif /* ACPI_ASM_MACROS */ - - -#ifdef ACPI_APPLICATION - -/* Don't want software interrupts within a ring3 application */ - -#undef causeinterrupt -#undef BREAKPOINT3 -#define causeinterrupt(level) -#define BREAKPOINT3 -#endif - - -/****************************************************************************** - * - * Compiler-specific - * - *****************************************************************************/ - -/* this has been moved to compiler-specific headers, which are included from the - platform header. */ - - -#endif /* __ACENV_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acevents.h b/sys/contrib/dev/acpica/Subsystem/Include/acevents.h deleted file mode 100644 index 846b399..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acevents.h +++ /dev/null @@ -1,307 +0,0 @@ -/****************************************************************************** - * - * Name: acevents.h - Event subcomponent prototypes and defines - * $Revision: 63 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACEVENTS_H__ -#define __ACEVENTS_H__ - - -ACPI_STATUS -AcpiEvInitialize ( - void); - - -/* - * AcpiEvfixed - Fixed event handling - */ - -ACPI_STATUS -AcpiEvFixedEventInitialize ( - void); - -UINT32 -AcpiEvFixedEventDetect ( - void); - -UINT32 -AcpiEvFixedEventDispatch ( - UINT32 AcpiEvent); - - -/* - * AcpiEvglock - Global Lock support - */ - -ACPI_STATUS -AcpiEvAcquireGlobalLock( - void); - -void -AcpiEvReleaseGlobalLock( - void); - -ACPI_STATUS -AcpiEvInitGlobalLockHandler ( - void); - - -/* - * AcpiEvgpe - GPE handling and dispatch - */ - -ACPI_STATUS -AcpiEvGpeInitialize ( - void); - -ACPI_STATUS -AcpiEvInitGpeControlMethods ( - void); - -UINT32 -AcpiEvGpeDispatch ( - UINT32 GpeNumber); - -UINT32 -AcpiEvGpeDetect ( - void); - - -/* - * AcpiEvnotify - Device Notify handling and dispatch - */ - -void -AcpiEvNotifyDispatch ( - ACPI_HANDLE Device, - UINT32 NotifyValue); - - -/* - * AcpiEvregion - Address Space handling - */ - -ACPI_STATUS -AcpiEvInstallDefaultAddressSpaceHandlers ( - void); - -ACPI_STATUS -AcpiEvAddressSpaceDispatch ( - ACPI_OPERAND_OBJECT *RegionObj, - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value); - - -ACPI_STATUS -AcpiEvAddrHandlerHelper ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -void -AcpiEvDisassociateRegionFromHandler( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked); - - -ACPI_STATUS -AcpiEvAssociateRegionAndHandler ( - ACPI_OPERAND_OBJECT *HandlerObj, - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked); - - -/* - * AcpiEvregini - Region initialization and setup - */ - -ACPI_STATUS -AcpiEvSystemMemoryRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvIoSpaceRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvPciConfigRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvDefaultRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvInitializeRegion ( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsLocked); - - -/* - * Evsci - SCI (System Control Interrupt) handling/dispatch - */ - -UINT32 -AcpiEvInstallSciHandler ( - void); - -ACPI_STATUS -AcpiEvRemoveSciHandler ( - void); - -UINT32 -AcpiEvInitializeSCI ( - UINT32 ProgramSCI); - -void -AcpiEvRestoreAcpiState ( - void); - -void -AcpiEvTerminate ( - void); - - -/* Debug support */ - -#ifdef ACPI_DEBUG - -UINT32 -AcpiEvSciCount ( - UINT32 AcpiEvent); - -#define DEBUG_INCREMENT_EVENT_COUNT(a) AcpiGbl_EventCount[a]++; - -#else - -#define DEBUG_INCREMENT_EVENT_COUNT(a) -#endif - - -#endif /* __ACEVENTS_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acexcep.h b/sys/contrib/dev/acpica/Subsystem/Include/acexcep.h deleted file mode 100644 index 13dbf75..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acexcep.h +++ /dev/null @@ -1,318 +0,0 @@ -/****************************************************************************** - * - * Name: acexcep.h - Exception codes returned by the ACPI subsystem - * $Revision: 41 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACEXCEP_H__ -#define __ACEXCEP_H__ - - -/* - * Exceptions returned by external ACPI interfaces - */ - -#define AE_CODE_ENVIRONMENTAL 0x0000 -#define AE_CODE_PROGRAMMER 0x1000 -#define AE_CODE_ACPI_TABLES 0x2000 -#define AE_CODE_AML 0x3000 -#define AE_CODE_CONTROL 0x4000 -#define AE_CODE_MASK 0xF000 - - -#define ACPI_SUCCESS(a) (!(a)) -#define ACPI_FAILURE(a) (a) - - -#define AE_OK (ACPI_STATUS) 0x0000 - -/* - * Environmental exceptions - */ -#define AE_ERROR (ACPI_STATUS) (0x0001 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_ACPI_TABLES (ACPI_STATUS) (0x0002 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_NAMESPACE (ACPI_STATUS) (0x0003 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_MEMORY (ACPI_STATUS) (0x0004 | AE_CODE_ENVIRONMENTAL) -#define AE_NOT_FOUND (ACPI_STATUS) (0x0005 | AE_CODE_ENVIRONMENTAL) -#define AE_NOT_EXIST (ACPI_STATUS) (0x0006 | AE_CODE_ENVIRONMENTAL) -#define AE_EXIST (ACPI_STATUS) (0x0007 | AE_CODE_ENVIRONMENTAL) -#define AE_TYPE (ACPI_STATUS) (0x0008 | AE_CODE_ENVIRONMENTAL) -#define AE_NULL_OBJECT (ACPI_STATUS) (0x0009 | AE_CODE_ENVIRONMENTAL) -#define AE_NULL_ENTRY (ACPI_STATUS) (0x000A | AE_CODE_ENVIRONMENTAL) -#define AE_BUFFER_OVERFLOW (ACPI_STATUS) (0x000B | AE_CODE_ENVIRONMENTAL) -#define AE_STACK_OVERFLOW (ACPI_STATUS) (0x000C | AE_CODE_ENVIRONMENTAL) -#define AE_STACK_UNDERFLOW (ACPI_STATUS) (0x000D | AE_CODE_ENVIRONMENTAL) -#define AE_NOT_IMPLEMENTED (ACPI_STATUS) (0x000E | AE_CODE_ENVIRONMENTAL) -#define AE_VERSION_MISMATCH (ACPI_STATUS) (0x000F | AE_CODE_ENVIRONMENTAL) -#define AE_SUPPORT (ACPI_STATUS) (0x0010 | AE_CODE_ENVIRONMENTAL) -#define AE_SHARE (ACPI_STATUS) (0x0011 | AE_CODE_ENVIRONMENTAL) -#define AE_LIMIT (ACPI_STATUS) (0x0012 | AE_CODE_ENVIRONMENTAL) -#define AE_TIME (ACPI_STATUS) (0x0013 | AE_CODE_ENVIRONMENTAL) -#define AE_UNKNOWN_STATUS (ACPI_STATUS) (0x0014 | AE_CODE_ENVIRONMENTAL) - -#define AE_CODE_ENV_MAX 0x0014 - -/* - * Programmer exceptions - */ -#define AE_BAD_PARAMETER (ACPI_STATUS) (0x0001 | AE_CODE_PROGRAMMER) -#define AE_BAD_CHARACTER (ACPI_STATUS) (0x0002 | AE_CODE_PROGRAMMER) -#define AE_BAD_PATHNAME (ACPI_STATUS) (0x0003 | AE_CODE_PROGRAMMER) -#define AE_BAD_DATA (ACPI_STATUS) (0x0004 | AE_CODE_PROGRAMMER) -#define AE_BAD_ADDRESS (ACPI_STATUS) (0x0005 | AE_CODE_PROGRAMMER) - -#define AE_CODE_PGM_MAX 0x0005 - - -/* - * Acpi table exceptions - */ -#define AE_BAD_SIGNATURE (ACPI_STATUS) (0x0001 | AE_CODE_ACPI_TABLES) -#define AE_BAD_HEADER (ACPI_STATUS) (0x0002 | AE_CODE_ACPI_TABLES) -#define AE_BAD_CHECKSUM (ACPI_STATUS) (0x0003 | AE_CODE_ACPI_TABLES) -#define AE_BAD_VALUE (ACPI_STATUS) (0x0004 | AE_CODE_ACPI_TABLES) - -#define AE_CODE_TBL_MAX 0x0003 - - -/* - * AML exceptions. These are caused by problems with - * the actual AML byte stream - */ -#define AE_AML_ERROR (ACPI_STATUS) (0x0001 | AE_CODE_AML) -#define AE_AML_PARSE (ACPI_STATUS) (0x0002 | AE_CODE_AML) -#define AE_AML_BAD_OPCODE (ACPI_STATUS) (0x0003 | AE_CODE_AML) -#define AE_AML_NO_OPERAND (ACPI_STATUS) (0x0004 | AE_CODE_AML) -#define AE_AML_OPERAND_TYPE (ACPI_STATUS) (0x0005 | AE_CODE_AML) -#define AE_AML_OPERAND_VALUE (ACPI_STATUS) (0x0006 | AE_CODE_AML) -#define AE_AML_UNINITIALIZED_LOCAL (ACPI_STATUS) (0x0007 | AE_CODE_AML) -#define AE_AML_UNINITIALIZED_ARG (ACPI_STATUS) (0x0008 | AE_CODE_AML) -#define AE_AML_UNINITIALIZED_ELEMENT (ACPI_STATUS) (0x0009 | AE_CODE_AML) -#define AE_AML_NUMERIC_OVERFLOW (ACPI_STATUS) (0x000A | AE_CODE_AML) -#define AE_AML_REGION_LIMIT (ACPI_STATUS) (0x000B | AE_CODE_AML) -#define AE_AML_BUFFER_LIMIT (ACPI_STATUS) (0x000C | AE_CODE_AML) -#define AE_AML_PACKAGE_LIMIT (ACPI_STATUS) (0x000D | AE_CODE_AML) -#define AE_AML_DIVIDE_BY_ZERO (ACPI_STATUS) (0x000E | AE_CODE_AML) -#define AE_AML_BAD_NAME (ACPI_STATUS) (0x000F | AE_CODE_AML) -#define AE_AML_NAME_NOT_FOUND (ACPI_STATUS) (0x0010 | AE_CODE_AML) -#define AE_AML_INTERNAL (ACPI_STATUS) (0x0011 | AE_CODE_AML) -#define AE_AML_INVALID_SPACE_ID (ACPI_STATUS) (0x0012 | AE_CODE_AML) -#define AE_AML_STRING_LIMIT (ACPI_STATUS) (0x0013 | AE_CODE_AML) -#define AE_AML_NO_RETURN_VALUE (ACPI_STATUS) (0x0014 | AE_CODE_AML) - -#define AE_CODE_AML_MAX 0x0014 - -/* - * Internal exceptions used for control - */ -#define AE_CTRL_RETURN_VALUE (ACPI_STATUS) (0x0001 | AE_CODE_CONTROL) -#define AE_CTRL_PENDING (ACPI_STATUS) (0x0002 | AE_CODE_CONTROL) -#define AE_CTRL_TERMINATE (ACPI_STATUS) (0x0003 | AE_CODE_CONTROL) -#define AE_CTRL_TRUE (ACPI_STATUS) (0x0004 | AE_CODE_CONTROL) -#define AE_CTRL_FALSE (ACPI_STATUS) (0x0005 | AE_CODE_CONTROL) -#define AE_CTRL_DEPTH (ACPI_STATUS) (0x0006 | AE_CODE_CONTROL) -#define AE_CTRL_END (ACPI_STATUS) (0x0007 | AE_CODE_CONTROL) -#define AE_CTRL_TRANSFER (ACPI_STATUS) (0x0008 | AE_CODE_CONTROL) - -#define AE_CODE_CTRL_MAX 0x0008 - - -#ifdef DEFINE_ACPI_GLOBALS - -/* - * String versions of the exception codes above - * These strings must match the corresponding defines exactly - */ -static NATIVE_CHAR *AcpiGbl_ExceptionNames_Env[] = -{ - "AE_OK", - "AE_ERROR", - "AE_NO_ACPI_TABLES", - "AE_NO_NAMESPACE", - "AE_NO_MEMORY", - "AE_NOT_FOUND", - "AE_NOT_EXIST", - "AE_EXIST", - "AE_TYPE", - "AE_NULL_OBJECT", - "AE_NULL_ENTRY", - "AE_BUFFER_OVERFLOW", - "AE_STACK_OVERFLOW", - "AE_STACK_UNDERFLOW", - "AE_NOT_IMPLEMENTED", - "AE_VERSION_MISMATCH", - "AE_SUPPORT", - "AE_SHARE", - "AE_LIMIT", - "AE_TIME", - "AE_UNKNOWN_STATUS", -}; - -static NATIVE_CHAR *AcpiGbl_ExceptionNames_Pgm[] = -{ - "AE_BAD_PARAMETER", - "AE_BAD_CHARACTER", - "AE_BAD_PATHNAME", - "AE_BAD_DATA", - "AE_BAD_ADDRESS", -}; - -static NATIVE_CHAR *AcpiGbl_ExceptionNames_Tbl[] = -{ - "AE_BAD_SIGNATURE", - "AE_BAD_HEADER", - "AE_BAD_CHECKSUM", - "AE_BAD_VALUE", -}; - -static NATIVE_CHAR *AcpiGbl_ExceptionNames_Aml[] = -{ - "AE_AML_ERROR", - "AE_AML_PARSE", - "AE_AML_BAD_OPCODE", - "AE_AML_NO_OPERAND", - "AE_AML_OPERAND_TYPE", - "AE_AML_OPERAND_VALUE", - "AE_AML_UNINITIALIZED_LOCAL", - "AE_AML_UNINITIALIZED_ARG", - "AE_AML_UNINITIALIZED_ELEMENT", - "AE_AML_NUMERIC_OVERFLOW", - "AE_AML_REGION_LIMIT", - "AE_AML_BUFFER_LIMIT", - "AE_AML_PACKAGE_LIMIT", - "AE_AML_DIVIDE_BY_ZERO", - "AE_AML_BAD_NAME", - "AE_AML_NAME_NOT_FOUND", - "AE_AML_INTERNAL", - "AE_AML_INVALID_SPACE_ID", - "AE_AML_STRING_LIMIT", - "AE_AML_NO_RETURN_VALUE", -}; - -static NATIVE_CHAR *AcpiGbl_ExceptionNames_Ctrl[] = -{ - "AE_CTRL_RETURN_VALUE", - "AE_CTRL_PENDING", - "AE_CTRL_TERMINATE", - "AE_CTRL_TRUE", - "AE_CTRL_FALSE", - "AE_CTRL_DEPTH", - "AE_CTRL_END", - "AE_CTRL_TRANSFER", -}; - - -#endif /* DEFINE_ACPI_GLOBALS */ - - -#endif /* __ACEXCEP_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acfreebsd.h b/sys/contrib/dev/acpica/Subsystem/Include/acfreebsd.h deleted file mode 100644 index ca6c799..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acfreebsd.h +++ /dev/null @@ -1,134 +0,0 @@ -/****************************************************************************** - * - * Name: acfreebsd.h - OS specific defines, etc. - * $Revision: 4 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACFREEBSD_H__ -#define __ACFREEBSD_H__ - -#define ACPI_OS_NAME "FreeBSD" - -#ifdef _KERNEL -#include <sys/ctype.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/libkern.h> -#include <stdarg.h> - -#define asm __asm -#define __cli() disable_intr() -#define __sti() enable_intr() - - -#endif /* __ACFREEBSD_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acgcc.h b/sys/contrib/dev/acpica/Subsystem/Include/acgcc.h deleted file mode 100644 index eb2f4ce..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acgcc.h +++ /dev/null @@ -1,239 +0,0 @@ -/****************************************************************************** - * - * Name: acgcc.h - GCC specific defines, etc. - * $Revision: 5 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACGCC_H__ -#define __ACGCC_H__ - - - -#ifdef __ia64__ -#define _IA64 - -#define COMPILER_DEPENDENT_UINT64 unsigned long -/* Single threaded */ -#define ACPI_APPLICATION - -#define ACPI_ASM_MACROS -#define causeinterrupt(level) -#define BREAKPOINT3 -#define disable() __cli() -#define enable() __sti() -#define wbinvd() - -/*! [Begin] no source code translation */ - -#include <asm/pal.h> - -#define halt() ia64_pal_halt_light() /* PAL_HALT[_LIGHT] */ -#define safe_halt() ia64_pal_halt(1) /* PAL_HALT */ - - -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ - do { \ - __asm__ volatile ("1: ld4 r29=%1\n" \ - ";;\n" \ - "mov ar.ccv=r29\n" \ - "mov r2=r29\n" \ - "shr.u r30=r29,1\n" \ - "and r29=-4,r29\n" \ - ";;\n" \ - "add r29=2,r29\n" \ - "and r30=1,r30\n" \ - ";;\n" \ - "add r29=r29,r30\n" \ - ";;\n" \ - "cmpxchg4.acq r30=%1,r29,ar.ccv\n" \ - ";;\n" \ - "cmp.eq p6,p7=r2,r30\n" \ - "(p7) br.dpnt.few 1b\n" \ - "cmp.gt p8,p9=3,r29\n" \ - ";;\n" \ - "(p8) mov %0=-1\n" \ - "(p9) mov %0=r0\n" \ - :"=r"(Acq):"m"(GLptr):"r2","r29","r30","memory"); \ - } while (0) - -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \ - do { \ - __asm__ volatile ("1: ld4 r29=%1\n" \ - ";;\n" \ - "mov ar.ccv=r29\n" \ - "mov r2=r29\n" \ - "and r29=-4,r29\n" \ - ";;\n" \ - "cmpxchg4.acq r30=%1,r29,ar.ccv\n" \ - ";;\n" \ - "cmp.eq p6,p7=r2,r30\n" \ - "(p7) br.dpnt.few 1b\n" \ - "and %0=1,r2\n" \ - ";;\n" \ - :"=r"(Acq):"m"(GLptr):"r2","r29","r30","memory"); \ - } while (0) -/*! [End] no source code translation !*/ - - -#else /* DO IA32 */ -#define COMPILER_DEPENDENT_UINT64 unsigned long long -#define ACPI_ASM_MACROS -#define causeinterrupt(level) -#define BREAKPOINT3 -#define disable() __cli() -#define enable() __sti() -#define halt() __asm__ __volatile__ ("sti; hlt":::"memory") -#define wbinvd() - -/*! [Begin] no source code translation - * - * A brief explanation as GNU inline assembly is a bit hairy - * %0 is the output parameter in EAX ("=a") - * %1 and %2 are the input parameters in ECX ("c") - * and an immediate value ("i") respectively - * All actual register references are preceded with "%%" as in "%%edx" - * Immediate values in the assembly are preceded by "$" as in "$0x1" - * The final asm parameter are the operation altered non-output registers. - */ -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ - do { \ - int dummy; \ - asm("1: movl (%1),%%eax;" \ - "movl %%eax,%%edx;" \ - "andl %2,%%edx;" \ - "btsl $0x1,%%edx;" \ - "adcl $0x0,%%edx;" \ - "lock; cmpxchgl %%edx,(%1);" \ - "jnz 1b;" \ - "cmpb $0x3,%%dl;" \ - "sbbl %%eax,%%eax" \ - :"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~1L):"dx"); \ - } while(0) - -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \ - do { \ - int dummy; \ - asm("1: movl (%1),%%eax;" \ - "movl %%eax,%%edx;" \ - "andl %2,%%edx;" \ - "lock; cmpxchgl %%edx,(%1);" \ - "jnz 1b;" \ - "andl $0x1,%%eax" \ - :"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~3L):"dx"); \ - } while(0) - -/*! [End] no source code translation !*/ - -#endif /* IA 32 */ - -#endif /* __ACGCC_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acglobal.h b/sys/contrib/dev/acpica/Subsystem/Include/acglobal.h deleted file mode 100644 index ee2035f..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acglobal.h +++ /dev/null @@ -1,392 +0,0 @@ -/****************************************************************************** - * - * Name: acglobal.h - Declarations for global variables - * $Revision: 96 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACGLOBAL_H__ -#define __ACGLOBAL_H__ - - -/* - * Ensure that the globals are actually defined only once. - * - * The use of these defines allows a single list of globals (here) in order - * to simplify maintenance of the code. - */ -#ifdef DEFINE_ACPI_GLOBALS -#define ACPI_EXTERN -#else -#define ACPI_EXTERN extern -#endif - - -extern NATIVE_CHAR *MsgAcpiErrorBreak; - -/***************************************************************************** - * - * Debug support - * - ****************************************************************************/ - -/* Runtime configuration of debug print levels */ - -extern UINT32 AcpiDbgLevel; -extern UINT32 AcpiDbgLayer; - - -/* Procedure nesting level for debug output */ - -extern UINT32 AcpiGbl_NestingLevel; - - -/***************************************************************************** - * - * ACPI Table globals - * - ****************************************************************************/ - -/* - * Table pointers. - * Although these pointers are somewhat redundant with the global AcpiTable, - * they are convenient because they are typed pointers. - * - * These tables are single-table only; meaning that there can be at most one - * of each in the system. Each global points to the actual table. - * - */ -ACPI_EXTERN RSDP_DESCRIPTOR *AcpiGbl_RSDP; -ACPI_EXTERN XSDT_DESCRIPTOR *AcpiGbl_XSDT; -ACPI_EXTERN FADT_DESCRIPTOR *AcpiGbl_FADT; -ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DSDT; -ACPI_EXTERN ACPI_COMMON_FACS *AcpiGbl_FACS; - -/* - * Since there may be multiple SSDTs and PSDTS, a single pointer is not - * sufficient; Therefore, there isn't one! - */ - - -/* - * ACPI Table info arrays - */ -extern ACPI_TABLE_DESC AcpiGbl_AcpiTables[NUM_ACPI_TABLES]; -extern ACPI_TABLE_SUPPORT AcpiGbl_AcpiTableData[NUM_ACPI_TABLES]; - -/* - * Predefined mutex objects. This array contains the - * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. - * (The table maps local handles to the real OS handles) - */ -ACPI_EXTERN ACPI_MUTEX_INFO AcpiGbl_AcpiMutexInfo [NUM_MTX]; - - -/***************************************************************************** - * - * Miscellaneous globals - * - ****************************************************************************/ - - -ACPI_EXTERN UINT8 *AcpiGbl_Gpe0EnableRegisterSave; -ACPI_EXTERN UINT8 *AcpiGbl_Gpe1EnableRegisterSave; -ACPI_EXTERN ACPI_WALK_STATE *AcpiGbl_BreakpointWalk; -ACPI_EXTERN ACPI_GENERIC_STATE *AcpiGbl_GenericStateCache; -ACPI_EXTERN ACPI_PARSE_OBJECT *AcpiGbl_ParseCache; -ACPI_EXTERN ACPI_PARSE2_OBJECT *AcpiGbl_ExtParseCache; -ACPI_EXTERN ACPI_OPERAND_OBJECT *AcpiGbl_ObjectCache; -ACPI_EXTERN ACPI_WALK_STATE *AcpiGbl_WalkStateCache; -ACPI_EXTERN ACPI_HANDLE AcpiGbl_GlobalLockSemaphore; - - -ACPI_EXTERN UINT32 AcpiGbl_GlobalLockThreadCount; -ACPI_EXTERN UINT32 AcpiGbl_RestoreAcpiChipset; -ACPI_EXTERN UINT32 AcpiGbl_OriginalMode; -ACPI_EXTERN UINT32 AcpiGbl_EdgeLevelSave; -ACPI_EXTERN UINT32 AcpiGbl_IrqEnableSave; -ACPI_EXTERN UINT32 AcpiGbl_RsdpOriginalLocation; - -ACPI_EXTERN UINT32 AcpiGbl_StateCacheRequests; -ACPI_EXTERN UINT32 AcpiGbl_StateCacheHits; -ACPI_EXTERN UINT32 AcpiGbl_ParseCacheRequests; -ACPI_EXTERN UINT32 AcpiGbl_ParseCacheHits; -ACPI_EXTERN UINT32 AcpiGbl_ExtParseCacheRequests; -ACPI_EXTERN UINT32 AcpiGbl_ExtParseCacheHits; -ACPI_EXTERN UINT32 AcpiGbl_ObjectCacheRequests; -ACPI_EXTERN UINT32 AcpiGbl_ObjectCacheHits; -ACPI_EXTERN UINT32 AcpiGbl_WalkStateCacheRequests; -ACPI_EXTERN UINT32 AcpiGbl_WalkStateCacheHits; -ACPI_EXTERN UINT32 AcpiGbl_NsLookupCount; -ACPI_EXTERN UINT32 AcpiGbl_PsFindCount; - - -ACPI_EXTERN UINT16 AcpiGbl_GenericStateCacheDepth; -ACPI_EXTERN UINT16 AcpiGbl_ParseCacheDepth; -ACPI_EXTERN UINT16 AcpiGbl_ExtParseCacheDepth; -ACPI_EXTERN UINT16 AcpiGbl_ObjectCacheDepth; -ACPI_EXTERN UINT16 AcpiGbl_WalkStateCacheDepth; -ACPI_EXTERN UINT16 AcpiGbl_Pm1EnableRegisterSave; -ACPI_EXTERN UINT16 AcpiGbl_NextTableOwnerId; -ACPI_EXTERN UINT16 AcpiGbl_NextMethodOwnerId; - -ACPI_EXTERN UINT8 AcpiGbl_DebuggerConfiguration; -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockAcquired; -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockSet; /* TBD: [Restructure] OBSOLETE?? */ -ACPI_EXTERN BOOLEAN AcpiGbl_StepToNextCall; -ACPI_EXTERN BOOLEAN AcpiGbl_AcpiHardwarePresent; - -ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_DrvNotify; -ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SysNotify; - - -extern BOOLEAN AcpiGbl_Shutdown; -extern UINT32 AcpiGbl_SystemFlags; -extern UINT32 AcpiGbl_StartupFlags; -extern UINT8 AcpiGbl_DecodeTo8bit[8]; -extern NATIVE_CHAR AcpiGbl_HexToAscii[]; - - -/***************************************************************************** - * - * Namespace globals - * - ****************************************************************************/ - -#define NUM_NS_TYPES INTERNAL_TYPE_INVALID+1 -#define NUM_PREDEFINED_NAMES 9 - - -ACPI_EXTERN ACPI_NAMESPACE_NODE AcpiGbl_RootNodeStruct; -ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_RootNode; - -extern UINT8 AcpiGbl_NsProperties[NUM_NS_TYPES]; -extern PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; - - -/* Used to detect memory leaks (DEBUG ONLY) */ - -#ifdef ACPI_DEBUG -ACPI_EXTERN ALLOCATION_INFO *AcpiGbl_HeadAllocPtr; -ACPI_EXTERN ALLOCATION_INFO *AcpiGbl_TailAllocPtr; -#endif - - -/***************************************************************************** - * - * Interpreter globals - * - ****************************************************************************/ - - -ACPI_EXTERN ACPI_WALK_LIST *AcpiGbl_CurrentWalkList; - -/* - * Handle to the last method found - used during pass1 of load - */ -ACPI_EXTERN ACPI_HANDLE AcpiGbl_LastMethod; - -/* - * Table of Address Space handlers - */ - -ACPI_EXTERN ACPI_ADDRESS_SPACE_INFO AcpiGbl_AddressSpaces[ACPI_NUM_ADDRESS_SPACES]; - - -/* Control method single step flag */ - -ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep; - - -/***************************************************************************** - * - * Parser globals - * - ****************************************************************************/ - -ACPI_EXTERN ACPI_PARSE_OBJECT *AcpiGbl_ParsedNamespaceRoot; - -/***************************************************************************** - * - * Hardware globals - * - ****************************************************************************/ - -extern ACPI_C_STATE_HANDLER AcpiHwCxHandlers[MAX_CX_STATES]; -extern UINT32 AcpiHwActiveCxState; - - -/***************************************************************************** - * - * Event globals - * - ****************************************************************************/ - -ACPI_EXTERN ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventHandlers[NUM_FIXED_EVENTS]; - -ACPI_EXTERN ACPI_HANDLE AcpiGbl_GpeObjHandle; -ACPI_EXTERN UINT32 AcpiGbl_GpeRegisterCount; -ACPI_EXTERN ACPI_GPE_REGISTERS *AcpiGbl_GpeRegisters; -ACPI_EXTERN ACPI_GPE_LEVEL_INFO *AcpiGbl_GpeInfo; - -/* - * Gpe validation and translation table - * Indexed by the GPE number, returns GPE_INVALID if the GPE is not supported. - * Otherwise, returns a valid index into the global GPE table. - * - * This table is needed because the GPE numbers supported by block 1 do not - * have to be contiguous with the GPE numbers supported by block 0. - */ -ACPI_EXTERN UINT8 AcpiGbl_GpeValid [NUM_GPE]; - -/* AcpiEvent counter for debug only */ - -#ifdef ACPI_DEBUG -ACPI_EXTERN UINT32 AcpiGbl_EventCount[NUM_FIXED_EVENTS]; -#endif - - -/***************************************************************************** - * - * Debugger globals - * - ****************************************************************************/ - -#ifdef ENABLE_DEBUGGER -ACPI_EXTERN BOOLEAN AcpiGbl_MethodExecuting; -ACPI_EXTERN BOOLEAN AcpiGbl_DbTerminateThreads; -#endif - -/* Memory allocation metrics - Debug Only! */ - -#ifdef ACPI_DEBUG - -ACPI_EXTERN UINT32 AcpiGbl_CurrentAllocSize; -ACPI_EXTERN UINT32 AcpiGbl_CurrentAllocCount; -ACPI_EXTERN UINT32 AcpiGbl_RunningAllocSize; -ACPI_EXTERN UINT32 AcpiGbl_RunningAllocCount; -ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentAllocSize; -ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentAllocCount; -ACPI_EXTERN UINT32 AcpiGbl_CurrentObjectCount; -ACPI_EXTERN UINT32 AcpiGbl_CurrentObjectSize; -ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentObjectCount; -ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentObjectSize; -ACPI_EXTERN UINT32 AcpiGbl_RunningObjectCount; -ACPI_EXTERN UINT32 AcpiGbl_RunningObjectSize; -ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeCount; -ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeSize; -ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentNodeCount; - -#endif - - -#endif /* __ACGLOBAL_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/achware.h b/sys/contrib/dev/acpica/Subsystem/Include/achware.h deleted file mode 100644 index bcefafa..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/achware.h +++ /dev/null @@ -1,241 +0,0 @@ -/****************************************************************************** - * - * Name: achware.h -- hardware specific interfaces - * $Revision: 53 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACHWARE_H__ -#define __ACHWARE_H__ - - -/* PM Timer ticks per second (HZ) */ -#define PM_TIMER_FREQUENCY 3579545 - - -/* Prototypes */ - - -ACPI_STATUS -AcpiHwInitialize ( - void); - -ACPI_STATUS -AcpiHwShutdown ( - void); - -ACPI_STATUS -AcpiHwInitializeSystemInfo ( - void); - -ACPI_STATUS -AcpiHwSetMode ( - UINT32 Mode); - -UINT32 -AcpiHwGetMode ( - void); - -UINT32 -AcpiHwGetModeCapabilities ( - void); - -/* Register I/O Prototypes */ - - -UINT32 -AcpiHwRegisterBitAccess ( - NATIVE_UINT ReadWrite, - BOOLEAN UseLock, - UINT32 RegisterId, - ... /* DWORD Write Value */); - -UINT32 -AcpiHwRegisterRead ( - BOOLEAN UseLock, - UINT32 RegisterId); - -void -AcpiHwRegisterWrite ( - BOOLEAN UseLock, - UINT32 RegisterId, - UINT32 Value); - -UINT32 -AcpiHwLowLevelRead ( - UINT32 Width, - ACPI_GAS *Reg, - UINT32 Offset); - -void -AcpiHwLowLevelWrite ( - UINT32 Width, - UINT32 Value, - ACPI_GAS *Reg, - UINT32 Offset); - -void -AcpiHwClearAcpiStatus ( - void); - -UINT32 -AcpiHwGetBitShift ( - UINT32 Mask); - - - -/* GPE support */ - -void -AcpiHwEnableGpe ( - UINT32 GpeIndex); - -void -AcpiHwDisableGpe ( - UINT32 GpeIndex); - -void -AcpiHwClearGpe ( - UINT32 GpeIndex); - -void -AcpiHwGetGpeStatus ( - UINT32 GpeNumber, - ACPI_EVENT_STATUS *EventStatus); - -/* Sleep Prototypes */ - -ACPI_STATUS -AcpiHwObtainSleepTypeRegisterData ( - UINT8 SleepState, - UINT8 *Slp_TypA, - UINT8 *Slp_TypB); - - -/* ACPI Timer prototypes */ - -ACPI_STATUS -AcpiGetTimerResolution ( - UINT32 *Resolution); - -ACPI_STATUS -AcpiGetTimer ( - UINT32 *Ticks); - -ACPI_STATUS -AcpiGetTimerDuration ( - UINT32 StartTicks, - UINT32 EndTicks, - UINT32 *TimeElapsed); - - -#endif /* __ACHWARE_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acinterp.h b/sys/contrib/dev/acpica/Subsystem/Include/acinterp.h deleted file mode 100644 index 6ebdd17..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acinterp.h +++ /dev/null @@ -1,704 +0,0 @@ -/****************************************************************************** - * - * Name: acinterp.h - Interpreter subcomponent prototypes and defines - * $Revision: 92 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACINTERP_H__ -#define __ACINTERP_H__ - - -#define WALK_OPERANDS &(WalkState->Operands [WalkState->NumOperands -1]) - - -/* Interpreter constants */ - -#define AML_END_OF_BLOCK -1 -#define PUSH_PKG_LENGTH 1 -#define DO_NOT_PUSH_PKG_LENGTH 0 - - -#define STACK_TOP 0 -#define STACK_BOTTOM (UINT32) -1 - -/* Constants for global "WhenToParseMethods" */ - -#define METHOD_PARSE_AT_INIT 0x0 -#define METHOD_PARSE_JUST_IN_TIME 0x1 -#define METHOD_DELETE_AT_COMPLETION 0x2 - - - -ACPI_STATUS -AcpiAmlResolveOperands ( - UINT16 Opcode, - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState); - - -/* - * amxface - External interpreter interfaces - */ - -ACPI_STATUS -AcpiAmlLoadTable ( - ACPI_TABLE_TYPE TableId); - -ACPI_STATUS -AcpiAmlExecuteMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObjDesc); - - -/* - * amconvrt - object conversion - */ - -ACPI_STATUS -AcpiAmlConvertToInteger ( - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlConvertToBuffer ( - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlConvertToString ( - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlConvertToTargetType ( - OBJECT_TYPE_INTERNAL DestinationType, - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState); - - -/* - * amfield - ACPI AML (p-code) execution - field manipulation - */ - -ACPI_STATUS -AcpiAmlReadField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity); - -ACPI_STATUS -AcpiAmlWriteField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity); - -ACPI_STATUS -AcpiAmlSetupField ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *RgnDesc, - UINT32 FieldBitWidth); - -ACPI_STATUS -AcpiAmlReadFieldData ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldByteOffset, - UINT32 FieldBitWidth, - UINT32 *Value); - -ACPI_STATUS -AcpiAmlAccessNamedField ( - UINT32 Mode, - ACPI_HANDLE NamedField, - void *Buffer, - UINT32 Length); - -/* - * ammisc - ACPI AML (p-code) execution - specific opcodes - */ - -ACPI_STATUS -AcpiAmlExecCreateField ( - UINT8 *AmlPtr, - UINT32 AmlLength, - ACPI_NAMESPACE_NODE *Node, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecReconfiguration ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecFatal ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecIndex ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - -ACPI_STATUS -AcpiAmlExecMatch ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - -ACPI_STATUS -AcpiAmlExecCreateMutex ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecCreateProcessor ( - ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE ProcessorNTE); - -ACPI_STATUS -AcpiAmlExecCreatePowerResource ( - ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE ProcessorNTE); - -ACPI_STATUS -AcpiAmlExecCreateRegion ( - UINT8 *AmlPtr, - UINT32 AcpiAmlLength, - UINT8 RegionSpace, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecCreateEvent ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecCreateAlias ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecCreateMethod ( - UINT8 *AmlPtr, - UINT32 AcpiAmlLength, - UINT32 MethodFlags, - ACPI_HANDLE Method); - - -/* - * amprep - ACPI AML (p-code) execution - prep utilities - */ - -ACPI_STATUS -AcpiAmlPrepDefFieldValue ( - ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE Region, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength); - -ACPI_STATUS -AcpiAmlPrepBankFieldValue ( - ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE Region, - ACPI_HANDLE BankReg, - UINT32 BankVal, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength); - -ACPI_STATUS -AcpiAmlPrepIndexFieldValue ( - ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE IndexReg, - ACPI_HANDLE DataReg, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength); - - -/* - * amsystem - Interface to OS services - */ - -UINT16 -AcpiAmlSystemThreadId ( - void); - -ACPI_STATUS -AcpiAmlSystemDoNotifyOp ( - ACPI_OPERAND_OBJECT *Value, - ACPI_OPERAND_OBJECT *ObjDesc); - -void -AcpiAmlSystemDoSuspend( - UINT32 Time); - -void -AcpiAmlSystemDoStall ( - UINT32 Time); - -ACPI_STATUS -AcpiAmlSystemAcquireMutex( - ACPI_OPERAND_OBJECT *Time, - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiAmlSystemReleaseMutex( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiAmlSystemSignalEvent( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiAmlSystemWaitEvent( - ACPI_OPERAND_OBJECT *Time, - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiAmlSystemResetEvent( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiAmlSystemWaitSemaphore ( - ACPI_HANDLE Semaphore, - UINT32 Timeout); - - -/* - * ammonadic - ACPI AML (p-code) execution, monadic operators - */ - -ACPI_STATUS -AcpiAmlExecMonadic1 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecMonadic2 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - -ACPI_STATUS -AcpiAmlExecMonadic2R ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - - -/* - * amdyadic - ACPI AML (p-code) execution, dyadic operators - */ - -ACPI_STATUS -AcpiAmlExecDyadic1 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlExecDyadic2 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - -ACPI_STATUS -AcpiAmlExecDyadic2R ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - -ACPI_STATUS -AcpiAmlExecDyadic2S ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - - -/* - * amresolv - Object resolution and get value functions - */ - -ACPI_STATUS -AcpiAmlResolveToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlResolveNodeToValue ( - ACPI_NAMESPACE_NODE **StackPtr, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlResolveObjectToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlGetFieldUnitValue ( - ACPI_OPERAND_OBJECT *FieldDesc, - ACPI_OPERAND_OBJECT *ResultDesc); - - -/* - * amdump - Scanner debug output routines - */ - -void -AcpiAmlShowHexValue ( - UINT32 ByteCount, - UINT8 *AmlPtr, - UINT32 LeadSpace); - - -ACPI_STATUS -AcpiAmlDumpOperand ( - ACPI_OPERAND_OBJECT *EntryDesc); - -void -AcpiAmlDumpOperands ( - ACPI_OPERAND_OBJECT **Operands, - OPERATING_MODE InterpreterMode, - NATIVE_CHAR *Ident, - UINT32 NumLevels, - NATIVE_CHAR *Note, - NATIVE_CHAR *ModuleName, - UINT32 LineNumber); - -void -AcpiAmlDumpObjectDescriptor ( - ACPI_OPERAND_OBJECT *Object, - UINT32 Flags); - - -void -AcpiAmlDumpNode ( - ACPI_NAMESPACE_NODE *Node, - UINT32 Flags); - - -/* - * amnames - interpreter/scanner name load/execute - */ - -NATIVE_CHAR * -AcpiAmlAllocateNameString ( - UINT32 PrefixCount, - UINT32 NumNameSegs); - -UINT32 -AcpiAmlGoodChar ( - UINT32 Character); - -ACPI_STATUS -AcpiAmlExecNameSegment ( - UINT8 **InAmlAddress, - NATIVE_CHAR *NameString); - -ACPI_STATUS -AcpiAmlGetNameString ( - OBJECT_TYPE_INTERNAL DataType, - UINT8 *InAmlAddress, - NATIVE_CHAR **OutNameString, - UINT32 *OutNameLength); - -ACPI_STATUS -AcpiAmlDoName ( - ACPI_OBJECT_TYPE DataType, - OPERATING_MODE LoadExecMode); - - -/* - * amstore - Object store support - */ - -ACPI_STATUS -AcpiAmlExecStore ( - ACPI_OPERAND_OBJECT *ValDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlStoreObjectToIndex ( - ACPI_OPERAND_OBJECT *ValDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlStoreObjectToNode ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlStoreObjectToObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState); - - -/* - * - */ - -ACPI_STATUS -AcpiAmlResolveObject ( - ACPI_OPERAND_OBJECT **SourceDescPtr, - OBJECT_TYPE_INTERNAL TargetType, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiAmlStoreObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - OBJECT_TYPE_INTERNAL TargetType, - ACPI_OPERAND_OBJECT **TargetDescPtr, - ACPI_WALK_STATE *WalkState); - - -/* - * amcopy - object copy - */ - -ACPI_STATUS -AcpiAmlCopyBufferToBuffer ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -ACPI_STATUS -AcpiAmlCopyStringToString ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -ACPI_STATUS -AcpiAmlCopyIntegerToIndexField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -ACPI_STATUS -AcpiAmlCopyIntegerToBankField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -ACPI_STATUS -AcpiAmlCopyDataToNamedField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node); - -ACPI_STATUS -AcpiAmlCopyIntegerToFieldUnit ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -/* - * amutils - interpreter/scanner utilities - */ - -void -AcpiAmlEnterInterpreter ( - void); - -void -AcpiAmlExitInterpreter ( - void); - -void -AcpiAmlTruncateFor32bitTable ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -BOOLEAN -AcpiAmlValidateObjectType ( - ACPI_OBJECT_TYPE Type); - -BOOLEAN -AcpiAmlAcquireGlobalLock ( - UINT32 Rule); - -ACPI_STATUS -AcpiAmlReleaseGlobalLock ( - BOOLEAN Locked); - -UINT32 -AcpiAmlDigitsNeeded ( - ACPI_INTEGER Value, - UINT32 Base); - -ACPI_STATUS -AcpiAmlEisaIdToString ( - UINT32 NumericId, - NATIVE_CHAR *OutString); - -ACPI_STATUS -AcpiAmlUnsignedIntegerToString ( - ACPI_INTEGER Value, - NATIVE_CHAR *OutString); - - -/* - * amregion - default OpRegion handlers - */ - -ACPI_STATUS -AcpiAmlSystemMemorySpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiAmlSystemIoSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiAmlPciConfigSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiAmlEmbeddedControllerSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiAmlSmBusSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext); - - -#endif /* __INTERP_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/aclinux.h b/sys/contrib/dev/acpica/Subsystem/Include/aclinux.h deleted file mode 100644 index 39b6423e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/aclinux.h +++ /dev/null @@ -1,147 +0,0 @@ -/****************************************************************************** - * - * Name: aclinux.h - OS specific defines, etc. - * $Revision: 9 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACLINUX_H__ -#define __ACLINUX_H__ - -#define ACPI_OS_NAME "Linux" - -#include <linux/config.h> -#include <linux/string.h> -#include <linux/kernel.h> -#include <linux/ctype.h> -#include <asm/system.h> -#include <asm/atomic.h> -#include <asm/div64.h> - -/* Linux uses GCC */ - -#include "acgcc.h" - -#undef DEBUGGER_THREADING -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED - -#ifndef _IA64 -/* Linux ia32 can't do int64 well */ -#define ACPI_NO_INTEGER64_SUPPORT -/* And the ia32 kernel doesn't include 64-bit divide support */ -#define ACPI_DIV64(dividend, divisor) do_div(dividend, divisor) -#else -#define ACPI_DIV64(dividend, divisor) ACPI_DIVIDE(dividend, divisor) -#endif - - -#endif /* __ACLINUX_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/aclocal.h b/sys/contrib/dev/acpica/Subsystem/Include/aclocal.h deleted file mode 100644 index e021acc..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/aclocal.h +++ /dev/null @@ -1,1017 +0,0 @@ -/****************************************************************************** - * - * Name: aclocal.h - Internal data types used across the ACPI subsystem - * $Revision: 104 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACLOCAL_H__ -#define __ACLOCAL_H__ - - -#define WAIT_FOREVER ((UINT32) -1) - -typedef void* ACPI_MUTEX; -typedef UINT32 ACPI_MUTEX_HANDLE; - - -/* Object descriptor types */ - -#define ACPI_CACHED_OBJECT 0x11 /* ORed in when object is cached */ -#define ACPI_DESC_TYPE_STATE 0x22 -#define ACPI_DESC_TYPE_WALK 0x44 -#define ACPI_DESC_TYPE_PARSER 0x66 -#define ACPI_DESC_TYPE_INTERNAL 0x88 -#define ACPI_DESC_TYPE_NAMED 0xAA - - -/***************************************************************************** - * - * Mutex typedefs and structs - * - ****************************************************************************/ - - -/* - * Predefined handles for the mutex objects used within the subsystem - * All mutex objects are automatically created by AcpiCmMutexInitialize. - * NOTE: any changes here must be reflected in the AcpiGbl_MutexNames table also! - */ - -#define ACPI_MTX_HARDWARE 0 -#define ACPI_MTX_MEMORY 1 -#define ACPI_MTX_CACHES 2 -#define ACPI_MTX_TABLES 3 -#define ACPI_MTX_PARSER 4 -#define ACPI_MTX_DISPATCHER 5 -#define ACPI_MTX_INTERPRETER 6 -#define ACPI_MTX_EXECUTE 7 -#define ACPI_MTX_NAMESPACE 8 -#define ACPI_MTX_EVENTS 9 -#define ACPI_MTX_OP_REGIONS 10 -#define ACPI_MTX_DEBUG_CMD_READY 11 -#define ACPI_MTX_DEBUG_CMD_COMPLETE 12 - -#define MAX_MTX 12 -#define NUM_MTX MAX_MTX+1 - - -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) -#ifdef DEFINE_ACPI_GLOBALS - -/* Names for the mutexes used in the subsystem */ - -static NATIVE_CHAR *AcpiGbl_MutexNames[] = -{ - "ACPI_MTX_Hardware", - "ACPI_MTX_Memory", - "ACPI_MTX_Caches", - "ACPI_MTX_Tables", - "ACPI_MTX_Parser", - "ACPI_MTX_Dispatcher", - "ACPI_MTX_Interpreter", - "ACPI_MTX_Execute", - "ACPI_MTX_Namespace", - "ACPI_MTX_Events", - "ACPI_MTX_OpRegions", - "ACPI_MTX_DebugCmdReady", - "ACPI_MTX_DebugCmdComplete" -}; - -#endif -#endif - - -/* Table for the global mutexes */ - -typedef struct AcpiMutexInfo -{ - ACPI_MUTEX Mutex; - UINT32 UseCount; - BOOLEAN Locked; - -} ACPI_MUTEX_INFO; - - -/* Lock flag parameter for various interfaces */ - -#define ACPI_MTX_DO_NOT_LOCK 0 -#define ACPI_MTX_LOCK 1 - - -typedef UINT16 ACPI_OWNER_ID; -#define OWNER_TYPE_TABLE 0x0 -#define OWNER_TYPE_METHOD 0x1 -#define FIRST_METHOD_ID 0x0000 -#define FIRST_TABLE_ID 0x8000 - -/* TBD: [Restructure] get rid of the need for this! */ - -#define TABLE_ID_DSDT (ACPI_OWNER_ID) 0x8000 - -/***************************************************************************** - * - * Namespace typedefs and structs - * - ****************************************************************************/ - - -/* Operational modes of the AML interpreter/scanner */ - -typedef enum -{ - IMODE_LOAD_PASS1 = 0x01, - IMODE_LOAD_PASS2 = 0x02, - IMODE_EXECUTE = 0x0E - -} OPERATING_MODE; - - -/* - * The Node describes a named object that appears in the AML - * An AcpiNode is used to store Nodes. - * - * DataType is used to differentiate between internal descriptors, and MUST - * be the first byte in this structure. - */ - -typedef struct acpi_node -{ - UINT8 DataType; - UINT8 Type; /* Type associated with this name */ - UINT16 OwnerId; - UINT32 Name; /* ACPI Name, always 4 chars per ACPI spec */ - - - void *Object; /* Pointer to attached ACPI object (optional) */ - struct acpi_node *Child; /* first child */ - struct acpi_node *Peer; /* Next peer*/ - UINT16 ReferenceCount; /* Current count of references and children */ - UINT8 Flags; - -} ACPI_NAMESPACE_NODE; - - -#define ENTRY_NOT_FOUND NULL - - -/* Node flags */ - -#define ANOBJ_AML_ATTACHMENT 0x01 -#define ANOBJ_END_OF_PEER_LIST 0x02 -#define ANOBJ_DATA_WIDTH_32 0x04 /* Parent table is 64-bits */ -#define ANOBJ_METHOD_ARG 0x08 -#define ANOBJ_METHOD_LOCAL 0x10 -#define ANOBJ_METHOD_NO_RETVAL 0x20 -#define ANOBJ_METHOD_SOME_NO_RETVAL 0x40 - - -/* - * ACPI Table Descriptor. One per ACPI table - */ -typedef struct AcpiTableDesc -{ - struct AcpiTableDesc *Prev; - struct AcpiTableDesc *Next; - struct AcpiTableDesc *InstalledDesc; - ACPI_TABLE_HEADER *Pointer; - void *BasePointer; - UINT8 *AmlPointer; - UINT64 PhysicalAddress; - UINT32 AmlLength; - UINT32 Length; - UINT32 Count; - ACPI_OWNER_ID TableId; - UINT8 Type; - UINT8 Allocation; - BOOLEAN LoadedIntoNamespace; - -} ACPI_TABLE_DESC; - - -typedef struct -{ - NATIVE_CHAR *SearchFor; - ACPI_HANDLE *List; - UINT32 *Count; - -} FIND_CONTEXT; - - -typedef struct -{ - ACPI_NAMESPACE_NODE *Node; -} NS_SEARCH_DATA; - - -/* - * Predefined Namespace items - */ -#define ACPI_MAX_ADDRESS_SPACE 255 -#define ACPI_NUM_ADDRESS_SPACES 256 - - -typedef struct -{ - NATIVE_CHAR *Name; - ACPI_OBJECT_TYPE Type; - NATIVE_CHAR *Val; - -} PREDEFINED_NAMES; - - -/***************************************************************************** - * - * Event typedefs and structs - * - ****************************************************************************/ - - -/* Status bits. */ - -#define ACPI_STATUS_PMTIMER 0x0001 -#define ACPI_STATUS_GLOBAL 0x0020 -#define ACPI_STATUS_POWER_BUTTON 0x0100 -#define ACPI_STATUS_SLEEP_BUTTON 0x0200 -#define ACPI_STATUS_RTC_ALARM 0x0400 - -/* Enable bits. */ - -#define ACPI_ENABLE_PMTIMER 0x0001 -#define ACPI_ENABLE_GLOBAL 0x0020 -#define ACPI_ENABLE_POWER_BUTTON 0x0100 -#define ACPI_ENABLE_SLEEP_BUTTON 0x0200 -#define ACPI_ENABLE_RTC_ALARM 0x0400 - - -/* - * Entry in the AddressSpace (AKA Operation Region) table - */ - -typedef struct -{ - ADDRESS_SPACE_HANDLER Handler; - void *Context; - -} ACPI_ADDRESS_SPACE_INFO; - - -/* Values and addresses of the GPE registers (both banks) */ - -typedef struct -{ - UINT8 Status; /* Current value of status reg */ - UINT8 Enable; /* Current value of enable reg */ - UINT16 StatusAddr; /* Address of status reg */ - UINT16 EnableAddr; /* Address of enable reg */ - UINT8 GpeBase; /* Base GPE number */ - -} ACPI_GPE_REGISTERS; - - -#define ACPI_GPE_LEVEL_TRIGGERED 1 -#define ACPI_GPE_EDGE_TRIGGERED 2 - - -/* Information about each particular GPE level */ - -typedef struct -{ - UINT8 Type; /* Level or Edge */ - - ACPI_HANDLE MethodHandle; /* Method handle for direct (fast) execution */ - GPE_HANDLER Handler; /* Address of handler, if any */ - void *Context; /* Context to be passed to handler */ - -} ACPI_GPE_LEVEL_INFO; - - -/* Information about each particular fixed event */ - -typedef struct -{ - FIXED_EVENT_HANDLER Handler; /* Address of handler. */ - void *Context; /* Context to be passed to handler */ - -} ACPI_FIXED_EVENT_INFO; - - -/* Information used during field processing */ - -typedef struct -{ - UINT8 SkipField; - UINT8 FieldFlag; - UINT32 PkgLength; - -} ACPI_FIELD_INFO; - - -/***************************************************************************** - * - * Generic "state" object for stacks - * - ****************************************************************************/ - - -#define CONTROL_NORMAL 0xC0 -#define CONTROL_CONDITIONAL_EXECUTING 0xC1 -#define CONTROL_PREDICATE_EXECUTING 0xC2 -#define CONTROL_PREDICATE_FALSE 0xC3 -#define CONTROL_PREDICATE_TRUE 0xC4 - - -/* Forward declaration */ -struct acpi_walk_state; -struct acpi_parse_obj ; - - -#define ACPI_STATE_COMMON /* Two 32-bit fields and a pointer */\ - UINT8 DataType; /* To differentiate various internal objs */\ - UINT8 Flags; \ - UINT16 Value; \ - UINT16 State; \ - UINT16 AcpiEval; \ - void *Next; \ - -typedef struct acpi_common_state -{ - ACPI_STATE_COMMON -} ACPI_COMMON_STATE; - - -/* - * Update state - used to traverse complex objects such as packages - */ -typedef struct acpi_update_state -{ - ACPI_STATE_COMMON - union acpi_operand_obj *Object; - -} ACPI_UPDATE_STATE; - - -/* - * Pkg state - used to traverse nested package structures - */ -typedef struct acpi_pkg_state -{ - ACPI_STATE_COMMON - union acpi_operand_obj *SourceObject; - union acpi_operand_obj *DestObject; - struct acpi_walk_state *WalkState; - void *ThisTargetObj; - UINT32 NumPackages; - UINT16 Index; - -} ACPI_PKG_STATE; - - -/* - * Control state - one per if/else and while constructs. - * Allows nesting of these constructs - */ -typedef struct acpi_control_state -{ - ACPI_STATE_COMMON - struct acpi_parse_obj *PredicateOp; - UINT8 *AmlPredicateStart; /* Start of if/while predicate */ - -} ACPI_CONTROL_STATE; - - -/* - * Scope state - current scope during namespace lookups - */ - -typedef struct acpi_scope_state -{ - ACPI_STATE_COMMON - ACPI_NAMESPACE_NODE *Node; - -} ACPI_SCOPE_STATE; - - -typedef struct acpi_pscope_state -{ - ACPI_STATE_COMMON - struct acpi_parse_obj *Op; /* current op being parsed */ - UINT8 *ArgEnd; /* current argument end */ - UINT8 *PkgEnd; /* current package end */ - UINT32 ArgList; /* next argument to parse */ - UINT32 ArgCount; /* Number of fixed arguments */ - -} ACPI_PSCOPE_STATE; - - -/* - * Result values - used to accumulate the results of nested - * AML arguments - */ -typedef struct acpi_result_values -{ - ACPI_STATE_COMMON - union acpi_operand_obj *ObjDesc [OBJ_NUM_OPERANDS]; - UINT8 NumResults; - UINT8 LastInsert; - -} ACPI_RESULT_VALUES; - - -/* Generic state is union of structs above */ - -typedef union acpi_gen_state -{ - ACPI_COMMON_STATE Common; - ACPI_CONTROL_STATE Control; - ACPI_UPDATE_STATE Update; - ACPI_SCOPE_STATE Scope; - ACPI_PSCOPE_STATE ParseScope; - ACPI_PKG_STATE Pkg; - ACPI_RESULT_VALUES Results; - -} ACPI_GENERIC_STATE; - - -typedef -ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) ( - UINT16 Opcode, - struct acpi_parse_obj *Op, - struct acpi_walk_state *WalkState, - struct acpi_parse_obj **OutOp); - -typedef -ACPI_STATUS (*ACPI_PARSE_UPWARDS) ( - struct acpi_walk_state *WalkState, - struct acpi_parse_obj *Op); - - -/***************************************************************************** - * - * Parser typedefs and structs - * - ****************************************************************************/ - - -#define ACPI_OP_CLASS_MASK 0x1F -#define ACPI_OP_ARGS_MASK 0x20 -#define ACPI_OP_TYPE_MASK 0xC0 - -#define ACPI_OP_TYPE_OPCODE 0x00 -#define ACPI_OP_TYPE_ASCII 0x40 -#define ACPI_OP_TYPE_PREFIX 0x80 -#define ACPI_OP_TYPE_UNKNOWN 0xC0 - -#define ACPI_GET_OP_CLASS(a) ((a)->Flags & ACPI_OP_CLASS_MASK) -#define ACPI_GET_OP_ARGS(a) ((a)->Flags & ACPI_OP_ARGS_MASK) -#define ACPI_GET_OP_TYPE(a) ((a)->Flags & ACPI_OP_TYPE_MASK) - - -/* - * AML opcode, name, and argument layout - */ -typedef struct acpi_opcode_info -{ - UINT8 Flags; /* Opcode type, HasArgs flag */ - UINT32 ParseArgs; /* Grammar/Parse time arguments */ - UINT32 RuntimeArgs; /* Interpret time arguments */ - -#ifdef _OPCODE_NAMES - NATIVE_CHAR *Name; /* op name (debug only) */ -#endif - -} ACPI_OPCODE_INFO; - - -typedef union acpi_parse_val -{ - UINT32 Integer; /* integer constant */ - UINT32 Size; /* bytelist or field size */ - NATIVE_CHAR *String; /* NULL terminated string */ - UINT8 *Buffer; /* buffer or string */ - NATIVE_CHAR *Name; /* NULL terminated string */ - struct acpi_parse_obj *Arg; /* arguments and contained ops */ - -} ACPI_PARSE_VALUE; - - -#define ACPI_PARSE_COMMON \ - UINT8 DataType; /* To differentiate various internal objs */\ - UINT8 Flags; /* Type of Op */\ - UINT16 Opcode; /* AML opcode */\ - UINT32 AmlOffset; /* offset of declaration in AML */\ - struct acpi_parse_obj *Parent; /* parent op */\ - struct acpi_parse_obj *Next; /* next op */\ - DEBUG_ONLY_MEMBERS (\ - NATIVE_CHAR OpName[16]) /* op name (debug only) */\ - /* NON-DEBUG members below: */\ - ACPI_NAMESPACE_NODE *Node; /* for use by interpreter */\ - ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\ - - -/* - * generic operation (eg. If, While, Store) - */ -typedef struct acpi_parse_obj -{ - ACPI_PARSE_COMMON -} ACPI_PARSE_OBJECT; - - -/* - * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and OpRegions), - * and bytelists. - */ -typedef struct acpi_parse2_obj -{ - ACPI_PARSE_COMMON - UINT8 *Data; /* AML body or bytelist data */ - UINT32 Length; /* AML length */ - UINT32 Name; /* 4-byte name or zero if no name */ - -} ACPI_PARSE2_OBJECT; - - -/* - * Parse state - one state per parser invocation and each control - * method. - */ - -typedef struct acpi_parse_state -{ - UINT8 *AmlStart; /* first AML byte */ - UINT8 *Aml; /* next AML byte */ - UINT8 *AmlEnd; /* (last + 1) AML byte */ - UINT8 *PkgStart; /* current package begin */ - UINT8 *PkgEnd; /* current package end */ - ACPI_PARSE_OBJECT *StartOp; /* root of parse tree */ - struct acpi_node *StartNode; - ACPI_GENERIC_STATE *Scope; /* current scope */ - struct acpi_parse_state *Next; - -} ACPI_PARSE_STATE; - - -/***************************************************************************** - * - * Tree walking typedefs and structs - * - ****************************************************************************/ - - -/* - * Walk state - current state of a parse tree walk. Used for both a leisurely stroll through - * the tree (for whatever reason), and for control method execution. - */ - -#define NEXT_OP_DOWNWARD 1 -#define NEXT_OP_UPWARD 2 - -#define WALK_NON_METHOD 0 -#define WALK_METHOD 1 -#define WALK_METHOD_RESTART 2 - -typedef struct acpi_walk_state -{ - UINT8 DataType; /* To differentiate various internal objs */\ - ACPI_OWNER_ID OwnerId; /* Owner of objects created during the walk */ - BOOLEAN LastPredicate; /* Result of last predicate */ - UINT8 NextOpInfo; /* Info about NextOp */ - UINT8 NumOperands; /* Stack pointer for Operands[] array */ - UINT8 CurrentResult; /* */ - - struct acpi_walk_state *Next; /* Next WalkState in list */ - ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */ - -/* TBD: Obsolete with removal of WALK procedure ? */ - ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */ - ACPI_PARSE_OBJECT *NextOp; /* next op to be processed */ - - - ACPI_GENERIC_STATE *Results; /* Stack of accumulated results */ - ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */ - ACPI_GENERIC_STATE *ScopeInfo; /* Stack of nested scopes */ - ACPI_PARSE_STATE *ParserState; /* Current state of parser */ - UINT8 *AmlLastWhile; - ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */ - ACPI_PARSE_DOWNWARDS DescendingCallback; - ACPI_PARSE_UPWARDS AscendingCallback; - - union acpi_operand_obj *ReturnDesc; /* Return object, if any */ - union acpi_operand_obj *MethodDesc; /* Method descriptor if running a method */ - struct acpi_node *MethodNode; /* Method Node if running a method */ - ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */ - struct acpi_node *MethodCallNode; /* Called method Node*/ - union acpi_operand_obj *Operands[OBJ_NUM_OPERANDS]; /* Operands passed to the interpreter */ - struct acpi_node Arguments[MTH_NUM_ARGS]; /* Control method arguments */ - struct acpi_node LocalVariables[MTH_NUM_LOCALS]; /* Control method locals */ - UINT32 ParseFlags; - UINT8 WalkType; - UINT8 ReturnUsed; - UINT16 Opcode; /* Current AML opcode */ - UINT32 PrevArgTypes; - - /* Debug support */ - - UINT32 MethodBreakpoint; - - -} ACPI_WALK_STATE; - - -/* - * Walk list - head of a tree of walk states. Multiple walk states are created when there - * are nested control methods executing. - */ -typedef struct acpi_walk_list -{ - - ACPI_WALK_STATE *WalkState; - -} ACPI_WALK_LIST; - - -/* Info used by AcpiPsInitObjects */ - -typedef struct acpi_init_walk_info -{ - UINT16 MethodCount; - UINT16 OpRegionCount; - UINT16 FieldCount; - UINT16 OpRegionInit; - UINT16 FieldInit; - UINT16 ObjectCount; - ACPI_TABLE_DESC *TableDesc; - -} ACPI_INIT_WALK_INFO; - - -/* Info used by TBD */ - -typedef struct acpi_device_walk_info -{ - UINT16 DeviceCount; - UINT16 Num_STA; - UINT16 Num_INI; - ACPI_TABLE_DESC *TableDesc; - -} ACPI_DEVICE_WALK_INFO; - - -/* TBD: [Restructure] Merge with struct above */ - -typedef struct acpi_walk_info -{ - UINT32 DebugLevel; - UINT32 OwnerId; - -} ACPI_WALK_INFO; - -typedef struct acpi_get_devices_info -{ - WALK_CALLBACK UserFunction; - void *Context; - NATIVE_CHAR *Hid; - -} ACPI_GET_DEVICES_INFO; - - -/***************************************************************************** - * - * Hardware and PNP - * - ****************************************************************************/ - - -/* PCI */ - -#define PCI_ROOT_HID_STRING "PNP0A03" -#define PCI_ROOT_HID_VALUE 0x030AD041 /* EISAID("PNP0A03") */ - - -/* Sleep states */ - -#define SLWA_DEBUG_LEVEL 4 -#define GTS_CALL 0 -#define GTS_WAKE 1 - -/* Cx States */ - -#define MAX_CX_STATE_LATENCY 0xFFFFFFFF -#define MAX_CX_STATES 4 - - -/* - * The #define's and enum below establish an abstract way of identifying what - * register block and register is to be accessed. Do not change any of the - * values as they are used in switch statements and offset calculations. - */ - -#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */ -#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */ -#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */ - -#define REGISTER_BLOCK_ID(RegId) (RegId & REGISTER_BLOCK_MASK) -#define REGISTER_BIT_ID(RegId) (RegId & BIT_IN_REGISTER_MASK) -#define REGISTER_OFFSET(RegId) (RegId & BYTE_IN_REGISTER_MASK) - -/* - * Access Rule - * To access a Register Bit: - * -> Use Bit Name (= Register Block Id | Bit Id) defined in the enum. - * - * To access a Register: - * -> Use Register Id (= Register Block Id | Register Offset) - */ - - -/* - * Register Block Id - */ -#define PM1_STS 0x0100 -#define PM1_EN 0x0200 -#define PM1_CONTROL 0x0300 -#define PM1A_CONTROL 0x0400 -#define PM1B_CONTROL 0x0500 -#define PM2_CONTROL 0x0600 -#define PM_TIMER 0x0700 -#define PROCESSOR_BLOCK 0x0800 -#define GPE0_STS_BLOCK 0x0900 -#define GPE0_EN_BLOCK 0x0A00 -#define GPE1_STS_BLOCK 0x0B00 -#define GPE1_EN_BLOCK 0x0C00 -#define SMI_CMD_BLOCK 0x0D00 - -/* - * Address space bitmasks for mmio or io spaces - */ - -#define SMI_CMD_ADDRESS_SPACE 0x01 -#define PM1_BLK_ADDRESS_SPACE 0x02 -#define PM2_CNT_BLK_ADDRESS_SPACE 0x04 -#define PM_TMR_BLK_ADDRESS_SPACE 0x08 -#define GPE0_BLK_ADDRESS_SPACE 0x10 -#define GPE1_BLK_ADDRESS_SPACE 0x20 - -/* - * Control bit definitions - */ -#define TMR_STS (PM1_STS | 0x01) -#define BM_STS (PM1_STS | 0x02) -#define GBL_STS (PM1_STS | 0x03) -#define PWRBTN_STS (PM1_STS | 0x04) -#define SLPBTN_STS (PM1_STS | 0x05) -#define RTC_STS (PM1_STS | 0x06) -#define WAK_STS (PM1_STS | 0x07) - -#define TMR_EN (PM1_EN | 0x01) - /* no BM_EN */ -#define GBL_EN (PM1_EN | 0x03) -#define PWRBTN_EN (PM1_EN | 0x04) -#define SLPBTN_EN (PM1_EN | 0x05) -#define RTC_EN (PM1_EN | 0x06) -#define WAK_EN (PM1_EN | 0x07) - -#define SCI_EN (PM1_CONTROL | 0x01) -#define BM_RLD (PM1_CONTROL | 0x02) -#define GBL_RLS (PM1_CONTROL | 0x03) -#define SLP_TYPE_A (PM1_CONTROL | 0x04) -#define SLP_TYPE_B (PM1_CONTROL | 0x05) -#define SLP_EN (PM1_CONTROL | 0x06) - -#define ARB_DIS (PM2_CONTROL | 0x01) - -#define TMR_VAL (PM_TIMER | 0x01) - -#define GPE0_STS (GPE0_STS_BLOCK | 0x01) -#define GPE0_EN (GPE0_EN_BLOCK | 0x01) - -#define GPE1_STS (GPE1_STS_BLOCK | 0x01) -#define GPE1_EN (GPE1_EN_BLOCK | 0x01) - - -#define TMR_STS_MASK 0x0001 -#define BM_STS_MASK 0x0010 -#define GBL_STS_MASK 0x0020 -#define PWRBTN_STS_MASK 0x0100 -#define SLPBTN_STS_MASK 0x0200 -#define RTC_STS_MASK 0x0400 -#define WAK_STS_MASK 0x8000 - -#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \ - | PWRBTN_STS_MASK | SLPBTN_STS_MASK \ - | RTC_STS_MASK | WAK_STS_MASK) - -#define TMR_EN_MASK 0x0001 -#define GBL_EN_MASK 0x0020 -#define PWRBTN_EN_MASK 0x0100 -#define SLPBTN_EN_MASK 0x0200 -#define RTC_EN_MASK 0x0400 - -#define SCI_EN_MASK 0x0001 -#define BM_RLD_MASK 0x0002 -#define GBL_RLS_MASK 0x0004 -#define SLP_TYPE_X_MASK 0x1C00 -#define SLP_EN_MASK 0x2000 - -#define ARB_DIS_MASK 0x0001 -#define TMR_VAL_MASK 0xFFFFFFFF - -#define GPE0_STS_MASK -#define GPE0_EN_MASK - -#define GPE1_STS_MASK -#define GPE1_EN_MASK - - -#define ACPI_READ 1 -#define ACPI_WRITE 2 - - -/* Plug and play */ - -/* Pnp and ACPI data */ - -#define VERSION_NO 0x01 -#define LOGICAL_DEVICE_ID 0x02 -#define COMPATIBLE_DEVICE_ID 0x03 -#define IRQ_FORMAT 0x04 -#define DMA_FORMAT 0x05 -#define START_DEPENDENT_TAG 0x06 -#define END_DEPENDENT_TAG 0x07 -#define IO_PORT_DESCRIPTOR 0x08 -#define FIXED_LOCATION_IO_DESCRIPTOR 0x09 -#define RESERVED_TYPE0 0x0A -#define RESERVED_TYPE1 0x0B -#define RESERVED_TYPE2 0x0C -#define RESERVED_TYPE3 0x0D -#define SMALL_VENDOR_DEFINED 0x0E -#define END_TAG 0x0F - -/* Pnp and ACPI data */ - -#define MEMORY_RANGE_24 0x81 -#define ISA_MEMORY_RANGE 0x81 -#define LARGE_VENDOR_DEFINED 0x84 -#define EISA_MEMORY_RANGE 0x85 -#define MEMORY_RANGE_32 0x85 -#define FIXED_EISA_MEMORY_RANGE 0x86 -#define FIXED_MEMORY_RANGE_32 0x86 - -/* ACPI only data */ - -#define DWORD_ADDRESS_SPACE 0x87 -#define WORD_ADDRESS_SPACE 0x88 -#define EXTENDED_IRQ 0x89 - -/* MUST HAVES */ - -#define DEVICE_ID_LENGTH 0x09 - -typedef struct -{ - NATIVE_CHAR Buffer[DEVICE_ID_LENGTH]; - -} DEVICE_ID; - - -/***************************************************************************** - * - * Debug - * - ****************************************************************************/ - - -/* Entry for a memory allocation (debug only) */ - -#ifdef ACPI_DEBUG - -#define MEM_MALLOC 0 -#define MEM_CALLOC 1 -#define MAX_MODULE_NAME 16 - -typedef struct AllocationInfo -{ - struct AllocationInfo *Previous; - struct AllocationInfo *Next; - void *Address; - UINT32 Size; - UINT32 Component; - UINT32 Line; - NATIVE_CHAR Module[MAX_MODULE_NAME]; - UINT8 AllocType; - -} ALLOCATION_INFO; - -#endif - -#endif /* __ACLOCAL_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acmacros.h b/sys/contrib/dev/acpica/Subsystem/Include/acmacros.h deleted file mode 100644 index f30933f..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acmacros.h +++ /dev/null @@ -1,592 +0,0 @@ -/****************************************************************************** - * - * Name: acmacros.h - C macros for the entire subsystem. - * $Revision: 62 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACMACROS_H__ -#define __ACMACROS_H__ - -/* - * Data manipulation macros - */ - -#ifndef LODWORD -#define LODWORD(l) ((UINT32)(UINT64)(l)) -#endif - -#ifndef HIDWORD -#define HIDWORD(l) ((UINT32)((((UINT64)(l)) >> 32) & 0xFFFFFFFF)) -#endif - -#ifndef LOWORD -#define LOWORD(l) ((UINT16)(NATIVE_UINT)(l)) -#endif - -#ifndef HIWORD -#define HIWORD(l) ((UINT16)((((NATIVE_UINT)(l)) >> 16) & 0xFFFF)) -#endif - -#ifndef LOBYTE -#define LOBYTE(l) ((UINT8)(UINT16)(l)) -#endif - -#ifndef HIBYTE -#define HIBYTE(l) ((UINT8)((((UINT16)(l)) >> 8) & 0xFF)) -#endif - -#define BIT0(x) ((((x) & 0x01) > 0) ? 1 : 0) -#define BIT1(x) ((((x) & 0x02) > 0) ? 1 : 0) -#define BIT2(x) ((((x) & 0x04) > 0) ? 1 : 0) - -#define BIT3(x) ((((x) & 0x08) > 0) ? 1 : 0) -#define BIT4(x) ((((x) & 0x10) > 0) ? 1 : 0) -#define BIT5(x) ((((x) & 0x20) > 0) ? 1 : 0) -#define BIT6(x) ((((x) & 0x40) > 0) ? 1 : 0) -#define BIT7(x) ((((x) & 0x80) > 0) ? 1 : 0) - -#define LOW_BASE(w) ((UINT16) ((w) & 0x0000FFFF)) -#define MID_BASE(b) ((UINT8) (((b) & 0x00FF0000) >> 16)) -#define HI_BASE(b) ((UINT8) (((b) & 0xFF000000) >> 24)) -#define LOW_LIMIT(w) ((UINT16) ((w) & 0x0000FFFF)) -#define HI_LIMIT(b) ((UINT8) (((b) & 0x00FF0000) >> 16)) - - -#ifdef _IA16 -/* - * For 16-bit addresses, we have to assume that the upper 32 bits - * are zero. - */ -#define ACPI_GET_ADDRESS(a) ((a).Lo) -#define ACPI_STORE_ADDRESS(a,b) {(a).Hi=0;(a).Lo=(b);} -#define ACPI_VALID_ADDRESS(a) ((a).Hi | (a).Lo) - -#else -/* - * Full 64-bit address on 32-bit and 64-bit platforms - */ -#define ACPI_GET_ADDRESS(a) (a) -#define ACPI_STORE_ADDRESS(a,b) ((a)=(b)) -#define ACPI_VALID_ADDRESS(a) (a) -#endif - /* - * Extract a byte of data using a pointer. Any more than a byte and we - * get into potential aligment issues -- see the STORE macros below - */ -#define GET8(addr) (*(UINT8*)(addr)) - - -/* - * Macros for moving data around to/from buffers that are possibly unaligned. - * If the hardware supports the transfer of unaligned data, just do the store. - * Otherwise, we have to move one byte at a time. - */ - -#ifdef _HW_ALIGNMENT_SUPPORT - -/* The hardware supports unaligned transfers, just do the move */ - -#define MOVE_UNALIGNED16_TO_16(d,s) *(UINT16*)(d) = *(UINT16*)(s) -#define MOVE_UNALIGNED32_TO_32(d,s) *(UINT32*)(d) = *(UINT32*)(s) -#define MOVE_UNALIGNED16_TO_32(d,s) *(UINT32*)(d) = *(UINT16*)(s) - -#else -/* - * The hardware does not support unaligned transfers. We must move the - * data one byte at a time. These macros work whether the source or - * the destination (or both) is/are unaligned. - */ - -#define MOVE_UNALIGNED16_TO_16(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ - ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];} - -#define MOVE_UNALIGNED32_TO_32(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\ - ((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\ - ((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\ - ((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];} - -#define MOVE_UNALIGNED16_TO_32(d,s) {(*(UINT32*)(d)) = 0; MOVE_UNALIGNED16_TO_16(d,s);} - -#endif - - -/* - * Fast power-of-two math macros for non-optimized compilers - */ - -#define _DIV(value,PowerOf2) ((UINT32) ((value) >> (PowerOf2))) -#define _MUL(value,PowerOf2) ((UINT32) ((value) << (PowerOf2))) -#define _MOD(value,Divisor) ((UINT32) ((value) & ((Divisor) -1))) - -#define DIV_2(a) _DIV(a,1) -#define MUL_2(a) _MUL(a,1) -#define MOD_2(a) _MOD(a,2) - -#define DIV_4(a) _DIV(a,2) -#define MUL_4(a) _MUL(a,2) -#define MOD_4(a) _MOD(a,4) - -#define DIV_8(a) _DIV(a,3) -#define MUL_8(a) _MUL(a,3) -#define MOD_8(a) _MOD(a,8) - -#define DIV_16(a) _DIV(a,4) -#define MUL_16(a) _MUL(a,4) -#define MOD_16(a) _MOD(a,16) - -/* - * Divide and Modulo - */ -#define ACPI_DIVIDE(n,d) ((n) / (d)) -#define ACPI_MODULO(n,d) ((n) % (d)) - -/* - * Rounding macros (Power of two boundaries only) - */ - -#define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) -#define ROUND_UP(value,boundary) (((value) + ((boundary)-1)) & (~((boundary)-1))) - -#define ROUND_DOWN_TO_32_BITS(a) ROUND_DOWN(a,4) -#define ROUND_DOWN_TO_64_BITS(a) ROUND_DOWN(a,8) -#define ROUND_DOWN_TO_NATIVE_WORD(a) ROUND_DOWN(a,ALIGNED_ADDRESS_BOUNDARY) - -#define ROUND_UP_TO_32BITS(a) ROUND_UP(a,4) -#define ROUND_UP_TO_64BITS(a) ROUND_UP(a,8) -#define ROUND_UP_TO_NATIVE_WORD(a) ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY) - -#define ROUND_PTR_UP_TO_4(a,b) ((b *)(((NATIVE_UINT)(a) + 3) & ~3)) -#define ROUND_PTR_UP_TO_8(a,b) ((b *)(((NATIVE_UINT)(a) + 7) & ~7)) - -#define ROUND_UP_TO_1K(a) (((a) + 1023) >> 10) - -#ifdef DEBUG_ASSERT -#undef DEBUG_ASSERT -#endif - - -/* Macros for GAS addressing */ - -#define ACPI_PCI_DEVICE_MASK (UINT64) 0x0000FFFF00000000 -#define ACPI_PCI_FUNCTION_MASK (UINT64) 0x00000000FFFF0000 -#define ACPI_PCI_REGISTER_MASK (UINT64) 0x000000000000FFFF - -#define ACPI_PCI_FUNCTION(a) (UINT32) ((((a) & ACPI_PCI_FUNCTION_MASK) >> 16)) -#define ACPI_PCI_DEVICE(a) (UINT32) ((((a) & ACPI_PCI_DEVICE_MASK) >> 32)) - -#ifndef _IA16 -#define ACPI_PCI_REGISTER(a) (UINT32) (((a) & ACPI_PCI_REGISTER_MASK)) -#define ACPI_PCI_DEVFUN(a) (UINT32) ((ACPI_PCI_DEVICE(a) << 16) | ACPI_PCI_FUNCTION(a)) - -#else -#define ACPI_PCI_REGISTER(a) (UINT32) (((a) & 0x0000FFFF)) -#define ACPI_PCI_DEVFUN(a) (UINT32) ((((a) & 0xFFFF0000) >> 16)) - -#endif - -/* - * An ACPI_HANDLE (which is actually an ACPI_NAMESPACE_NODE *) can appear in some contexts, - * such as on apObjStack, where a pointer to an ACPI_OPERAND_OBJECT can also - * appear. This macro is used to distinguish them. - * - * The DataType field is the first field in both structures. - */ - -#define VALID_DESCRIPTOR_TYPE(d,t) (((ACPI_NAMESPACE_NODE *)d)->DataType == t) - - -/* Macro to test the object type */ - -#define IS_THIS_OBJECT_TYPE(d,t) (((ACPI_OPERAND_OBJECT *)d)->Common.Type == (UINT8)t) - -/* Macro to check the table flags for SINGLE or MULTIPLE tables are allowed */ - -#define IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0) - -/* - * Macro to check if a pointer is within an ACPI table. - * Parameter (a) is the pointer to check. Parameter (b) must be defined - * as a pointer to an ACPI_TABLE_HEADER. (b+1) then points past the header, - * and ((UINT8 *)b+b->Length) points one byte past the end of the table. - */ - -#ifndef _IA16 -#define IS_IN_ACPI_TABLE(a,b) (((UINT8 *)(a) >= (UINT8 *)(b + 1)) &&\ - ((UINT8 *)(a) < ((UINT8 *)b + b->Length))) - -#else -#define IS_IN_ACPI_TABLE(a,b) (_segment)(a) == (_segment)(b) &&\ - (((UINT8 *)(a) >= (UINT8 *)(b + 1)) &&\ - ((UINT8 *)(a) < ((UINT8 *)b + b->Length))) -#endif - -/* - * Macros for the master AML opcode table - */ - -#ifdef ACPI_DEBUG -#define OP_INFO_ENTRY(Flags,Name,PArgs,IArgs) {Flags,PArgs,IArgs,Name} -#else -#define OP_INFO_ENTRY(Flags,Name,PArgs,IArgs) {Flags,PArgs,IArgs} -#endif - -#define ARG_TYPE_WIDTH 5 -#define ARG_1(x) ((UINT32)(x)) -#define ARG_2(x) ((UINT32)(x) << (1 * ARG_TYPE_WIDTH)) -#define ARG_3(x) ((UINT32)(x) << (2 * ARG_TYPE_WIDTH)) -#define ARG_4(x) ((UINT32)(x) << (3 * ARG_TYPE_WIDTH)) -#define ARG_5(x) ((UINT32)(x) << (4 * ARG_TYPE_WIDTH)) -#define ARG_6(x) ((UINT32)(x) << (5 * ARG_TYPE_WIDTH)) - -#define ARGI_LIST1(a) (ARG_1(a)) -#define ARGI_LIST2(a,b) (ARG_1(b)|ARG_2(a)) -#define ARGI_LIST3(a,b,c) (ARG_1(c)|ARG_2(b)|ARG_3(a)) -#define ARGI_LIST4(a,b,c,d) (ARG_1(d)|ARG_2(c)|ARG_3(b)|ARG_4(a)) -#define ARGI_LIST5(a,b,c,d,e) (ARG_1(e)|ARG_2(d)|ARG_3(c)|ARG_4(b)|ARG_5(a)) -#define ARGI_LIST6(a,b,c,d,e,f) (ARG_1(f)|ARG_2(e)|ARG_3(d)|ARG_4(c)|ARG_5(b)|ARG_6(a)) - -#define ARGP_LIST1(a) (ARG_1(a)) -#define ARGP_LIST2(a,b) (ARG_1(a)|ARG_2(b)) -#define ARGP_LIST3(a,b,c) (ARG_1(a)|ARG_2(b)|ARG_3(c)) -#define ARGP_LIST4(a,b,c,d) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)) -#define ARGP_LIST5(a,b,c,d,e) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)) -#define ARGP_LIST6(a,b,c,d,e,f) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)|ARG_6(f)) - -#define GET_CURRENT_ARG_TYPE(List) (List & ((UINT32) 0x1F)) -#define INCREMENT_ARG_LIST(List) (List >>= ((UINT32) ARG_TYPE_WIDTH)) - - -/* - * Reporting macros that are never compiled out - */ - -#define PARAM_LIST(pl) pl - -/* - * Error reporting. These versions add callers module and line#. Since - * _THIS_MODULE gets compiled out when ACPI_DEBUG isn't defined, only - * use it in debug mode. - */ - -#ifdef ACPI_DEBUG - -#define REPORT_INFO(fp) {_ReportInfo(_THIS_MODULE,__LINE__,_COMPONENT); \ - DebugPrintRaw PARAM_LIST(fp);} -#define REPORT_ERROR(fp) {_ReportError(_THIS_MODULE,__LINE__,_COMPONENT); \ - DebugPrintRaw PARAM_LIST(fp);} -#define REPORT_WARNING(fp) {_ReportWarning(_THIS_MODULE,__LINE__,_COMPONENT); \ - DebugPrintRaw PARAM_LIST(fp);} - -#else - -#define REPORT_INFO(fp) {_ReportInfo("ACPI",__LINE__,_COMPONENT); \ - DebugPrintRaw PARAM_LIST(fp);} -#define REPORT_ERROR(fp) {_ReportError("ACPI",__LINE__,_COMPONENT); \ - DebugPrintRaw PARAM_LIST(fp);} -#define REPORT_WARNING(fp) {_ReportWarning("ACPI",__LINE__,_COMPONENT); \ - DebugPrintRaw PARAM_LIST(fp);} - -#endif - -/* Error reporting. These versions pass thru the module and line# */ - -#define _REPORT_INFO(a,b,c,fp) {_ReportInfo(a,b,c); \ - DebugPrintRaw PARAM_LIST(fp);} -#define _REPORT_ERROR(a,b,c,fp) {_ReportError(a,b,c); \ - DebugPrintRaw PARAM_LIST(fp);} -#define _REPORT_WARNING(a,b,c,fp) {_ReportWarning(a,b,c); \ - DebugPrintRaw PARAM_LIST(fp);} - -/* Buffer dump macros */ - -#define DUMP_BUFFER(a,b) AcpiCmDumpBuffer((UINT8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT) - -/* - * Debug macros that are conditionally compiled - */ - -#ifdef ACPI_DEBUG - -#define MODULE_NAME(name) static char *_THIS_MODULE = name; - -/* - * Function entry tracing. - * The first parameter should be the procedure name as a quoted string. This is declared - * as a local string ("_ProcName) so that it can be also used by the function exit macros below. - */ - -#define FUNCTION_TRACE(a) char * _ProcName = a;\ - FunctionTrace(_THIS_MODULE,__LINE__,_COMPONENT,a) -#define FUNCTION_TRACE_PTR(a,b) char * _ProcName = a;\ - FunctionTracePtr(_THIS_MODULE,__LINE__,_COMPONENT,a,(void *)b) -#define FUNCTION_TRACE_U32(a,b) char * _ProcName = a;\ - FunctionTraceU32(_THIS_MODULE,__LINE__,_COMPONENT,a,(UINT32)b) -#define FUNCTION_TRACE_STR(a,b) char * _ProcName = a;\ - FunctionTraceStr(_THIS_MODULE,__LINE__,_COMPONENT,a,(NATIVE_CHAR *)b) -/* - * Function exit tracing. - * WARNING: These macros include a return statement. This is usually considered - * bad form, but having a separate exit macro is very ugly and difficult to maintain. - * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros - * so that "_ProcName" is defined. - */ -#define return_VOID {FunctionExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName);return;} -#define return_ACPI_STATUS(s) {FunctionStatusExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,s);return(s);} -#define return_VALUE(s) {FunctionValueExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,(ACPI_INTEGER)s);return(s);} -#define return_PTR(s) {FunctionPtrExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,(UINT8 *)s);return(s);} - - -/* Conditional execution */ - -#define DEBUG_EXEC(a) a -#define NORMAL_EXEC(a) - -#define DEBUG_DEFINE(a) a; -#define DEBUG_ONLY_MEMBERS(a) a; -#define _OPCODE_NAMES -#define _VERBOSE_STRUCTURES - - -/* Stack and buffer dumping */ - -#define DUMP_STACK_ENTRY(a) AcpiAmlDumpOperand(a) -#define DUMP_OPERANDS(a,b,c,d,e) AcpiAmlDumpOperands(a,b,c,d,e,_THIS_MODULE,__LINE__) - - -#define DUMP_ENTRY(a,b) AcpiNsDumpEntry (a,b) -#define DUMP_TABLES(a,b) AcpiNsDumpTables(a,b) -#define DUMP_PATHNAME(a,b,c,d) AcpiNsDumpPathname(a,b,c,d) -#define DUMP_RESOURCE_LIST(a) AcpiRsDumpResourceList(a) -#define BREAK_MSG(a) AcpiOsBreakpoint (a) - -/* - * Generate INT3 on ACPI_ERROR (Debug only!) - */ - -#define ERROR_BREAK -#ifdef ERROR_BREAK -#define BREAK_ON_ERROR(lvl) if ((lvl)&ACPI_ERROR) AcpiOsBreakpoint("Fatal error encountered\n") -#else -#define BREAK_ON_ERROR(lvl) -#endif - -/* - * Master debug print macros - * Print iff: - * 1) Debug print for the current component is enabled - * 2) Debug error level or trace level for the print statement is enabled - * - */ - -#define TEST_DEBUG_SWITCH(lvl) if (((lvl) & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer)) - -#define DEBUG_PRINT(lvl,fp) TEST_DEBUG_SWITCH(lvl) {\ - DebugPrintPrefix (_THIS_MODULE,__LINE__);\ - DebugPrintRaw PARAM_LIST(fp);\ - BREAK_ON_ERROR(lvl);} - -#define DEBUG_PRINT_RAW(lvl,fp) TEST_DEBUG_SWITCH(lvl) {\ - DebugPrintRaw PARAM_LIST(fp);} - - -/* Assert macros */ - -#define ACPI_ASSERT(exp) if(!(exp)) \ - AcpiOsDbgAssert(#exp, __FILE__, __LINE__, "Failed Assertion") - -#define DEBUG_ASSERT(msg, exp) if(!(exp)) \ - AcpiOsDbgAssert(#exp, __FILE__, __LINE__, msg) - - -#else -/* - * This is the non-debug case -- make everything go away, - * leaving no executable debug code! - */ - -#define MODULE_NAME(name) -#define _THIS_MODULE "" - -#define DEBUG_EXEC(a) -#define NORMAL_EXEC(a) a; - -#define DEBUG_DEFINE(a) -#define DEBUG_ONLY_MEMBERS(a) -#define FUNCTION_TRACE(a) -#define FUNCTION_TRACE_PTR(a,b) -#define FUNCTION_TRACE_U32(a,b) -#define FUNCTION_TRACE_STR(a,b) -#define FUNCTION_EXIT -#define FUNCTION_STATUS_EXIT(s) -#define FUNCTION_VALUE_EXIT(s) -#define DUMP_STACK_ENTRY(a) -#define DUMP_OPERANDS(a,b,c,d,e) -#define DUMP_ENTRY(a,b) -#define DUMP_TABLES(a,b) -#define DUMP_PATHNAME(a,b,c,d) -#define DUMP_RESOURCE_LIST(a) -#define DEBUG_PRINT(l,f) -#define DEBUG_PRINT_RAW(l,f) -#define BREAK_MSG(a) - -#define return_VOID return -#define return_ACPI_STATUS(s) return(s) -#define return_VALUE(s) return(s) -#define return_PTR(s) return(s) - -#define ACPI_ASSERT(exp) -#define DEBUG_ASSERT(msg, exp) - -#endif - -/* - * Some code only gets executed when the debugger is built in. - * Note that this is entirely independent of whether the - * DEBUG_PRINT stuff (set by ACPI_DEBUG) is on, or not. - */ -#ifdef ENABLE_DEBUGGER -#define DEBUGGER_EXEC(a) a -#else -#define DEBUGGER_EXEC(a) -#endif - - -/* - * For 16-bit code, we want to shrink some things even though - * we are using ACPI_DEBUG to get the debug output - */ -#ifdef _IA16 -#undef DEBUG_ONLY_MEMBERS -#undef _VERBOSE_STRUCTURES -#define DEBUG_ONLY_MEMBERS(a) -#endif - - -#ifdef ACPI_DEBUG - -/* - * 1) Set name to blanks - * 2) Copy the object name - */ - -#define ADD_OBJECT_NAME(a,b) MEMSET (a->Common.Name, ' ', sizeof (a->Common.Name));\ - STRNCPY (a->Common.Name, AcpiGbl_NsTypeNames[b], sizeof (a->Common.Name)) - -#else - -#define ADD_OBJECT_NAME(a,b) - -#endif - - -#endif /* ACMACROS_H */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acmsvc.h b/sys/contrib/dev/acpica/Subsystem/Include/acmsvc.h deleted file mode 100644 index 8727e4b..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acmsvc.h +++ /dev/null @@ -1,132 +0,0 @@ -/****************************************************************************** - * - * Name: acmsvc.h - VC specific defines, etc. - * $Revision: 4 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACMSVC_H__ -#define __ACMSVC_H__ - -#define COMPILER_DEPENDENT_UINT64 unsigned __int64 - -/* warn C4100: unreferenced formal parameter */ -#pragma warning(disable:4100) - -/* warn C4127: conditional expression is constant */ -#pragma warning(disable:4127) - -/* warn C4706: assignment within conditional expression */ -#pragma warning(disable:4706) - - -#endif /* __ACMSVC_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acnamesp.h b/sys/contrib/dev/acpica/Subsystem/Include/acnamesp.h deleted file mode 100644 index 7302295..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acnamesp.h +++ /dev/null @@ -1,521 +0,0 @@ -/****************************************************************************** - * - * Name: acnamesp.h - Namespace subcomponent prototypes and defines - * $Revision: 103 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACNAMESP_H__ -#define __ACNAMESP_H__ - - -/* To search the entire name space, pass this as SearchBase */ - -#define NS_ALL ((ACPI_HANDLE)0) - -/* - * Elements of AcpiNsProperties are bit significant - * and should be one-to-one with values of ACPI_OBJECT_TYPE - */ -#define NSP_NORMAL 0 -#define NSP_NEWSCOPE 1 /* a definition of this type opens a name scope */ -#define NSP_LOCAL 2 /* suppress search of enclosing scopes */ - - -/* Definitions of the predefined namespace names */ - -#define ACPI_UNKNOWN_NAME (UINT32) 0x3F3F3F3F /* Unknown name is "????" */ -#define ACPI_ROOT_NAME (UINT32) 0x2F202020 /* Root name is "/ " */ -#define ACPI_SYS_BUS_NAME (UINT32) 0x5F53425F /* Sys bus name is "_SB_" */ - -#define NS_ROOT_PATH "/" -#define NS_SYSTEM_BUS "_SB_" - - -/* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */ - -#define NS_NO_UPSEARCH 0 -#define NS_SEARCH_PARENT 0x01 -#define NS_DONT_OPEN_SCOPE 0x02 -#define NS_NO_PEER_SEARCH 0x04 -#define NS_ERROR_IF_FOUND 0x08 - -#define NS_WALK_UNLOCK TRUE -#define NS_WALK_NO_UNLOCK FALSE - - -ACPI_STATUS -AcpiNsLoadNamespace ( - void); - -ACPI_STATUS -AcpiNsInitializeObjects ( - void); - -ACPI_STATUS -AcpiNsInitializeDevices ( - void); - - -/* Namespace init - nsxfinit */ - -ACPI_STATUS -AcpiNsInitOneDevice ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -ACPI_STATUS -AcpiNsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - - -ACPI_STATUS -AcpiNsWalkNamespace ( - OBJECT_TYPE_INTERNAL Type, - ACPI_HANDLE StartObject, - UINT32 MaxDepth, - BOOLEAN UnlockBeforeCallback, - WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue); - - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextObject ( - OBJECT_TYPE_INTERNAL Type, - ACPI_NAMESPACE_NODE *Parent, - ACPI_NAMESPACE_NODE *Child); - - -ACPI_STATUS -AcpiNsDeleteNamespaceByOwner ( - UINT16 TableId); - - -/* Namespace loading - nsload */ - -ACPI_STATUS -AcpiNsOneCompleteParse ( - UINT32 PassNumber, - ACPI_TABLE_DESC *TableDesc); - -ACPI_STATUS -AcpiNsParseTable ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NAMESPACE_NODE *Scope); - -ACPI_STATUS -AcpiNsLoadTable ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NAMESPACE_NODE *Node); - -ACPI_STATUS -AcpiNsLoadTableByType ( - ACPI_TABLE_TYPE TableType); - - -/* - * Top-level namespace access - nsaccess - */ - - -ACPI_STATUS -AcpiNsRootInitialize ( - void); - -ACPI_STATUS -AcpiNsLookup ( - ACPI_GENERIC_STATE *ScopeInfo, - NATIVE_CHAR *Name, - OBJECT_TYPE_INTERNAL Type, - OPERATING_MODE InterpreterMode, - UINT32 Flags, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE **RetNode); - - -/* - * Named object allocation/deallocation - nsalloc - */ - - -ACPI_NAMESPACE_NODE * -AcpiNsCreateNode ( - UINT32 AcpiName); - -void -AcpiNsDeleteNode ( - ACPI_NAMESPACE_NODE *Node); - -ACPI_STATUS -AcpiNsDeleteNamespaceSubtree ( - ACPI_NAMESPACE_NODE *ParentHandle); - -void -AcpiNsDetachObject ( - ACPI_NAMESPACE_NODE *Node); - -void -AcpiNsDeleteChildren ( - ACPI_NAMESPACE_NODE *Parent); - - -/* - * Namespace modification - nsmodify - */ - -ACPI_STATUS -AcpiNsUnloadNamespace ( - ACPI_HANDLE Handle); - -ACPI_STATUS -AcpiNsDeleteSubtree ( - ACPI_HANDLE StartHandle); - - -/* - * Namespace dump/print utilities - nsdump - */ - -void -AcpiNsDumpTables ( - ACPI_HANDLE SearchBase, - UINT32 MaxDepth); - -void -AcpiNsDumpEntry ( - ACPI_HANDLE Handle, - UINT32 DebugLevel); - -ACPI_STATUS -AcpiNsDumpPathname ( - ACPI_HANDLE Handle, - NATIVE_CHAR *Msg, - UINT32 Level, - UINT32 Component); - -void -AcpiNsDumpRootDevices ( - void); - -void -AcpiNsDumpObjects ( - OBJECT_TYPE_INTERNAL Type, - UINT32 MaxDepth, - UINT32 OwnderId, - ACPI_HANDLE StartHandle); - - -/* - * Namespace evaluation functions - nseval - */ - -ACPI_STATUS -AcpiNsEvaluateByHandle ( - ACPI_NAMESPACE_NODE *PrefixNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObject); - -ACPI_STATUS -AcpiNsEvaluateByName ( - NATIVE_CHAR *Pathname, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObject); - -ACPI_STATUS -AcpiNsEvaluateRelative ( - ACPI_NAMESPACE_NODE *PrefixNode, - NATIVE_CHAR *Pathname, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObject); - -ACPI_STATUS -AcpiNsExecuteControlMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObjDesc); - -ACPI_STATUS -AcpiNsGetObjectValue ( - ACPI_NAMESPACE_NODE *ObjectNode, - ACPI_OPERAND_OBJECT **ReturnObjDesc); - - -/* - * Parent/Child/Peer utility functions - nsfamily - */ - -ACPI_NAME -AcpiNsFindParentName ( - ACPI_NAMESPACE_NODE *NodeToSearch); - -BOOLEAN -AcpiNsExistDownstreamSibling ( - ACPI_NAMESPACE_NODE *ThisNode); - - -/* - * Scope manipulation - nsscope - */ - -UINT32 -AcpiNsOpensScope ( - OBJECT_TYPE_INTERNAL Type); - -NATIVE_CHAR * -AcpiNsGetTablePathname ( - ACPI_NAMESPACE_NODE *Node); - -NATIVE_CHAR * -AcpiNsNameOfCurrentScope ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiNsHandleToPathname ( - ACPI_HANDLE ObjHandle, - UINT32 *BufSize, - NATIVE_CHAR *UserBuffer); - -BOOLEAN -AcpiNsPatternMatch ( - ACPI_NAMESPACE_NODE *ObjNode, - NATIVE_CHAR *SearchFor); - -ACPI_STATUS -AcpiNsNameCompare ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -ACPI_STATUS -AcpiNsGetNode ( - NATIVE_CHAR *Pathname, - ACPI_NAMESPACE_NODE *InPrefixNode, - ACPI_NAMESPACE_NODE **OutNode); - -UINT32 -AcpiNsGetPathnameLength ( - ACPI_NAMESPACE_NODE *Node); - - -/* - * Object management for NTEs - nsobject - */ - -ACPI_STATUS -AcpiNsAttachObject ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OPERAND_OBJECT *Object, - OBJECT_TYPE_INTERNAL Type); - - -void * -AcpiNsCompareValue ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *ObjDesc); - - -/* - * Namespace searching and entry - nssearch - */ - -ACPI_STATUS -AcpiNsSearchAndEnter ( - UINT32 EntryName, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - OPERATING_MODE InterpreterMode, - OBJECT_TYPE_INTERNAL Type, - UINT32 Flags, - ACPI_NAMESPACE_NODE **RetNode); - -ACPI_STATUS -AcpiNsSearchNode ( - UINT32 EntryName, - ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, - ACPI_NAMESPACE_NODE **RetNode); - -void -AcpiNsInstallNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ - ACPI_NAMESPACE_NODE *Node, /* New Child*/ - OBJECT_TYPE_INTERNAL Type); - - -/* - * Utility functions - nsutils - */ - -BOOLEAN -AcpiNsValidRootPrefix ( - NATIVE_CHAR Prefix); - -BOOLEAN -AcpiNsValidPathSeparator ( - NATIVE_CHAR Sep); - -OBJECT_TYPE_INTERNAL -AcpiNsGetType ( - ACPI_HANDLE ObjHandle); - -void * -AcpiNsGetAttachedObject ( - ACPI_HANDLE ObjHandle); - -UINT32 -AcpiNsLocal ( - OBJECT_TYPE_INTERNAL Type); - -ACPI_STATUS -AcpiNsInternalizeName ( - NATIVE_CHAR *DottedName, - NATIVE_CHAR **ConvertedName); - -ACPI_STATUS -AcpiNsExternalizeName ( - UINT32 InternalNameLength, - NATIVE_CHAR *InternalName, - UINT32 *ConvertedNameLength, - NATIVE_CHAR **ConvertedName); - -ACPI_NAMESPACE_NODE * -AcpiNsConvertHandleToEntry ( - ACPI_HANDLE Handle); - -ACPI_HANDLE -AcpiNsConvertEntryToHandle( - ACPI_NAMESPACE_NODE *Node); - -void -AcpiNsTerminate ( - void); - -ACPI_NAMESPACE_NODE * -AcpiNsGetParentObject ( - ACPI_NAMESPACE_NODE *Node); - - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextValidObject ( - ACPI_NAMESPACE_NODE *Node); - - -#endif /* __ACNAMESP_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acobject.h b/sys/contrib/dev/acpica/Subsystem/Include/acobject.h deleted file mode 100644 index d873b11..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acobject.h +++ /dev/null @@ -1,513 +0,0 @@ - -/****************************************************************************** - * - * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) - * $Revision: 78 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _ACOBJECT_H -#define _ACOBJECT_H - - -/* - * The ACPI_OPERAND_OBJECT is used to pass AML operands from the dispatcher - * to the interpreter, and to keep track of the various handlers such as - * address space handlers and notify handlers. The object is a constant - * size in order to allow them to be cached and reused. - * - * All variants of the ACPI_OPERAND_OBJECT are defined with the same - * sequence of field types, with fields that are not used in a particular - * variant being named "Reserved". This is not strictly necessary, but - * may in some circumstances simplify understanding if these structures - * need to be displayed in a debugger having limited (or no) support for - * union types. It also simplifies some debug code in DumpTable() which - * dumps multi-level values: fetching Buffer.Pointer suffices to pick up - * the value or next level for any of several types. - */ - -/****************************************************************************** - * - * Common Descriptors - * - *****************************************************************************/ - -/* - * Common area for all objects. - * - * DataType is used to differentiate between internal descriptors, and MUST - * be the first byte in this structure. - */ - - -#define ACPI_OBJECT_COMMON_HEADER /* 32-bits plus 8-bit flag */\ - UINT8 DataType; /* To differentiate various internal objs */\ - UINT8 Type; /* ACPI_OBJECT_TYPE */\ - UINT16 ReferenceCount; /* For object deletion management */\ - UINT8 Flags; \ - -/* Defines for flag byte above */ - -#define AOPOBJ_STATIC_ALLOCATION 0x1 -#define AOPOBJ_DATA_VALID 0x2 -#define AOPOBJ_INITIALIZED 0x4 - - -/* - * Common bitfield for the field objects - */ -#define ACPI_COMMON_FIELD_INFO /* Three 32-bit values plus 8*/\ - UINT8 Granularity;\ - UINT16 Length; \ - UINT32 Offset; /* Byte offset within containing object */\ - UINT8 BitOffset; /* Bit offset within min read/write data unit */\ - UINT8 Access; /* AccessType */\ - UINT8 LockRule;\ - UINT8 UpdateRule;\ - UINT8 AccessAttribute; - - -/****************************************************************************** - * - * Individual Object Descriptors - * - *****************************************************************************/ - - -typedef struct /* COMMON */ -{ - ACPI_OBJECT_COMMON_HEADER - -} ACPI_OBJECT_COMMON; - - -typedef struct /* CACHE_LIST */ -{ - ACPI_OBJECT_COMMON_HEADER - union acpi_operand_obj *Next; /* Link for object cache and internal lists*/ - -} ACPI_OBJECT_CACHE_LIST; - - -typedef struct /* NUMBER - has value */ -{ - ACPI_OBJECT_COMMON_HEADER - - ACPI_INTEGER Value; - -} ACPI_OBJECT_INTEGER; - - -typedef struct /* STRING - has length and pointer - Null terminated, ASCII characters only */ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT32 Length; - NATIVE_CHAR *Pointer; /* String value in AML stream or in allocated space */ - -} ACPI_OBJECT_STRING; - - -typedef struct /* BUFFER - has length and pointer - not null terminated */ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT32 Length; - UINT8 *Pointer; /* points to the buffer in allocated space */ - -} ACPI_OBJECT_BUFFER; - - -typedef struct /* PACKAGE - has count, elements, next element */ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT32 Count; /* # of elements in package */ - - union acpi_operand_obj **Elements; /* Array of pointers to AcpiObjects */ - union acpi_operand_obj **NextElement; /* used only while initializing */ - -} ACPI_OBJECT_PACKAGE; - - -typedef struct /* FIELD UNIT */ -{ - ACPI_OBJECT_COMMON_HEADER - - ACPI_COMMON_FIELD_INFO - - union acpi_operand_obj *Extra; /* Pointer to executable AML (in field definition) */ - ACPI_NAMESPACE_NODE *Node; /* containing object */ - union acpi_operand_obj *Container; /* Containing object (Buffer) */ - -} ACPI_OBJECT_FIELD_UNIT; - - -typedef struct /* DEVICE - has handle and notification handler/context */ -{ - ACPI_OBJECT_COMMON_HEADER - - union acpi_operand_obj *SysHandler; /* Handler for system notifies */ - union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */ - union acpi_operand_obj *AddrHandler; /* Handler for Address space */ - -} ACPI_OBJECT_DEVICE; - - -typedef struct /* EVENT */ -{ - ACPI_OBJECT_COMMON_HEADER - - void *Semaphore; - -} ACPI_OBJECT_EVENT; - - -#define INFINITE_CONCURRENCY 0xFF - -typedef struct /* METHOD */ -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 MethodFlags; - UINT8 ParamCount; - - UINT32 PcodeLength; - - void *Semaphore; - UINT8 *Pcode; - - UINT8 Concurrency; - UINT8 ThreadCount; - ACPI_OWNER_ID OwningId; - -} ACPI_OBJECT_METHOD; - - -typedef struct /* MUTEX */ -{ - ACPI_OBJECT_COMMON_HEADER - UINT16 SyncLevel; - - void *Semaphore; - -} ACPI_OBJECT_MUTEX; - - -typedef struct /* REGION */ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT8 SpaceId; - UINT32 Length; - ACPI_PHYSICAL_ADDRESS Address; - union acpi_operand_obj *Extra; /* Pointer to executable AML (in region definition) */ - - union acpi_operand_obj *AddrHandler; /* Handler for system notifies */ - ACPI_NAMESPACE_NODE *Node; /* containing object */ - union acpi_operand_obj *Next; - -} ACPI_OBJECT_REGION; - - -typedef struct /* POWER RESOURCE - has Handle and notification handler/context*/ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT32 SystemLevel; - UINT32 ResourceOrder; - - union acpi_operand_obj *SysHandler; /* Handler for system notifies */ - union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */ - -} ACPI_OBJECT_POWER_RESOURCE; - - -typedef struct /* PROCESSOR - has Handle and notification handler/context*/ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT32 ProcId; - UINT32 Length; - ACPI_IO_ADDRESS Address; - - union acpi_operand_obj *SysHandler; /* Handler for system notifies */ - union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */ - union acpi_operand_obj *AddrHandler; /* Handler for Address space */ - -} ACPI_OBJECT_PROCESSOR; - - -typedef struct /* THERMAL ZONE - has Handle and Handler/Context */ -{ - ACPI_OBJECT_COMMON_HEADER - - union acpi_operand_obj *SysHandler; /* Handler for system notifies */ - union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */ - union acpi_operand_obj *AddrHandler; /* Handler for Address space */ - -} ACPI_OBJECT_THERMAL_ZONE; - - -/* - * Internal types - */ - - -typedef struct /* FIELD */ -{ - ACPI_OBJECT_COMMON_HEADER - - ACPI_COMMON_FIELD_INFO - - union acpi_operand_obj *Container; /* Containing object */ - -} ACPI_OBJECT_FIELD; - - -typedef struct /* BANK FIELD */ -{ - ACPI_OBJECT_COMMON_HEADER - - ACPI_COMMON_FIELD_INFO - UINT32 Value; /* Value to store into BankSelect */ - - ACPI_HANDLE BankSelect; /* Bank select register */ - union acpi_operand_obj *Container; /* Containing object */ - -} ACPI_OBJECT_BANK_FIELD; - - -typedef struct /* INDEX FIELD */ -{ - /* - * No container pointer needed since the index and data register definitions - * will define how to access the respective registers - */ - ACPI_OBJECT_COMMON_HEADER - - ACPI_COMMON_FIELD_INFO - UINT32 Value; /* Value to store into Index register */ - - ACPI_HANDLE Index; /* Index register */ - ACPI_HANDLE Data; /* Data register */ - -} ACPI_OBJECT_INDEX_FIELD; - - -typedef struct /* NOTIFY HANDLER */ -{ - ACPI_OBJECT_COMMON_HEADER - - ACPI_NAMESPACE_NODE *Node; /* Parent device */ - NOTIFY_HANDLER Handler; - void *Context; - -} ACPI_OBJECT_NOTIFY_HANDLER; - - -/* Flags for address handler */ - -#define ADDR_HANDLER_DEFAULT_INSTALLED 0x1 - - -typedef struct /* ADDRESS HANDLER */ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT8 SpaceId; - UINT16 Hflags; - ADDRESS_SPACE_HANDLER Handler; - - ACPI_NAMESPACE_NODE *Node; /* Parent device */ - void *Context; - ADDRESS_SPACE_SETUP Setup; - union acpi_operand_obj *RegionList; /* regions using this handler */ - union acpi_operand_obj *Next; - -} ACPI_OBJECT_ADDR_HANDLER; - - -/* - * The Reference object type is used for these opcodes: - * Arg[0-6], Local[0-7], IndexOp, NameOp, ZeroOp, OneOp, OnesOp, DebugOp - */ - -typedef struct /* Reference - Local object type */ -{ - ACPI_OBJECT_COMMON_HEADER - - UINT8 TargetType; /* Used for IndexOp */ - UINT16 OpCode; - UINT32 Offset; /* Used for ArgOp, LocalOp, and IndexOp */ - - void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */ - ACPI_NAMESPACE_NODE *Node; - union acpi_operand_obj **Where; - -} ACPI_OBJECT_REFERENCE; - - -/* - * Extra object is used as additional storage for types that - * have AML code in their declarations (TermArgs) that must be - * evaluated at run time. - * - * Currently: Region and FieldUnit types - */ - -typedef struct /* EXTRA */ -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 ByteFill1; - UINT16 WordFill1; - UINT32 PcodeLength; - UINT8 *Pcode; - ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */ - void *RegionContext; /* Region-specific data */ - -} ACPI_OBJECT_EXTRA; - - -/****************************************************************************** - * - * ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above - * - *****************************************************************************/ - -typedef union acpi_operand_obj -{ - ACPI_OBJECT_COMMON Common; - ACPI_OBJECT_CACHE_LIST Cache; - ACPI_OBJECT_INTEGER Integer; - ACPI_OBJECT_STRING String; - ACPI_OBJECT_BUFFER Buffer; - ACPI_OBJECT_PACKAGE Package; - ACPI_OBJECT_FIELD_UNIT FieldUnit; - ACPI_OBJECT_DEVICE Device; - ACPI_OBJECT_EVENT Event; - ACPI_OBJECT_METHOD Method; - ACPI_OBJECT_MUTEX Mutex; - ACPI_OBJECT_REGION Region; - ACPI_OBJECT_POWER_RESOURCE PowerResource; - ACPI_OBJECT_PROCESSOR Processor; - ACPI_OBJECT_THERMAL_ZONE ThermalZone; - ACPI_OBJECT_FIELD Field; - ACPI_OBJECT_BANK_FIELD BankField; - ACPI_OBJECT_INDEX_FIELD IndexField; - ACPI_OBJECT_REFERENCE Reference; - ACPI_OBJECT_NOTIFY_HANDLER NotifyHandler; - ACPI_OBJECT_ADDR_HANDLER AddrHandler; - ACPI_OBJECT_EXTRA Extra; - -} ACPI_OPERAND_OBJECT; - -#endif /* _ACOBJECT_H */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acoutput.h b/sys/contrib/dev/acpica/Subsystem/Include/acoutput.h deleted file mode 100644 index 00f4918..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acoutput.h +++ /dev/null @@ -1,219 +0,0 @@ -/****************************************************************************** - * - * Name: acoutput.h -- debug output - * $Revision: 70 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACOUTPUT_H__ -#define __ACOUTPUT_H__ - -/* - * Debug levels and component IDs. These are used to control the - * granularity of the output of the DEBUG_PRINT macro -- on a per- - * component basis and a per-exception-type basis. - */ - -/* Component IDs -- used in the global "DebugLayer" */ - -#define GLOBAL 0x00000001 -#define COMMON 0x00000002 -#define PARSER 0x00000004 -#define DISPATCHER 0x00000008 -#define INTERPRETER 0x00000010 -#define NAMESPACE 0x00000020 -#define RESOURCE_MANAGER 0x00000040 -#define TABLE_MANAGER 0x00000080 -#define EVENT_HANDLING 0x00000100 -#define HARDWARE 0x00000200 -#define MISCELLANEOUS 0x00000400 -#define OS_DEPENDENT 0x00000800 - -#define BUS_MANAGER 0x00001000 - -#define PROCESSOR_CONTROL 0x00002000 -#define SYSTEM_CONTROL 0x00004000 -#define THERMAL_CONTROL 0x00008000 -#define POWER_CONTROL 0x00010000 - -#define EMBEDDED_CONTROLLER 0x00020000 -#define BATTERY 0x00040000 - -#define DEBUGGER 0x00100000 -#define COMPILER 0x00200000 -#define ALL_COMPONENTS 0x001FFFFF - -#define COMPONENT_DEFAULT (ALL_COMPONENTS) - - -/* Exception level -- used in the global "DebugLevel" */ - -#define ACPI_OK 0x00000001 -#define ACPI_INFO 0x00000002 -#define ACPI_WARN 0x00000004 -#define ACPI_ERROR 0x00000008 -#define ACPI_FATAL 0x00000010 -#define ACPI_DEBUG_OBJECT 0x00000020 -#define ACPI_ALL 0x0000003F - - -/* Trace level -- also used in the global "DebugLevel" */ - -#define TRACE_PARSE 0x00000100 -#define TRACE_DISPATCH 0x00000200 -#define TRACE_LOAD 0x00000400 -#define TRACE_EXEC 0x00000800 -#define TRACE_NAMES 0x00001000 -#define TRACE_OPREGION 0x00002000 -#define TRACE_BFIELD 0x00004000 -#define TRACE_TRASH 0x00008000 -#define TRACE_TABLES 0x00010000 -#define TRACE_FUNCTIONS 0x00020000 -#define TRACE_VALUES 0x00040000 -#define TRACE_OBJECTS 0x00080000 -#define TRACE_ALLOCATIONS 0x00100000 -#define TRACE_RESOURCES 0x00200000 -#define TRACE_IO 0x00400000 -#define TRACE_INTERRUPTS 0x00800000 -#define TRACE_USER_REQUESTS 0x01000000 -#define TRACE_PACKAGE 0x02000000 -#define TRACE_MUTEX 0x04000000 -#define TRACE_INIT 0x08000000 - -#define TRACE_ALL 0x0FFFFF00 - - -/* Exceptionally verbose output -- also used in the global "DebugLevel" */ - -#define VERBOSE_AML_DISASSEMBLE 0x10000000 -#define VERBOSE_INFO 0x20000000 -#define VERBOSE_TABLES 0x40000000 -#define VERBOSE_EVENTS 0x80000000 - -#define VERBOSE_ALL 0xF0000000 - - -/* Defaults for DebugLevel, debug and normal */ - -#define DEBUG_DEFAULT (ACPI_OK | ACPI_WARN | ACPI_ERROR | ACPI_DEBUG_OBJECT) -#define NORMAL_DEFAULT (ACPI_OK | ACPI_WARN | ACPI_ERROR | ACPI_DEBUG_OBJECT) -#define DEBUG_ALL (VERBOSE_AML_DISASSEMBLE | TRACE_ALL | ACPI_ALL) - -/* Misc defines */ - -#define HEX 0x01 -#define ASCII 0x02 -#define FULL_ADDRESS 0x04 -#define CHARS_PER_LINE 16 /* used in DumpBuf function */ - - -#endif /* __ACOUTPUT_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acparser.h b/sys/contrib/dev/acpica/Subsystem/Include/acparser.h deleted file mode 100644 index 3089054..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acparser.h +++ /dev/null @@ -1,437 +0,0 @@ -/****************************************************************************** - * - * Module Name: acparser.h - AML Parser subcomponent prototypes and defines - * $Revision: 49 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ACPARSER_H__ -#define __ACPARSER_H__ - - -#define OP_HAS_RETURN_VALUE 1 - -/* variable # arguments */ - -#define ACPI_VAR_ARGS ACPI_UINT32_MAX - -/* maximum virtual address */ - -#define ACPI_MAX_AML ((UINT8 *)(~0UL)) - - -#define ACPI_PARSE_DELETE_TREE 0x0001 -#define ACPI_PARSE_NO_TREE_DELETE 0x0000 -#define ACPI_PARSE_TREE_MASK 0x0001 - -#define ACPI_PARSE_LOAD_PASS1 0x0010 -#define ACPI_PARSE_LOAD_PASS2 0x0020 -#define ACPI_PARSE_EXECUTE 0x0030 -#define ACPI_PARSE_MODE_MASK 0x0030 - -/* psapi - Parser external interfaces */ - -ACPI_STATUS -AcpiPsxLoadTable ( - UINT8 *PcodeAddr, - UINT32 PcodeLength); - -ACPI_STATUS -AcpiPsxExecute ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObjDesc); - - -BOOLEAN -AcpiPsIsNamespaceObjectOp ( - UINT16 Opcode); -BOOLEAN -AcpiPsIsNamespaceOp ( - UINT16 Opcode); - - -/****************************************************************************** - * - * Parser interfaces - * - *****************************************************************************/ - - -/* psargs - Parse AML opcode arguments */ - -UINT8 * -AcpiPsGetNextPackageEnd ( - ACPI_PARSE_STATE *ParserState); - -UINT32 -AcpiPsGetNextPackageLength ( - ACPI_PARSE_STATE *ParserState); - -NATIVE_CHAR * -AcpiPsGetNextNamestring ( - ACPI_PARSE_STATE *ParserState); - -void -AcpiPsGetNextSimpleArg ( - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, /* type of argument */ - ACPI_PARSE_OBJECT *Arg); /* (OUT) argument data */ - -void -AcpiPsGetNextNamepath ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Arg, - UINT32 *ArgCount, - BOOLEAN MethodCall); - -ACPI_PARSE_OBJECT * -AcpiPsGetNextField ( - ACPI_PARSE_STATE *ParserState); - -ACPI_PARSE_OBJECT * -AcpiPsGetNextArg ( - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, - UINT32 *ArgCount); - - -/* psopcode - AML Opcode information */ - -ACPI_OPCODE_INFO * -AcpiPsGetOpcodeInfo ( - UINT16 Opcode); - -NATIVE_CHAR * -AcpiPsGetOpcodeName ( - UINT16 Opcode); - - -/* psparse - top level parsing routines */ - -ACPI_STATUS -AcpiPsFindObject ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -void -AcpiPsDeleteParseTree ( - ACPI_PARSE_OBJECT *root); - -ACPI_STATUS -AcpiPsParseLoop ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiPsParseAml ( - ACPI_PARSE_OBJECT *StartScope, - UINT8 *Aml, - UINT32 AmlSize, - UINT32 ParseFlags, - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **CallerReturnDesc, - ACPI_PARSE_DOWNWARDS DescendingCallback, - ACPI_PARSE_UPWARDS AscendingCallback); - -ACPI_STATUS -AcpiPsParseTable ( - UINT8 *aml, - UINT32 amlSize, - ACPI_PARSE_DOWNWARDS DescendingCallback, - ACPI_PARSE_UPWARDS AscendingCallback, - ACPI_PARSE_OBJECT **RootObject); - -UINT16 -AcpiPsPeekOpcode ( - ACPI_PARSE_STATE *state); - - -/* psscope - Scope stack management routines */ - - -ACPI_STATUS -AcpiPsInitScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Root); - -ACPI_PARSE_OBJECT * -AcpiPsGetParentScope ( - ACPI_PARSE_STATE *state); - -BOOLEAN -AcpiPsHasCompletedScope ( - ACPI_PARSE_STATE *ParserState); - -void -AcpiPsPopScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT **Op, - UINT32 *ArgList, - UINT32 *ArgCount); - -ACPI_STATUS -AcpiPsPushScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Op, - UINT32 RemainingArgs, - UINT32 ArgCount); - -void -AcpiPsCleanupScope ( - ACPI_PARSE_STATE *state); - - -/* pstree - parse tree manipulation routines */ - -void -AcpiPsAppendArg( - ACPI_PARSE_OBJECT *op, - ACPI_PARSE_OBJECT *arg); - -ACPI_PARSE_OBJECT* -AcpiPsFind ( - ACPI_PARSE_OBJECT *Scope, - NATIVE_CHAR *Path, - UINT16 Opcode, - UINT32 Create); - -ACPI_PARSE_OBJECT * -AcpiPsGetArg( - ACPI_PARSE_OBJECT *op, - UINT32 argn); - -ACPI_PARSE_OBJECT * -AcpiPsGetChild ( - ACPI_PARSE_OBJECT *op); - -ACPI_PARSE_OBJECT * -AcpiPsGetDepthNext ( - ACPI_PARSE_OBJECT *Origin, - ACPI_PARSE_OBJECT *Op); - - -/* pswalk - parse tree walk routines */ - -ACPI_STATUS -AcpiPsWalkParsedAml ( - ACPI_PARSE_OBJECT *StartOp, - ACPI_PARSE_OBJECT *EndOp, - ACPI_OPERAND_OBJECT *MthDesc, - ACPI_NAMESPACE_NODE *StartNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **CallerReturnDesc, - ACPI_OWNER_ID OwnerId, - ACPI_PARSE_DOWNWARDS DescendingCallback, - ACPI_PARSE_UPWARDS AscendingCallback); - -ACPI_STATUS -AcpiPsGetNextWalkOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_UPWARDS AscendingCallback); - - -/* psutils - parser utilities */ - - -ACPI_PARSE_STATE * -AcpiPsCreateState ( - UINT8 *Aml, - UINT32 AmlSize); - -void -AcpiPsInitOp ( - ACPI_PARSE_OBJECT *op, - UINT16 opcode); - -ACPI_PARSE_OBJECT * -AcpiPsAllocOp ( - UINT16 opcode); - -void -AcpiPsFreeOp ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiPsDeleteParseCache ( - void); - -BOOLEAN -AcpiPsIsLeadingChar ( - UINT32 c); - -BOOLEAN -AcpiPsIsPrefixChar ( - UINT32 c); - -BOOLEAN -AcpiPsIsNamedOp ( - UINT16 opcode); - -BOOLEAN -AcpiPsIsNodeOp ( - UINT16 opcode); - -BOOLEAN -AcpiPsIsDeferredOp ( - UINT16 opcode); - -BOOLEAN -AcpiPsIsBytelistOp( - UINT16 opcode); - -BOOLEAN -AcpiPsIsFieldOp( - UINT16 opcode); - -BOOLEAN -AcpiPsIsCreateFieldOp ( - UINT16 Opcode); - -ACPI_PARSE2_OBJECT* -AcpiPsToExtendedOp( - ACPI_PARSE_OBJECT *op); - -UINT32 -AcpiPsGetName( - ACPI_PARSE_OBJECT *op); - -void -AcpiPsSetName( - ACPI_PARSE_OBJECT *op, - UINT32 name); - - -/* psdump - display parser tree */ - -UINT32 -AcpiPsSprintPath ( - NATIVE_CHAR *BufferStart, - UINT32 BufferSize, - ACPI_PARSE_OBJECT *Op); - -UINT32 -AcpiPsSprintOp ( - NATIVE_CHAR *BufferStart, - UINT32 BufferSize, - ACPI_PARSE_OBJECT *Op); - -void -AcpiPsShow ( - ACPI_PARSE_OBJECT *op); - - -#endif /* __ACPARSER_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acpi.h b/sys/contrib/dev/acpica/Subsystem/Include/acpi.h deleted file mode 100644 index 4f32887..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acpi.h +++ /dev/null @@ -1,141 +0,0 @@ -/****************************************************************************** - * - * Name: acpi.h - Master include file, Publics and external data. - * $Revision: 50 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACPI_H__ -#define __ACPI_H__ - -/* - * Common includes for all ACPI driver files - * We put them here because we don't want to duplicate them - * in the rest of the source code again and again. - */ -#include "acconfig.h" /* Configuration constants */ -#include "acenv.h" /* Target environment specific items */ -#include "actypes.h" /* Fundamental data types */ -#include "acexcep.h" /* Local exception codes */ -#include "acmacros.h" /* C macros */ -#include "actbl.h" /* Acpi table definitions */ -#include "aclocal.h" /* Internal data types */ -#include "acoutput.h" /* Error output and Debug macros */ -#include "acpiosxf.h" /* Interfaces to the Acpi-to-OS layer*/ -#include "acpixf.h" /* Acpi core external interfaces */ -#include "acobject.h" /* Acpi internal object */ -#include "acglobal.h" /* All global variables */ -#include "achware.h" /* Hardware defines and interfaces */ -#include "accommon.h" /* Common (global) interfaces */ - - -#endif /* __ACPI_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acpiosxf.h b/sys/contrib/dev/acpica/Subsystem/Include/acpiosxf.h deleted file mode 100644 index 8603fb9..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acpiosxf.h +++ /dev/null @@ -1,422 +0,0 @@ - -/****************************************************************************** - * - * Name: acpiosxf.h - All interfaces to the OS-dependent layer. These - * interfaces must be implemented by the OS-dependent - * front-end to the ACPI subsystem. - * - *****************************************************************************/ - - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACPIOSD_H__ -#define __ACPIOSD_H__ - -#include "acenv.h" -#include "actypes.h" - - -/* Priorities for AcpiOsQueueForExecution */ - -#define OSD_PRIORITY_GPE 1 -#define OSD_PRIORITY_HIGH 2 -#define OSD_PRIORITY_MED 3 -#define OSD_PRIORITY_LO 4 - -#define ACPI_NO_UNIT_LIMIT ((UINT32) -1) -#define ACPI_MUTEX_SEM 1 - - -/* - * Types specific to the OS-dependent layer interfaces - */ - -typedef -UINT32 (*OSD_HANDLER) ( - void *Context); - -typedef -void (*OSD_EXECUTION_CALLBACK) ( - void *Context); - - -/* - * Initialization and shutdown primitives (Optional) - */ - -ACPI_STATUS -AcpiOsInitialize ( - void); - -ACPI_STATUS -AcpiOsTerminate ( - void); - -/* - * Synchronization primitives - */ - -ACPI_STATUS -AcpiOsCreateSemaphore ( - UINT32 MaxUnits, - UINT32 InitialUnits, - ACPI_HANDLE *OutHandle); - -ACPI_STATUS -AcpiOsDeleteSemaphore ( - ACPI_HANDLE Handle); - -ACPI_STATUS -AcpiOsWaitSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units, - UINT32 Timeout); - -ACPI_STATUS -AcpiOsSignalSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units); - -/* - * Memory allocation and mapping - */ - -void * -AcpiOsAllocate ( - UINT32 Size); - -void * -AcpiOsCallocate ( - UINT32 Size); - -void -AcpiOsFree ( - void * Memory); - -ACPI_STATUS -AcpiOsMapMemory ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress, - UINT32 Length, - void **LogicalAddress); - -void -AcpiOsUnmapMemory ( - void *LogicalAddress, - UINT32 Length); - -ACPI_STATUS -AcpiOsGetPhysicalAddress ( - void *LogicalAddress, - ACPI_PHYSICAL_ADDRESS *PhysicalAddress); - -/* - * Interrupt handlers - */ - -ACPI_STATUS -AcpiOsInstallInterruptHandler ( - UINT32 InterruptNumber, - OSD_HANDLER ServiceRoutine, - void *Context); - -ACPI_STATUS -AcpiOsRemoveInterruptHandler ( - UINT32 InterruptNumber, - OSD_HANDLER ServiceRoutine); - - -/* - * Scheduling - */ - -ACPI_STATUS -AcpiOsQueueForExecution ( - UINT32 Priority, - OSD_EXECUTION_CALLBACK Function, - void *Context); - -void -AcpiOsSleep ( - UINT32 Seconds, - UINT32 Milliseconds); - -void -AcpiOsSleepUsec ( - UINT32 Microseconds); - -/* - * Platform/Hardware independent I/O interfaces - */ - -UINT8 -AcpiOsIn8 ( - ACPI_IO_ADDRESS InPort); - - -UINT16 -AcpiOsIn16 ( - ACPI_IO_ADDRESS InPort); - -UINT32 -AcpiOsIn32 ( - ACPI_IO_ADDRESS InPort); - -void -AcpiOsOut8 ( - ACPI_IO_ADDRESS OutPort, - UINT8 Value); - -void -AcpiOsOut16 ( - ACPI_IO_ADDRESS OutPort, - UINT16 Value); - -void -AcpiOsOut32 ( - ACPI_IO_ADDRESS OutPort, - UINT32 Value); - -/* - * Platform/Hardware independent physical memory interfaces - */ - -UINT8 -AcpiOsMemIn8 ( - ACPI_PHYSICAL_ADDRESS InAddr); - -UINT16 -AcpiOsMemIn16 ( - ACPI_PHYSICAL_ADDRESS InAddr); - -UINT32 -AcpiOsMemIn32 ( - ACPI_PHYSICAL_ADDRESS InAddr); - -void -AcpiOsMemOut8 ( - ACPI_PHYSICAL_ADDRESS OutAddr, - UINT8 Value); - -void -AcpiOsMemOut16 ( - ACPI_PHYSICAL_ADDRESS OutAddr, - UINT16 Value); - -void -AcpiOsMemOut32 ( - ACPI_PHYSICAL_ADDRESS OutAddr, - UINT32 Value); - - -/* - * Standard access to PCI configuration space - */ - -ACPI_STATUS -AcpiOsReadPciCfgByte ( - UINT32 Bus, - UINT32 DeviceFunction, - UINT32 Register, - UINT8 *Value); - -ACPI_STATUS -AcpiOsReadPciCfgWord ( - UINT32 Bus, - UINT32 DeviceFunction, - UINT32 Register, - UINT16 *Value); - -ACPI_STATUS -AcpiOsReadPciCfgDword ( - UINT32 Bus, - UINT32 DeviceFunction, - UINT32 Register, - UINT32 *Value); - -ACPI_STATUS -AcpiOsWritePciCfgByte ( - UINT32 Bus, - UINT32 DeviceFunction, - UINT32 Register, - UINT8 Value); - -ACPI_STATUS -AcpiOsWritePciCfgWord ( - UINT32 Bus, - UINT32 DeviceFunction, - UINT32 Register, - UINT16 Value); - - -ACPI_STATUS -AcpiOsWritePciCfgDword ( - UINT32 Bus, - UINT32 DeviceFunction, - UINT32 Register, - UINT32 Value); - - -/* - * Miscellaneous - */ - -ACPI_STATUS -AcpiOsBreakpoint ( - NATIVE_CHAR *Message); - -BOOLEAN -AcpiOsReadable ( - void *Pointer, - UINT32 Length); - - -BOOLEAN -AcpiOsWritable ( - void *Pointer, - UINT32 Length); - - -/* - * Debug print routines - */ - -INT32 -AcpiOsPrintf ( - const NATIVE_CHAR *Format, - ...); - -INT32 -AcpiOsVprintf ( - const NATIVE_CHAR *Format, - va_list Args); - -/* - * Debug input - */ - -UINT32 -AcpiOsGetLine ( - NATIVE_CHAR *Buffer); - - -/* - * Debug - */ - -void -AcpiOsDbgAssert( - void *FailedAssertion, - void *FileName, - UINT32 LineNumber, - NATIVE_CHAR *Message); - - -#endif /* __ACPIOSD_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acpixf.h b/sys/contrib/dev/acpica/Subsystem/Include/acpixf.h deleted file mode 100644 index c33ca3f..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acpixf.h +++ /dev/null @@ -1,413 +0,0 @@ - -/****************************************************************************** - * - * Name: acpixf.h - External interfaces to the ACPI subsystem - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ACXFACE_H__ -#define __ACXFACE_H__ - -#include "actypes.h" -#include "actbl.h" - -/* - * Global interfaces - */ - -ACPI_STATUS -AcpiInitializeSubsystem ( - void); - -ACPI_STATUS -AcpiEnableSubsystem ( - UINT32 Flags); - -ACPI_STATUS -AcpiTerminate ( - void); - -ACPI_STATUS -AcpiEnable ( - void); - -ACPI_STATUS -AcpiDisable ( - void); - -ACPI_STATUS -AcpiGetSystemInfo( - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiFormatException ( - ACPI_STATUS Exception, - ACPI_BUFFER *OutBuffer); - - -/* - * ACPI table manipulation interfaces - */ - -ACPI_STATUS -AcpiFindRootPointer ( - ACPI_PHYSICAL_ADDRESS *RsdpPhysicalAddress); - -ACPI_STATUS -AcpiLoadTables ( - ACPI_PHYSICAL_ADDRESS RsdpPhysicalAddress); - -ACPI_STATUS -AcpiLoadTable ( - ACPI_TABLE_HEADER *TablePtr); - -ACPI_STATUS -AcpiUnloadTable ( - ACPI_TABLE_TYPE TableType); - -ACPI_STATUS -AcpiGetTableHeader ( - ACPI_TABLE_TYPE TableType, - UINT32 Instance, - ACPI_TABLE_HEADER *OutTableHeader); - -ACPI_STATUS -AcpiGetTable ( - ACPI_TABLE_TYPE TableType, - UINT32 Instance, - ACPI_BUFFER *RetBuffer); - - -/* - * Namespace and name interfaces - */ - -ACPI_STATUS -AcpiWalkNamespace ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE StartObject, - UINT32 MaxDepth, - WALK_CALLBACK UserFunction, - void *Context, - void * *ReturnValue); - -ACPI_STATUS -AcpiGetDevices ( - NATIVE_CHAR *HID, - WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue); - -ACPI_STATUS -AcpiGetName ( - ACPI_HANDLE Handle, - UINT32 NameType, - ACPI_BUFFER *RetPathPtr); - -ACPI_STATUS -AcpiGetHandle ( - ACPI_HANDLE Parent, - ACPI_STRING Pathname, - ACPI_HANDLE *RetHandle); - - -/* - * Object manipulation and enumeration - */ - -ACPI_STATUS -AcpiEvaluateObject ( - ACPI_HANDLE Object, - ACPI_STRING Pathname, - ACPI_OBJECT_LIST *ParameterObjects, - ACPI_BUFFER *ReturnObjectBuffer); - -ACPI_STATUS -AcpiGetObjectInfo ( - ACPI_HANDLE Device, - ACPI_DEVICE_INFO *Info); - -ACPI_STATUS -AcpiGetNextObject ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE Parent, - ACPI_HANDLE Child, - ACPI_HANDLE *OutHandle); - -ACPI_STATUS -AcpiGetType ( - ACPI_HANDLE Object, - ACPI_OBJECT_TYPE *OutType); - -ACPI_STATUS -AcpiGetParent ( - ACPI_HANDLE Object, - ACPI_HANDLE *OutHandle); - - -/* - * AcpiEvent handler interfaces - */ - -ACPI_STATUS -AcpiInstallFixedEventHandler ( - UINT32 AcpiEvent, - FIXED_EVENT_HANDLER Handler, - void *Context); - -ACPI_STATUS -AcpiRemoveFixedEventHandler ( - UINT32 AcpiEvent, - FIXED_EVENT_HANDLER Handler); - -ACPI_STATUS -AcpiInstallNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - NOTIFY_HANDLER Handler, - void *Context); - -ACPI_STATUS -AcpiRemoveNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - NOTIFY_HANDLER Handler); - -ACPI_STATUS -AcpiInstallAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler, - ADDRESS_SPACE_SETUP Setup, - void *Context); - -ACPI_STATUS -AcpiRemoveAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADDRESS_SPACE_TYPE SpaceId, - ADDRESS_SPACE_HANDLER Handler); - -ACPI_STATUS -AcpiInstallGpeHandler ( - UINT32 GpeNumber, - UINT32 Type, - GPE_HANDLER Handler, - void *Context); - -ACPI_STATUS -AcpiAcquireGlobalLock ( - void); - -ACPI_STATUS -AcpiReleaseGlobalLock ( - void); - -ACPI_STATUS -AcpiRemoveGpeHandler ( - UINT32 GpeNumber, - GPE_HANDLER Handler); - -ACPI_STATUS -AcpiEnableEvent ( - UINT32 AcpiEvent, - UINT32 Type); - -ACPI_STATUS -AcpiDisableEvent ( - UINT32 AcpiEvent, - UINT32 Type); - -ACPI_STATUS -AcpiClearEvent ( - UINT32 AcpiEvent, - UINT32 Type); - -ACPI_STATUS -AcpiGetEventStatus ( - UINT32 AcpiEvent, - UINT32 Type, - ACPI_EVENT_STATUS *EventStatus); - -/* - * Resource interfaces - */ - -ACPI_STATUS -AcpiGetCurrentResources( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiGetPossibleResources( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiSetCurrentResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *InBuffer); - -ACPI_STATUS -AcpiGetIrqRoutingTable ( - ACPI_HANDLE BusDeviceHandle, - ACPI_BUFFER *RetBuffer); - - -/* - * Hardware (ACPI device) interfaces - */ - -ACPI_STATUS -AcpiSetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress); - -ACPI_STATUS -AcpiGetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS *PhysicalAddress); - -ACPI_STATUS -AcpiEnterSleepState ( - UINT8 SleepState); - -ACPI_STATUS -AcpiGetProcessorThrottlingInfo ( - ACPI_HANDLE ProcessorHandle, - ACPI_BUFFER *UserBuffer); - -ACPI_STATUS -AcpiSetProcessorThrottlingState ( - ACPI_HANDLE ProcessorHandle, - UINT32 ThrottleState); - -ACPI_STATUS -AcpiGetProcessorThrottlingState ( - ACPI_HANDLE ProcessorHandle, - UINT32 *ThrottleState); - -ACPI_STATUS -AcpiGetProcessorCxInfo ( - ACPI_HANDLE ProcessorHandle, - ACPI_BUFFER *UserBuffer); - -ACPI_STATUS -AcpiSetProcessorSleepState ( - ACPI_HANDLE ProcessorHandle, - UINT32 CxState); - -ACPI_STATUS -AcpiProcessorSleep ( - ACPI_HANDLE ProcessorHandle, - UINT32 *PmTimerTicks); - - -#endif /* __ACXFACE_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acresrc.h b/sys/contrib/dev/acpica/Subsystem/Include/acresrc.h deleted file mode 100644 index dd942a9..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acresrc.h +++ /dev/null @@ -1,396 +0,0 @@ -/****************************************************************************** - * - * Name: acresrc.h - Resource Manager function prototypes - * $Revision: 22 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACRESRC_H__ -#define __ACRESRC_H__ - - -/* - * Function prototypes called from Acpi* APIs - */ - -ACPI_STATUS -AcpiRsGetPrtMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *RetBuffer); - - -ACPI_STATUS -AcpiRsGetCrsMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiRsGetPrsMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiRsSetSrsMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiRsCreateResourceList ( - ACPI_OPERAND_OBJECT *ByteStreamBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength); - -ACPI_STATUS -AcpiRsCreateByteStream ( - RESOURCE *LinkedListBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength); - -ACPI_STATUS -AcpiRsCreatePciRoutingTable ( - ACPI_OPERAND_OBJECT *MethodReturnObject, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength); - - -/* - *Function prototypes called from AcpiRsCreate*APIs - */ - -void -AcpiRsDumpResourceList ( - RESOURCE *Resource); - -void -AcpiRsDumpIrqList ( - UINT8 *RouteTable); - -ACPI_STATUS -AcpiRsGetByteStreamStart ( - UINT8 *ByteStreamBuffer, - UINT8 **ByteStreamStart, - UINT32 *Size); - -ACPI_STATUS -AcpiRsCalculateListLength ( - UINT8 *ByteStreamBuffer, - UINT32 ByteStreamBufferLength, - UINT32 *SizeNeeded); - -ACPI_STATUS -AcpiRsCalculateByteStreamLength ( - RESOURCE *LinkedListBuffer, - UINT32 *SizeNeeded); - -ACPI_STATUS -AcpiRsCalculatePciRoutingTableLength ( - ACPI_OPERAND_OBJECT *PackageObject, - UINT32 *BufferSizeNeeded); - -ACPI_STATUS -AcpiRsByteStreamToList ( - UINT8 *ByteStreamBuffer, - UINT32 ByteStreamBufferLength, - UINT8 **OutputBuffer); - -ACPI_STATUS -AcpiRsListToByteStream ( - RESOURCE *LinkedList, - UINT32 ByteStreamSizeNeeded, - UINT8 **OutputBuffer); - -ACPI_STATUS -AcpiRsIoResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsFixedIoResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsIoStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsFixedIoStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsIrqResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsIrqStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsDmaResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsDmaStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsAddress16Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsAddress16Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsAddress32Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsAddress32Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsStartDependentFunctionsResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsEndDependentFunctionsResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsStartDependentFunctionsStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsEndDependentFunctionsStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsMemory24Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsMemory24Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsMemory32RangeResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize -); - -ACPI_STATUS -AcpiRsFixedMemory32Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsMemory32RangeStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsFixedMemory32Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsExtendedIrqResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsExtendedIrqStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsEndTagResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsEndTagStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - -ACPI_STATUS -AcpiRsVendorResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize); - -ACPI_STATUS -AcpiRsVendorStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed); - - -#endif /* __ACRESRC_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actables.h b/sys/contrib/dev/acpica/Subsystem/Include/actables.h deleted file mode 100644 index a2d43da..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actables.h +++ /dev/null @@ -1,276 +0,0 @@ -/****************************************************************************** - * - * Name: actables.h - ACPI table management - * $Revision: 29 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTABLES_H__ -#define __ACTABLES_H__ - - -/* Used in AcpiTbMapAcpiTable for size parameter if table header is to be used */ - -#define SIZE_IN_HEADER 0 - - -ACPI_STATUS -AcpiTbHandleToObject ( - UINT16 TableId, - ACPI_TABLE_DESC **TableDesc); - -/* - * tbconvrt - Table conversion routines - */ - -ACPI_STATUS -AcpiTbConvertToXsdt ( - ACPI_TABLE_DESC *TableInfo, - UINT32 *NumberOfTables); - -ACPI_STATUS -AcpiTbConvertTableFadt ( - void); - -ACPI_STATUS -AcpiTbBuildCommonFacs ( - ACPI_TABLE_DESC *TableInfo); - - -/* - * tbget - Table "get" routines - */ - -ACPI_STATUS -AcpiTbGetTablePtr ( - ACPI_TABLE_TYPE TableType, - UINT32 Instance, - ACPI_TABLE_HEADER **TablePtrLoc); - -ACPI_STATUS -AcpiTbGetTable ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress, - ACPI_TABLE_HEADER *BufferPtr, - ACPI_TABLE_DESC *TableInfo); - -ACPI_STATUS -AcpiTbVerifyRsdp ( - ACPI_PHYSICAL_ADDRESS RSDP_PhysicalAddress); - -ACPI_STATUS -AcpiTbGetTableFacs ( - ACPI_TABLE_HEADER *BufferPtr, - ACPI_TABLE_DESC *TableInfo); - - -/* - * tbgetall - Get all firmware ACPI tables - */ - -ACPI_STATUS -AcpiTbGetAllTables ( - UINT32 NumberOfTables, - ACPI_TABLE_HEADER *BufferPtr); - - -/* - * tbinstall - Table installation - */ - -ACPI_STATUS -AcpiTbInstallTable ( - ACPI_TABLE_HEADER *TablePtr, - ACPI_TABLE_DESC *TableInfo); - -ACPI_STATUS -AcpiTbRecognizeTable ( - ACPI_TABLE_HEADER *TablePtr, - ACPI_TABLE_DESC *TableInfo); - -ACPI_STATUS -AcpiTbInitTableDescriptor ( - ACPI_TABLE_TYPE TableType, - ACPI_TABLE_DESC *TableInfo); - - -/* - * tbremove - Table removal and deletion - */ - -void -AcpiTbDeleteAcpiTables ( - void); - -void -AcpiTbDeleteAcpiTable ( - ACPI_TABLE_TYPE Type); - -void -AcpiTbDeleteSingleTable ( - ACPI_TABLE_DESC *TableDesc); - -ACPI_TABLE_DESC * -AcpiTbUninstallTable ( - ACPI_TABLE_DESC *TableDesc); - -void -AcpiTbFreeAcpiTablesOfType ( - ACPI_TABLE_DESC *TableInfo); - - -/* - * tbrsd - RSDP, RSDT utilities - */ - -ACPI_STATUS -AcpiTbGetTableRsdt ( - UINT32 *NumberOfTables); - -UINT8 * -AcpiTbScanMemoryForRsdp ( - UINT8 *StartAddress, - UINT32 Length); - -ACPI_STATUS -AcpiTbFindRsdp ( - ACPI_TABLE_DESC *TableInfo); - - -/* - * tbutils - common table utilities - */ - -BOOLEAN -AcpiTbSystemTablePointer ( - void *Where); - -ACPI_STATUS -AcpiTbMapAcpiTable ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress, - UINT32 *Size, - void **LogicalAddress); - -ACPI_STATUS -AcpiTbVerifyTableChecksum ( - ACPI_TABLE_HEADER *TableHeader); - -UINT8 -AcpiTbChecksum ( - void *Buffer, - UINT32 Length); - -ACPI_STATUS -AcpiTbValidateTableHeader ( - ACPI_TABLE_HEADER *TableHeader); - - -#endif /* __ACTABLES_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actbl.h b/sys/contrib/dev/acpica/Subsystem/Include/actbl.h deleted file mode 100644 index bd1d718..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actbl.h +++ /dev/null @@ -1,308 +0,0 @@ -/****************************************************************************** - * - * Name: actbl.h - Table data structures defined in ACPI specification - * $Revision: 45 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL_H__ -#define __ACTBL_H__ - - -/* - * Values for description table header signatures - */ - -#define RSDP_NAME "RSDP" -#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */ -#define APIC_SIG "APIC" /* Multiple APIC Description Table */ -#define DSDT_SIG "DSDT" /* Differentiated System Description Table */ -#define FADT_SIG "FACP" /* Fixed ACPI Description Table */ -#define FACS_SIG "FACS" /* Firmware ACPI Control Structure */ -#define PSDT_SIG "PSDT" /* Persistent System Description Table */ -#define RSDT_SIG "RSDT" /* Root System Description Table */ -#define XSDT_SIG "XSDT" /* Extended System Description Table */ -#define SSDT_SIG "SSDT" /* Secondary System Description Table */ -#define SBST_SIG "SBST" /* Smart Battery Specification Table */ -#define SPIC_SIG "SPIC" /* iosapic table */ -#define BOOT_SIG "BOOT" /* Boot table */ - - -#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */ - -/* values of Mapic.Model */ - -#define DUAL_PIC 0 -#define MULTIPLE_APIC 1 - -/* values of Type in APIC_HEADER */ - -#define APIC_PROC 0 -#define APIC_IO 1 - - -/* - * Common table types. The base code can remain - * constant if the underlying tables are changed - */ -#define RSDT_DESCRIPTOR RSDT_DESCRIPTOR_REV2 -#define XSDT_DESCRIPTOR XSDT_DESCRIPTOR_REV2 -#define FACS_DESCRIPTOR FACS_DESCRIPTOR_REV2 -#define FADT_DESCRIPTOR FADT_DESCRIPTOR_REV2 - - -#pragma pack(1) - -/* - * Architecture-independent tables - * The architecture dependent tables are in separate files - */ - -typedef struct /* Root System Descriptor Pointer */ -{ - NATIVE_CHAR Signature [8]; /* contains "RSD PTR " */ - UINT8 Checksum; /* to make sum of struct == 0 */ - NATIVE_CHAR OemId [6]; /* OEM identification */ - UINT8 Revision; /* Must be 0 for 1.0, 2 for 2.0 */ - UINT32 RsdtPhysicalAddress; /* 32-bit physical address of RSDT */ - UINT32 Length; /* XSDT Length in bytes including hdr */ - UINT64 XsdtPhysicalAddress; /* 64-bit physical address of XSDT */ - UINT8 ExtendedChecksum; /* Checksum of entire table */ - NATIVE_CHAR Reserved [3]; /* reserved field must be 0 */ - -} RSDP_DESCRIPTOR; - - -typedef struct /* ACPI common table header */ -{ - NATIVE_CHAR Signature [4]; /* identifies type of table */ - UINT32 Length; /* length of table, in bytes, - * including header */ - UINT8 Revision; /* specification minor version # */ - UINT8 Checksum; /* to make sum of entire table == 0 */ - NATIVE_CHAR OemId [6]; /* OEM identification */ - NATIVE_CHAR OemTableId [8]; /* OEM table identification */ - UINT32 OemRevision; /* OEM revision number */ - NATIVE_CHAR AslCompilerId [4]; /* ASL compiler vendor ID */ - UINT32 AslCompilerRevision; /* ASL compiler revision number */ - -} ACPI_TABLE_HEADER; - - -typedef struct /* Common FACS for internal use */ -{ - UINT32 *GlobalLock; - UINT64 *FirmwareWakingVector; - UINT8 VectorWidth; - -} ACPI_COMMON_FACS; - - -typedef struct /* APIC Table */ -{ - ACPI_TABLE_HEADER header; /* table header */ - UINT32 LocalApicAddress; /* Physical address for accessing local APICs */ - UINT32_BIT PCATCompat : 1; /* a one indicates system also has dual 8259s */ - UINT32_BIT Reserved1 : 31; - -} APIC_TABLE; - - -typedef struct /* APIC Header */ -{ - UINT8 Type; /* APIC type. Either APIC_PROC or APIC_IO */ - UINT8 Length; /* Length of APIC structure */ - -} APIC_HEADER; - - -typedef struct /* Processor APIC */ -{ - APIC_HEADER header; - UINT8 ProcessorApicId; /* ACPI processor id */ - UINT8 LocalApicId; /* processor's local APIC id */ - UINT32_BIT ProcessorEnabled: 1; /* Processor is usable if set */ - UINT32_BIT Reserved1 : 32; - -} PROCESSOR_APIC; - - -typedef struct /* IO APIC */ -{ - APIC_HEADER header; - UINT8 IoApicId; /* I/O APIC ID */ - UINT8 Reserved; /* reserved - must be zero */ - UINT32 IoApicAddress; /* APIC's physical address */ - UINT32 Vector; /* interrupt vector index where INTI - * lines start */ -} IO_APIC; - - -/* -** IA64 TODO: Add SAPIC Tables -*/ - -/* -** IA64 TODO: Modify Smart Battery Description to comply with ACPI IA64 -** extensions. -*/ -typedef struct /* Smart Battery Description Table */ -{ - ACPI_TABLE_HEADER header; - UINT32 WarningLevel; - UINT32 LowLevel; - UINT32 CriticalLevel; - -} SMART_BATTERY_DESCRIPTION_TABLE; - - -#pragma pack() - - -/* - * ACPI Table information. We save the table address, length, - * and type of memory allocation (mapped or allocated) for each - * table for 1) when we exit, and 2) if a new table is installed - */ - -#define ACPI_MEM_NOT_ALLOCATED 0 -#define ACPI_MEM_ALLOCATED 1 -#define ACPI_MEM_MAPPED 2 - -/* Definitions for the Flags bitfield member of ACPI_TABLE_SUPPORT */ - -#define ACPI_TABLE_SINGLE 0 -#define ACPI_TABLE_MULTIPLE 1 - - -/* Data about each known table type */ - -typedef struct _AcpiTableSupport -{ - NATIVE_CHAR *Name; - NATIVE_CHAR *Signature; - UINT8 SigLength; - UINT8 Flags; - UINT16 Status; - void **GlobalPtr; - -} ACPI_TABLE_SUPPORT; - -/* - * Get the architecture-specific tables - */ - -#include "actbl1.h" /* Acpi 1.0 table defintions */ -#include "actbl71.h" /* Acpi 0.71 IA-64 Extension table defintions */ -#include "actbl2.h" /* Acpi 2.0 table definitions */ - -#endif /* __ACTBL_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actbl1.h b/sys/contrib/dev/acpica/Subsystem/Include/actbl1.h deleted file mode 100644 index 2468221..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actbl1.h +++ /dev/null @@ -1,214 +0,0 @@ -/****************************************************************************** - * - * Name: actbl1.h - ACPI 1.0 tables - * $Revision: 17 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL1_H__ -#define __ACTBL1_H__ - -#pragma pack(1) - -/*************************************/ -/* ACPI Specification Rev 1.0 for */ -/* the Root System Description Table */ -/*************************************/ -typedef struct -{ - ACPI_TABLE_HEADER header; /* Table header */ - UINT32 TableOffsetEntry [1]; /* Array of pointers to other */ - /* ACPI tables */ -} RSDT_DESCRIPTOR_REV1; - - -/***************************************/ -/* ACPI Specification Rev 1.0 for */ -/* the Firmware ACPI Control Structure */ -/***************************************/ -typedef struct -{ - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ - UINT32 FirmwareWakingVector; /* ACPI OS waking vector */ - UINT32 GlobalLock; /* Global Lock */ - UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ - UINT8 Resverved3 [40]; /* reserved - must be zero */ - -} FACS_DESCRIPTOR_REV1; - - -/************************************/ -/* ACPI Specification Rev 1.0 for */ -/* the Fixed ACPI Description Table */ -/************************************/ -typedef struct -{ - ACPI_TABLE_HEADER header; /* table header */ - UINT32 FirmwareCtrl; /* Physical address of FACS */ - UINT32 Dsdt; /* Physical address of DSDT */ - UINT8 Model; /* System Interrupt Model */ - UINT8 Reserved1; /* reserved */ - UINT16 SciInt; /* System vector of SCI interrupt */ - UINT32 SmiCmd; /* Port address of SMI command port */ - UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */ - UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 Reserved2; /* reserved - must be zero */ - UINT32 Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ - UINT32 Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ - UINT32 Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ - UINT32 Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ - UINT32 Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ - UINT32 PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ - UINT32 Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ - UINT32 Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ - UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ - UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ - UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ - UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ - UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ - UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ - UINT8 Reserved3; /* reserved */ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ - UINT16 FlushSize; /* Size of area read to flush caches */ - UINT16 FlushStride; /* Stride used in flushing caches */ - UINT8 DutyOffset; /* bit location of duty cycle field in p_cnt reg */ - UINT8 DutyWidth; /* bit width of duty cycle field in p_cnt reg */ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ - UINT8 Reserved4; /* reserved */ - UINT8 Reserved4a; /* reserved */ - UINT8 Reserved4b; /* reserved */ - UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */ - UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ - UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ - UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ - UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ - UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ - UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ - UINT32_BIT Reserved5 : 23; /* reserved - must be zero */ - -} FADT_DESCRIPTOR_REV1; - -#pragma pack() - -#endif /* __ACTBL1_H__ */ - - diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actbl2.h b/sys/contrib/dev/acpica/Subsystem/Include/actbl2.h deleted file mode 100644 index 43d534c..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actbl2.h +++ /dev/null @@ -1,280 +0,0 @@ -/****************************************************************************** - * - * Name: actbl2.h - ACPI Specification Revision 2.0 Tables - * $Revision: 21 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL2_H__ -#define __ACTBL2_H__ - -/**************************************/ -/* Prefered Power Management Profiles */ -/**************************************/ -#define PM_UNSPECIFIED 0 -#define PM_DESKTOP 1 -#define PM_MOBILE 2 -#define PM_WORKSTATION 3 -#define PM_ENTERPRISE_SERVER 4 -#define PM_SOHO_SERVER 5 -#define PM_APPLIANCE_PC 6 - -/*********************************************/ -/* ACPI Boot Arch Flags, See spec Table 5-10 */ -/*********************************************/ -#define BAF_LEGACY_DEVICES 0x0001 -#define BAF_8042_KEYBOARD_CONTROLLER 0x0002 - -#define FADT2_REVISION_ID 3 - -#pragma pack(1) - -/*************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Root System Description Table */ -/*************************************/ -typedef struct -{ - ACPI_TABLE_HEADER header; /* Table header */ - UINT32 TableOffsetEntry [1]; /* Array of pointers to */ - /* other tables' headers */ -} RSDT_DESCRIPTOR_REV2; - - -/********************************************/ -/* ACPI Specification Rev 2.0 for the */ -/* Extended System Description Table (XSDT) */ -/********************************************/ -typedef struct -{ - ACPI_TABLE_HEADER Header; /* Table header */ - UINT64 TableOffsetEntry [1]; /* Array of pointers to */ - /* other tables' headers */ -} XSDT_DESCRIPTOR_REV2; - -/***************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Firmware ACPI Control Structure */ -/***************************************/ -typedef struct -{ - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ - UINT32 FirmwareWakingVector; /* 32bit physical address of the Firmware Waking Vector. */ - UINT32 GlobalLock; /* Global Lock used to synchronize access to shared hardware resources */ - UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ - UINT64 XFirmwareWakingVector; /* 64bit physical address of the Firmware Waking Vector. */ - UINT8 Version; /* Version of this table */ - UINT8 Reserved3 [31]; /* reserved - must be zero */ - -} FACS_DESCRIPTOR_REV2; - - -/***************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Generic Address Structure (GAS) */ -/***************************************/ -typedef struct -{ - UINT8 AddressSpaceId; /* Address space where struct or register exists. */ - UINT8 RegisterBitWidth; /* Size in bits of given register */ - UINT8 RegisterBitOffset; /* Bit offset within the register */ - UINT8 Reserved; /* Must be 0 */ - UINT64 Address; /* 64-bit address of struct or register */ - -} ACPI_GAS; - - -/************************************/ -/* ACPI Specification Rev 2.0 for */ -/* the Fixed ACPI Description Table */ -/************************************/ -typedef struct -{ - ACPI_TABLE_HEADER header; /* table header */ - UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */ - UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */ - UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/ - UINT8 Prefer_PM_Profile; /* Conveys preferred power management profile to OSPM. */ - UINT16 SciInt; /* System vector of SCI interrupt */ - UINT32 SmiCmd; /* Port address of SMI command port */ - UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */ - UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 PstateCnt; /* processor performance state control*/ - UINT32 V1_Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ - UINT32 V1_Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ - UINT32 V1_Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ - UINT32 V1_Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ - UINT32 V1_Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ - UINT32 V1_PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ - UINT32 V1_Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ - UINT32 V1_Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ - UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ - UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ - UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ - UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ - UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ - UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ - UINT8 CstCnt; /* Support for the _CST object and C States change notification.*/ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ - UINT16 FlushSize; /* number of flush strides that need to be read */ - UINT16 FlushStride; /* Processor's memory cache line width, in bytes */ - UINT8 DutyOffset; /* Processor’s duty cycle index in processor's P_CNT reg*/ - UINT8 DutyWidth; /* Processor’s duty cycle value bit width in P_CNT register.*/ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ - UINT16 IapcBootArch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/ - UINT8 Reserved2; /* reserved */ - UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */ - UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ - UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ - UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ - UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ - UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ - UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ - UINT32_BIT DockCap : 1; /* Supports Docking */ - UINT32_BIT ResetRegSup : 1; /* Indicates system supports system reset via the FADT RESET_REG*/ - UINT32_BIT SealedCase : 1; /* Indicates system has no internal expansion capabilities and case is sealed. */ - UINT32_BIT Headless : 1; /* Indicates system does not have local video capabilities or local input devices.*/ - UINT32_BIT CpuSwSleep : 1; /* Indicates to OSPM that a processor native instruction */ - /* must be executed after writing the SLP_TYPx register. */ - UINT32_BIT Reserved6 : 18; /* reserved - must be zero */ - - ACPI_GAS ResetRegister; /* Reset register address in GAS format */ - UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system. */ - UINT8 Reserved7[3]; /* These three bytes must be zero */ - UINT64 XFirmwareCtrl; /* 64-bit physical address of FACS */ - UINT64 XDsdt; /* 64-bit physical address of DSDT */ - ACPI_GAS XPm1aEvtBlk; /* Extended Power Mgt 1a AcpiEvent Reg Blk address */ - ACPI_GAS XPm1bEvtBlk; /* Extended Power Mgt 1b AcpiEvent Reg Blk address */ - ACPI_GAS XPm1aCntBlk; /* Extended Power Mgt 1a Control Reg Blk address */ - ACPI_GAS XPm1bCntBlk; /* Extended Power Mgt 1b Control Reg Blk address */ - ACPI_GAS XPm2CntBlk; /* Extended Power Mgt 2 Control Reg Blk address */ - ACPI_GAS XPmTmrBlk; /* Extended Power Mgt Timer Ctrl Reg Blk address */ - ACPI_GAS XGpe0Blk; /* Extended General Purpose AcpiEvent 0 Reg Blk address */ - ACPI_GAS XGpe1Blk; /* Extended General Purpose AcpiEvent 1 Reg Blk address */ - -} FADT_DESCRIPTOR_REV2; - - -#pragma pack() - -#endif /* __ACTBL2_H__ */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actbl32.h b/sys/contrib/dev/acpica/Subsystem/Include/actbl32.h deleted file mode 100644 index 271655d..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actbl32.h +++ /dev/null @@ -1,206 +0,0 @@ -/****************************************************************************** - * - * Name: actbl32.h - ACPI tables specific to IA32 - * $Revision: 11 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, Intel Corp. All rights - * reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL32_H__ -#define __ACTBL32_H__ - - -/* IA32 Root System Description Table */ - -typedef struct -{ - ACPI_TABLE_HEADER header; /* Table header */ - void *TableOffsetEntry [1]; /* Array of pointers to other */ - /* tables' headers */ -} ROOT_SYSTEM_DESCRIPTION_TABLE; - - -/* IA32 Firmware ACPI Control Structure */ - -typedef struct -{ - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ - UINT32 FirmwareWakingVector; /* ACPI OS waking vector */ - UINT32 GlobalLock; /* Global Lock */ - UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ - UINT8 Resverved3 [40]; /* reserved - must be zero */ - -} FIRMWARE_ACPI_CONTROL_STRUCTURE; - - -/* IA32 Fixed ACPI Description Table */ - -typedef struct -{ - ACPI_TABLE_HEADER header; /* table header */ - ACPI_TBLPTR FirmwareCtrl; /* Physical address of FACS */ - ACPI_TBLPTR Dsdt; /* Physical address of DSDT */ - UINT8 Model; /* System Interrupt Model */ - UINT8 Reserved1; /* reserved */ - UINT16 SciInt; /* System vector of SCI interrupt */ - ACPI_IO_ADDRESS SmiCmd; /* Port address of SMI command port */ - UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */ - UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 Reserved2; /* reserved - must be zero */ - ACPI_IO_ADDRESS Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ - ACPI_IO_ADDRESS Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ - ACPI_IO_ADDRESS Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ - ACPI_IO_ADDRESS Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ - ACPI_IO_ADDRESS Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ - ACPI_IO_ADDRESS PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ - ACPI_IO_ADDRESS Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ - ACPI_IO_ADDRESS Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ - UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ - UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ - UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ - UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ - UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ - UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ - UINT8 Reserved3; /* reserved */ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ - UINT16 FlushSize; /* Size of area read to flush caches */ - UINT16 FlushStride; /* Stride used in flushing caches */ - UINT8 DutyOffset; /* bit location of duty cycle field in p_cnt reg */ - UINT8 DutyWidth; /* bit width of duty cycle field in p_cnt reg */ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ - UINT8 Reserved4; /* reserved */ - UINT8 Reserved4a; /* reserved */ - UINT8 Reserved4b; /* reserved */ - UINT32_BIT WbInvd : 1; /* wbinvd instruction works properly */ - UINT32_BIT WbInvdFlush : 1; /* wbinvd flushes but does not invalidate */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ - UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ - UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ - UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ - UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ - UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ - UINT32_BIT Reserved5 : 23; /* reserved - must be zero */ - -} FIXED_ACPI_DESCRIPTION_TABLE; - - -#endif /* __ACTBL32_H__ */ - - diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actbl64.h b/sys/contrib/dev/acpica/Subsystem/Include/actbl64.h deleted file mode 100644 index 1f44806..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actbl64.h +++ /dev/null @@ -1,206 +0,0 @@ -/****************************************************************************** - * - * Name: actbl64.h - ACPI tables specific to IA64 - * $Revision: 12 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, Intel Corp. All rights - * reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL64_H__ -#define __ACTBL64_H__ - - -typedef UINT64 IO_ADDRESS; /* Only for clarity in declarations */ - - -/* IA64 Root System Description Table */ - -typedef struct -{ - ACPI_TABLE_HEADER header; /* Table header */ - UINT32 ReservedPad; /* IA64 alignment, must be 0 */ - void *TableOffsetEntry [1]; /* Array of pointers to other */ - /* tables' headers */ -} ROOT_SYSTEM_DESCRIPTION_TABLE; - - -/* IA64 Firmware ACPI Control Structure */ - -typedef struct -{ - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ - UINT32 Reserved4; /* must be 0 */ - UINT64 FirmwareWakingVector; /* ACPI OS waking vector */ - UINT64 GlobalLock; /* Global Lock */ - UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ - UINT8 Resverved3 [28]; /* reserved - must be zero */ - -} FIRMWARE_ACPI_CONTROL_STRUCTURE; - - -/* IA64 Fixed ACPI Description Table */ - -typedef struct -{ - ACPI_TABLE_HEADER header; /* table header */ - UINT32 ReservedPad; /* IA64 alignment, must be 0 */ - ACPI_TBLPTR FirmwareCtrl; /* Physical address of FACS */ - ACPI_TBLPTR Dsdt; /* Physical address of DSDT */ - UINT8 Model; /* System Interrupt Model */ - UINT8 AddressSpace; /* Address Space Bitmask */ - UINT16 SciInt; /* System vector of SCI interrupt */ - UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */ - UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 Reserved2; /* reserved - must be zero */ - UINT64 SmiCmd; /* Port address of SMI command port */ - UINT64 Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ - UINT64 Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ - UINT64 Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ - UINT64 Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ - UINT64 Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ - UINT64 PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ - UINT64 Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ - UINT64 Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ - UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ - UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ - UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ - UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ - UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ - UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ - UINT8 Reserved3; /* reserved */ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ - UINT8 Reserved4; /* reserved */ - UINT32_BIT FlushCash : 1; /* PAL_FLUSH_CACHE is correctly supported */ - UINT32_BIT Reserved5 : 1; /* reserved - must be zero */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ - UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ - UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ - UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ - UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ - UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ - UINT32_BIT DockCap : 1; /* Supports Docking */ - UINT32_BIT Reserved6 : 22; /* reserved - must be zero */ - -} FIXED_ACPI_DESCRIPTION_TABLE; - - -#endif /* __ACTBL64_H__ */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actbl71.h b/sys/contrib/dev/acpica/Subsystem/Include/actbl71.h deleted file mode 100644 index 4f9767a..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actbl71.h +++ /dev/null @@ -1,235 +0,0 @@ -/****************************************************************************** - * - * Name: actbl71.h - IA-64 Extensions to the ACPI Spec Rev. 0.71 - * This file includes tables specific to this - * specification revision. - * $Revision: 9 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL71_H__ -#define __ACTBL71_H__ - -/* 0.71 FADT AddressSpace data item bitmasks defines */ -/* If the associated bit is zero then it is in memory space else in io space */ -#define SMI_CMD_ADDRESS_SPACE 0x01 -#define PM1_BLK_ADDRESS_SPACE 0x02 -#define PM2_CNT_BLK_ADDRESS_SPACE 0x04 -#define PM_TMR_BLK_ADDRESS_SPACE 0x08 -#define GPE0_BLK_ADDRESS_SPACE 0x10 -#define GPE1_BLK_ADDRESS_SPACE 0x20 - -/* Only for clarity in declarations */ -typedef UINT64 IO_ADDRESS; - -#pragma pack(1) - -typedef struct /* Root System Descriptor Pointer */ -{ - NATIVE_CHAR Signature [8]; /* contains "RSD PTR " */ - UINT8 Checksum; /* to make sum of struct == 0 */ - NATIVE_CHAR OemId [6]; /* OEM identification */ - UINT8 Reserved; /* Must be 0 for 1.0, 2 for 2.0 */ - UINT64 RsdtPhysicalAddress; /* 64-bit physical address of RSDT */ -} RSDP_DESCRIPTOR_REV071; - - -/*****************************************/ -/* IA64 Extensions to ACPI Spec Rev 0.71 */ -/* for the Root System Description Table */ -/*****************************************/ -typedef struct -{ - ACPI_TABLE_HEADER header; /* Table header */ - UINT32 ReservedPad; /* IA64 alignment, must be 0 */ - UINT64 TableOffsetEntry [1]; /* Array of pointers to other */ - /* tables' headers */ -} RSDT_DESCRIPTOR_REV071; - - -/*******************************************/ -/* IA64 Extensions to ACPI Spec Rev 0.71 */ -/* for the Firmware ACPI Control Structure */ -/*******************************************/ -typedef struct -{ - NATIVE_CHAR Signature[4]; /* signature "FACS" */ - UINT32 Length; /* length of structure, in bytes */ - UINT32 HardwareSignature; /* hardware configuration signature */ - UINT32 Reserved4; /* must be 0 */ - UINT64 FirmwareWakingVector; /* ACPI OS waking vector */ - UINT64 GlobalLock; /* Global Lock */ - UINT32_BIT S4Bios_f : 1; /* Indicates if S4BIOS support is present */ - UINT32_BIT Reserved1 : 31; /* must be 0 */ - UINT8 Reserved3 [28]; /* reserved - must be zero */ - -} FACS_DESCRIPTOR_REV071; - - -/******************************************/ -/* IA64 Extensions to ACPI Spec Rev 0.71 */ -/* for the Fixed ACPI Description Table */ -/******************************************/ -typedef struct -{ - ACPI_TABLE_HEADER header; /* table header */ - UINT32 ReservedPad; /* IA64 alignment, must be 0 */ - UINT64 FirmwareCtrl; /* 64-bit Physical address of FACS */ - UINT64 Dsdt; /* 64-bit Physical address of DSDT */ - UINT8 Model; /* System Interrupt Model */ - UINT8 AddressSpace; /* Address Space Bitmask */ - UINT16 SciInt; /* System vector of SCI interrupt */ - UINT8 AcpiEnable; /* value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* value to write to smi_cmd to disable ACPI */ - UINT8 S4BiosReq; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 Reserved2; /* reserved - must be zero */ - UINT64 SmiCmd; /* Port address of SMI command port */ - UINT64 Pm1aEvtBlk; /* Port address of Power Mgt 1a AcpiEvent Reg Blk */ - UINT64 Pm1bEvtBlk; /* Port address of Power Mgt 1b AcpiEvent Reg Blk */ - UINT64 Pm1aCntBlk; /* Port address of Power Mgt 1a Control Reg Blk */ - UINT64 Pm1bCntBlk; /* Port address of Power Mgt 1b Control Reg Blk */ - UINT64 Pm2CntBlk; /* Port address of Power Mgt 2 Control Reg Blk */ - UINT64 PmTmrBlk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ - UINT64 Gpe0Blk; /* Port addr of General Purpose AcpiEvent 0 Reg Blk */ - UINT64 Gpe1Blk; /* Port addr of General Purpose AcpiEvent 1 Reg Blk */ - UINT8 Pm1EvtLen; /* Byte Length of ports at pm1X_evt_blk */ - UINT8 Pm1CntLen; /* Byte Length of ports at pm1X_cnt_blk */ - UINT8 Pm2CntLen; /* Byte Length of ports at pm2_cnt_blk */ - UINT8 PmTmLen; /* Byte Length of ports at pm_tm_blk */ - UINT8 Gpe0BlkLen; /* Byte Length of ports at gpe0_blk */ - UINT8 Gpe1BlkLen; /* Byte Length of ports at gpe1_blk */ - UINT8 Gpe1Base; /* offset in gpe model where gpe1 events start */ - UINT8 Reserved3; /* reserved */ - UINT16 Plvl2Lat; /* worst case HW latency to enter/exit C2 state */ - UINT16 Plvl3Lat; /* worst case HW latency to enter/exit C3 state */ - UINT8 DayAlrm; /* index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonAlrm; /* index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* index to century in RTC CMOS RAM */ - UINT8 Reserved4; /* reserved */ - UINT32_BIT FlushCash : 1; /* PAL_FLUSH_CACHE is correctly supported */ - UINT32_BIT Reserved5 : 1; /* reserved - must be zero */ - UINT32_BIT ProcC1 : 1; /* all processors support C1 state */ - UINT32_BIT Plvl2Up : 1; /* C2 state works on MP system */ - UINT32_BIT PwrButton : 1; /* Power button is handled as a generic feature */ - UINT32_BIT SleepButton : 1; /* Sleep button is handled as a generic feature, or not present */ - UINT32_BIT FixedRTC : 1; /* RTC wakeup stat not in fixed register space */ - UINT32_BIT Rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ - UINT32_BIT TmrValExt : 1; /* tmr_val is 32 bits */ - UINT32_BIT DockCap : 1; /* Supports Docking */ - UINT32_BIT Reserved6 : 22; /* reserved - must be zero */ - -} FADT_DESCRIPTOR_REV071; - -#pragma pack() - -#endif /* __ACTBL71_H__ */ - diff --git a/sys/contrib/dev/acpica/Subsystem/Include/actypes.h b/sys/contrib/dev/acpica/Subsystem/Include/actypes.h deleted file mode 100644 index 7e8db54..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/actypes.h +++ /dev/null @@ -1,1140 +0,0 @@ -/****************************************************************************** - * - * Name: actypes.h - Common data types for the entire ACPI subsystem - * $Revision: 165 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTYPES_H__ -#define __ACTYPES_H__ - -/*! [Begin] no source code translation (keep the typedefs) */ - -/* - * Data types - Fixed across all compilation models - * - * BOOLEAN Logical Boolean. - * 1 byte value containing a 0 for FALSE or a 1 for TRUE. - * Other values are undefined. - * - * INT8 8-bit (1 byte) signed value - * UINT8 8-bit (1 byte) unsigned value - * INT16 16-bit (2 byte) signed value - * UINT16 16-bit (2 byte) unsigned value - * INT32 32-bit (4 byte) signed value - * UINT32 32-bit (4 byte) unsigned value - * INT64 64-bit (8 byte) signed value - * UINT64 64-bit (8 byte) unsigned value - * NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value - * NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value - * UCHAR Character. 1 byte unsigned value. - */ - - -#ifdef _IA64 -/* - * 64-bit type definitions - */ -typedef unsigned char UINT8; -typedef unsigned char BOOLEAN; -typedef unsigned char UCHAR; -typedef unsigned short UINT16; -typedef int INT32; -typedef unsigned int UINT32; -typedef COMPILER_DEPENDENT_UINT64 UINT64; - -typedef UINT64 NATIVE_UINT; -typedef INT64 NATIVE_INT; - -typedef NATIVE_UINT ACPI_TBLPTR; -typedef UINT64 ACPI_IO_ADDRESS; -typedef UINT64 ACPI_PHYSICAL_ADDRESS; - -#define ALIGNED_ADDRESS_BOUNDARY 0x00000008 - -/* (No hardware alignment support in IA64) */ - - -#elif _IA16 -/* - * 16-bit type definitions - */ -typedef unsigned char UINT8; -typedef unsigned char BOOLEAN; -typedef unsigned char UCHAR; -typedef unsigned int UINT16; -typedef long INT32; -typedef int INT16; -typedef unsigned long UINT32; - -typedef struct -{ - UINT32 Lo; - UINT32 Hi; - -} UINT64; - -typedef UINT16 NATIVE_UINT; -typedef INT16 NATIVE_INT; - -typedef UINT32 ACPI_TBLPTR; -typedef UINT32 ACPI_IO_ADDRESS; -typedef char *ACPI_PHYSICAL_ADDRESS; - -#define ALIGNED_ADDRESS_BOUNDARY 0x00000002 -#define _HW_ALIGNMENT_SUPPORT - -/* - * (16-bit only) internal integers must be 32-bits, so - * 64-bit integers cannot be supported - */ -#define ACPI_NO_INTEGER64_SUPPORT - - -#else -/* - * 32-bit type definitions (default) - */ -typedef unsigned char UINT8; -typedef unsigned char BOOLEAN; -typedef unsigned char UCHAR; -typedef unsigned short UINT16; -typedef int INT32; -typedef unsigned int UINT32; -typedef COMPILER_DEPENDENT_UINT64 UINT64; - -typedef UINT32 NATIVE_UINT; -typedef INT32 NATIVE_INT; - -typedef NATIVE_UINT ACPI_TBLPTR; -typedef UINT32 ACPI_IO_ADDRESS; -typedef UINT64 ACPI_PHYSICAL_ADDRESS; - -#define ALIGNED_ADDRESS_BOUNDARY 0x00000004 -#define _HW_ALIGNMENT_SUPPORT -#endif - - - -/* - * Miscellaneous common types - */ - -typedef UINT32 UINT32_BIT; -typedef NATIVE_UINT ACPI_PTRDIFF; -typedef char NATIVE_CHAR; - - -/* - * Data type ranges - */ - -#define ACPI_UINT8_MAX (UINT8) 0xFF -#define ACPI_UINT16_MAX (UINT16) 0xFFFF -#define ACPI_UINT32_MAX (UINT32) 0xFFFFFFFF -#define ACPI_UINT64_MAX (UINT64) 0xFFFFFFFFFFFFFFFF - - -#ifdef DEFINE_ALTERNATE_TYPES -/* - * Types used only in translated source - */ -typedef INT32 s32; -typedef UINT8 u8; -typedef UINT16 u16; -typedef UINT32 u32; -typedef UINT64 u64; -#endif -/*! [End] no source code translation !*/ - - -/* - * Useful defines - */ - -#ifdef FALSE -#undef FALSE -#endif -#define FALSE (1 == 0) - -#ifdef TRUE -#undef TRUE -#endif -#define TRUE (1 == 1) - -#ifndef NULL -#define NULL (void *) 0 -#endif - - -/* - * Local datatypes - */ - -typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ -typedef UINT32 ACPI_NAME; /* 4-INT8 ACPI name */ -typedef char* ACPI_STRING; /* Null terminated ASCII string */ -typedef void* ACPI_HANDLE; /* Actually a ptr to an Node */ - - -/* - * Acpi integer width. In ACPI version 1, integers are - * 32 bits. In ACPI version 2, integers are 64 bits. - * Note that this pertains to the ACPI integer type only, not - * other integers used in the implementation of the ACPI CA - * subsystem. - */ -#ifdef ACPI_NO_INTEGER64_SUPPORT - -/* 32-bit integers only, no 64-bit support */ - -typedef UINT32 ACPI_INTEGER; -#define ACPI_INTEGER_MAX ACPI_UINT32_MAX -#define ACPI_INTEGER_BIT_SIZE 32 -#define ACPI_MAX_BCD_VALUE 99999999 -#define ACPI_MAX_BCD_DIGITS 8 - -#else - -/* 64-bit integers */ - -typedef UINT64 ACPI_INTEGER; -#define ACPI_INTEGER_MAX ACPI_UINT64_MAX -#define ACPI_INTEGER_BIT_SIZE 64 -#define ACPI_MAX_BCD_VALUE 9999999999999999 -#define ACPI_MAX_BCD_DIGITS 16 - -#endif - - -/* - * Constants with special meanings - */ - -#define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1) - -#define ACPI_FULL_INITIALIZATION 0x00 -#define ACPI_NO_ADDRESS_SPACE_INIT 0x01 -#define ACPI_NO_HARDWARE_INIT 0x02 -#define ACPI_NO_EVENT_INIT 0x04 -#define ACPI_NO_ACPI_ENABLE 0x08 -#define ACPI_NO_DEVICE_INIT 0x10 -#define ACPI_NO_OBJECT_INIT 0x20 - - -/* - * Sleep state constants - */ -#define ACPI_STATE_S0 (UINT8) 0 -#define ACPI_STATE_S1 (UINT8) 1 -#define ACPI_STATE_S2 (UINT8) 2 -#define ACPI_STATE_S3 (UINT8) 3 -#define ACPI_STATE_S4 (UINT8) 4 -#define ACPI_STATE_S5 (UINT8) 5 -/* let's pretend S4BIOS didn't exist for now. ASG */ -#define ACPI_STATE_S4BIOS (UINT8) 6 -#define ACPI_S_STATES_MAX ACPI_STATE_S5 - - -/* - * Table types. These values are passed to the table related APIs - */ - -typedef UINT32 ACPI_TABLE_TYPE; - -#define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0 -#define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1 -#define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2 -#define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3 -#define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4 -#define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5 -#define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6 -#define ACPI_TABLE_MAX 6 -#define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1) - - -/* - * Types associated with names. The first group of - * values correspond to the definition of the ACPI - * ObjectType operator (See the ACPI Spec). Therefore, - * only add to the first group if the spec changes! - * - * Types must be kept in sync with the AcpiNsProperties - * and AcpiNsTypeNames arrays - */ - -typedef UINT32 ACPI_OBJECT_TYPE; -typedef UINT8 OBJECT_TYPE_INTERNAL; - -#define ACPI_BTYPE_ANY 0x00000000 -#define ACPI_BTYPE_INTEGER 0x00000001 -#define ACPI_BTYPE_STRING 0x00000002 -#define ACPI_BTYPE_BUFFER 0x00000004 -#define ACPI_BTYPE_PACKAGE 0x00000008 -#define ACPI_BTYPE_FIELD_UNIT 0x00000010 -#define ACPI_BTYPE_DEVICE 0x00000020 -#define ACPI_BTYPE_EVENT 0x00000040 -#define ACPI_BTYPE_METHOD 0x00000080 -#define ACPI_BTYPE_MUTEX 0x00000100 -#define ACPI_BTYPE_REGION 0x00000200 -#define ACPI_BTYPE_POWER 0x00000400 -#define ACPI_BTYPE_PROCESSOR 0x00000800 -#define ACPI_BTYPE_THERMAL 0x00001000 -#define ACPI_BTYPE_BUFFER_FIELD 0x00002000 -#define ACPI_BTYPE_DDB_HANDLE 0x00004000 -#define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 -#define ACPI_BTYPE_REFERENCE 0x00010000 -#define ACPI_BTYPE_RESOURCE 0x00020000 - -#define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) - -#define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) -#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) -#define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) -#define ACPI_BTYPE_OBJECTS_AND_REFS 0x00017FFF /* ARG or LOCAL */ -#define ACPI_BTYPE_ALL_OBJECTS 0x00007FFF - - -#define ACPI_TYPE_ANY 0 /* 0x00 */ -#define ACPI_TYPE_INTEGER 1 /* 0x01 Byte/Word/Dword/Zero/One/Ones */ -#define ACPI_TYPE_STRING 2 /* 0x02 */ -#define ACPI_TYPE_BUFFER 3 /* 0x03 */ -#define ACPI_TYPE_PACKAGE 4 /* 0x04 ByteConst, multiple DataTerm/Constant/SuperName */ -#define ACPI_TYPE_FIELD_UNIT 5 /* 0x05 */ -#define ACPI_TYPE_DEVICE 6 /* 0x06 Name, multiple Node */ -#define ACPI_TYPE_EVENT 7 /* 0x07 */ -#define ACPI_TYPE_METHOD 8 /* 0x08 Name, ByteConst, multiple Code */ -#define ACPI_TYPE_MUTEX 9 /* 0x09 */ -#define ACPI_TYPE_REGION 10 /* 0x0A */ -#define ACPI_TYPE_POWER 11 /* 0x0B Name,ByteConst,WordConst,multi Node */ -#define ACPI_TYPE_PROCESSOR 12 /* 0x0C Name,ByteConst,DWordConst,ByteConst,multi NmO */ -#define ACPI_TYPE_THERMAL 13 /* 0x0D Name, multiple Node */ -#define ACPI_TYPE_BUFFER_FIELD 14 /* 0x0E */ -#define ACPI_TYPE_DDB_HANDLE 15 /* 0x0F */ -#define ACPI_TYPE_DEBUG_OBJECT 16 /* 0x10 */ - -#define ACPI_TYPE_MAX 16 - -/* - * This section contains object types that do not relate to the ACPI ObjectType operator. - * They are used for various internal purposes only. If new predefined ACPI_TYPEs are - * added (via the ACPI specification), these internal types must move upwards. - * Also, values exceeding the largest official ACPI ObjectType must not overlap with - * defined AML opcodes. - */ -#define INTERNAL_TYPE_BEGIN 17 - -#define INTERNAL_TYPE_DEF_FIELD 17 /* 0x11 */ -#define INTERNAL_TYPE_BANK_FIELD 18 /* 0x12 */ -#define INTERNAL_TYPE_INDEX_FIELD 19 /* 0x13 */ -#define INTERNAL_TYPE_REFERENCE 20 /* 0x14 Arg#, Local#, Name, Debug; used only in descriptors */ -#define INTERNAL_TYPE_ALIAS 21 /* 0x15 */ -#define INTERNAL_TYPE_NOTIFY 22 /* 0x16 */ -#define INTERNAL_TYPE_ADDRESS_HANDLER 23 /* 0x17 */ -#define INTERNAL_TYPE_RESOURCE 24 /* 0x18 */ - - -#define INTERNAL_TYPE_NODE_MAX 24 - -/* These are pseudo-types because there are never any namespace nodes with these types */ - -#define INTERNAL_TYPE_DEF_FIELD_DEFN 25 /* 0x19 Name, ByteConst, multiple FieldElement */ -#define INTERNAL_TYPE_BANK_FIELD_DEFN 26 /* 0x1A 2 Name,DWordConst,ByteConst,multi FieldElement */ -#define INTERNAL_TYPE_INDEX_FIELD_DEFN 27 /* 0x1B 2 Name, ByteConst, multiple FieldElement */ -#define INTERNAL_TYPE_IF 28 /* 0x1C OpCode, multiple Code */ -#define INTERNAL_TYPE_ELSE 29 /* 0x1D multiple Code */ -#define INTERNAL_TYPE_WHILE 30 /* 0x1E OpCode, multiple Code */ -#define INTERNAL_TYPE_SCOPE 31 /* 0x1F Name, multiple Node */ -#define INTERNAL_TYPE_DEF_ANY 32 /* 0x20 type is Any, suppress search of enclosing scopes */ -#define INTERNAL_TYPE_EXTRA 33 /* 0x21 */ - -#define INTERNAL_TYPE_MAX 33 - -#define INTERNAL_TYPE_INVALID 34 -#define ACPI_TYPE_NOT_FOUND 0xFF - -/* - * AcpiEvent Types: - * ------------ - * Fixed & general purpose... - */ - -typedef UINT32 ACPI_EVENT_TYPE; - -#define ACPI_EVENT_FIXED (ACPI_EVENT_TYPE) 0 -#define ACPI_EVENT_GPE (ACPI_EVENT_TYPE) 1 - -/* - * Fixed events - */ - -#define ACPI_EVENT_PMTIMER (ACPI_EVENT_TYPE) 0 - /* - * There's no bus master event so index 1 is used for IRQ's that are not - * handled by the SCI handler - */ -#define ACPI_EVENT_NOT_USED (ACPI_EVENT_TYPE) 1 -#define ACPI_EVENT_GLOBAL (ACPI_EVENT_TYPE) 2 -#define ACPI_EVENT_POWER_BUTTON (ACPI_EVENT_TYPE) 3 -#define ACPI_EVENT_SLEEP_BUTTON (ACPI_EVENT_TYPE) 4 -#define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5 -#define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6 -#define ACPI_EVENT_MAX 6 -#define NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7 - -#define ACPI_GPE_INVALID 0xFF -#define ACPI_GPE_MAX 0xFF -#define NUM_GPE 256 - -#define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1 -#define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2 - -/* - * AcpiEvent Status: - * ------------- - * The encoding of ACPI_EVENT_STATUS is illustrated below. - * Note that a set bit (1) indicates the property is TRUE - * (e.g. if bit 0 is set then the event is enabled). - * +---------------+-+-+ - * | Bits 31:2 |1|0| - * +---------------+-+-+ - * | | | - * | | +- Enabled? - * | +--- Set? - * +----------- <Reserved> - */ -typedef UINT32 ACPI_EVENT_STATUS; - -#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 -#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 -#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x02 - - -/* Notify types */ - -#define ACPI_SYSTEM_NOTIFY 0 -#define ACPI_DEVICE_NOTIFY 1 -#define ACPI_MAX_NOTIFY_HANDLER_TYPE 1 - -#define MAX_SYS_NOTIFY 0x7f - - -/* Address Space (Operation Region) Types */ - -typedef UINT8 ACPI_ADDRESS_SPACE_TYPE; - -#define ADDRESS_SPACE_SYSTEM_MEMORY (ACPI_ADDRESS_SPACE_TYPE) 0 -#define ADDRESS_SPACE_SYSTEM_IO (ACPI_ADDRESS_SPACE_TYPE) 1 -#define ADDRESS_SPACE_PCI_CONFIG (ACPI_ADDRESS_SPACE_TYPE) 2 -#define ADDRESS_SPACE_EC (ACPI_ADDRESS_SPACE_TYPE) 3 -#define ADDRESS_SPACE_SMBUS (ACPI_ADDRESS_SPACE_TYPE) 4 -#define ADDRESS_SPACE_CMOS (ACPI_ADDRESS_SPACE_TYPE) 5 -#define ADDRESS_SPACE_PCI_BAR_TARGET (ACPI_ADDRESS_SPACE_TYPE) 6 - - -/* - * External ACPI object definition - */ - -typedef union AcpiObj -{ - ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ - struct - { - ACPI_OBJECT_TYPE Type; - ACPI_INTEGER Value; /* The actual number */ - } Integer; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Length; /* # of bytes in string, excluding trailing null */ - NATIVE_CHAR *Pointer; /* points to the string value */ - } String; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Length; /* # of bytes in buffer */ - UINT8 *Pointer; /* points to the buffer */ - } Buffer; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Fill1; - ACPI_HANDLE Handle; /* object reference */ - } Reference; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Count; /* # of elements in package */ - union AcpiObj *Elements; /* Pointer to an array of ACPI_OBJECTs */ - } Package; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 ProcId; - UINT32 PblkAddress; - UINT32 PblkLength; - } Processor; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 SystemLevel; - UINT32 ResourceOrder; - } PowerResource; - -} ACPI_OBJECT, *PACPI_OBJECT; - - -/* - * List of objects, used as a parameter list for control method evaluation - */ - -typedef struct AcpiObjList -{ - UINT32 Count; - ACPI_OBJECT *Pointer; - -} ACPI_OBJECT_LIST, *PACPI_OBJECT_LIST; - - -/* - * Miscellaneous common Data Structures used by the interfaces - */ - -typedef struct -{ - UINT32 Length; /* Length in bytes of the buffer */ - void *Pointer; /* pointer to buffer */ - -} ACPI_BUFFER; - - -/* - * NameType for AcpiGetName - */ - -#define ACPI_FULL_PATHNAME 0 -#define ACPI_SINGLE_NAME 1 -#define ACPI_NAME_TYPE_MAX 1 - - -/* - * Structure and flags for AcpiGetSystemInfo - */ - -#define SYS_MODE_UNKNOWN 0x0000 -#define SYS_MODE_ACPI 0x0001 -#define SYS_MODE_LEGACY 0x0002 -#define SYS_MODES_MASK 0x0003 - -/* - * ACPI CPU Cx state handler - */ -typedef -ACPI_STATUS (*ACPI_SET_C_STATE_HANDLER) ( - NATIVE_UINT PblkAddress); - -/* - * ACPI Cx State info - */ -typedef struct -{ - UINT32 StateNumber; - UINT32 Latency; -} ACPI_CX_STATE; - -/* - * ACPI CPU throttling info - */ -typedef struct -{ - UINT32 StateNumber; - UINT32 PercentOfClock; -} ACPI_CPU_THROTTLING_STATE; - -/* - * ACPI Table Info. One per ACPI table _type_ - */ -typedef struct AcpiTableInfo -{ - UINT32 Count; - -} ACPI_TABLE_INFO; - - -/* - * System info returned by AcpiGetSystemInfo() - */ - -typedef struct _AcpiSysInfo -{ - UINT32 AcpiCaVersion; - UINT32 Flags; - UINT32 TimerResolution; - UINT32 Reserved1; - UINT32 Reserved2; - UINT32 DebugLevel; - UINT32 DebugLayer; - UINT32 NumTableTypes; - ACPI_TABLE_INFO TableInfo [NUM_ACPI_TABLES]; - -} ACPI_SYSTEM_INFO; - - -/* - * System Initiailization data. This data is passed to ACPIInitialize - * copyied to global data and retained by ACPI CA - */ - -typedef struct _AcpiInitData -{ - void *RSDP_PhysicalAddress; /* Address of RSDP, needed it it is */ - /* not found in the IA32 manner */ -} ACPI_INIT_DATA; - -/* - * Various handlers and callback procedures - */ - -typedef -UINT32 (*FIXED_EVENT_HANDLER) ( - void *Context); - -typedef -void (*GPE_HANDLER) ( - void *Context); - -typedef -void (*NOTIFY_HANDLER) ( - ACPI_HANDLE Device, - UINT32 Value, - void *Context); - -#define ADDRESS_SPACE_READ 1 -#define ADDRESS_SPACE_WRITE 2 - -typedef -ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext); - -#define ACPI_DEFAULT_HANDLER ((ADDRESS_SPACE_HANDLER) NULL) - - -typedef -ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( - ACPI_HANDLE RegionHandle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -#define ACPI_REGION_ACTIVATE 0 -#define ACPI_REGION_DEACTIVATE 1 - -typedef -ACPI_STATUS (*WALK_CALLBACK) ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - - - - -/* Interrupt handler return values */ - -#define INTERRUPT_NOT_HANDLED 0x00 -#define INTERRUPT_HANDLED 0x01 - - -/* Structure and flags for AcpiGetDeviceInfo */ - -#define ACPI_VALID_HID 0x1 -#define ACPI_VALID_UID 0x2 -#define ACPI_VALID_ADR 0x4 -#define ACPI_VALID_STA 0x8 - - -#define ACPI_COMMON_OBJ_INFO \ - ACPI_OBJECT_TYPE Type; /* ACPI object type */ \ - ACPI_NAME Name /* ACPI object Name */ - - -typedef struct -{ - ACPI_COMMON_OBJ_INFO; -} ACPI_OBJ_INFO_HEADER; - - -typedef struct -{ - ACPI_COMMON_OBJ_INFO; - - UINT32 Valid; /* Are the next bits legit? */ - NATIVE_CHAR HardwareId [9]; /* _HID value if any */ - NATIVE_CHAR UniqueId[9]; /* _UID value if any */ - ACPI_INTEGER Address; /* _ADR value if any */ - UINT32 CurrentStatus; /* _STA value */ -} ACPI_DEVICE_INFO; - - -/* Context structs for address space handlers */ - -typedef struct -{ - UINT32 Seg; - UINT32 Bus; - UINT32 DevFunc; -} PCI_HANDLER_CONTEXT; - - -typedef struct -{ - ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; - UINT8 *MappedLogicalAddress; - UINT32 MappedLength; -} MEM_HANDLER_CONTEXT; - - -/* - * C-state handler - */ - -typedef ACPI_STATUS (*ACPI_C_STATE_HANDLER) (ACPI_IO_ADDRESS, UINT32*); - - -/* - * Definitions for Resource Attributes - */ - -/* - * Memory Attributes - */ -#define READ_ONLY_MEMORY (UINT8) 0x00 -#define READ_WRITE_MEMORY (UINT8) 0x01 - -#define NON_CACHEABLE_MEMORY (UINT8) 0x00 -#define CACHABLE_MEMORY (UINT8) 0x01 -#define WRITE_COMBINING_MEMORY (UINT8) 0x02 -#define PREFETCHABLE_MEMORY (UINT8) 0x03 - -/* - * IO Attributes - * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. - * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. - */ -#define NON_ISA_ONLY_RANGES (UINT8) 0x01 -#define ISA_ONLY_RANGES (UINT8) 0x02 -#define ENTIRE_RANGE (NON_ISA_ONLY_RANGES | ISA_ONLY_RANGES) - -/* - * IO Port Descriptor Decode - */ -#define DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ -#define DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ - -/* - * IRQ Attributes - */ -#define EDGE_SENSITIVE (UINT8) 0x00 -#define LEVEL_SENSITIVE (UINT8) 0x01 - -#define ACTIVE_HIGH (UINT8) 0x00 -#define ACTIVE_LOW (UINT8) 0x01 - -#define EXCLUSIVE (UINT8) 0x00 -#define SHARED (UINT8) 0x01 - -/* - * DMA Attributes - */ -#define COMPATIBILITY (UINT8) 0x00 -#define TYPE_A (UINT8) 0x01 -#define TYPE_B (UINT8) 0x02 -#define TYPE_F (UINT8) 0x03 - -#define NOT_BUS_MASTER (UINT8) 0x00 -#define BUS_MASTER (UINT8) 0x01 - -#define TRANSFER_8 (UINT8) 0x00 -#define TRANSFER_8_16 (UINT8) 0x01 -#define TRANSFER_16 (UINT8) 0x02 - -/* - * Start Dependent Functions Priority definitions - */ -#define GOOD_CONFIGURATION (UINT8) 0x00 -#define ACCEPTABLE_CONFIGURATION (UINT8) 0x01 -#define SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 - -/* - * 16, 32 and 64-bit Address Descriptor resource types - */ -#define MEMORY_RANGE (UINT8) 0x00 -#define IO_RANGE (UINT8) 0x01 -#define BUS_NUMBER_RANGE (UINT8) 0x02 - -#define ADDRESS_NOT_FIXED (UINT8) 0x00 -#define ADDRESS_FIXED (UINT8) 0x01 - -#define POS_DECODE (UINT8) 0x00 -#define SUB_DECODE (UINT8) 0x01 - -#define PRODUCER (UINT8) 0x00 -#define CONSUMER (UINT8) 0x01 - - -/* - * Structures used to describe device resources - */ -typedef struct -{ - UINT32 EdgeLevel; - UINT32 ActiveHighLow; - UINT32 SharedExclusive; - UINT32 NumberOfInterrupts; - UINT32 Interrupts[1]; - -} IRQ_RESOURCE; - -typedef struct -{ - UINT32 Type; - UINT32 BusMaster; - UINT32 Transfer; - UINT32 NumberOfChannels; - UINT32 Channels[1]; - -} DMA_RESOURCE; - -typedef struct -{ - UINT32 CompatibilityPriority; - UINT32 PerformanceRobustness; - -} START_DEPENDENT_FUNCTIONS_RESOURCE; - -/* - * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not - * needed because it has no fields - */ - -typedef struct -{ - UINT32 IoDecode; - UINT32 MinBaseAddress; - UINT32 MaxBaseAddress; - UINT32 Alignment; - UINT32 RangeLength; - -} IO_RESOURCE; - -typedef struct -{ - UINT32 BaseAddress; - UINT32 RangeLength; - -} FIXED_IO_RESOURCE; - -typedef struct -{ - UINT32 Length; - UINT8 Reserved[1]; - -} VENDOR_RESOURCE; - -typedef struct -{ - UINT32 ReadWriteAttribute; - UINT32 MinBaseAddress; - UINT32 MaxBaseAddress; - UINT32 Alignment; - UINT32 RangeLength; - -} MEMORY24_RESOURCE; - -typedef struct -{ - UINT32 ReadWriteAttribute; - UINT32 MinBaseAddress; - UINT32 MaxBaseAddress; - UINT32 Alignment; - UINT32 RangeLength; - -} MEMORY32_RESOURCE; - -typedef struct -{ - UINT32 ReadWriteAttribute; - UINT32 RangeBaseAddress; - UINT32 RangeLength; - -} FIXED_MEMORY32_RESOURCE; - -typedef struct -{ - UINT16 CacheAttribute; - UINT16 ReadWriteAttribute; - -} MEMORY_ATTRIBUTE; - -typedef struct -{ - UINT16 RangeAttribute; - UINT16 Reserved; - -} IO_ATTRIBUTE; - -typedef struct -{ - UINT16 Reserved1; - UINT16 Reserved2; - -} BUS_ATTRIBUTE; - -typedef union -{ - MEMORY_ATTRIBUTE Memory; - IO_ATTRIBUTE Io; - BUS_ATTRIBUTE Bus; - -} ATTRIBUTE_DATA; - -typedef struct -{ - UINT32 ResourceType; - UINT32 ProducerConsumer; - UINT32 Decode; - UINT32 MinAddressFixed; - UINT32 MaxAddressFixed; - ATTRIBUTE_DATA Attribute; - UINT32 Granularity; - UINT32 MinAddressRange; - UINT32 MaxAddressRange; - UINT32 AddressTranslationOffset; - UINT32 AddressLength; - UINT32 ResourceSourceIndex; - UINT32 ResourceSourceStringLength; - NATIVE_CHAR ResourceSource[1]; - -} ADDRESS16_RESOURCE; - -typedef struct -{ - UINT32 ResourceType; - UINT32 ProducerConsumer; - UINT32 Decode; - UINT32 MinAddressFixed; - UINT32 MaxAddressFixed; - ATTRIBUTE_DATA Attribute; - UINT32 Granularity; - UINT32 MinAddressRange; - UINT32 MaxAddressRange; - UINT32 AddressTranslationOffset; - UINT32 AddressLength; - UINT32 ResourceSourceIndex; - UINT32 ResourceSourceStringLength; - NATIVE_CHAR ResourceSource[1]; - -} ADDRESS32_RESOURCE; - -typedef struct -{ - UINT32 ProducerConsumer; - UINT32 EdgeLevel; - UINT32 ActiveHighLow; - UINT32 SharedExclusive; - UINT32 NumberOfInterrupts; - UINT32 Interrupts[1]; - UINT32 ResourceSourceIndex; - UINT32 ResourceSourceStringLength; - NATIVE_CHAR ResourceSource[1]; - -} EXTENDED_IRQ_RESOURCE; - -typedef enum -{ - Irq, - Dma, - StartDependentFunctions, - EndDependentFunctions, - Io, - FixedIo, - VendorSpecific, - EndTag, - Memory24, - Memory32, - FixedMemory32, - Address16, - Address32, - ExtendedIrq -} RESOURCE_TYPE; - -typedef union -{ - IRQ_RESOURCE Irq; - DMA_RESOURCE Dma; - START_DEPENDENT_FUNCTIONS_RESOURCE StartDependentFunctions; - IO_RESOURCE Io; - FIXED_IO_RESOURCE FixedIo; - VENDOR_RESOURCE VendorSpecific; - MEMORY24_RESOURCE Memory24; - MEMORY32_RESOURCE Memory32; - FIXED_MEMORY32_RESOURCE FixedMemory32; - ADDRESS16_RESOURCE Address16; - ADDRESS32_RESOURCE Address32; - EXTENDED_IRQ_RESOURCE ExtendedIrq; -} RESOURCE_DATA; - -typedef struct _resource_tag -{ - RESOURCE_TYPE Id; - UINT32 Length; - RESOURCE_DATA Data; -} RESOURCE; - -#define RESOURCE_LENGTH 12 -#define RESOURCE_LENGTH_NO_DATA 8 - -#define NEXT_RESOURCE(Res) (RESOURCE*)((UINT8*) Res + Res->length) - -/* - * END: Definitions for Resource Attributes - */ - - -typedef struct pci_routing_table -{ - UINT32 Length; - UINT32 Pin; - ACPI_INTEGER Address; /* here for 64-bit alignment */ - UINT32 SourceIndex; - NATIVE_CHAR Source[4]; /* pad to 64 bits so sizeof() works in all cases */ - -} PCI_ROUTING_TABLE; - - -/* - * END: Definitions for PCI Routing tables - */ - -#endif /* __ACTYPES_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/acwin.h b/sys/contrib/dev/acpica/Subsystem/Include/acwin.h deleted file mode 100644 index 9070d35..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/acwin.h +++ /dev/null @@ -1,190 +0,0 @@ -/****************************************************************************** - * - * Name: acwin.h - OS specific defines, etc. - * $Revision: 3 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACWIN_H__ -#define __ACWIN_H__ - -/* Windows uses VC */ -#ifdef _MSC_VER -#include "acmsvc.h" -#endif - -#define ACPI_OS_NAME "Windows" - -#define strupr _strupr -#define ACPI_USE_STANDARD_HEADERS - -/* - * Handle platform- and compiler-specific assembly language differences. - * - * Notes: - * 1) Interrupt 3 is used to break into a debugger - * 2) Interrupts are turned off during ACPI register setup - */ - -/*! [Begin] no source code translation */ - -#define ACPI_ASM_MACROS -#define causeinterrupt(level) __asm {int level} -#define BREAKPOINT3 __asm {int 3} -#define disable() __asm {cli} -#define enable() __asm {sti} -#define halt() __asm {hlt} -#define wbinvd() __asm {WBINVD} - - -/* - * For Acpi applications, we don't want to try to access the global lock - */ -#ifdef ACPI_APPLICATION -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) (Acq = 0xFF) -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pnd) (Pnd = 0) -#else - -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) __asm { \ - __asm mov ecx, GLptr \ - __asm acq10: \ - __asm mov eax, [ecx] \ - __asm mov edx, eax \ - __asm and edx, 0xFFFFFFFE \ - __asm bts edx, 1 \ - __asm adc edx, 0 \ - __asm lock cmpxchg dword ptr [ecx], edx \ - __asm jnz acq10 \ - \ - __asm cmp dl, 3 \ - __asm sbb eax, eax \ - __asm mov Acq, al \ -} - -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pnd) __asm { \ - __asm mov ecx, GLptr \ - __asm Rel10: \ - __asm mov eax, [ecx] \ - __asm mov edx, eax \ - __asm and edx, 0xFFFFFFFC \ - __asm lock cmpxchg dword ptr [ecx], edx \ - __asm jnz Rel10 \ - \ - __asm cmp dl, 3 \ - __asm and eax, 1 \ - __asm mov Pnd, al \ -} - -#endif - - -#endif /* __ACWIN_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Include/amlcode.h b/sys/contrib/dev/acpica/Subsystem/Include/amlcode.h deleted file mode 100644 index afca031..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Include/amlcode.h +++ /dev/null @@ -1,510 +0,0 @@ -/****************************************************************************** - * - * Name: amlcode.h - Definitions for AML, as included in "definition blocks" - * Declarations and definitions contained herein are derived - * directly from the ACPI specification. - * $Revision: 46 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __AMLCODE_H__ -#define __AMLCODE_H__ - - -/* primary opcodes */ - -#define AML_NULL_CHAR (UINT16) 0x00 - -#define AML_ZERO_OP (UINT16) 0x00 -#define AML_ONE_OP (UINT16) 0x01 -#define AML_UNASSIGNED (UINT16) 0x02 -#define AML_ALIAS_OP (UINT16) 0x06 -#define AML_NAME_OP (UINT16) 0x08 -#define AML_BYTE_OP (UINT16) 0x0a -#define AML_WORD_OP (UINT16) 0x0b -#define AML_DWORD_OP (UINT16) 0x0c -#define AML_STRING_OP (UINT16) 0x0d -#define AML_QWORD_OP (UINT16) 0x0e /* ACPI 2.0 */ -#define AML_SCOPE_OP (UINT16) 0x10 -#define AML_BUFFER_OP (UINT16) 0x11 -#define AML_PACKAGE_OP (UINT16) 0x12 -#define AML_VAR_PACKAGE_OP (UINT16) 0x13 /* ACPI 2.0 */ -#define AML_METHOD_OP (UINT16) 0x14 -#define AML_DUAL_NAME_PREFIX (UINT16) 0x2e -#define AML_MULTI_NAME_PREFIX_OP (UINT16) 0x2f -#define AML_NAME_CHAR_SUBSEQ (UINT16) 0x30 -#define AML_NAME_CHAR_FIRST (UINT16) 0x41 -#define AML_OP_PREFIX (UINT16) 0x5b -#define AML_ROOT_PREFIX (UINT16) 0x5c -#define AML_PARENT_PREFIX (UINT16) 0x5e -#define AML_LOCAL_OP (UINT16) 0x60 -#define AML_LOCAL0 (UINT16) 0x60 -#define AML_LOCAL1 (UINT16) 0x61 -#define AML_LOCAL2 (UINT16) 0x62 -#define AML_LOCAL3 (UINT16) 0x63 -#define AML_LOCAL4 (UINT16) 0x64 -#define AML_LOCAL5 (UINT16) 0x65 -#define AML_LOCAL6 (UINT16) 0x66 -#define AML_LOCAL7 (UINT16) 0x67 -#define AML_ARG_OP (UINT16) 0x68 -#define AML_ARG0 (UINT16) 0x68 -#define AML_ARG1 (UINT16) 0x69 -#define AML_ARG2 (UINT16) 0x6a -#define AML_ARG3 (UINT16) 0x6b -#define AML_ARG4 (UINT16) 0x6c -#define AML_ARG5 (UINT16) 0x6d -#define AML_ARG6 (UINT16) 0x6e -#define AML_STORE_OP (UINT16) 0x70 -#define AML_REF_OF_OP (UINT16) 0x71 -#define AML_ADD_OP (UINT16) 0x72 -#define AML_CONCAT_OP (UINT16) 0x73 -#define AML_SUBTRACT_OP (UINT16) 0x74 -#define AML_INCREMENT_OP (UINT16) 0x75 -#define AML_DECREMENT_OP (UINT16) 0x76 -#define AML_MULTIPLY_OP (UINT16) 0x77 -#define AML_DIVIDE_OP (UINT16) 0x78 -#define AML_SHIFT_LEFT_OP (UINT16) 0x79 -#define AML_SHIFT_RIGHT_OP (UINT16) 0x7a -#define AML_BIT_AND_OP (UINT16) 0x7b -#define AML_BIT_NAND_OP (UINT16) 0x7c -#define AML_BIT_OR_OP (UINT16) 0x7d -#define AML_BIT_NOR_OP (UINT16) 0x7e -#define AML_BIT_XOR_OP (UINT16) 0x7f -#define AML_BIT_NOT_OP (UINT16) 0x80 -#define AML_FIND_SET_LEFT_BIT_OP (UINT16) 0x81 -#define AML_FIND_SET_RIGHT_BIT_OP (UINT16) 0x82 -#define AML_DEREF_OF_OP (UINT16) 0x83 -#define AML_CONCAT_RES_OP (UINT16) 0x84 /* ACPI 2.0 */ -#define AML_MOD_OP (UINT16) 0x85 /* ACPI 2.0 */ -#define AML_NOTIFY_OP (UINT16) 0x86 -#define AML_SIZE_OF_OP (UINT16) 0x87 -#define AML_INDEX_OP (UINT16) 0x88 -#define AML_MATCH_OP (UINT16) 0x89 -#define AML_DWORD_FIELD_OP (UINT16) 0x8a -#define AML_WORD_FIELD_OP (UINT16) 0x8b -#define AML_BYTE_FIELD_OP (UINT16) 0x8c -#define AML_BIT_FIELD_OP (UINT16) 0x8d -#define AML_TYPE_OP (UINT16) 0x8e -#define AML_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ -#define AML_LAND_OP (UINT16) 0x90 -#define AML_LOR_OP (UINT16) 0x91 -#define AML_LNOT_OP (UINT16) 0x92 -#define AML_LEQUAL_OP (UINT16) 0x93 -#define AML_LGREATER_OP (UINT16) 0x94 -#define AML_LLESS_OP (UINT16) 0x95 -#define AML_TO_BUFFER_OP (UINT16) 0x96 /* ACPI 2.0 */ -#define AML_TO_DECSTRING_OP (UINT16) 0x97 /* ACPI 2.0 */ -#define AML_TO_HEXSTRING_OP (UINT16) 0x98 /* ACPI 2.0 */ -#define AML_TO_INTEGER_OP (UINT16) 0x99 /* ACPI 2.0 */ -#define AML_TO_STRING_OP (UINT16) 0x9c /* ACPI 2.0 */ -#define AML_COPY_OP (UINT16) 0x9d /* ACPI 2.0 */ -#define AML_MID_OP (UINT16) 0x9e /* ACPI 2.0 */ -#define AML_CONTINUE_OP (UINT16) 0x9f /* ACPI 2.0 */ -#define AML_IF_OP (UINT16) 0xa0 -#define AML_ELSE_OP (UINT16) 0xa1 -#define AML_WHILE_OP (UINT16) 0xa2 -#define AML_NOOP_OP (UINT16) 0xa3 -#define AML_RETURN_OP (UINT16) 0xa4 -#define AML_BREAK_OP (UINT16) 0xa5 -#define AML_BREAK_POINT_OP (UINT16) 0xcc -#define AML_ONES_OP (UINT16) 0xff - -/* prefixed opcodes */ - -#define AML_EXTOP (UINT16) 0x005b - - -#define AML_MUTEX_OP (UINT16) 0x5b01 -#define AML_EVENT_OP (UINT16) 0x5b02 -#define AML_SHIFT_RIGHT_BIT_OP (UINT16) 0x5b10 -#define AML_SHIFT_LEFT_BIT_OP (UINT16) 0x5b11 -#define AML_COND_REF_OF_OP (UINT16) 0x5b12 -#define AML_CREATE_FIELD_OP (UINT16) 0x5b13 -#define AML_LOAD_TABLE_OP (UINT16) 0x5b1f /* ACPI 2.0 */ -#define AML_LOAD_OP (UINT16) 0x5b20 -#define AML_STALL_OP (UINT16) 0x5b21 -#define AML_SLEEP_OP (UINT16) 0x5b22 -#define AML_ACQUIRE_OP (UINT16) 0x5b23 -#define AML_SIGNAL_OP (UINT16) 0x5b24 -#define AML_WAIT_OP (UINT16) 0x5b25 -#define AML_RESET_OP (UINT16) 0x5b26 -#define AML_RELEASE_OP (UINT16) 0x5b27 -#define AML_FROM_BCD_OP (UINT16) 0x5b28 -#define AML_TO_BCD_OP (UINT16) 0x5b29 -#define AML_UNLOAD_OP (UINT16) 0x5b2a -#define AML_REVISION_OP (UINT16) 0x5b30 -#define AML_DEBUG_OP (UINT16) 0x5b31 -#define AML_FATAL_OP (UINT16) 0x5b32 -#define AML_REGION_OP (UINT16) 0x5b80 -#define AML_DEF_FIELD_OP (UINT16) 0x5b81 -#define AML_DEVICE_OP (UINT16) 0x5b82 -#define AML_PROCESSOR_OP (UINT16) 0x5b83 -#define AML_POWER_RES_OP (UINT16) 0x5b84 -#define AML_THERMAL_ZONE_OP (UINT16) 0x5b85 -#define AML_INDEX_FIELD_OP (UINT16) 0x5b86 -#define AML_BANK_FIELD_OP (UINT16) 0x5b87 -#define AML_DATA_REGION_OP (UINT16) 0x5b88 /* ACPI 2.0 */ - - -/* Bogus opcodes (they are actually two separate opcodes) */ - -#define AML_LGREATEREQUAL_OP (UINT16) 0x9295 -#define AML_LLESSEQUAL_OP (UINT16) 0x9294 -#define AML_LNOTEQUAL_OP (UINT16) 0x9293 - - -/* - * Internal opcodes - * Use only "Unknown" AML opcodes, don't attempt to use - * any valid ACPI ASCII values (A-Z, 0-9, '-') - */ - -#define AML_NAMEPATH_OP (UINT16) 0x002d -#define AML_NAMEDFIELD_OP (UINT16) 0x0030 -#define AML_RESERVEDFIELD_OP (UINT16) 0x0031 -#define AML_ACCESSFIELD_OP (UINT16) 0x0032 -#define AML_BYTELIST_OP (UINT16) 0x0033 -#define AML_STATICSTRING_OP (UINT16) 0x0034 -#define AML_METHODCALL_OP (UINT16) 0x0035 -#define AML_RETURN_VALUE_OP (UINT16) 0x0036 - - -#define ARG_NONE 0x0 - -/* - * Argument types for the AML Parser - * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. - * There can be up to 31 unique argument types - */ - -#define ARGP_BYTEDATA 0x01 -#define ARGP_BYTELIST 0x02 -#define ARGP_CHARLIST 0x03 -#define ARGP_DATAOBJ 0x04 -#define ARGP_DATAOBJLIST 0x05 -#define ARGP_DWORDDATA 0x06 -#define ARGP_FIELDLIST 0x07 -#define ARGP_NAME 0x08 -#define ARGP_NAMESTRING 0x09 -#define ARGP_OBJLIST 0x0A -#define ARGP_PKGLENGTH 0x0B -#define ARGP_SUPERNAME 0x0C -#define ARGP_TARGET 0x0D -#define ARGP_TERMARG 0x0E -#define ARGP_TERMLIST 0x0F -#define ARGP_WORDDATA 0x10 -#define ARGP_QWORDDATA 0x11 -#define ARGP_SIMPLENAME 0x12 - -/* - * Resolved argument types for the AML Interpreter - * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. - * There can be up to 31 unique argument types (0 is end-of-arg-list indicator) - */ - -/* "Standard" ACPI types are 1-15 (0x0F) */ - -#define ARGI_INTEGER ACPI_TYPE_INTEGER /* 1 */ -#define ARGI_STRING ACPI_TYPE_STRING /* 2 */ -#define ARGI_BUFFER ACPI_TYPE_BUFFER /* 3 */ -#define ARGI_PACKAGE ACPI_TYPE_PACKAGE /* 4 */ -#define ARGI_EVENT ACPI_TYPE_EVENT -#define ARGI_MUTEX ACPI_TYPE_MUTEX -#define ARGI_REGION ACPI_TYPE_REGION -#define ARGI_DDBHANDLE ACPI_TYPE_DDB_HANDLE - -/* Custom types are 0x10 through 0x1F */ - -#define ARGI_IF 0x10 -#define ARGI_ANYOBJECT 0x11 -#define ARGI_ANYTYPE 0x12 -#define ARGI_COMPUTEDATA 0x13 /* Buffer, String, or Integer */ -#define ARGI_DATAOBJECT 0x14 /* Buffer, string, package or reference to a Node - Used only by SizeOf operator*/ -#define ARGI_COMPLEXOBJ 0x15 /* Buffer or package */ -#define ARGI_INTEGER_REF 0x16 -#define ARGI_OBJECT_REF 0x17 -#define ARGI_DEVICE_REF 0x18 -#define ARGI_REFERENCE 0x19 -#define ARGI_TARGETREF 0x1A /* Target, subject to implicit conversion */ -#define ARGI_FIXED_TARGET 0x1B /* Target, no implicit conversion */ -#define ARGI_SIMPLE_TARGET 0x1C /* Name, Local, Arg -- no implicit conversion */ -#define ARGI_BUFFERSTRING 0x1D - -#define ARGI_INVALID_OPCODE 0xFFFFFFFF - - -/* - * hash offsets - */ -#define AML_EXTOP_HASH_OFFSET 22 -#define AML_LNOT_HASH_OFFSET 19 - - -/* - * opcode groups and types - */ - -#define OPGRP_NAMED 0x01 -#define OPGRP_FIELD 0x02 -#define OPGRP_BYTELIST 0x04 - -#define OPTYPE_UNDEFINED 0 - - -#define OPTYPE_LITERAL 1 -#define OPTYPE_CONSTANT 2 -#define OPTYPE_METHOD_ARGUMENT 3 -#define OPTYPE_LOCAL_VARIABLE 4 -#define OPTYPE_DATA_TERM 5 - -/* Type 1 opcodes */ - -#define OPTYPE_MONADIC1 6 -#define OPTYPE_DYADIC1 7 - - -/* Type 2 opcodes */ - -#define OPTYPE_MONADIC2 8 -#define OPTYPE_MONADIC2R 9 -#define OPTYPE_DYADIC2 10 -#define OPTYPE_DYADIC2R 11 -#define OPTYPE_DYADIC2S 12 -#define OPTYPE_INDEX 13 -#define OPTYPE_MATCH 14 - -/* Generic for an op that returns a value */ - -#define OPTYPE_METHOD_CALL 15 - - -/* Misc */ - -#define OPTYPE_CREATE_FIELD 16 -#define OPTYPE_FATAL 17 -#define OPTYPE_CONTROL 18 -#define OPTYPE_RECONFIGURATION 19 -#define OPTYPE_NAMED_OBJECT 20 -#define OPTYPE_RETURN 21 - -#define OPTYPE_BOGUS 22 - - -/* Predefined Operation Region SpaceIDs */ - -typedef enum -{ - REGION_MEMORY = 0, - REGION_IO, - REGION_PCI_CONFIG, - REGION_EC, - REGION_SMBUS, - REGION_CMOS, - REGION_PCI_BAR - -} AML_REGION_TYPES; - - -/* Comparison operation codes for MatchOp operator */ - -typedef enum -{ - MATCH_MTR = 0, - MATCH_MEQ = 1, - MATCH_MLE = 2, - MATCH_MLT = 3, - MATCH_MGE = 4, - MATCH_MGT = 5 - -} AML_MATCH_OPERATOR; - -#define MAX_MATCH_OPERATOR 5 - - -/* Field Access Types */ - -#define ACCESS_TYPE_MASK 0x0f -#define ACCESS_TYPE_SHIFT 0 - -typedef enum -{ - ACCESS_ANY_ACC = 0, - ACCESS_BYTE_ACC = 1, - ACCESS_WORD_ACC = 2, - ACCESS_DWORD_ACC = 3, - ACCESS_BLOCK_ACC = 4, - ACCESS_SMBSEND_RECV_ACC = 5, - ACCESS_SMBQUICK_ACC = 6 - -} AML_ACCESS_TYPE; - - -/* Field Lock Rules */ - -#define LOCK_RULE_MASK 0x10 -#define LOCK_RULE_SHIFT 4 - -typedef enum -{ - GLOCK_NEVER_LOCK = 0, - GLOCK_ALWAYS_LOCK = 1 - -} AML_LOCK_RULE; - - -/* Field Update Rules */ - -#define UPDATE_RULE_MASK 0x060 -#define UPDATE_RULE_SHIFT 5 - -typedef enum -{ - UPDATE_PRESERVE = 0, - UPDATE_WRITE_AS_ONES = 1, - UPDATE_WRITE_AS_ZEROS = 2 - -} AML_UPDATE_RULE; - - -/* bit fields in MethodFlags byte */ - -#define METHOD_FLAGS_ARG_COUNT 0x07 -#define METHOD_FLAGS_SERIALIZED 0x08 - - -/* Array sizes. Used for range checking also */ - -#define NUM_REGION_TYPES 7 -#define NUM_ACCESS_TYPES 7 -#define NUM_UPDATE_RULES 3 -#define NUM_MATCH_OPS 7 -#define NUM_OPCODES 256 -#define NUM_FIELD_NAMES 2 - - -#define USER_REGION_BEGIN 0x80 - -/* - * AML tables - */ - -#ifdef DEFINE_AML_GLOBALS - -/* External declarations of the AML tables */ - -extern UINT8 AcpiGbl_Aml [NUM_OPCODES]; -extern UINT16 AcpiGbl_Pfx [NUM_OPCODES]; - - -#endif /* DEFINE_AML_GLOBALS */ - -#endif /* __AMLCODE_H__ */ diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amconfig.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amconfig.c deleted file mode 100644 index b69170e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amconfig.c +++ /dev/null @@ -1,435 +0,0 @@ -/****************************************************************************** - * - * Module Name: amconfig - Namespace reconfiguration (Load/Unload opcodes) - * $Revision: 29 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMCONFIG_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acevents.h" -#include "actables.h" -#include "acdispat.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amconfig") - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecLoadTable - * - * PARAMETERS: RgnDesc - Op region where the table will be obtained - * DdbHandle - Where a handle to the table will be returned - * - * RETURN: Status - * - * DESCRIPTION: Load an ACPI table - * - ****************************************************************************/ - -static ACPI_STATUS -AcpiAmlExecLoadTable ( - ACPI_OPERAND_OBJECT *RgnDesc, - ACPI_HANDLE *DdbHandle) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *TableDesc = NULL; - UINT8 *TablePtr; - UINT8 *TableDataPtr; - ACPI_TABLE_HEADER TableHeader; - ACPI_TABLE_DESC TableInfo; - UINT32 i; - - - FUNCTION_TRACE ("AmlExecLoadTable"); - - /* TBD: [Unhandled] Object can be either a field or an opregion */ - - - /* Get the table header */ - - TableHeader.Length = 0; - for (i = 0; i < sizeof (ACPI_TABLE_HEADER); i++) - { - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_READ, - (ACPI_PHYSICAL_ADDRESS) i, 8, - (UINT32 *) ((UINT8 *) &TableHeader + i)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Allocate a buffer for the entire table */ - - TablePtr = AcpiCmAllocate (TableHeader.Length); - if (!TablePtr) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Copy the header to the buffer */ - - MEMCPY (TablePtr, &TableHeader, sizeof (ACPI_TABLE_HEADER)); - TableDataPtr = TablePtr + sizeof (ACPI_TABLE_HEADER); - - - /* Get the table from the op region */ - - for (i = 0; i < TableHeader.Length; i++) - { - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_READ, - (ACPI_PHYSICAL_ADDRESS)i, 8, - (UINT32 *) (TableDataPtr + i)); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - } - - - /* Table must be either an SSDT or a PSDT */ - - if ((!STRNCMP (TableHeader.Signature, - AcpiGbl_AcpiTableData[ACPI_TABLE_PSDT].Signature, - AcpiGbl_AcpiTableData[ACPI_TABLE_PSDT].SigLength)) && - (!STRNCMP (TableHeader.Signature, - AcpiGbl_AcpiTableData[ACPI_TABLE_SSDT].Signature, - AcpiGbl_AcpiTableData[ACPI_TABLE_SSDT].SigLength))) - { - DEBUG_PRINT (ACPI_ERROR, - ("Table has invalid signature [%4.4s], must be SSDT or PSDT\n", - TableHeader.Signature)); - Status = AE_BAD_SIGNATURE; - goto Cleanup; - } - - /* Create an object to be the table handle */ - - TableDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); - if (!TableDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - - /* Install the new table into the local data structures */ - - TableInfo.Pointer = (ACPI_TABLE_HEADER *) TablePtr; - TableInfo.Length = TableHeader.Length; - TableInfo.Allocation = ACPI_MEM_ALLOCATED; - TableInfo.BasePointer = TablePtr; - - Status = AcpiTbInstallTable (NULL, &TableInfo); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Add the table to the namespace */ - - /* TBD: [Restructure] - change to whatever new interface is appropriate */ -/* - Status = AcpiLoadNamespace (); - if (ACPI_FAILURE (Status)) - { -*/ - /* TBD: [Errors] Unload the table on failure ? */ -/* - goto Cleanup; - } -*/ - - - /* TBD: [Investigate] we need a pointer to the table desc */ - - /* Init the table handle */ - - TableDesc->Reference.OpCode = AML_LOAD_OP; - TableDesc->Reference.Object = TableInfo.InstalledDesc; - - *DdbHandle = TableDesc; - - return_ACPI_STATUS (Status); - - -Cleanup: - - AcpiCmFree (TableDesc); - AcpiCmFree (TablePtr); - return_ACPI_STATUS (Status); - -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecUnloadTable - * - * PARAMETERS: DdbHandle - Handle to a previously loaded table - * - * RETURN: Status - * - * DESCRIPTION: Unload an ACPI table - * - ****************************************************************************/ - -static ACPI_STATUS -AcpiAmlExecUnloadTable ( - ACPI_HANDLE DdbHandle) -{ - ACPI_STATUS Status = AE_NOT_IMPLEMENTED; - ACPI_OPERAND_OBJECT *TableDesc = (ACPI_OPERAND_OBJECT *) DdbHandle; - ACPI_TABLE_DESC *TableInfo; - - - FUNCTION_TRACE ("AmlExecUnloadTable"); - - - /* Validate the handle */ - /* Although the handle is partially validated in AcpiAmlExecReconfiguration(), - * when it calls AcpiAmlResolveOperands(), the handle is more completely - * validated here. - */ - - if ((!DdbHandle) || - (!VALID_DESCRIPTOR_TYPE (DdbHandle, ACPI_DESC_TYPE_INTERNAL)) || - (((ACPI_OPERAND_OBJECT *)DdbHandle)->Common.Type != - INTERNAL_TYPE_REFERENCE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Get the actual table descriptor from the DdbHandle */ - - TableInfo = (ACPI_TABLE_DESC *) TableDesc->Reference.Object; - - /* - * Delete the entire namespace under this table Node - * (Offset contains the TableId) - */ - - Status = AcpiNsDeleteNamespaceByOwner (TableInfo->TableId); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Delete the table itself */ - - AcpiTbUninstallTable (TableInfo->InstalledDesc); - - /* Delete the table descriptor (DdbHandle) */ - - AcpiCmRemoveReference (TableDesc); - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecReconfiguration - * - * PARAMETERS: Opcode - The opcode to be executed - * WalkState - Current state of the parse tree walk - * - * RETURN: Status - * - * DESCRIPTION: Reconfiguration opcodes such as LOAD and UNLOAD - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecReconfiguration ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *RegionDesc = NULL; - ACPI_HANDLE *DdbHandle; - - - FUNCTION_TRACE ("AmlExecReconfiguration"); - - - /* Resolve the operands */ - - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); - - /* Get the table handle, common for both opcodes */ - - Status |= AcpiDsObjStackPopObject ((ACPI_OPERAND_OBJECT **) &DdbHandle, - WalkState); - - switch (Opcode) - { - - case AML_LOAD_OP: - - /* Get the region or field descriptor */ - - Status |= AcpiDsObjStackPopObject (&RegionDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecReconfiguration/AML_LOAD_OP: bad operand(s) (%X)\n", - Status)); - - AcpiCmRemoveReference (RegionDesc); - return_ACPI_STATUS (Status); - } - - Status = AcpiAmlExecLoadTable (RegionDesc, DdbHandle); - break; - - - case AML_UNLOAD_OP: - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecReconfiguration/AML_UNLOAD_OP: bad operand(s) (%X)\n", - Status)); - - return_ACPI_STATUS (Status); - } - - Status = AcpiAmlExecUnloadTable (DdbHandle); - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, ("AmlExecReconfiguration: bad opcode=%X\n", - Opcode)); - - Status = AE_AML_BAD_OPCODE; - break; - } - - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amconvrt.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amconvrt.c deleted file mode 100644 index 9aa444e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amconvrt.c +++ /dev/null @@ -1,653 +0,0 @@ -/****************************************************************************** - * - * Module Name: amconvrt - Object conversion routines - * $Revision: 3 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __AMCONVRT_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "acevents.h" -#include "amlcode.h" -#include "acdispat.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amconvrt") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlConvertToTargetType - * - * PARAMETERS: *ObjDesc - Object to be converted. - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlConvertToTargetType ( - OBJECT_TYPE_INTERNAL DestinationType, - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AmlConvertToTargetType"); - - - /* - * If required by the target, - * perform implicit conversion on the source before we store it. - */ - - switch (GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs)) - { - case ARGI_SIMPLE_TARGET: - case ARGI_FIXED_TARGET: - case ARGI_INTEGER_REF: /* Handles Increment, Decrement cases */ - - switch (DestinationType) - { - case INTERNAL_TYPE_DEF_FIELD: - /* - * Named field can always handle conversions - */ - break; - - default: - /* No conversion allowed for these types */ - - if (DestinationType != (*ObjDesc)->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlConvertToTargetType: Target does not allow conversion of type %s to %s\n", - AcpiCmGetTypeName ((*ObjDesc)->Common.Type), - AcpiCmGetTypeName (DestinationType))); - Status = AE_TYPE; - } - } - break; - - - case ARGI_TARGETREF: - - switch (DestinationType) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_FIELD_UNIT: - case INTERNAL_TYPE_BANK_FIELD: - case INTERNAL_TYPE_INDEX_FIELD: - /* - * These types require an Integer operand. We can convert - * a Buffer or a String to an Integer if necessary. - */ - Status = AcpiAmlConvertToInteger (ObjDesc, WalkState); - break; - - - case ACPI_TYPE_STRING: - - /* - * The operand must be a String. We can convert an - * Integer or Buffer if necessary - */ - Status = AcpiAmlConvertToString (ObjDesc, WalkState); - break; - - - case ACPI_TYPE_BUFFER: - - /* - * The operand must be a String. We can convert an - * Integer or Buffer if necessary - */ - Status = AcpiAmlConvertToBuffer (ObjDesc, WalkState); - break; - } - break; - - - case ARGI_REFERENCE: - /* - * CreateXxxxField cases - we are storing the field object into the name - */ - break; - - - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlConvertToTargetType: Unknown Target type ID 0x%X Op %s DestType %s\n", - GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs), - WalkState->OpInfo->Name, - AcpiCmGetTypeName (DestinationType))); - - Status = AE_AML_INTERNAL; - } - - - /* - * Source-to-Target conversion semantics: - * - * If conversion to the target type cannot be performed, then simply - * overwrite the target with the new object and type. - */ - if (Status == AE_TYPE) - { - Status = AE_OK; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlConvertToInteger - * - * PARAMETERS: *ObjDesc - Object to be converted. Must be an - * Integer, Buffer, or String - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Convert an ACPI Object to an integer. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlConvertToInteger ( - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_OPERAND_OBJECT *RetDesc; - UINT32 Count; - char *Pointer; - ACPI_INTEGER Result; - UINT32 IntegerSize = sizeof (ACPI_INTEGER); - - - switch ((*ObjDesc)->Common.Type) - { - case ACPI_TYPE_INTEGER: - return (AE_OK); - - case ACPI_TYPE_STRING: - Pointer = (*ObjDesc)->String.Pointer; - Count = (*ObjDesc)->String.Length; - break; - - case ACPI_TYPE_BUFFER: - Pointer = (char *) (*ObjDesc)->Buffer.Pointer; - Count = (*ObjDesc)->Buffer.Length; - break; - - default: - return (AE_TYPE); - } - - /* - * Create a new integer - */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - return (AE_NO_MEMORY); - } - - - /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */ - - if (WalkState->MethodNode->Flags & ANOBJ_DATA_WIDTH_32) - { - /* - * We are running a method that exists in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper 32-bit field - */ - IntegerSize = sizeof (UINT32); - } - - - /* - * Convert the buffer/string to an integer. Note that both buffers and - * strings are treated as raw data - we don't convert ascii to hex for - * strings. - * - * There are two terminating conditions for the loop: - * 1) The size of an integer has been reached, or - * 2) The end of the buffer or string has been reached - */ - Result = 0; - - /* Transfer no more than an integer's worth of data */ - - if (Count > IntegerSize) - { - Count = IntegerSize; - } - - /* - * String conversion is different than Buffer conversion - */ - switch ((*ObjDesc)->Common.Type) - { - case ACPI_TYPE_STRING: - - /* TBD: Need to use 64-bit STRTOUL */ - - /* - * Convert string to an integer - * String must be hexadecimal as per the ACPI specification - */ - - Result = STRTOUL (Pointer, NULL, 16); - break; - - - case ACPI_TYPE_BUFFER: - - /* - * Buffer conversion - we simply grab enough raw data from the - * buffer to fill an integer - */ - for (i = 0; i < Count; i++) - { - /* - * Get next byte and shift it into the Result. - * Little endian is used, meaning that the first byte of the buffer - * is the LSB of the integer - */ - Result |= (((ACPI_INTEGER) Pointer[i]) << (i * 8)); - } - - break; - } - - /* Save the Result, delete original descriptor, store new descriptor */ - - RetDesc->Integer.Value = Result; - - if (WalkState->Opcode != AML_STORE_OP) - { - AcpiCmRemoveReference (*ObjDesc); - } - - *ObjDesc = RetDesc; - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlConvertToBuffer - * - * PARAMETERS: *ObjDesc - Object to be converted. Must be an - * Integer, Buffer, or String - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Convert an ACPI Object to an Buffer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlConvertToBuffer ( - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *RetDesc; - UINT32 i; - UINT32 IntegerSize = sizeof (ACPI_INTEGER); - UINT8 *NewBuf; - - - switch ((*ObjDesc)->Common.Type) - { - case ACPI_TYPE_INTEGER: - - /* - * Create a new Buffer - */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_BUFFER); - if (!RetDesc) - { - return (AE_NO_MEMORY); - } - - /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */ - - if (WalkState->MethodNode->Flags & ANOBJ_DATA_WIDTH_32) - { - /* - * We are running a method that exists in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper - * 32-bit field - */ - IntegerSize = sizeof (UINT32); - } - - /* Need enough space for one integers */ - - RetDesc->Buffer.Length = IntegerSize; - NewBuf = AcpiCmCallocate (IntegerSize); - if (!NewBuf) - { - REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - AcpiCmRemoveReference (RetDesc); - return (AE_NO_MEMORY); - } - - /* Copy the integer to the buffer */ - - for (i = 0; i < IntegerSize; i++) - { - NewBuf[i] = (UINT8) ((*ObjDesc)->Integer.Value >> (i * 8)); - } - RetDesc->Buffer.Pointer = NewBuf; - - /* Return the new buffer descriptor */ - - if (WalkState->Opcode != AML_STORE_OP) - { - AcpiCmRemoveReference (*ObjDesc); - } - *ObjDesc = RetDesc; - break; - - - case ACPI_TYPE_STRING: - break; - - - case ACPI_TYPE_BUFFER: - break; - - - default: - return (AE_TYPE); - break; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlConvertToString - * - * PARAMETERS: *ObjDesc - Object to be converted. Must be an - * Integer, Buffer, or String - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Convert an ACPI Object to a string - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlConvertToString ( - ACPI_OPERAND_OBJECT **ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *RetDesc; - UINT32 i; - UINT32 Index; - UINT32 IntegerSize = sizeof (ACPI_INTEGER); - UINT8 *NewBuf; - UINT8 *Pointer; - - - switch ((*ObjDesc)->Common.Type) - { - case ACPI_TYPE_INTEGER: - - /* - * Create a new String - */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); - if (!RetDesc) - { - return (AE_NO_MEMORY); - } - - /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */ - - if (WalkState->MethodNode->Flags & ANOBJ_DATA_WIDTH_32) - { - /* - * We are running a method that exists in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper - * 32-bit field - */ - IntegerSize = sizeof (UINT32); - } - - /* Need enough space for one ASCII integer plus null terminator */ - - RetDesc->String.Length = (IntegerSize * 2) + 1; - NewBuf = AcpiCmCallocate (RetDesc->String.Length); - if (!NewBuf) - { - REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - AcpiCmRemoveReference (RetDesc); - return (AE_NO_MEMORY); - } - - /* Copy the integer to the buffer */ - - for (i = 0; i < (IntegerSize * 2); i++) - { - NewBuf[i] = AcpiGbl_HexToAscii [((*ObjDesc)->Integer.Value >> (i * 4)) & 0xF]; - } - - /* Null terminate */ - - NewBuf [i] = 0; - RetDesc->Buffer.Pointer = NewBuf; - - /* Return the new buffer descriptor */ - - if (WalkState->Opcode != AML_STORE_OP) - { - AcpiCmRemoveReference (*ObjDesc); - } - *ObjDesc = RetDesc; - - return (AE_OK); - - - case ACPI_TYPE_BUFFER: - - if (((*ObjDesc)->Buffer.Length * 3) > ACPI_MAX_STRING_CONVERSION) - { - return (AE_AML_STRING_LIMIT); - } - - /* - * Create a new String - */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); - if (!RetDesc) - { - return (AE_NO_MEMORY); - } - - /* Need enough space for one ASCII integer plus null terminator */ - - RetDesc->String.Length = (*ObjDesc)->Buffer.Length * 3; - NewBuf = AcpiCmCallocate (RetDesc->String.Length + 1); - if (!NewBuf) - { - REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - AcpiCmRemoveReference (RetDesc); - return (AE_NO_MEMORY); - } - - /* - * Convert each byte of the buffer to two ASCII characters plus a space. - */ - Pointer = (*ObjDesc)->Buffer.Pointer; - Index = 0; - for (i = 0; i < (*ObjDesc)->Buffer.Length; i++) - { - NewBuf[Index + 0] = AcpiGbl_HexToAscii [Pointer[i] & 0x0F]; - NewBuf[Index + 1] = AcpiGbl_HexToAscii [(Pointer[i] >> 4) & 0x0F]; - NewBuf[Index + 2] = ' '; - Index += 3; - } - - /* Null terminate */ - - NewBuf [Index] = 0; - RetDesc->Buffer.Pointer = NewBuf; - - /* Return the new buffer descriptor */ - - if (WalkState->Opcode != AML_STORE_OP) - { - AcpiCmRemoveReference (*ObjDesc); - } - *ObjDesc = RetDesc; - break; - - - case ACPI_TYPE_STRING: - break; - - - default: - return (AE_TYPE); - break; - } - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amcreate.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amcreate.c deleted file mode 100644 index e02df3c..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amcreate.c +++ /dev/null @@ -1,882 +0,0 @@ -/****************************************************************************** - * - * Module Name: amcreate - Named object creation - * $Revision: 53 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMCREATE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acevents.h" -#include "acdispat.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amcreate") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecCreateField - * - * PARAMETERS: Opcode - The opcode to be executed - * Operands - List of operands for the opcode - * - * RETURN: Status - * - * DESCRIPTION: Execute CreateField operators: CreateBitFieldOp, - * CreateByteFieldOp, CreateWordFieldOp, CreateDWordFieldOp, - * CreateFieldOp (which define fields in buffers) - * - * ALLOCATION: Deletes CreateFieldOp's count operand descriptor - * - * - * ACPI SPECIFICATION REFERENCES: - * DefCreateBitField := CreateBitFieldOp SrcBuf BitIdx NameString - * DefCreateByteField := CreateByteFieldOp SrcBuf ByteIdx NameString - * DefCreateDWordField := CreateDWordFieldOp SrcBuf ByteIdx NameString - * DefCreateField := CreateFieldOp SrcBuf BitIdx NumBits NameString - * DefCreateWordField := CreateWordFieldOp SrcBuf ByteIdx NameString - * BitIndex := TermArg=>Integer - * ByteIndex := TermArg=>Integer - * NumBits := TermArg=>Integer - * SourceBuff := TermArg=>Buffer - * - ******************************************************************************/ - - -ACPI_STATUS -AcpiAmlExecCreateField ( - UINT8 *AmlPtr, - UINT32 AmlLength, - ACPI_NAMESPACE_NODE *Node, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *TmpDesc; - - - FUNCTION_TRACE ("AmlExecCreateField"); - - - /* Create the region descriptor */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_FIELD_UNIT); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Construct the field object */ - - ObjDesc->FieldUnit.Access = (UINT8) ACCESS_ANY_ACC; - ObjDesc->FieldUnit.LockRule = (UINT8) GLOCK_NEVER_LOCK; - ObjDesc->FieldUnit.UpdateRule = (UINT8) UPDATE_PRESERVE; - - /* - * Allocate a method object for this field unit - */ - - ObjDesc->FieldUnit.Extra = AcpiCmCreateInternalObject ( - INTERNAL_TYPE_EXTRA); - if (!ObjDesc->FieldUnit.Extra) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Remember location in AML stream of the field unit - * opcode and operands -- since the buffer and index - * operands must be evaluated. - */ - - ObjDesc->FieldUnit.Extra->Extra.Pcode = AmlPtr; - ObjDesc->FieldUnit.Extra->Extra.PcodeLength = AmlLength; - ObjDesc->FieldUnit.Node = Node; - - - /* - * This operation is supposed to cause the destination Name to refer - * to the defined FieldUnit -- it must not store the constructed - * FieldUnit object (or its current value) in some location that the - * Name may already be pointing to. So, if the Name currently contains - * a reference which would cause AcpiAmlExecStore() to perform an indirect - * store rather than setting the value of the Name itself, clobber that - * reference before calling AcpiAmlExecStore(). - */ - - /* Type of Name's existing value */ - - switch (AcpiNsGetType (Node)) - { - - case ACPI_TYPE_FIELD_UNIT: - - case INTERNAL_TYPE_ALIAS: - case INTERNAL_TYPE_BANK_FIELD: - case INTERNAL_TYPE_DEF_FIELD: - case INTERNAL_TYPE_INDEX_FIELD: - - TmpDesc = AcpiNsGetAttachedObject (Node); - if (TmpDesc) - { - /* - * There is an existing object here; delete it and zero out the - * object field within the Node - */ - - DUMP_PATHNAME (Node, - "AmlExecCreateField: Removing Current Reference", - TRACE_BFIELD, _COMPONENT); - - DUMP_ENTRY (Node, TRACE_BFIELD); - DUMP_STACK_ENTRY (TmpDesc); - - AcpiCmRemoveReference (TmpDesc); - AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Node, NULL, - ACPI_TYPE_ANY); - } - - /* Set the type to ANY (or the store below will fail) */ - - ((ACPI_NAMESPACE_NODE *) Node)->Type = ACPI_TYPE_ANY; - - break; - - - default: - - break; - } - - - /* Store constructed field descriptor in result location */ - - Status = AcpiAmlExecStore (ObjDesc, (ACPI_OPERAND_OBJECT *) Node, WalkState); - - /* - * If the field descriptor was not physically stored (or if a failure - * above), we must delete it - */ - if (ObjDesc->Common.ReferenceCount <= 1) - { - AcpiCmRemoveReference (ObjDesc); - } - - - return_ACPI_STATUS (AE_OK); - - -Cleanup: - - /* Delete region object and method subobject */ - - if (ObjDesc) - { - /* Remove deletes both objects! */ - - AcpiCmRemoveReference (ObjDesc); - ObjDesc = NULL; - } - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecCreateAlias - * - * PARAMETERS: Operands - List of operands for the opcode - * - * RETURN: Status - * - * DESCRIPTION: Create a new named alias - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecCreateAlias ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_NAMESPACE_NODE *SourceNode; - ACPI_NAMESPACE_NODE *AliasNode; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlExecCreateAlias"); - - - /* Get the source/alias operands (both NTEs) */ - - Status = AcpiDsObjStackPopObject ((ACPI_OPERAND_OBJECT **) &SourceNode, - WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Don't pop it, it gets removed in the calling routine - */ - - AliasNode = AcpiDsObjStackGetValue (0, WalkState); - - /* Add an additional reference to the object */ - - AcpiCmAddReference (SourceNode->Object); - - /* - * Attach the original source Node to the new Alias Node. - */ - Status = AcpiNsAttachObject (AliasNode, SourceNode->Object, - SourceNode->Type); - - - /* - * The new alias assumes the type of the source, but it points - * to the same object. The reference count of the object has two - * additional references to prevent deletion out from under either the - * source or the alias Node - */ - - /* Since both operands are NTEs, we don't need to delete them */ - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecCreateEvent - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Create a new event object - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecCreateEvent ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE ("AmlExecCreateEvent"); - - - BREAKPOINT3; - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_EVENT); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Create the actual OS semaphore */ - - /* TBD: [Investigate] should be created with 0 or 1 units? */ - - Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 1, - &ObjDesc->Event.Semaphore); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - goto Cleanup; - } - - /* Attach object to the Node */ - - Status = AcpiNsAttachObject (AcpiDsObjStackGetValue (0, WalkState), - ObjDesc, (UINT8) ACPI_TYPE_EVENT); - if (ACPI_FAILURE (Status)) - { - AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore); - AcpiCmRemoveReference (ObjDesc); - goto Cleanup; - } - - -Cleanup: - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecCreateMutex - * - * PARAMETERS: InterpreterMode - Current running mode (load1/Load2/Exec) - * Operands - List of operands for the opcode - * - * RETURN: Status - * - * DESCRIPTION: Create a new mutex object - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecCreateMutex ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *SyncDesc; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE_PTR ("AmlExecCreateMutex", WALK_OPERANDS); - - - /* Get the operand */ - - Status = AcpiDsObjStackPopObject (&SyncDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Attempt to allocate a new object */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_MUTEX); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Create the actual OS semaphore */ - - Status = AcpiOsCreateSemaphore (1, 1, &ObjDesc->Mutex.Semaphore); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - goto Cleanup; - } - - ObjDesc->Mutex.SyncLevel = (UINT8) SyncDesc->Integer.Value; - - /* ObjDesc was on the stack top, and the name is below it */ - - Status = AcpiNsAttachObject (AcpiDsObjStackGetValue (0, WalkState), - ObjDesc, (UINT8) ACPI_TYPE_MUTEX); - if (ACPI_FAILURE (Status)) - { - AcpiOsDeleteSemaphore (ObjDesc->Mutex.Semaphore); - AcpiCmRemoveReference (ObjDesc); - goto Cleanup; - } - - -Cleanup: - - /* Always delete the operand */ - - AcpiCmRemoveReference (SyncDesc); - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecCreateRegion - * - * PARAMETERS: AmlPtr - Pointer to the region declaration AML - * AmlLength - Max length of the declaration AML - * Operands - List of operands for the opcode - * InterpreterMode - Load1/Load2/Execute - * - * RETURN: Status - * - * DESCRIPTION: Create a new operation region object - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecCreateRegion ( - UINT8 *AmlPtr, - UINT32 AmlLength, - UINT8 RegionSpace, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - - - FUNCTION_TRACE ("AmlExecCreateRegion"); - - - /* - * Space ID must be one of the predefined IDs, or in the user-defined - * range - */ - if ((RegionSpace >= NUM_REGION_TYPES) && - (RegionSpace < USER_REGION_BEGIN)) - { - REPORT_ERROR (("Invalid AddressSpace type %X\n", RegionSpace)); - return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); - } - - DEBUG_PRINT (TRACE_LOAD, ("AmlExecCreateRegion: Region Type - %s (%X)\n", - AcpiCmGetRegionName (RegionSpace), RegionSpace)); - - - /* Get the Node from the object stack */ - - Node = (ACPI_NAMESPACE_NODE *) AcpiDsObjStackGetValue (0, WalkState); - - /* Create the region descriptor */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_REGION); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Allocate a method object for this region. - */ - - ObjDesc->Region.Extra = AcpiCmCreateInternalObject ( - INTERNAL_TYPE_EXTRA); - if (!ObjDesc->Region.Extra) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Remember location in AML stream of address & length - * operands since they need to be evaluated at run time. - */ - - ObjDesc->Region.Extra->Extra.Pcode = AmlPtr; - ObjDesc->Region.Extra->Extra.PcodeLength = AmlLength; - - /* Init the region from the operands */ - - ObjDesc->Region.SpaceId = RegionSpace; - ObjDesc->Region.Address = 0; - ObjDesc->Region.Length = 0; - - - /* Install the new region object in the parent Node */ - - ObjDesc->Region.Node = Node; - - Status = AcpiNsAttachObject (Node, ObjDesc, - (UINT8) ACPI_TYPE_REGION); - - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * If we have a valid region, initialize it - * Namespace is NOT locked at this point. - */ - - Status = AcpiEvInitializeRegion (ObjDesc, FALSE); - - if (ACPI_FAILURE (Status)) - { - /* - * If AE_NOT_EXIST is returned, it is not fatal - * because many regions get created before a handler - * is installed for said region. - */ - if (AE_NOT_EXIST == Status) - { - Status = AE_OK; - } - } - -Cleanup: - - if (ACPI_FAILURE (Status)) - { - /* Delete region object and method subobject */ - - if (ObjDesc) - { - /* Remove deletes both objects! */ - - AcpiCmRemoveReference (ObjDesc); - ObjDesc = NULL; - } - } - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecCreateProcessor - * - * PARAMETERS: Op - Op containing the Processor definition and - * args - * ProcessorNTE - Node for the containing Node - * - * RETURN: Status - * - * DESCRIPTION: Create a new processor object and populate the fields - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecCreateProcessor ( - ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE ProcessorNTE) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE_PTR ("AmlExecCreateProcessor", Op); - - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_PROCESSOR); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - return_ACPI_STATUS (Status); - } - - /* Install the new processor object in the parent Node */ - - Status = AcpiNsAttachObject (ProcessorNTE, ObjDesc, - (UINT8) ACPI_TYPE_PROCESSOR); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS(Status); - } - - Arg = Op->Value.Arg; - - /* check existence */ - - if (!Arg) - { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); - } - - /* First arg is the Processor ID */ - - ObjDesc->Processor.ProcId = (UINT8) Arg->Value.Integer; - - /* Move to next arg and check existence */ - - Arg = Arg->Next; - if (!Arg) - { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); - } - - /* Second arg is the PBlock Address */ - - ObjDesc->Processor.Address = (ACPI_IO_ADDRESS) Arg->Value.Integer; - - /* Move to next arg and check existence */ - - Arg = Arg->Next; - if (!Arg) - { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); - } - - /* Third arg is the PBlock Length */ - - ObjDesc->Processor.Length = (UINT8) Arg->Value.Integer; - - return_ACPI_STATUS (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecCreatePowerResource - * - * PARAMETERS: Op - Op containing the PowerResource definition - * and args - * PowerResNTE - Node for the containing Node - * - * RETURN: Status - * - * DESCRIPTION: Create a new PowerResource object and populate the fields - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecCreatePowerResource ( - ACPI_PARSE_OBJECT *Op, - ACPI_HANDLE PowerResNTE) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE_PTR ("AmlExecCreatePowerResource", Op); - - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_POWER); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - return_ACPI_STATUS (Status); - } - - /* Install the new power resource object in the parent Node */ - - Status = AcpiNsAttachObject (PowerResNTE, ObjDesc, - (UINT8) ACPI_TYPE_POWER); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS(Status); - } - - Arg = Op->Value.Arg; - - /* check existence */ - - if (!Arg) - { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); - } - - /* First arg is the SystemLevel */ - - ObjDesc->PowerResource.SystemLevel = (UINT8) Arg->Value.Integer; - - /* Move to next arg and check existence */ - - Arg = Arg->Next; - if (!Arg) - { - Status = AE_AML_NO_OPERAND; - return_ACPI_STATUS (Status); - } - - /* Second arg is the PBlock Address */ - - ObjDesc->PowerResource.ResourceOrder = (UINT16) Arg->Value.Integer; - - return_ACPI_STATUS (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlExecCreateMethod - * - * PARAMETERS: AmlPtr - First byte of the method's AML - * AmlLength - AML byte count for this method - * MethodFlags - AML method flag byte - * Method - Method Node - * - * RETURN: Status - * - * DESCRIPTION: Create a new method object - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlExecCreateMethod ( - UINT8 *AmlPtr, - UINT32 AmlLength, - UINT32 MethodFlags, - ACPI_HANDLE Method) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE_PTR ("AmlExecCreateMethod", Method); - - - /* Create a new method object */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_METHOD); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Get the method's AML pointer/length from the Op */ - - ObjDesc->Method.Pcode = AmlPtr; - ObjDesc->Method.PcodeLength = AmlLength; - - /* - * First argument is the Method Flags (contains parameter count for the - * method) - */ - - ObjDesc->Method.MethodFlags = (UINT8) MethodFlags; - ObjDesc->Method.ParamCount = (UINT8) (MethodFlags & - METHOD_FLAGS_ARG_COUNT); - - /* - * Get the concurrency count. If required, a semaphore will be - * created for this method when it is parsed. - * - * TBD: [Future] for APCI 2.0, there will be a SyncLevel value, not - * just a flag - * Concurrency = SyncLevel + 1;. - */ - - if (MethodFlags & METHOD_FLAGS_SERIALIZED) - { - ObjDesc->Method.Concurrency = 1; - } - - else - { - ObjDesc->Method.Concurrency = INFINITE_CONCURRENCY; - } - - /* Attach the new object to the method Node */ - - Status = AcpiNsAttachObject (Method, ObjDesc, (UINT8) ACPI_TYPE_METHOD); - if (ACPI_FAILURE (Status)) - { - AcpiCmDeleteObjectDesc (ObjDesc); - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amdump.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amdump.c deleted file mode 100644 index 37f67f8..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amdump.c +++ /dev/null @@ -1,984 +0,0 @@ -/****************************************************************************** - * - * Module Name: amdump - Interpreter debug output routines - * $Revision: 100 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMDUMP_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "actables.h" - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amdump") - - -/* - * The following routines are used for debug output only - */ - -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) - -/***************************************************************************** - * - * FUNCTION: AcpiAmlShowHexValue - * - * PARAMETERS: ByteCount - Number of bytes to print (1, 2, or 4) - * *AmlPtr - Address in AML stream of bytes to print - * InterpreterMode - Current running mode (load1/Load2/Exec) - * LeadSpace - # of spaces to print ahead of value - * 0 => none ahead but one behind - * - * DESCRIPTION: Print ByteCount byte(s) starting at AcpiAmlPtr as a single - * value, in hex. If ByteCount > 1 or the value printed is > 9, also - * print in decimal. - * - ****************************************************************************/ - -void -AcpiAmlShowHexValue ( - UINT32 ByteCount, - UINT8 *AmlPtr, - UINT32 LeadSpace) -{ - UINT32 Value; /* Value retrieved from AML stream */ - UINT32 ShowDecimalValue; - UINT32 Length; /* Length of printed field */ - UINT8 *CurrentAmlPtr = NULL; /* Pointer to current byte of AML value */ - - - FUNCTION_TRACE ("AmlShowHexValue"); - - - if (!AmlPtr) - { - REPORT_ERROR (("AmlShowHexValue: null pointer\n")); - } - - /* - * AML numbers are always stored little-endian, - * even if the processor is big-endian. - */ - for (CurrentAmlPtr = AmlPtr + ByteCount, - Value = 0; - CurrentAmlPtr > AmlPtr; ) - { - Value = (Value << 8) + (UINT32)* --CurrentAmlPtr; - } - - Length = LeadSpace * ByteCount + 2; - if (ByteCount > 1) - { - Length += (ByteCount - 1); - } - - ShowDecimalValue = (ByteCount > 1 || Value > 9); - if (ShowDecimalValue) - { - Length += 3 + AcpiAmlDigitsNeeded (Value, 10); - } - - DEBUG_PRINT (TRACE_LOAD, ("")); - - for (Length = LeadSpace; Length; --Length ) - { - DEBUG_PRINT_RAW (TRACE_LOAD, (" ")); - } - - while (ByteCount--) - { - DEBUG_PRINT_RAW (TRACE_LOAD, ("%02x", *AmlPtr++)); - - if (ByteCount) - { - DEBUG_PRINT_RAW (TRACE_LOAD, (" ")); - } - } - - if (ShowDecimalValue) - { - DEBUG_PRINT_RAW (TRACE_LOAD, (" [%ld]", Value)); - } - - if (0 == LeadSpace) - { - DEBUG_PRINT_RAW (TRACE_LOAD, (" ")); - } - - DEBUG_PRINT_RAW (TRACE_LOAD, ("\n")); - return_VOID; -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlDumpOperand - * - * PARAMETERS: *EntryDesc - Pointer to entry to be dumped - * - * RETURN: Status - * - * DESCRIPTION: Dump a stack entry - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlDumpOperand ( - ACPI_OPERAND_OBJECT *EntryDesc) -{ - UINT8 *Buf = NULL; - UINT32 Length; - UINT32 i; - - - if (!EntryDesc) - { - /* - * This usually indicates that something serious is wrong -- - * since most (if not all) - * code that dumps the stack expects something to be there! - */ - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: *** Possible error: Null stack entry ptr\n")); - return (AE_OK); - } - - if (VALID_DESCRIPTOR_TYPE (EntryDesc, ACPI_DESC_TYPE_NAMED)) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: Node: \n")); - DUMP_ENTRY (EntryDesc, ACPI_INFO); - return (AE_OK); - } - - if (AcpiTbSystemTablePointer (EntryDesc)) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: %p is a Pcode pointer\n", - EntryDesc)); - return (AE_OK); - } - - if (!VALID_DESCRIPTOR_TYPE (EntryDesc, ACPI_DESC_TYPE_INTERNAL)) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlDumpOperand: %p Not a local object \n", EntryDesc)); - DUMP_BUFFER (EntryDesc, sizeof (ACPI_OPERAND_OBJECT)); - return (AE_OK); - } - - /* EntryDesc is a valid object */ - - DEBUG_PRINT (ACPI_INFO, ("AmlDumpOperand: %p ", EntryDesc)); - - switch (EntryDesc->Common.Type) - { - case INTERNAL_TYPE_REFERENCE: - - switch (EntryDesc->Reference.OpCode) - { - case AML_ZERO_OP: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference: Zero\n")); - break; - - - case AML_ONE_OP: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference: One\n")); - break; - - - case AML_ONES_OP: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference: Ones\n")); - break; - - - case AML_DEBUG_OP: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference: Debug\n")); - break; - - - case AML_NAME_OP: - - DUMP_PATHNAME (EntryDesc->Reference.Object, "Reference: Name: ", - ACPI_INFO, _COMPONENT); - DUMP_ENTRY (EntryDesc->Reference.Object, ACPI_INFO); - break; - - - case AML_INDEX_OP: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference: Index %p\n", - EntryDesc->Reference.Object)); - break; - - - case AML_ARG_OP: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference: Arg%d", - EntryDesc->Reference.Offset)); - - if (ACPI_TYPE_INTEGER == EntryDesc->Common.Type) - { - /* Value is a Number */ - - DEBUG_PRINT_RAW (ACPI_INFO, (" value is [%ld]", - EntryDesc->Integer.Value)); - } - - DEBUG_PRINT_RAW (ACPI_INFO, ("\n")); - break; - - - case AML_LOCAL_OP: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference: Local%d", - EntryDesc->Reference.Offset)); - - if (ACPI_TYPE_INTEGER == EntryDesc->Common.Type) - { - - /* Value is a Number */ - - DEBUG_PRINT_RAW (ACPI_INFO, (" value is [%ld]", - EntryDesc->Integer.Value)); - } - - DEBUG_PRINT_RAW (ACPI_INFO, ("\n")); - break; - - - case AML_NAMEPATH_OP: - DEBUG_PRINT_RAW (ACPI_INFO, ("Reference.Node->Name %x\n", - EntryDesc->Reference.Node->Name)); - break; - - default: - - /* unknown opcode */ - - DEBUG_PRINT_RAW (ACPI_INFO, ("Unknown opcode=%X\n", - EntryDesc->Reference.OpCode)); - break; - - } - - break; - - - case ACPI_TYPE_BUFFER: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Buffer len %X @ %p \n", - EntryDesc->Buffer.Length, - EntryDesc->Buffer.Pointer)); - - Length = EntryDesc->Buffer.Length; - - if (Length > 64) - { - Length = 64; - } - - /* Debug only -- dump the buffer contents */ - - if (EntryDesc->Buffer.Pointer) - { - DEBUG_PRINT_RAW (ACPI_INFO, ("Buffer Contents: ")); - - for (Buf = EntryDesc->Buffer.Pointer; Length--; ++Buf) - { - DEBUG_PRINT_RAW (ACPI_INFO, - (Length ? " %02x" : " %02x", *Buf)); - } - DEBUG_PRINT_RAW (ACPI_INFO,("\n")); - } - - break; - - - case ACPI_TYPE_INTEGER: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Number %lX\n", - EntryDesc->Integer.Value)); - break; - - - case INTERNAL_TYPE_IF: - - DEBUG_PRINT_RAW (ACPI_INFO, ("If [Number] %lX\n", - EntryDesc->Integer.Value)); - break; - - - case INTERNAL_TYPE_WHILE: - - DEBUG_PRINT_RAW (ACPI_INFO, ("While [Number] %lX\n", - EntryDesc->Integer.Value)); - break; - - - case ACPI_TYPE_PACKAGE: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Package count %X @ %p\n", - EntryDesc->Package.Count, EntryDesc->Package.Elements)); - - - /* - * If elements exist, package vector pointer is valid, - * and debug_level exceeds 1, dump package's elements. - */ - if (EntryDesc->Package.Count && - EntryDesc->Package.Elements && - GetDebugLevel () > 1) - { - ACPI_OPERAND_OBJECT**Element; - UINT16 ElementIndex; - - for (ElementIndex = 0, Element = EntryDesc->Package.Elements; - ElementIndex < EntryDesc->Package.Count; - ++ElementIndex, ++Element) - { - AcpiAmlDumpOperand (*Element); - } - } - - DEBUG_PRINT_RAW (ACPI_INFO, ("\n")); - - break; - - - case ACPI_TYPE_REGION: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Region %s (%X)", - AcpiCmGetRegionName (EntryDesc->Region.SpaceId), - EntryDesc->Region.SpaceId)); - - /* - * If the address and length have not been evaluated, - * don't print them. - */ - if (!(EntryDesc->Region.Flags & AOPOBJ_DATA_VALID)) - { - DEBUG_PRINT_RAW (ACPI_INFO, ("\n")); - } - else - { - DEBUG_PRINT_RAW (ACPI_INFO, (" base %p Length %X\n", - EntryDesc->Region.Address, EntryDesc->Region.Length)); - } - break; - - - case ACPI_TYPE_STRING: - - DEBUG_PRINT_RAW (ACPI_INFO, ("String length %X @ %p\n\n", - EntryDesc->String.Length, EntryDesc->String.Pointer)); - - for (i=0; i < EntryDesc->String.Length; i++) - { - DEBUG_PRINT_RAW (ACPI_INFO, ("%c", - EntryDesc->String.Pointer[i])); - } - - DEBUG_PRINT_RAW (ACPI_INFO, ("\n\n")); - break; - - - case INTERNAL_TYPE_BANK_FIELD: - - DEBUG_PRINT_RAW (ACPI_INFO, ("BankField\n")); - break; - - - case INTERNAL_TYPE_DEF_FIELD: - - DEBUG_PRINT_RAW (ACPI_INFO, - ("DefField: bits=%X acc=%X lock=%X update=%X at byte=%lX bit=%X of below:\n", - EntryDesc->Field.Length, EntryDesc->Field.Access, - EntryDesc->Field.LockRule, EntryDesc->Field.UpdateRule, - EntryDesc->Field.Offset, EntryDesc->Field.BitOffset)); - DUMP_STACK_ENTRY (EntryDesc->Field.Container); - break; - - - case INTERNAL_TYPE_INDEX_FIELD: - - DEBUG_PRINT_RAW (ACPI_INFO, ("IndexField\n")); - break; - - - case ACPI_TYPE_FIELD_UNIT: - - DEBUG_PRINT_RAW (ACPI_INFO, - ("FieldUnit: %X bits acc %X lock %X update %X at byte %lX bit %X of \n", - EntryDesc->FieldUnit.Length, EntryDesc->FieldUnit.Access, - EntryDesc->FieldUnit.LockRule, EntryDesc->FieldUnit.UpdateRule, - EntryDesc->FieldUnit.Offset, EntryDesc->FieldUnit.BitOffset)); - - if (!EntryDesc->FieldUnit.Container) - { - DEBUG_PRINT (ACPI_INFO, ("*NULL* \n")); - } - - else if (ACPI_TYPE_BUFFER != - EntryDesc->FieldUnit.Container->Common.Type) - { - DEBUG_PRINT_RAW (ACPI_INFO, ("*not a Buffer* \n")); - } - - else - { - DUMP_STACK_ENTRY (EntryDesc->FieldUnit.Container); - } - - break; - - - case ACPI_TYPE_EVENT: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Event\n")); - break; - - - case ACPI_TYPE_METHOD: - - DEBUG_PRINT_RAW (ACPI_INFO, - ("Method(%X) @ %p:%lX\n", - EntryDesc->Method.ParamCount, - EntryDesc->Method.Pcode, EntryDesc->Method.PcodeLength)); - break; - - - case ACPI_TYPE_MUTEX: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Mutex\n")); - break; - - - case ACPI_TYPE_DEVICE: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Device\n")); - break; - - - case ACPI_TYPE_POWER: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Power\n")); - break; - - - case ACPI_TYPE_PROCESSOR: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Processor\n")); - break; - - - case ACPI_TYPE_THERMAL: - - DEBUG_PRINT_RAW (ACPI_INFO, ("Thermal\n")); - break; - - - default: - /* unknown EntryDesc->Common.Type value */ - - DEBUG_PRINT_RAW (ACPI_INFO, ("Unknown Type %X\n", - EntryDesc->Common.Type)); - - /* Back up to previous entry */ - - EntryDesc--; - - - /* TBD: [Restructure] Change to use dump object routine !! */ - /* What is all of this?? */ - - DUMP_BUFFER (EntryDesc, sizeof (ACPI_OPERAND_OBJECT)); - DUMP_BUFFER (++EntryDesc, sizeof (ACPI_OPERAND_OBJECT)); - DUMP_BUFFER (++EntryDesc, sizeof (ACPI_OPERAND_OBJECT)); - break; - - } - - return (AE_OK); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlDumpOperands - * - * PARAMETERS: InterpreterMode - Load or Exec - * *Ident - Identification - * NumLevels - # of stack entries to dump above line - * *Note - Output notation - * - * DESCRIPTION: Dump the object stack - * - ****************************************************************************/ - -void -AcpiAmlDumpOperands ( - ACPI_OPERAND_OBJECT **Operands, - OPERATING_MODE InterpreterMode, - NATIVE_CHAR *Ident, - UINT32 NumLevels, - NATIVE_CHAR *Note, - NATIVE_CHAR *ModuleName, - UINT32 LineNumber) -{ - NATIVE_UINT i; - ACPI_OPERAND_OBJECT **EntryDesc; - - - if (!Ident) - { - Ident = "?"; - } - - if (!Note) - { - Note = "?"; - } - - - DEBUG_PRINT (ACPI_INFO, - ("************* AcpiAmlDumpOperands Mode=%X ******************\n", - InterpreterMode)); - DEBUG_PRINT (ACPI_INFO, - ("From %12s(%d) %s: %s\n", ModuleName, LineNumber, Ident, Note)); - - if (NumLevels == 0) - NumLevels = 1; - - /* Dump the stack starting at the top, working down */ - - for (i = 0; NumLevels > 0; i--, NumLevels--) - { - EntryDesc = &Operands[i]; - - if (ACPI_FAILURE (AcpiAmlDumpOperand (*EntryDesc))) - { - break; - } - } - - return; -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlDumpNode - * - * PARAMETERS: *Node - Descriptor to dump - * Flags - Force display - * - * DESCRIPTION: Dumps the members of the given.Node - * - ****************************************************************************/ - -void -AcpiAmlDumpNode ( - ACPI_NAMESPACE_NODE *Node, - UINT32 Flags) -{ - - if (!Flags) - { - if (!((TRACE_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) - { - return; - } - } - - - AcpiOsPrintf ("%20s : %4.4s\n", "Name", &Node->Name); - AcpiOsPrintf ("%20s : %s\n", "Type", AcpiCmGetTypeName (Node->Type)); - AcpiOsPrintf ("%20s : %X\n", "Flags", Node->Flags); - AcpiOsPrintf ("%20s : %X\n", "Owner Id", Node->OwnerId); - AcpiOsPrintf ("%20s : %X\n", "Reference Count", Node->ReferenceCount); - AcpiOsPrintf ("%20s : %p\n", "Attached Object", Node->Object); - AcpiOsPrintf ("%20s : %p\n", "ChildList", Node->Child); - AcpiOsPrintf ("%20s : %p\n", "NextPeer", Node->Peer); - AcpiOsPrintf ("%20s : %p\n", "Parent", AcpiNsGetParentObject (Node)); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlDumpObjectDescriptor - * - * PARAMETERS: *Object - Descriptor to dump - * Flags - Force display - * - * DESCRIPTION: Dumps the members of the object descriptor given. - * - ****************************************************************************/ - -void -AcpiAmlDumpObjectDescriptor ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 Flags) -{ - FUNCTION_TRACE ("AmlDumpObjectDescriptor"); - - - if (!Flags) - { - if (!((TRACE_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) - { - return; - } - } - - if (!(VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL))) - { - AcpiOsPrintf ("%p is not a valid ACPI object\n", ObjDesc); - return; - } - - /* Common Fields */ - - AcpiOsPrintf ("%20s : %X\n", "Reference Count", ObjDesc->Common.ReferenceCount); - AcpiOsPrintf ("%20s : %X\n", "Flags", ObjDesc->Common.Flags); - - /* Object-specific Fields */ - - switch (ObjDesc->Common.Type) - { - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Number"); - AcpiOsPrintf ("%20s : %X\n", "Value", ObjDesc->Integer.Value); - break; - - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("%20s : %s\n", "Type", "String"); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->String.Length); - AcpiOsPrintf ("%20s : %p\n", "Pointer", ObjDesc->String.Pointer); - break; - - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Buffer"); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->Buffer.Length); - AcpiOsPrintf ("%20s : %p\n", "Pointer", ObjDesc->Buffer.Pointer); - break; - - - case ACPI_TYPE_PACKAGE: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Package"); - AcpiOsPrintf ("%20s : %X\n", "Count", ObjDesc->Package.Count); - AcpiOsPrintf ("%20s : %p\n", "Elements", ObjDesc->Package.Elements); - AcpiOsPrintf ("%20s : %p\n", "NextElement", ObjDesc->Package.NextElement); - break; - - - case ACPI_TYPE_FIELD_UNIT: - - AcpiOsPrintf ("%20s : %s\n", "Type", "FieldUnit"); - AcpiOsPrintf ("%20s : %X\n", "Access", ObjDesc->FieldUnit.Access); - AcpiOsPrintf ("%20s : %X\n", "LockRule", ObjDesc->FieldUnit.LockRule); - AcpiOsPrintf ("%20s : %X\n", "UpdateRule", ObjDesc->FieldUnit.UpdateRule); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->FieldUnit.Length); - AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->FieldUnit.BitOffset); - AcpiOsPrintf ("%20s : %X\n", "Offset", ObjDesc->FieldUnit.Offset); - AcpiOsPrintf ("%20s : %p\n", "Container", ObjDesc->FieldUnit.Container); - break; - - - case ACPI_TYPE_DEVICE: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Device"); - AcpiOsPrintf ("%20s : %p\n", "AddrHandler", ObjDesc->Device.AddrHandler); - AcpiOsPrintf ("%20s : %p\n", "SysHandler", ObjDesc->Device.SysHandler); - AcpiOsPrintf ("%20s : %p\n", "DrvHandler", ObjDesc->Device.DrvHandler); - break; - - case ACPI_TYPE_EVENT: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Event"); - AcpiOsPrintf ("%20s : %X\n", "Semaphore", ObjDesc->Event.Semaphore); - break; - - - case ACPI_TYPE_METHOD: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Method"); - AcpiOsPrintf ("%20s : %X\n", "ParamCount", ObjDesc->Method.ParamCount); - AcpiOsPrintf ("%20s : %X\n", "Concurrency", ObjDesc->Method.Concurrency); - AcpiOsPrintf ("%20s : %p\n", "Semaphore", ObjDesc->Method.Semaphore); - AcpiOsPrintf ("%20s : %X\n", "PcodeLength", ObjDesc->Method.PcodeLength); - AcpiOsPrintf ("%20s : %X\n", "Pcode", ObjDesc->Method.Pcode); - break; - - - case ACPI_TYPE_MUTEX: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Mutex"); - AcpiOsPrintf ("%20s : %X\n", "SyncLevel", ObjDesc->Mutex.SyncLevel); - AcpiOsPrintf ("%20s : %p\n", "Semaphore", ObjDesc->Mutex.Semaphore); - break; - - - case ACPI_TYPE_REGION: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Region"); - AcpiOsPrintf ("%20s : %X\n", "SpaceId", ObjDesc->Region.SpaceId); - AcpiOsPrintf ("%20s : %X\n", "Flags", ObjDesc->Region.Flags); - AcpiOsPrintf ("%20s : %X\n", "Address", ObjDesc->Region.Address); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->Region.Length); - AcpiOsPrintf ("%20s : %p\n", "AddrHandler", ObjDesc->Region.AddrHandler); - AcpiOsPrintf ("%20s : %p\n", "Next", ObjDesc->Region.Next); - break; - - - case ACPI_TYPE_POWER: - - AcpiOsPrintf ("%20s : %s\n", "Type", "PowerResource"); - AcpiOsPrintf ("%20s : %X\n", "SystemLevel", ObjDesc->PowerResource.SystemLevel); - AcpiOsPrintf ("%20s : %X\n", "ResourceOrder", ObjDesc->PowerResource.ResourceOrder); - AcpiOsPrintf ("%20s : %p\n", "SysHandler", ObjDesc->PowerResource.SysHandler); - AcpiOsPrintf ("%20s : %p\n", "DrvHandler", ObjDesc->PowerResource.DrvHandler); - break; - - - case ACPI_TYPE_PROCESSOR: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Processor"); - AcpiOsPrintf ("%20s : %X\n", "Processor ID", ObjDesc->Processor.ProcId); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->Processor.Length); - AcpiOsPrintf ("%20s : %X\n", "Address", ObjDesc->Processor.Address); - AcpiOsPrintf ("%20s : %p\n", "SysHandler", ObjDesc->Processor.SysHandler); - AcpiOsPrintf ("%20s : %p\n", "DrvHandler", ObjDesc->Processor.DrvHandler); - AcpiOsPrintf ("%20s : %p\n", "AddrHandler", ObjDesc->Processor.AddrHandler); - break; - - - case ACPI_TYPE_THERMAL: - - AcpiOsPrintf ("%20s : %s\n", "Type", "ThermalZone"); - AcpiOsPrintf ("%20s : %p\n", "SysHandler", ObjDesc->ThermalZone.SysHandler); - AcpiOsPrintf ("%20s : %p\n", "DrvHandler", ObjDesc->ThermalZone.DrvHandler); - AcpiOsPrintf ("%20s : %p\n", "AddrHandler", ObjDesc->ThermalZone.AddrHandler); - break; - - case INTERNAL_TYPE_BANK_FIELD: - - AcpiOsPrintf ("%20s : %s\n", "Type", "BankField"); - AcpiOsPrintf ("%20s : %X\n", "Access", ObjDesc->BankField.Access); - AcpiOsPrintf ("%20s : %X\n", "LockRule", ObjDesc->BankField.LockRule); - AcpiOsPrintf ("%20s : %X\n", "UpdateRule", ObjDesc->BankField.UpdateRule); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->BankField.Length); - AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->BankField.BitOffset); - AcpiOsPrintf ("%20s : %X\n", "Offset", ObjDesc->BankField.Offset); - AcpiOsPrintf ("%20s : %X\n", "Value", ObjDesc->BankField.Value); - AcpiOsPrintf ("%20s : %p\n", "Container", ObjDesc->BankField.Container); - AcpiOsPrintf ("%20s : %X\n", "BankSelect", ObjDesc->BankField.BankSelect); - break; - - - case INTERNAL_TYPE_INDEX_FIELD: - - AcpiOsPrintf ("%20s : %s\n", "Type", "IndexField"); - AcpiOsPrintf ("%20s : %X\n", "Access", ObjDesc->IndexField.Access); - AcpiOsPrintf ("%20s : %X\n", "LockRule", ObjDesc->IndexField.LockRule); - AcpiOsPrintf ("%20s : %X\n", "UpdateRule", ObjDesc->IndexField.UpdateRule); - AcpiOsPrintf ("%20s : %X\n", "Length", ObjDesc->IndexField.Length); - AcpiOsPrintf ("%20s : %X\n", "BitOffset", ObjDesc->IndexField.BitOffset); - AcpiOsPrintf ("%20s : %X\n", "Value", ObjDesc->IndexField.Value); - AcpiOsPrintf ("%20s : %X\n", "Index", ObjDesc->IndexField.Index); - AcpiOsPrintf ("%20s : %X\n", "Data", ObjDesc->IndexField.Data); - break; - - - case INTERNAL_TYPE_REFERENCE: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Reference"); - AcpiOsPrintf ("%20s : %X\n", "TargetType", ObjDesc->Reference.TargetType); - AcpiOsPrintf ("%20s : %X\n", "OpCode", ObjDesc->Reference.OpCode); - AcpiOsPrintf ("%20s : %X\n", "Offset", ObjDesc->Reference.Offset); - AcpiOsPrintf ("%20s : %p\n", "ObjDesc", ObjDesc->Reference.Object); - AcpiOsPrintf ("%20s : %p\n", "Node", ObjDesc->Reference.Node); - AcpiOsPrintf ("%20s : %p\n", "Where", ObjDesc->Reference.Where); - break; - - - case INTERNAL_TYPE_ADDRESS_HANDLER: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Address Handler"); - AcpiOsPrintf ("%20s : %X\n", "SpaceId", ObjDesc->AddrHandler.SpaceId); - AcpiOsPrintf ("%20s : %p\n", "Next", ObjDesc->AddrHandler.Next); - AcpiOsPrintf ("%20s : %p\n", "RegionList", ObjDesc->AddrHandler.RegionList); - AcpiOsPrintf ("%20s : %p\n", "Node", ObjDesc->AddrHandler.Node); - AcpiOsPrintf ("%20s : %p\n", "Handler", ObjDesc->AddrHandler.Handler); - AcpiOsPrintf ("%20s : %p\n", "Context", ObjDesc->AddrHandler.Context); - break; - - - case INTERNAL_TYPE_NOTIFY: - - AcpiOsPrintf ("%20s : %s\n", "Type", "Notify Handler"); - AcpiOsPrintf ("%20s : %p\n", "Node", ObjDesc->NotifyHandler.Node); - AcpiOsPrintf ("%20s : %p\n", "Handler", ObjDesc->NotifyHandler.Handler); - AcpiOsPrintf ("%20s : %p\n", "Context", ObjDesc->NotifyHandler.Context); - break; - - - case INTERNAL_TYPE_DEF_FIELD: - - AcpiOsPrintf ("%20s : %p\n", "Granularity", ObjDesc->Field.Granularity); - AcpiOsPrintf ("%20s : %p\n", "Length", ObjDesc->Field.Length); - AcpiOsPrintf ("%20s : %p\n", "Offset", ObjDesc->Field.Offset); - AcpiOsPrintf ("%20s : %p\n", "BitOffset", ObjDesc->Field.BitOffset); - AcpiOsPrintf ("%20s : %p\n", "Container", ObjDesc->Field.Container); - break; - - - case INTERNAL_TYPE_ALIAS: - case INTERNAL_TYPE_DEF_FIELD_DEFN: - case INTERNAL_TYPE_BANK_FIELD_DEFN: - case INTERNAL_TYPE_INDEX_FIELD_DEFN: - case INTERNAL_TYPE_IF: - case INTERNAL_TYPE_ELSE: - case INTERNAL_TYPE_WHILE: - case INTERNAL_TYPE_SCOPE: - case INTERNAL_TYPE_DEF_ANY: - - AcpiOsPrintf ("*** Structure display not implemented for type %X! ***\n", - ObjDesc->Common.Type); - break; - - - default: - - AcpiOsPrintf ("*** Cannot display unknown type %X! ***\n", ObjDesc->Common.Type); - break; - } - - return_VOID; -} - -#endif - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amdyadic.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amdyadic.c deleted file mode 100644 index c80d929..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amdyadic.c +++ /dev/null @@ -1,1048 +0,0 @@ -/****************************************************************************** - * - * Module Name: amdyadic - ACPI AML (p-code) execution for dyadic operators - * $Revision: 71 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __AMDYADIC_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "acevents.h" -#include "amlcode.h" -#include "acdispat.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amdyadic") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlDoConcatenate - * - * PARAMETERS: *ObjDesc - Object to be converted. Must be an - * Integer, Buffer, or String - * - * RETURN: Status - * - * DESCRIPTION: Concatenate two objects OF THE SAME TYPE. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlDoConcatenate ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *ObjDesc2, - ACPI_OPERAND_OBJECT **ActualRetDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - UINT32 i; - ACPI_INTEGER ThisInteger; - ACPI_OPERAND_OBJECT *RetDesc; - NATIVE_CHAR *NewBuf; - UINT32 IntegerSize = sizeof (ACPI_INTEGER); - - - /* - * There are three cases to handle: - * 1) Two Integers concatenated to produce a buffer - * 2) Two Strings concatenated to produce a string - * 3) Two Buffers concatenated to produce a buffer - */ - switch (ObjDesc->Common.Type) - { - case ACPI_TYPE_INTEGER: - - /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */ - - if (WalkState->MethodNode->Flags & ANOBJ_DATA_WIDTH_32) - { - /* - * We are running a method that exists in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper - * 32-bit field - */ - IntegerSize = sizeof (UINT32); - } - - /* Result of two integers is a buffer */ - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_BUFFER); - if (!RetDesc) - { - return (AE_NO_MEMORY); - } - - /* Need enough space for two integers */ - - RetDesc->Buffer.Length = IntegerSize * 2; - NewBuf = AcpiCmCallocate (RetDesc->Buffer.Length); - if (!NewBuf) - { - REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - Status = AE_NO_MEMORY; - goto Cleanup; - } - - RetDesc->Buffer.Pointer = (UINT8 *) NewBuf; - - /* Convert the first integer */ - - ThisInteger = ObjDesc->Integer.Value; - for (i = 0; i < IntegerSize; i++) - { - NewBuf[i] = (UINT8) ThisInteger; - ThisInteger >>= 8; - } - - /* Convert the second integer */ - - ThisInteger = ObjDesc2->Integer.Value; - for (; i < (IntegerSize * 2); i++) - { - NewBuf[i] = (UINT8) ThisInteger; - ThisInteger >>= 8; - } - - break; - - - case ACPI_TYPE_STRING: - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); - if (!RetDesc) - { - return (AE_NO_MEMORY); - } - - /* Operand1 is string */ - - NewBuf = AcpiCmAllocate (ObjDesc->String.Length + - ObjDesc2->String.Length + 1); - if (!NewBuf) - { - REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: String allocation failure\n")); - Status = AE_NO_MEMORY; - goto Cleanup; - } - - STRCPY (NewBuf, ObjDesc->String.Pointer); - STRCPY (NewBuf + ObjDesc->String.Length, - ObjDesc2->String.Pointer); - - /* Point the return object to the new string */ - - RetDesc->String.Pointer = NewBuf; - RetDesc->String.Length = ObjDesc->String.Length += - ObjDesc2->String.Length; - break; - - - case ACPI_TYPE_BUFFER: - - /* Operand1 is a buffer */ - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_BUFFER); - if (!RetDesc) - { - return (AE_NO_MEMORY); - } - - NewBuf = AcpiCmAllocate (ObjDesc->Buffer.Length + - ObjDesc2->Buffer.Length); - if (!NewBuf) - { - REPORT_ERROR - (("AmlExecDyadic2R/ConcatOp: Buffer allocation failure\n")); - Status = AE_NO_MEMORY; - goto Cleanup; - } - - MEMCPY (NewBuf, ObjDesc->Buffer.Pointer, - ObjDesc->Buffer.Length); - MEMCPY (NewBuf + ObjDesc->Buffer.Length, ObjDesc2->Buffer.Pointer, - ObjDesc2->Buffer.Length); - - /* - * Point the return object to the new buffer - */ - - RetDesc->Buffer.Pointer = (UINT8 *) NewBuf; - RetDesc->Buffer.Length = ObjDesc->Buffer.Length + - ObjDesc2->Buffer.Length; - break; - - default: - Status = AE_AML_INTERNAL; - RetDesc = NULL; - } - - - *ActualRetDesc = RetDesc; - return (AE_OK); - - -Cleanup: - - AcpiCmRemoveReference (RetDesc); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecDyadic1 - * - * PARAMETERS: Opcode - The opcode to be executed - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 1 dyadic operator with numeric operands: - * NotifyOp - * - * ALLOCATION: Deletes both operands - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecDyadic1 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_OPERAND_OBJECT *ValDesc = NULL; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("AmlExecDyadic1", WALK_OPERANDS); - - - /* Resolve all operands */ - - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); - - /* Get the operands */ - - Status |= AcpiDsObjStackPopObject (&ValDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* Invalid parameters on object stack */ - - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic1/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); - - goto Cleanup; - } - - - /* Examine the opcode */ - - switch (Opcode) - { - - /* DefNotify := NotifyOp NotifyObject NotifyValue */ - - case AML_NOTIFY_OP: - - /* The ObjDesc is actually an Node */ - - Node = (ACPI_NAMESPACE_NODE *) ObjDesc; - ObjDesc = NULL; - - /* Object must be a device or thermal zone */ - - if (Node && ValDesc) - { - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_THERMAL: - - /* - * Requires that Device and ThermalZone be compatible - * mappings - */ - - /* Dispatch the notify to the appropriate handler */ - - AcpiEvNotifyDispatch (Node, (UINT32) ValDesc->Integer.Value); - break; - - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecDyadic1/NotifyOp: unexpected notify object type %X\n", - ObjDesc->Common.Type)); - - Status = AE_AML_OPERAND_TYPE; - } - } - break; - - default: - - REPORT_ERROR (("AcpiAmlExecDyadic1: Unknown dyadic opcode %X\n", - Opcode)); - Status = AE_AML_BAD_OPCODE; - } - - -Cleanup: - - /* Always delete both operands */ - - AcpiCmRemoveReference (ValDesc); - AcpiCmRemoveReference (ObjDesc); - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecDyadic2R - * - * PARAMETERS: Opcode - The opcode to be executed - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 2 dyadic operator with numeric operands and - * one or two result operands. - * - * ALLOCATION: Deletes one operand descriptor -- other remains on stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecDyadic2R ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_OPERAND_OBJECT *ObjDesc2 = NULL; - ACPI_OPERAND_OBJECT *ResDesc = NULL; - ACPI_OPERAND_OBJECT *ResDesc2 = NULL; - ACPI_OPERAND_OBJECT *RetDesc = NULL; - ACPI_OPERAND_OBJECT *RetDesc2 = NULL; - ACPI_STATUS Status = AE_OK; - UINT32 NumOperands = 3; - - - FUNCTION_TRACE_U32 ("AmlExecDyadic2R", Opcode); - - - /* Resolve all operands */ - - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - NumOperands, "after AcpiAmlResolveOperands"); - - /* Get all operands */ - - if (AML_DIVIDE_OP == Opcode) - { - NumOperands = 4; - Status |= AcpiDsObjStackPopObject (&ResDesc2, WalkState); - } - - Status |= AcpiDsObjStackPopObject (&ResDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&ObjDesc2, WalkState); - Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic2R/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); - - goto Cleanup; - } - - - /* Create an internal return object if necessary */ - - switch (Opcode) - { - case AML_ADD_OP: - case AML_BIT_AND_OP: - case AML_BIT_NAND_OP: - case AML_BIT_OR_OP: - case AML_BIT_NOR_OP: - case AML_BIT_XOR_OP: - case AML_DIVIDE_OP: - case AML_MULTIPLY_OP: - case AML_SHIFT_LEFT_OP: - case AML_SHIFT_RIGHT_OP: - case AML_SUBTRACT_OP: - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - break; - } - - - /* - * Execute the opcode - */ - - switch (Opcode) - { - - /* DefAdd := AddOp Operand1 Operand2 Result */ - - case AML_ADD_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value + - ObjDesc2->Integer.Value; - break; - - - /* DefAnd := AndOp Operand1 Operand2 Result */ - - case AML_BIT_AND_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value & - ObjDesc2->Integer.Value; - break; - - - /* DefNAnd := NAndOp Operand1 Operand2 Result */ - - case AML_BIT_NAND_OP: - - RetDesc->Integer.Value = ~(ObjDesc->Integer.Value & - ObjDesc2->Integer.Value); - break; - - - /* DefOr := OrOp Operand1 Operand2 Result */ - - case AML_BIT_OR_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value | - ObjDesc2->Integer.Value; - break; - - - /* DefNOr := NOrOp Operand1 Operand2 Result */ - - case AML_BIT_NOR_OP: - - RetDesc->Integer.Value = ~(ObjDesc->Integer.Value | - ObjDesc2->Integer.Value); - break; - - - /* DefXOr := XOrOp Operand1 Operand2 Result */ - - case AML_BIT_XOR_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value ^ - ObjDesc2->Integer.Value; - break; - - - /* DefDivide := DivideOp Dividend Divisor Remainder Quotient */ - - case AML_DIVIDE_OP: - - if (!ObjDesc2->Integer.Value) - { - REPORT_ERROR - (("AmlExecDyadic2R/DivideOp: Divide by zero\n")); - - Status = AE_AML_DIVIDE_BY_ZERO; - goto Cleanup; - } - - RetDesc2 = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc2) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Remainder (modulo) */ - - RetDesc->Integer.Value = ACPI_MODULO (ObjDesc->Integer.Value, - ObjDesc2->Integer.Value); - - /* Result (what we used to call the quotient) */ - - RetDesc2->Integer.Value = ACPI_DIVIDE (ObjDesc->Integer.Value, - ObjDesc2->Integer.Value); - break; - - - /* DefMultiply := MultiplyOp Operand1 Operand2 Result */ - - case AML_MULTIPLY_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value * - ObjDesc2->Integer.Value; - break; - - - /* DefShiftLeft := ShiftLeftOp Operand ShiftCount Result */ - - case AML_SHIFT_LEFT_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value << - ObjDesc2->Integer.Value; - break; - - - /* DefShiftRight := ShiftRightOp Operand ShiftCount Result */ - - case AML_SHIFT_RIGHT_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value >> - ObjDesc2->Integer.Value; - break; - - - /* DefSubtract := SubtractOp Operand1 Operand2 Result */ - - case AML_SUBTRACT_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value - - ObjDesc2->Integer.Value; - break; - - - /* DefConcat := ConcatOp Data1 Data2 Result */ - - case AML_CONCAT_OP: - - - /* - * Convert the second operand if necessary. The first operand - * determines the type of the second operand, (See the Data Types - * section of the ACPI specification.) Both object types are - * guaranteed to be either Integer/String/Buffer by the operand - * resolution mechanism above. - */ - - switch (ObjDesc->Common.Type) - { - case ACPI_TYPE_INTEGER: - Status = AcpiAmlConvertToInteger (&ObjDesc2, WalkState); - break; - - case ACPI_TYPE_STRING: - Status = AcpiAmlConvertToString (&ObjDesc2, WalkState); - break; - - case ACPI_TYPE_BUFFER: - Status = AcpiAmlConvertToBuffer (&ObjDesc2, WalkState); - break; - - default: - Status = AE_AML_INTERNAL; - } - - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - - /* - * Both operands are now known to be the same object type - * (Both are Integer, String, or Buffer), and we can now perform the - * concatenation. - */ - Status = AcpiAmlDoConcatenate (ObjDesc, ObjDesc2, &RetDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - break; - - - default: - - REPORT_ERROR (("AcpiAmlExecDyadic2R: Unknown dyadic opcode %X\n", - Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - - /* - * Store the result of the operation (which is now in ObjDesc) into - * the result descriptor, or the location pointed to by the result - * descriptor (ResDesc). - */ - - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - if (AML_DIVIDE_OP == Opcode) - { - Status = AcpiAmlExecStore (RetDesc2, ResDesc2, WalkState); - - /* - * Since the remainder is not returned, remove a reference to - * the object we created earlier - */ - - AcpiCmRemoveReference (RetDesc2); - } - - -Cleanup: - - /* Always delete the operands */ - - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (ObjDesc2); - - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status)) - { - /* On failure, delete the result ops */ - - AcpiCmRemoveReference (ResDesc); - AcpiCmRemoveReference (ResDesc2); - - if (RetDesc) - { - /* And delete the internal return object */ - - AcpiCmRemoveReference (RetDesc); - RetDesc = NULL; - } - } - - /* Set the return object and exit */ - - *ReturnDesc = RetDesc; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecDyadic2S - * - * PARAMETERS: Opcode - The opcode to be executed - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 2 dyadic synchronization operator - * - * ALLOCATION: Deletes one operand descriptor -- other remains on stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecDyadic2S ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *TimeDesc; - ACPI_OPERAND_OBJECT *RetDesc = NULL; - ACPI_STATUS Status; - - - FUNCTION_TRACE_PTR ("AmlExecDyadic2S", WALK_OPERANDS); - - - /* Resolve all operands */ - - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); - - /* Get all operands */ - - Status |= AcpiDsObjStackPopObject (&TimeDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* Invalid parameters on object stack */ - - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic2S/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); - - goto Cleanup; - } - - - /* Create the internal return object */ - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Default return value is FALSE, operation did not time out */ - - RetDesc->Integer.Value = 0; - - - /* Examine the opcode */ - - switch (Opcode) - { - - /* DefAcquire := AcquireOp MutexObject Timeout */ - - case AML_ACQUIRE_OP: - - Status = AcpiAmlSystemAcquireMutex (TimeDesc, ObjDesc); - break; - - - /* DefWait := WaitOp AcpiEventObject Timeout */ - - case AML_WAIT_OP: - - Status = AcpiAmlSystemWaitEvent (TimeDesc, ObjDesc); - break; - - - default: - - REPORT_ERROR (("AcpiAmlExecDyadic2S: Unknown dyadic synchronization opcode %X\n", Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - - /* - * Return a boolean indicating if operation timed out - * (TRUE) or not (FALSE) - */ - - if (Status == AE_TIME) - { - RetDesc->Integer.Value = ACPI_INTEGER_MAX; /* TRUE, op timed out */ - Status = AE_OK; - } - - -Cleanup: - - /* Delete params */ - - AcpiCmRemoveReference (TimeDesc); - AcpiCmRemoveReference (ObjDesc); - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status) && - (RetDesc)) - { - AcpiCmRemoveReference (RetDesc); - RetDesc = NULL; - } - - - /* Set the return object and exit */ - - *ReturnDesc = RetDesc; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecDyadic2 - * - * PARAMETERS: Opcode - The opcode to be executed - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 2 dyadic operator with numeric operands and - * no result operands - * - * ALLOCATION: Deletes one operand descriptor -- other remains on stack - * containing result value - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecDyadic2 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *ObjDesc2; - ACPI_OPERAND_OBJECT *RetDesc = NULL; - ACPI_STATUS Status; - BOOLEAN Lboolean; - - - FUNCTION_TRACE_PTR ("AmlExecDyadic2", WALK_OPERANDS); - - - /* Resolve all operands */ - - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); - - /* Get all operands */ - - Status |= AcpiDsObjStackPopObject (&ObjDesc2, WalkState); - Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* Invalid parameters on object stack */ - - DEBUG_PRINT (ACPI_ERROR, - ("ExecDyadic2/%s: bad operand(s) (Status=%X)\n", - AcpiPsGetOpcodeName (Opcode), Status)); - - goto Cleanup; - } - - - /* Create the internal return object */ - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Execute the Opcode - */ - - Lboolean = FALSE; - switch (Opcode) - { - - /* DefLAnd := LAndOp Operand1 Operand2 */ - - case AML_LAND_OP: - - Lboolean = (BOOLEAN) (ObjDesc->Integer.Value && - ObjDesc2->Integer.Value); - break; - - - /* DefLEqual := LEqualOp Operand1 Operand2 */ - - case AML_LEQUAL_OP: - - Lboolean = (BOOLEAN) (ObjDesc->Integer.Value == - ObjDesc2->Integer.Value); - break; - - - /* DefLGreater := LGreaterOp Operand1 Operand2 */ - - case AML_LGREATER_OP: - - Lboolean = (BOOLEAN) (ObjDesc->Integer.Value > - ObjDesc2->Integer.Value); - break; - - - /* DefLLess := LLessOp Operand1 Operand2 */ - - case AML_LLESS_OP: - - Lboolean = (BOOLEAN) (ObjDesc->Integer.Value < - ObjDesc2->Integer.Value); - break; - - - /* DefLOr := LOrOp Operand1 Operand2 */ - - case AML_LOR_OP: - - Lboolean = (BOOLEAN) (ObjDesc->Integer.Value || - ObjDesc2->Integer.Value); - break; - - - default: - - REPORT_ERROR (("AcpiAmlExecDyadic2: Unknown dyadic opcode %X\n", Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - break; - } - - - /* Set return value to logical TRUE (all ones) or FALSE (zero) */ - - if (Lboolean) - { - RetDesc->Integer.Value = ACPI_INTEGER_MAX; - } - else - { - RetDesc->Integer.Value = 0; - } - - -Cleanup: - - /* Always delete operands */ - - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (ObjDesc2); - - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status) && - (RetDesc)) - { - AcpiCmRemoveReference (RetDesc); - RetDesc = NULL; - } - - - /* Set the return object and exit */ - - *ReturnDesc = RetDesc; - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amfield.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amfield.c deleted file mode 100644 index 62c77a7..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amfield.c +++ /dev/null @@ -1,447 +0,0 @@ -/****************************************************************************** - * - * Module Name: amfield - ACPI AML (p-code) execution - field manipulation - * $Revision: 77 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __AMFIELD_C__ - -#include "acpi.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "achware.h" -#include "acevents.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amfield") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSetupField - * - * PARAMETERS: *ObjDesc - Field to be read or written - * *RgnDesc - Region containing field - * FieldBitWidth - Field Width in bits (8, 16, or 32) - * - * RETURN: Status - * - * DESCRIPTION: Common processing for AcpiAmlReadField and AcpiAmlWriteField - * - * ACPI SPECIFICATION REFERENCES: - * Each of the Type1Opcodes is defined as specified in in-line - * comments below. For each one, use the following definitions. - * - * DefBitField := BitFieldOp SrcBuf BitIdx Destination - * DefByteField := ByteFieldOp SrcBuf ByteIdx Destination - * DefCreateField := CreateFieldOp SrcBuf BitIdx NumBits NameString - * DefDWordField := DWordFieldOp SrcBuf ByteIdx Destination - * DefWordField := WordFieldOp SrcBuf ByteIdx Destination - * BitIndex := TermArg=>Integer - * ByteIndex := TermArg=>Integer - * Destination := NameString - * NumBits := TermArg=>Integer - * SourceBuf := TermArg=>Buffer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSetupField ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *RgnDesc, - UINT32 FieldBitWidth) -{ - ACPI_STATUS Status = AE_OK; - UINT32 FieldByteWidth; - - - FUNCTION_TRACE ("AmlSetupField"); - - - /* Parameter validation */ - - if (!ObjDesc || !RgnDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Internal error - null handle\n")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - if (ACPI_TYPE_REGION != RgnDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Needed Region, found type %x %s\n", - RgnDesc->Common.Type, AcpiCmGetTypeName (RgnDesc->Common.Type))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* - * TBD: [Future] Acpi 2.0 supports Qword fields - * - * Init and validate Field width - * Possible values are 1, 2, 4 - */ - - FieldByteWidth = DIV_8 (FieldBitWidth); - - if ((FieldBitWidth != 8) && - (FieldBitWidth != 16) && - (FieldBitWidth != 32)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Internal error - bad width %d\n", FieldBitWidth)); - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - } - - - /* - * If the Region Address and Length have not been previously evaluated, - * evaluate them and save the results. - */ - if (!(RgnDesc->Region.Flags & AOPOBJ_DATA_VALID)) - { - - Status = AcpiDsGetRegionArguments (RgnDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - - if ((ObjDesc->Common.Type == ACPI_TYPE_FIELD_UNIT) && - (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID))) - { - /* - * Field Buffer and Index have not been previously evaluated, - */ - DEBUG_PRINT (ACPI_ERROR, ("Uninitialized field!\n")); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - if (RgnDesc->Region.Length < - (ObjDesc->Field.Offset & ~((UINT32) FieldByteWidth - 1)) + - FieldByteWidth) - { - /* - * Offset rounded up to next multiple of field width - * exceeds region length, indicate an error - */ - - DUMP_STACK_ENTRY (RgnDesc); - DUMP_STACK_ENTRY (ObjDesc); - - DEBUG_PRINT (ACPI_ERROR, - ("AmlSetupField: Operation at %08lX width %d bits exceeds len %08lX field=%p region=%p\n", - ObjDesc->Field.Offset, FieldBitWidth, RgnDesc->Region.Length, - ObjDesc, RgnDesc)); - - return_ACPI_STATUS (AE_AML_REGION_LIMIT); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlAccessNamedField - * - * PARAMETERS: Mode - ACPI_READ or ACPI_WRITE - * NamedField - Handle for field to be accessed - * *Buffer - Value(s) to be read or written - * BufferLength - Number of bytes to transfer - * - * RETURN: Status - * - * DESCRIPTION: Read or write a named field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlAccessNamedField ( - UINT32 Mode, - ACPI_HANDLE NamedField, - void *Buffer, - UINT32 BufferLength) -{ - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_STATUS Status = AE_OK; - BOOLEAN Locked = FALSE; - UINT32 BitGranularity = 0; - UINT32 ByteGranularity; - UINT32 DatumLength; - UINT32 ActualByteLength; - UINT32 ByteFieldLength; - - - FUNCTION_TRACE_PTR ("AmlAccessNamedField", NamedField); - - - /* Parameter validation */ - - if ((!NamedField) || (ACPI_READ == Mode && !Buffer)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AcpiAmlAccessNamedField: Internal error - null parameter\n")); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* Get the attached field object */ - - ObjDesc = AcpiNsGetAttachedObject (NamedField); - if (!ObjDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlAccessNamedField: Internal error - null value pointer\n")); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* Check the type */ - - if (INTERNAL_TYPE_DEF_FIELD != AcpiNsGetType (NamedField)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlAccessNamedField: Name %4.4s type %x is not a defined field\n", - &(((ACPI_NAMESPACE_NODE *) NamedField)->Name), - AcpiNsGetType (NamedField))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* ObjDesc valid and NamedField is a defined field */ - - DEBUG_PRINT (ACPI_INFO, - ("AccessNamedField: Obj=%p Type=%x Buf=%p Len=%x\n", - ObjDesc, ObjDesc->Common.Type, Buffer, BufferLength)); - DEBUG_PRINT (ACPI_INFO, - ("AccessNamedField: Mode=%d FieldLen=%d, BitOffset=%d\n", - Mode, ObjDesc->FieldUnit.Length, ObjDesc->FieldUnit.BitOffset)); - DUMP_ENTRY (NamedField, ACPI_INFO); - - - /* Double-check that the attached object is also a field */ - - if (INTERNAL_TYPE_DEF_FIELD != ObjDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlAccessNamedField: Internal error - Name %4.4s type %x does not match value-type %x at %p\n", - &(((ACPI_NAMESPACE_NODE *) NamedField)->Name), - AcpiNsGetType (NamedField), ObjDesc->Common.Type, ObjDesc)); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* - * Granularity was decoded from the field access type - * (AnyAcc will be the same as ByteAcc) - */ - - BitGranularity = ObjDesc->FieldUnit.Granularity; - ByteGranularity = DIV_8 (BitGranularity); - - /* - * Check if request is too large for the field, and silently truncate - * if necessary - */ - - /* TBD: [Errors] should an error be returned in this case? */ - - ByteFieldLength = (UINT32) DIV_8 (ObjDesc->FieldUnit.Length + 7); - - - ActualByteLength = BufferLength; - if (BufferLength > ByteFieldLength) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlAccessNamedField: Byte length %X truncated to %X\n", - ActualByteLength, ByteFieldLength)); - - ActualByteLength = ByteFieldLength; - } - - /* TBD: should these round down to a power of 2? */ - - if (DIV_8 (BitGranularity) > ByteFieldLength) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlAccessNamedField: Bit granularity %X truncated to %X\n", - BitGranularity, MUL_8(ByteFieldLength))); - - BitGranularity = MUL_8(ByteFieldLength); - } - - if (ByteGranularity > ByteFieldLength) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlAccessNamedField: Byte granularity %X truncated to %X\n", - ByteGranularity, ByteFieldLength)); - - ByteGranularity = ByteFieldLength; - } - - - /* Convert byte count to datum count, round up if necessary */ - - DatumLength = (ActualByteLength + (ByteGranularity-1)) / ByteGranularity; - - DEBUG_PRINT (ACPI_INFO, - ("ByteLen=%x, DatumLen=%x, BitGran=%x, ByteGran=%x\n", - ActualByteLength, DatumLength, BitGranularity, ByteGranularity)); - - - /* Get the global lock if needed */ - - Locked = AcpiAmlAcquireGlobalLock (ObjDesc->FieldUnit.LockRule); - - - /* Perform the actual read or write of the buffer */ - - switch (Mode) - { - case ACPI_READ: - - Status = AcpiAmlReadField (ObjDesc, Buffer, BufferLength, - ActualByteLength, DatumLength, - BitGranularity, ByteGranularity); - break; - - - case ACPI_WRITE: - - Status = AcpiAmlWriteField (ObjDesc, Buffer, BufferLength, - ActualByteLength, DatumLength, - BitGranularity, ByteGranularity); - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AccessNamedField: Unknown I/O Mode: %X\n", Mode)); - Status = AE_BAD_PARAMETER; - break; - } - - - /* Release global lock if we acquired it earlier */ - - AcpiAmlReleaseGlobalLock (Locked); - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amfldio.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amfldio.c deleted file mode 100644 index 24c9a2a..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amfldio.c +++ /dev/null @@ -1,861 +0,0 @@ -/****************************************************************************** - * - * Module Name: amfldio - Aml Field I/O - * $Revision: 39 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __AMFLDIO_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "achware.h" -#include "acevents.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amfldio") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlReadFieldData - * - * PARAMETERS: *ObjDesc - Field to be read - * *Value - Where to store value - * FieldBitWidth - Field Width in bits (8, 16, or 32) - * - * RETURN: Status - * - * DESCRIPTION: Retrieve the value of the given field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlReadFieldData ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldByteOffset, - UINT32 FieldBitWidth, - UINT32 *Value) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *RgnDesc = NULL; - ACPI_PHYSICAL_ADDRESS Address; - UINT32 LocalValue = 0; - UINT32 FieldByteWidth; - - - FUNCTION_TRACE ("AmlReadFieldData"); - - - /* ObjDesc is validated by callers */ - - if (ObjDesc) - { - RgnDesc = ObjDesc->Field.Container; - } - - - FieldByteWidth = DIV_8 (FieldBitWidth); - Status = AcpiAmlSetupField (ObjDesc, RgnDesc, FieldBitWidth); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* SetupField validated RgnDesc and FieldBitWidth */ - - if (!Value) - { - Value = &LocalValue; /* support reads without saving value */ - } - - - /* - * Set offset to next multiple of field width, - * add region base address and offset within the field - */ - Address = RgnDesc->Region.Address + - (ObjDesc->Field.Offset * FieldByteWidth) + - FieldByteOffset; - - DEBUG_PRINT (TRACE_OPREGION, - ("AmlReadFieldData: Region %s(%X) at %08lx width %X\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId, Address, - FieldBitWidth)); - - - /* Invoke the appropriate AddressSpace/OpRegion handler */ - - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_READ, - Address, FieldBitWidth, Value); - - if (Status == AE_NOT_IMPLEMENTED) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlReadFieldData: **** Region %s(%X) not implemented\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); - } - - else if (Status == AE_NOT_EXIST) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlReadFieldData: **** Region %s(%X) has no handler\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); - } - - DEBUG_PRINT (TRACE_OPREGION, - ("AmlReadField: Returned value=%08lx \n", *Value)); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlReadField - * - * PARAMETERS: *ObjDesc - Field to be read - * *Value - Where to store value - * FieldBitWidth - Field Width in bits (8, 16, or 32) - * - * RETURN: Status - * - * DESCRIPTION: Retrieve the value of the given field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlReadField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity) -{ - ACPI_STATUS Status; - UINT32 ThisFieldByteOffset; - UINT32 ThisFieldDatumOffset; - UINT32 PreviousRawDatum; - UINT32 ThisRawDatum = 0; - UINT32 ValidFieldBits; - UINT32 Mask; - UINT32 MergedDatum = 0; - - - FUNCTION_TRACE ("AmlReadField"); - - /* - * Clear the caller's buffer (the whole buffer length as given) - * This is very important, especially in the cases where a byte is read, - * but the buffer is really a UINT32 (4 bytes). - */ - - MEMSET (Buffer, 0, BufferLength); - - /* Read the first raw datum to prime the loop */ - - ThisFieldByteOffset = 0; - ThisFieldDatumOffset= 0; - - Status = AcpiAmlReadFieldData (ObjDesc, ThisFieldByteOffset, BitGranularity, - &PreviousRawDatum); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* We might actually be done if the request fits in one datum */ - - if ((DatumLength == 1) && - ((ObjDesc->Field.BitOffset + ObjDesc->FieldUnit.Length) <= - (UINT16) BitGranularity)) - { - MergedDatum = PreviousRawDatum; - - MergedDatum = (MergedDatum >> ObjDesc->Field.BitOffset); - - ValidFieldBits = ObjDesc->FieldUnit.Length % BitGranularity; - if (ValidFieldBits) - { - Mask = (((UINT32) 1 << ValidFieldBits) - (UINT32) 1); - MergedDatum &= Mask; - } - - - /* - * Place the MergedDatum into the proper format and return buffer - * field - */ - - switch (ByteGranularity) - { - case 1: - ((UINT8 *) Buffer) [ThisFieldDatumOffset] = (UINT8) MergedDatum; - break; - - case 2: - MOVE_UNALIGNED16_TO_16 (&(((UINT16 *) Buffer)[ThisFieldDatumOffset]), &MergedDatum); - break; - - case 4: - MOVE_UNALIGNED32_TO_32 (&(((UINT32 *) Buffer)[ThisFieldDatumOffset]), &MergedDatum); - break; - } - - ThisFieldByteOffset = 1; - ThisFieldDatumOffset = 1; - } - - else - { - /* We need to get more raw data to complete one or more field data */ - - while (ThisFieldDatumOffset < DatumLength) - { - /* - * If the field is aligned on a byte boundary, we don't want - * to perform a final read, since this would potentially read - * past the end of the region. - * - * TBD: [Investigate] It may make more sense to just split the aligned - * and non-aligned cases since the aligned case is so very simple, - */ - if ((ObjDesc->Field.BitOffset != 0) || - ((ObjDesc->Field.BitOffset == 0) && - (ThisFieldDatumOffset < (DatumLength -1)))) - { - /* - * Get the next raw datum, it contains some or all bits - * of the current field datum - */ - - Status = AcpiAmlReadFieldData (ObjDesc, - ThisFieldByteOffset + ByteGranularity, - BitGranularity, &ThisRawDatum); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Before merging the data, make sure the unused bits are clear */ - - switch (ByteGranularity) - { - case 1: - ThisRawDatum &= 0x000000FF; - PreviousRawDatum &= 0x000000FF; - break; - - case 2: - ThisRawDatum &= 0x0000FFFF; - PreviousRawDatum &= 0x0000FFFF; - break; - } - } - - - /* - * Put together bits of the two raw data to make a complete - * field datum - */ - - - if (ObjDesc->Field.BitOffset != 0) - { - MergedDatum = - (PreviousRawDatum >> ObjDesc->Field.BitOffset) | - (ThisRawDatum << (BitGranularity - ObjDesc->Field.BitOffset)); - } - - else - { - MergedDatum = PreviousRawDatum; - } - - /* - * Prepare the merged datum for storing into the caller's - * buffer. It is possible to have a 32-bit buffer - * (ByteGranularity == 4), but a ObjDesc->Field.Length - * of 8 or 16, meaning that the upper bytes of merged data - * are undesired. This section fixes that. - */ - switch (ObjDesc->Field.Length) - { - case 8: - MergedDatum &= 0x000000FF; - break; - - case 16: - MergedDatum &= 0x0000FFFF; - break; - } - - /* - * Now store the datum in the caller's buffer, according to - * the data type - */ - switch (ByteGranularity) - { - case 1: - ((UINT8 *) Buffer) [ThisFieldDatumOffset] = (UINT8) MergedDatum; - break; - - case 2: - MOVE_UNALIGNED16_TO_16 (&(((UINT16 *) Buffer) [ThisFieldDatumOffset]), &MergedDatum); - break; - - case 4: - MOVE_UNALIGNED32_TO_32 (&(((UINT32 *) Buffer) [ThisFieldDatumOffset]), &MergedDatum); - break; - } - - /* - * Save the most recent datum since it contains bits of - * the *next* field datum - */ - - PreviousRawDatum = ThisRawDatum; - - ThisFieldByteOffset += ByteGranularity; - ThisFieldDatumOffset++; - - } /* while */ - } - -Cleanup: - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlWriteFieldData - * - * PARAMETERS: *ObjDesc - Field to be set - * Value - Value to store - * FieldBitWidth - Field Width in bits (8, 16, or 32) - * - * RETURN: Status - * - * DESCRIPTION: Store the value into the given field - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiAmlWriteFieldData ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldByteOffset, - UINT32 FieldBitWidth, - UINT32 Value) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *RgnDesc = NULL; - ACPI_PHYSICAL_ADDRESS Address; - UINT32 FieldByteWidth; - - - FUNCTION_TRACE ("AmlWriteFieldData"); - - - /* ObjDesc is validated by callers */ - - if (ObjDesc) - { - RgnDesc = ObjDesc->Field.Container; - } - - FieldByteWidth = DIV_8 (FieldBitWidth); - Status = AcpiAmlSetupField (ObjDesc, RgnDesc, FieldBitWidth); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * Set offset to next multiple of field width, - * add region base address and offset within the field - */ - Address = RgnDesc->Region.Address + - (ObjDesc->Field.Offset * FieldByteWidth) + - FieldByteOffset; - - DEBUG_PRINT (TRACE_OPREGION, - ("AmlWriteField: Store %lx in Region %s(%X) at %p width %X\n", - Value, AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId, Address, - FieldBitWidth)); - - /* Invoke the appropriate AddressSpace/OpRegion handler */ - - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ADDRESS_SPACE_WRITE, - Address, FieldBitWidth, &Value); - - if (Status == AE_NOT_IMPLEMENTED) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlWriteField: **** Region type %s(%X) not implemented\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); - } - - else if (Status == AE_NOT_EXIST) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlWriteField: **** Region type %s(%X) does not have a handler\n", - AcpiCmGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); - } - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlWriteFieldDataWithUpdateRule - * - * PARAMETERS: *ObjDesc - Field to be set - * Value - Value to store - * FieldBitWidth - Field Width in bits (8, 16, or 32) - * - * RETURN: Status - * - * DESCRIPTION: Apply the field update rule to a field write - * - ****************************************************************************/ - -static ACPI_STATUS -AcpiAmlWriteFieldDataWithUpdateRule ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 Mask, - UINT32 FieldValue, - UINT32 ThisFieldByteOffset, - UINT32 BitGranularity) -{ - ACPI_STATUS Status = AE_OK; - UINT32 MergedValue; - UINT32 CurrentValue; - - - /* Start with the new bits */ - - MergedValue = FieldValue; - - - - /* Decode the update rule */ - - switch (ObjDesc->Field.UpdateRule) - { - - case UPDATE_PRESERVE: - - /* Check if update rule needs to be applied (not if mask is all ones) */ - - /* The left shift drops the bits we want to ignore. */ - if ((~Mask << (sizeof(Mask)*8 - BitGranularity)) != 0) - { - /* - * Read the current contents of the byte/word/dword containing - * the field, and merge with the new field value. - */ - Status = AcpiAmlReadFieldData (ObjDesc, ThisFieldByteOffset, - BitGranularity, &CurrentValue); - MergedValue |= (CurrentValue & ~Mask); - } - break; - - - case UPDATE_WRITE_AS_ONES: - - /* Set positions outside the field to all ones */ - - MergedValue |= ~Mask; - break; - - - case UPDATE_WRITE_AS_ZEROS: - - /* Set positions outside the field to all zeros */ - - MergedValue &= Mask; - break; - - - default: - DEBUG_PRINT (ACPI_ERROR, - ("WriteFieldDataWithUpdateRule: Unknown UpdateRule setting: %x\n", - ObjDesc->Field.UpdateRule)); - Status = AE_AML_OPERAND_VALUE; - } - - - /* Write the merged value */ - - if (ACPI_SUCCESS (Status)) - { - Status = AcpiAmlWriteFieldData (ObjDesc, ThisFieldByteOffset, - BitGranularity, MergedValue); - } - - return (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiAmlWriteField - * - * PARAMETERS: *ObjDesc - Field to be set - * Value - Value to store - * FieldBitWidth - Field Width in bits (8, 16, or 32) - * - * RETURN: Status - * - * DESCRIPTION: Store the value into the given field - * - ****************************************************************************/ - -ACPI_STATUS -AcpiAmlWriteField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength, - UINT32 ByteLength, - UINT32 DatumLength, - UINT32 BitGranularity, - UINT32 ByteGranularity) -{ - ACPI_STATUS Status; - UINT32 ThisFieldByteOffset; - UINT32 ThisFieldDatumOffset; - UINT32 Mask; - UINT32 MergedDatum; - UINT32 PreviousRawDatum; - UINT32 ThisRawDatum; - UINT32 FieldValue; - UINT32 ValidFieldBits; - - - FUNCTION_TRACE ("AmlWriteField"); - - - /* - * Break the request into up to three parts: - * non-aligned part at start, aligned part in middle, non-aligned part - * at end --- Just like an I/O request --- - */ - - ThisFieldByteOffset = 0; - ThisFieldDatumOffset= 0; - - /* Get a datum */ - - switch (ByteGranularity) - { - case 1: - PreviousRawDatum = ((UINT8 *) Buffer) [ThisFieldDatumOffset]; - break; - - case 2: - MOVE_UNALIGNED16_TO_32 (&PreviousRawDatum, &(((UINT16 *) Buffer) [ThisFieldDatumOffset])); - break; - - case 4: - MOVE_UNALIGNED32_TO_32 (&PreviousRawDatum, &(((UINT32 *) Buffer) [ThisFieldDatumOffset])); - break; - - default: - DEBUG_PRINT (ACPI_ERROR, ("AmlWriteField: Invalid granularity: %x\n", - ByteGranularity)); - Status = AE_AML_OPERAND_VALUE; - goto Cleanup; - } - - - /* - * Write a partial field datum if field does not begin on a datum boundary - * - * Construct Mask with 1 bits where the field is, 0 bits elsewhere - * - * 1) Bits above the field - */ - - Mask = (((UINT32)(-1)) << (UINT32)ObjDesc->Field.BitOffset); - - /* 2) Only the bottom 5 bits are valid for a shift operation. */ - - if ((ObjDesc->Field.BitOffset + ObjDesc->FieldUnit.Length) < 32) - { - /* Bits above the field */ - - Mask &= (~(((UINT32)(-1)) << ((UINT32)ObjDesc->Field.BitOffset + - (UINT32)ObjDesc->FieldUnit.Length))); - } - - /* 3) Shift and mask the value into the field position */ - - FieldValue = (PreviousRawDatum << ObjDesc->Field.BitOffset) & Mask; - - Status = AcpiAmlWriteFieldDataWithUpdateRule (ObjDesc, Mask, FieldValue, - ThisFieldByteOffset, - BitGranularity); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - - /* If the field fits within one datum, we are done. */ - - if ((DatumLength == 1) && - ((ObjDesc->Field.BitOffset + ObjDesc->FieldUnit.Length) <= - (UINT16) BitGranularity)) - { - goto Cleanup; - } - - /* - * We don't need to worry about the update rule for these data, because - * all of the bits are part of the field. - * - * Can't write the last datum, however, because it might contain bits that - * are not part of the field -- the update rule must be applied. - */ - - while (ThisFieldDatumOffset < (DatumLength - 1)) - { - ThisFieldDatumOffset++; - - /* Get the next raw datum, it contains bits of the current field datum... */ - - switch (ByteGranularity) - { - case 1: - ThisRawDatum = ((UINT8 *) Buffer) [ThisFieldDatumOffset]; - break; - - case 2: - MOVE_UNALIGNED16_TO_32 (&ThisRawDatum, &(((UINT16 *) Buffer) [ThisFieldDatumOffset])); - break; - - case 4: - MOVE_UNALIGNED32_TO_32 (&ThisRawDatum, &(((UINT32 *) Buffer) [ThisFieldDatumOffset])); - break; - - default: - DEBUG_PRINT (ACPI_ERROR, ("AmlWriteField: Invalid Byte Granularity: %x\n", - ByteGranularity)); - Status = AE_AML_OPERAND_VALUE; - goto Cleanup; - } - - /* - * Put together bits of the two raw data to make a complete field - * datum - */ - - if (ObjDesc->Field.BitOffset != 0) - { - MergedDatum = - (PreviousRawDatum >> (BitGranularity - ObjDesc->Field.BitOffset)) | - (ThisRawDatum << ObjDesc->Field.BitOffset); - } - - else - { - MergedDatum = ThisRawDatum; - } - - /* Now write the completed datum */ - - - Status = AcpiAmlWriteFieldData (ObjDesc, - ThisFieldByteOffset + ByteGranularity, - BitGranularity, MergedDatum); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - - /* - * Save the most recent datum since it contains bits of - * the *next* field datum - */ - - PreviousRawDatum = ThisRawDatum; - - ThisFieldByteOffset += ByteGranularity; - - } /* while */ - - - /* Write a partial field datum if field does not end on a datum boundary */ - - if ((ObjDesc->FieldUnit.Length + ObjDesc->FieldUnit.BitOffset) % - BitGranularity) - { - switch (ByteGranularity) - { - case 1: - ThisRawDatum = ((UINT8 *) Buffer) [ThisFieldDatumOffset]; - break; - - case 2: - MOVE_UNALIGNED16_TO_32 (&ThisRawDatum, &(((UINT16 *) Buffer) [ThisFieldDatumOffset])); - break; - - case 4: - MOVE_UNALIGNED32_TO_32 (&ThisRawDatum, &(((UINT32 *) Buffer) [ThisFieldDatumOffset])); - break; - } - - /* Construct Mask with 1 bits where the field is, 0 bits elsewhere */ - - ValidFieldBits = ((ObjDesc->FieldUnit.Length % BitGranularity) + - ObjDesc->Field.BitOffset); - - Mask = (((UINT32) 1 << ValidFieldBits) - (UINT32) 1); - - /* Shift and mask the value into the field position */ - - FieldValue = (PreviousRawDatum >> - (BitGranularity - ObjDesc->Field.BitOffset)) & Mask; - - Status = AcpiAmlWriteFieldDataWithUpdateRule (ObjDesc, Mask, FieldValue, - ThisFieldByteOffset + ByteGranularity, - BitGranularity); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - } - - -Cleanup: - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/ammisc.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/ammisc.c deleted file mode 100644 index 505d9d4..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/ammisc.c +++ /dev/null @@ -1,682 +0,0 @@ - -/****************************************************************************** - * - * Module Name: ammisc - ACPI AML (p-code) execution - specific opcodes - * $Revision: 73 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMMISC_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acdispat.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("ammisc") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecFatal - * - * PARAMETERS: none - * - * RETURN: Status. If the OS returns from the OSD call, we just keep - * on going. - * - * DESCRIPTION: Execute Fatal operator - * - * ACPI SPECIFICATION REFERENCES: - * DefFatal := FatalOp FatalType FatalCode FatalArg - * FatalType := ByteData - * FatalCode := DWordData - * FatalArg := TermArg=>Integer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecFatal ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *TypeDesc; - ACPI_OPERAND_OBJECT *CodeDesc; - ACPI_OPERAND_OBJECT *ArgDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlExecFatal"); - - - /* Resolve operands */ - - Status = AcpiAmlResolveOperands (AML_FATAL_OP, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, - AcpiPsGetOpcodeName (AML_FATAL_OP), - 3, "after AcpiAmlResolveOperands"); - - /* Get operands */ - - Status |= AcpiDsObjStackPopObject (&ArgDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&CodeDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&TypeDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* Invalid parameters on object stack */ - - DEBUG_PRINT (ACPI_ERROR, - ("AcpiAmlExecFatal/AML_FATAL_OP: bad operand(s) (Status=%X)\n", - Status)); - - goto Cleanup; - } - - - /* DefFatal := FatalOp FatalType FatalCode FatalArg */ - - - DEBUG_PRINT (ACPI_INFO, - ("FatalOp: Type %x Code %x Arg %x <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", - TypeDesc->Integer.Value, CodeDesc->Integer.Value, ArgDesc->Integer.Value)); - - - /* - * TBD: [Unhandled] call OSD interface to notify OS of fatal error - * requiring shutdown! - */ - - -Cleanup: - - /* Free the operands */ - - AcpiCmRemoveReference (ArgDesc); - AcpiCmRemoveReference (CodeDesc); - AcpiCmRemoveReference (TypeDesc); - - - /* If we get back from the OS call, we might as well keep going. */ - - REPORT_WARNING (("An AML \"Fatal\" Opcode (FatalOp) was executed\n")); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecIndex - * - * PARAMETERS: none - * - * RETURN: Status - * - * DESCRIPTION: Execute Index operator - * - * ALLOCATION: Deletes one operand descriptor -- other remains on stack - * - * ACPI SPECIFICATION REFERENCES: - * DefIndex := IndexOp BuffPkgObj IndexValue Result - * IndexValue := TermArg=>Integer - * NameString := <RootChar NamePath> | <PrefixPath NamePath> - * Result := SuperName - * SuperName := NameString | ArgObj | LocalObj | DebugObj | DefIndex - * Local4Op | Local5Op | Local6Op | Local7Op - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecIndex ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *IdxDesc; - ACPI_OPERAND_OBJECT *ResDesc; - ACPI_OPERAND_OBJECT *RetDesc = NULL; - ACPI_OPERAND_OBJECT *TmpDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlExecIndex"); - - - /* Resolve operands */ - /* First operand can be either a package or a buffer */ - - Status = AcpiAmlResolveOperands (AML_INDEX_OP, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, - AcpiPsGetOpcodeName (AML_INDEX_OP), - 3, "after AcpiAmlResolveOperands"); - - /* Get all operands */ - - Status |= AcpiDsObjStackPopObject (&ResDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&IdxDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* Invalid parameters on object stack */ - - DEBUG_PRINT (ACPI_ERROR, - ("AcpiAmlExecIndex/AML_INDEX_OP: bad operand(s) (Status=%X)\n", - Status)); - - goto Cleanup; - } - - - /* Create the internal return object */ - - RetDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - - /* - * At this point, the ObjDesc operand is either a Package or a Buffer - */ - - if (ObjDesc->Common.Type == ACPI_TYPE_PACKAGE) - { - /* Object to be indexed is a Package */ - - if (IdxDesc->Integer.Value >= ObjDesc->Package.Count) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecIndex: Index value out of range\n")); - Status = AE_AML_PACKAGE_LIMIT; - goto Cleanup; - } - - if ((ResDesc->Common.Type == INTERNAL_TYPE_REFERENCE) && - (ResDesc->Reference.OpCode == AML_ZERO_OP)) - { - /* - * There is no actual result descriptor (the ZeroOp Result - * descriptor is a placeholder), so just delete the placeholder and - * return a reference to the package element - */ - - AcpiCmRemoveReference (ResDesc); - } - - else - { - /* - * Each element of the package is an internal object. Get the one - * we are after. - */ - - TmpDesc = ObjDesc->Package.Elements[IdxDesc->Integer.Value]; - RetDesc->Reference.OpCode = AML_INDEX_OP; - RetDesc->Reference.TargetType = TmpDesc->Common.Type; - RetDesc->Reference.Object = TmpDesc; - - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); - RetDesc->Reference.Object = NULL; - } - - /* - * The local return object must always be a reference to the package element, - * not the element itself. - */ - RetDesc->Reference.OpCode = AML_INDEX_OP; - RetDesc->Reference.TargetType = ACPI_TYPE_PACKAGE; - RetDesc->Reference.Where = &ObjDesc->Package.Elements[IdxDesc->Integer.Value]; - } - - else - { - /* Object to be indexed is a Buffer */ - - if (IdxDesc->Integer.Value >= ObjDesc->Buffer.Length) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecIndex: Index value out of range\n")); - Status = AE_AML_BUFFER_LIMIT; - goto Cleanup; - } - - RetDesc->Reference.OpCode = AML_INDEX_OP; - RetDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD; - RetDesc->Reference.Object = ObjDesc; - RetDesc->Reference.Offset = (UINT32) IdxDesc->Integer.Value; - - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); - } - - -Cleanup: - - /* Always delete operands */ - - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (IdxDesc); - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ResDesc); - - if (RetDesc) - { - AcpiCmRemoveReference (RetDesc); - RetDesc = NULL; - } - } - - /* Set the return object and exit */ - - *ReturnDesc = RetDesc; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecMatch - * - * PARAMETERS: none - * - * RETURN: Status - * - * DESCRIPTION: Execute Match operator - * - * ACPI SPECIFICATION REFERENCES: - * DefMatch := MatchOp SearchPkg Opcode1 Operand1 - * Opcode2 Operand2 StartIndex - * Opcode1 := ByteData: MTR, MEQ, MLE, MLT, MGE, or MGT - * Opcode2 := ByteData: MTR, MEQ, MLE, MLT, MGE, or MGT - * Operand1 := TermArg=>Integer - * Operand2 := TermArg=>Integer - * SearchPkg := TermArg=>PackageObject - * StartIndex := TermArg=>Integer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecMatch ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *PkgDesc; - ACPI_OPERAND_OBJECT *Op1Desc; - ACPI_OPERAND_OBJECT *V1Desc; - ACPI_OPERAND_OBJECT *Op2Desc; - ACPI_OPERAND_OBJECT *V2Desc; - ACPI_OPERAND_OBJECT *StartDesc; - ACPI_OPERAND_OBJECT *RetDesc = NULL; - ACPI_STATUS Status; - UINT32 Index; - UINT32 MatchValue = (UINT32) -1; - - - FUNCTION_TRACE ("AmlExecMatch"); - - - /* Resolve all operands */ - - Status = AcpiAmlResolveOperands (AML_MATCH_OP, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, - AcpiPsGetOpcodeName (AML_MATCH_OP), - 6, "after AcpiAmlResolveOperands"); - - /* Get all operands */ - - Status |= AcpiDsObjStackPopObject (&StartDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&V2Desc, WalkState); - Status |= AcpiDsObjStackPopObject (&Op2Desc, WalkState); - Status |= AcpiDsObjStackPopObject (&V1Desc, WalkState); - Status |= AcpiDsObjStackPopObject (&Op1Desc, WalkState); - Status |= AcpiDsObjStackPopObject (&PkgDesc, WalkState); - - if (ACPI_FAILURE (Status)) - { - /* Invalid parameters on object stack */ - - DEBUG_PRINT (ACPI_ERROR, - ("ExecMatch/AML_MATCH_OP: bad operand(s) (Status=%X)\n", - Status)); - - goto Cleanup; - } - - /* Validate match comparison sub-opcodes */ - - if ((Op1Desc->Integer.Value > MAX_MATCH_OPERATOR) || - (Op2Desc->Integer.Value > MAX_MATCH_OPERATOR)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMatch: operation encoding out of range\n")); - Status = AE_AML_OPERAND_VALUE; - goto Cleanup; - } - - Index = (UINT32) StartDesc->Integer.Value; - if (Index >= (UINT32) PkgDesc->Package.Count) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMatch: start position value out of range\n")); - Status = AE_AML_PACKAGE_LIMIT; - goto Cleanup; - } - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - - } - - /* - * Examine each element until a match is found. Within the loop, - * "continue" signifies that the current element does not match - * and the next should be examined. - * Upon finding a match, the loop will terminate via "break" at - * the bottom. If it terminates "normally", MatchValue will be -1 - * (its initial value) indicating that no match was found. When - * returned as a Number, this will produce the Ones value as specified. - */ - - for ( ; Index < PkgDesc->Package.Count; ++Index) - { - /* - * Treat any NULL or non-numeric elements as non-matching. - * TBD [Unhandled] - if an element is a Name, - * should we examine its value? - */ - if (!PkgDesc->Package.Elements[Index] || - ACPI_TYPE_INTEGER != PkgDesc->Package.Elements[Index]->Common.Type) - { - continue; - } - - /* - * Within these switch statements: - * "break" (exit from the switch) signifies a match; - * "continue" (proceed to next iteration of enclosing - * "for" loop) signifies a non-match. - */ - switch (Op1Desc->Integer.Value) - { - - case MATCH_MTR: /* always true */ - - break; - - - case MATCH_MEQ: /* true if equal */ - - if (PkgDesc->Package.Elements[Index]->Integer.Value - != V1Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MLE: /* true if less than or equal */ - - if (PkgDesc->Package.Elements[Index]->Integer.Value - > V1Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MLT: /* true if less than */ - - if (PkgDesc->Package.Elements[Index]->Integer.Value - >= V1Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MGE: /* true if greater than or equal */ - - if (PkgDesc->Package.Elements[Index]->Integer.Value - < V1Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MGT: /* true if greater than */ - - if (PkgDesc->Package.Elements[Index]->Integer.Value - <= V1Desc->Integer.Value) - { - continue; - } - break; - - - default: /* undefined */ - - continue; - } - - - switch(Op2Desc->Integer.Value) - { - - case MATCH_MTR: - - break; - - - case MATCH_MEQ: - - if (PkgDesc->Package.Elements[Index]->Integer.Value - != V2Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MLE: - - if (PkgDesc->Package.Elements[Index]->Integer.Value - > V2Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MLT: - - if (PkgDesc->Package.Elements[Index]->Integer.Value - >= V2Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MGE: - - if (PkgDesc->Package.Elements[Index]->Integer.Value - < V2Desc->Integer.Value) - { - continue; - } - break; - - - case MATCH_MGT: - - if (PkgDesc->Package.Elements[Index]->Integer.Value - <= V2Desc->Integer.Value) - { - continue; - } - break; - - - default: - - continue; - } - - /* Match found: exit from loop */ - - MatchValue = Index; - break; - } - - /* MatchValue is the return value */ - - RetDesc->Integer.Value = MatchValue; - - -Cleanup: - - /* Free the operands */ - - AcpiCmRemoveReference (StartDesc); - AcpiCmRemoveReference (V2Desc); - AcpiCmRemoveReference (Op2Desc); - AcpiCmRemoveReference (V1Desc); - AcpiCmRemoveReference (Op1Desc); - AcpiCmRemoveReference (PkgDesc); - - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status) && - (RetDesc)) - { - AcpiCmRemoveReference (RetDesc); - RetDesc = NULL; - } - - - /* Set the return object and exit */ - - *ReturnDesc = RetDesc; - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/ammonad.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/ammonad.c deleted file mode 100644 index 394780f..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/ammonad.c +++ /dev/null @@ -1,1212 +0,0 @@ - -/****************************************************************************** - * - * Module Name: ammonad - ACPI AML (p-code) execution for monadic operators - * $Revision: 89 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMMONAD_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("ammonad") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlGetObjectReference - * - * PARAMETERS: ObjDesc - Create a reference to this object - * RetDesc - Where to store the reference - * - * RETURN: Status - * - * DESCRIPTION: Obtain and return a "reference" to the target object - * Common code for the RefOfOp and the CondRefOfOp. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiAmlGetObjectReference ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **RetDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("AmlGetObjectReference", ObjDesc); - - - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) - { - if (ObjDesc->Common.Type != INTERNAL_TYPE_REFERENCE) - { - *RetDesc = NULL; - Status = AE_TYPE; - goto Cleanup; - } - - /* - * Not a Name -- an indirect name pointer would have - * been converted to a direct name pointer in AcpiAmlResolveOperands - */ - switch (ObjDesc->Reference.OpCode) - { - case AML_LOCAL_OP: - - *RetDesc = (void *) AcpiDsMethodDataGetNte (MTH_TYPE_LOCAL, - (ObjDesc->Reference.Offset), WalkState); - break; - - - case AML_ARG_OP: - - *RetDesc = (void *) AcpiDsMethodDataGetNte (MTH_TYPE_ARG, - (ObjDesc->Reference.Offset), WalkState); - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetObjectReference: (Internal) Unknown Ref subtype %02x\n", - ObjDesc->Reference.OpCode)); - *RetDesc = NULL; - Status = AE_AML_INTERNAL; - goto Cleanup; - } - - } - - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - /* Must be a named object; Just return the Node */ - - *RetDesc = ObjDesc; - } - - else - { - *RetDesc = NULL; - Status = AE_TYPE; - } - - -Cleanup: - - DEBUG_PRINT (TRACE_EXEC, - ("AmlGetObjectReference: Obj=%p Ref=%p\n", ObjDesc, *RetDesc)); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecMonadic1 - * - * PARAMETERS: Opcode - The opcode to be executed - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 1 monadic operator with numeric operand on - * object stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecMonadic1 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE_PTR ("AmlExecMonadic1", WALK_OPERANDS); - - - /* Resolve all operands */ - - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, - AcpiPsGetOpcodeName (Opcode), - 1, "after AcpiAmlResolveOperands"); - - /* Get all operands */ - - Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic1/%s: bad operand(s) (Status=%s)\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException(Status))); - - goto Cleanup; - } - - - /* Examine the opcode */ - - switch (Opcode) - { - - /* DefRelease := ReleaseOp MutexObject */ - - case AML_RELEASE_OP: - - Status = AcpiAmlSystemReleaseMutex (ObjDesc); - break; - - - /* DefReset := ResetOp AcpiEventObject */ - - case AML_RESET_OP: - - Status = AcpiAmlSystemResetEvent (ObjDesc); - break; - - - /* DefSignal := SignalOp AcpiEventObject */ - - case AML_SIGNAL_OP: - - Status = AcpiAmlSystemSignalEvent (ObjDesc); - break; - - - /* DefSleep := SleepOp MsecTime */ - - case AML_SLEEP_OP: - - AcpiAmlSystemDoSuspend ((UINT32) ObjDesc->Integer.Value); - break; - - - /* DefStall := StallOp UsecTime */ - - case AML_STALL_OP: - - AcpiAmlSystemDoStall ((UINT32) ObjDesc->Integer.Value); - break; - - - /* Unknown opcode */ - - default: - - REPORT_ERROR (("AcpiAmlExecMonadic1: Unknown monadic opcode %X\n", - Opcode)); - Status = AE_AML_BAD_OPCODE; - break; - - } /* switch */ - - -Cleanup: - - /* Always delete the operand */ - - AcpiCmRemoveReference (ObjDesc); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecMonadic2R - * - * PARAMETERS: Opcode - The opcode to be executed - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 2 monadic operator with numeric operand and - * result operand on operand stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecMonadic2R ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *ResDesc; - ACPI_OPERAND_OBJECT *RetDesc = NULL; - ACPI_OPERAND_OBJECT *RetDesc2 = NULL; - UINT32 ResVal; - ACPI_STATUS Status; - UINT32 i; - UINT32 j; - ACPI_INTEGER Digit; - - - FUNCTION_TRACE_PTR ("AmlExecMonadic2R", WALK_OPERANDS); - - - /* Resolve all operands */ - - Status = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, - AcpiPsGetOpcodeName (Opcode), - 2, "after AcpiAmlResolveOperands"); - - /* Get all operands */ - - Status |= AcpiDsObjStackPopObject (&ResDesc, WalkState); - Status |= AcpiDsObjStackPopObject (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2R/%s: bad operand(s) (Status=%s)\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException(Status))); - - goto Cleanup; - } - - - /* Create a return object of type NUMBER for most opcodes */ - - switch (Opcode) - { - case AML_BIT_NOT_OP: - case AML_FIND_SET_LEFT_BIT_OP: - case AML_FIND_SET_RIGHT_BIT_OP: - case AML_FROM_BCD_OP: - case AML_TO_BCD_OP: - case AML_COND_REF_OF_OP: - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - break; - } - - - switch (Opcode) - { - /* DefNot := NotOp Operand Result */ - - case AML_BIT_NOT_OP: - - RetDesc->Integer.Value = ~ObjDesc->Integer.Value; - break; - - - /* DefFindSetLeftBit := FindSetLeftBitOp Operand Result */ - - case AML_FIND_SET_LEFT_BIT_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value; - - /* - * Acpi specification describes Integer type as a little - * endian unsigned value, so this boundry condition is valid. - */ - for (ResVal = 0; RetDesc->Integer.Value && ResVal < ACPI_INTEGER_BIT_SIZE; ++ResVal) - { - RetDesc->Integer.Value >>= 1; - } - - RetDesc->Integer.Value = ResVal; - break; - - - /* DefFindSetRightBit := FindSetRightBitOp Operand Result */ - - case AML_FIND_SET_RIGHT_BIT_OP: - - RetDesc->Integer.Value = ObjDesc->Integer.Value; - - /* - * Acpi specification describes Integer type as a little - * endian unsigned value, so this boundry condition is valid. - */ - for (ResVal = 0; RetDesc->Integer.Value && ResVal < ACPI_INTEGER_BIT_SIZE; ++ResVal) - { - RetDesc->Integer.Value <<= 1; - } - - /* Since returns must be 1-based, subtract from 33 (65) */ - - RetDesc->Integer.Value = ResVal == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - ResVal; - break; - - - /* DefFromBDC := FromBCDOp BCDValue Result */ - - case AML_FROM_BCD_OP: - - /* - * The 64-bit ACPI integer can hold 16 4-bit BCD integers - */ - RetDesc->Integer.Value = 0; - for (i = 0; i < ACPI_MAX_BCD_DIGITS; i++) - { - /* Get one BCD digit */ - - Digit = (ACPI_INTEGER) ((ObjDesc->Integer.Value >> (i * 4)) & 0xF); - - /* Check the range of the digit */ - - if (Digit > 9) - { - DEBUG_PRINT (ACPI_ERROR, - ("Monadic2R/FromBCDOp: BCD digit too large: \n", - Digit)); - Status = AE_AML_NUMERIC_OVERFLOW; - goto Cleanup; - } - - if (Digit > 0) - { - /* Sum into the result with the appropriate power of 10 */ - - for (j = 0; j < i; j++) - { - Digit *= 10; - } - - RetDesc->Integer.Value += Digit; - } - } - break; - - - /* DefToBDC := ToBCDOp Operand Result */ - - case AML_TO_BCD_OP: - - - if (ObjDesc->Integer.Value > ACPI_MAX_BCD_VALUE) - { - DEBUG_PRINT (ACPI_ERROR, ("Monadic2R/ToBCDOp: BCD overflow: %d\n", - ObjDesc->Integer.Value)); - Status = AE_AML_NUMERIC_OVERFLOW; - goto Cleanup; - } - - RetDesc->Integer.Value = 0; - for (i = 0; i < ACPI_MAX_BCD_DIGITS; i++) - { - /* Divide by nth factor of 10 */ - - Digit = ObjDesc->Integer.Value; - for (j = 0; j < i; j++) - { - Digit /= 10; - } - - /* Create the BCD digit */ - - if (Digit > 0) - { - RetDesc->Integer.Value += (ACPI_MODULO (Digit, 10) << (i * 4)); - } - } - break; - - - /* DefCondRefOf := CondRefOfOp SourceObject Result */ - - case AML_COND_REF_OF_OP: - - /* - * This op is a little strange because the internal return value is - * different than the return value stored in the result descriptor - * (There are really two return values) - */ - - if ((ACPI_NAMESPACE_NODE *) ObjDesc == AcpiGbl_RootNode) - { - /* - * This means that the object does not exist in the namespace, - * return FALSE - */ - - RetDesc->Integer.Value = 0; - - /* - * Must delete the result descriptor since there is no reference - * being returned - */ - - AcpiCmRemoveReference (ResDesc); - goto Cleanup; - } - - /* Get the object reference and store it */ - - Status = AcpiAmlGetObjectReference (ObjDesc, &RetDesc2, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiAmlExecStore (RetDesc2, ResDesc, WalkState); - - /* The object exists in the namespace, return TRUE */ - - RetDesc->Integer.Value = ACPI_INTEGER_MAX; - goto Cleanup; - break; - - - case AML_STORE_OP: - - /* - * A store operand is typically a number, string, buffer or lvalue - * TBD: [Unhandled] What about a store to a package? - */ - - /* - * Do the store, and be careful about deleting the source object, - * since the object itself may have been stored. - */ - - Status = AcpiAmlExecStore (ObjDesc, ResDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* On failure, just delete the ObjDesc */ - - AcpiCmRemoveReference (ObjDesc); - } - - else - { - /* - * Normally, we would remove a reference on the ObjDesc parameter; - * But since it is being used as the internal return object - * (meaning we would normally increment it), the two cancel out, - * and we simply don't do anything. - */ - *ReturnDesc = ObjDesc; - } - - ObjDesc = NULL; - return_ACPI_STATUS (Status); - - break; - - - case AML_DEBUG_OP: - - /* Reference, returning an Reference */ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2R: DebugOp should never get here!\n")); - return_ACPI_STATUS (AE_OK); - break; - - - /* - * These are obsolete opcodes - */ - - /* DefShiftLeftBit := ShiftLeftBitOp Source BitNum */ - /* DefShiftRightBit := ShiftRightBitOp Source BitNum */ - - case AML_SHIFT_LEFT_BIT_OP: - case AML_SHIFT_RIGHT_BIT_OP: - - DEBUG_PRINT (ACPI_ERROR, ("AmlExecMonadic2R: %s unimplemented\n", - AcpiPsGetOpcodeName (Opcode))); - Status = AE_SUPPORT; - goto Cleanup; - break; - - - default: - - REPORT_ERROR (("AcpiAmlExecMonadic2R: Unknown monadic opcode %X\n", - Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - - Status = AcpiAmlExecStore (RetDesc, ResDesc, WalkState); - - -Cleanup: - /* Always delete the operand object */ - - AcpiCmRemoveReference (ObjDesc); - - /* Delete return object(s) on error */ - - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ResDesc); /* Result descriptor */ - if (RetDesc) - { - AcpiCmRemoveReference (RetDesc); - RetDesc = NULL; - } - } - - /* Set the return object and exit */ - - *ReturnDesc = RetDesc; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecMonadic2 - * - * PARAMETERS: Opcode - The opcode to be executed - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 2 monadic operator with numeric operand: - * DerefOfOp, RefOfOp, SizeOfOp, TypeOp, IncrementOp, - * DecrementOp, LNotOp, - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecMonadic2 ( - UINT16 Opcode, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *TmpDesc; - ACPI_OPERAND_OBJECT *RetDesc = NULL; - ACPI_STATUS ResolveStatus; - ACPI_STATUS Status; - UINT32 Type; - ACPI_INTEGER Value; - - - FUNCTION_TRACE_PTR ("AmlExecMonadic2", WALK_OPERANDS); - - - /* Attempt to resolve the operands */ - - ResolveStatus = AcpiAmlResolveOperands (Opcode, WALK_OPERANDS, WalkState); - DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, - AcpiPsGetOpcodeName (Opcode), - 1, "after AcpiAmlResolveOperands"); - - /* Always get all operands */ - - Status = AcpiDsObjStackPopObject (&ObjDesc, WalkState); - - - /* Now we can check the status codes */ - - if (ACPI_FAILURE (ResolveStatus)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2[%s]: Could not resolve operands, %s\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException (ResolveStatus))); - - goto Cleanup; - } - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2[%s]: Bad operand(s), %s\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException (Status))); - - goto Cleanup; - } - - - /* Get the operand and decode the opcode */ - - - switch (Opcode) - { - - /* DefLNot := LNotOp Operand */ - - case AML_LNOT_OP: - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - RetDesc->Integer.Value = !ObjDesc->Integer.Value; - break; - - - /* DefDecrement := DecrementOp Target */ - /* DefIncrement := IncrementOp Target */ - - case AML_DECREMENT_OP: - case AML_INCREMENT_OP: - - /* - * Since we are expecting an Reference on the top of the stack, it - * can be either an Node or an internal object. - * - * TBD: [Future] This may be the prototype code for all cases where - * an Reference is expected!! 10/99 - */ - - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - RetDesc = ObjDesc; - } - - else - { - /* - * Duplicate the Reference in a new object so that we can resolve it - * without destroying the original Reference object - */ - - RetDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - RetDesc->Reference.OpCode = ObjDesc->Reference.OpCode; - RetDesc->Reference.Offset = ObjDesc->Reference.Offset; - RetDesc->Reference.Object = ObjDesc->Reference.Object; - } - - - /* - * Convert the RetDesc Reference to a Number - * (This deletes the original RetDesc) - */ - - Status = AcpiAmlResolveOperands (AML_LNOT_OP, &RetDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("ExecMonadic2/%s: bad operand(s) (Status=%s)\n", - AcpiPsGetOpcodeName (Opcode), AcpiCmFormatException(Status))); - - goto Cleanup; - } - - /* Do the actual increment or decrement */ - - if (AML_INCREMENT_OP == Opcode) - { - RetDesc->Integer.Value++; - } - else - { - RetDesc->Integer.Value--; - } - - /* Store the result back in the original descriptor */ - - Status = AcpiAmlExecStore (RetDesc, ObjDesc, WalkState); - - /* Objdesc was just deleted (because it is an Reference) */ - - ObjDesc = NULL; - - break; - - - /* DefObjectType := ObjectTypeOp SourceObject */ - - case AML_TYPE_OP: - - if (INTERNAL_TYPE_REFERENCE == ObjDesc->Common.Type) - { - /* - * Not a Name -- an indirect name pointer would have - * been converted to a direct name pointer in ResolveOperands - */ - switch (ObjDesc->Reference.OpCode) - { - case AML_ZERO_OP: - case AML_ONE_OP: - case AML_ONES_OP: - - /* Constants are of type Number */ - - Type = ACPI_TYPE_INTEGER; - break; - - - case AML_DEBUG_OP: - - /* Per 1.0b spec, Debug object is of type DebugObject */ - - Type = ACPI_TYPE_DEBUG_OBJECT; - break; - - - case AML_INDEX_OP: - - /* Get the type of this reference (index into another object) */ - - Type = ObjDesc->Reference.TargetType; - if (Type == ACPI_TYPE_PACKAGE) - { - /* - * The main object is a package, we want to get the type - * of the individual package element that is referenced by - * the index. - */ - Type = (*(ObjDesc->Reference.Where))->Common.Type; - } - - break; - - - case AML_LOCAL_OP: - - Type = AcpiDsMethodDataGetType (MTH_TYPE_LOCAL, - (ObjDesc->Reference.Offset), WalkState); - break; - - - case AML_ARG_OP: - - Type = AcpiDsMethodDataGetType (MTH_TYPE_ARG, - (ObjDesc->Reference.Offset), WalkState); - break; - - - default: - - REPORT_ERROR (("AcpiAmlExecMonadic2/TypeOp: Internal error - Unknown Reference subtype %X\n", - ObjDesc->Reference.OpCode)); - Status = AE_AML_INTERNAL; - goto Cleanup; - } - } - - else - { - /* - * It's not a Reference, so it must be a direct name pointer. - */ - Type = AcpiNsGetType ((ACPI_HANDLE) ObjDesc); - } - - /* Allocate a descriptor to hold the type. */ - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - RetDesc->Integer.Value = Type; - break; - - - /* DefSizeOf := SizeOfOp SourceObject */ - - case AML_SIZE_OF_OP: - - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - ObjDesc = AcpiNsGetAttachedObject (ObjDesc); - } - - if (!ObjDesc) - { - Value = 0; - } - - else - { - switch (ObjDesc->Common.Type) - { - - case ACPI_TYPE_BUFFER: - - Value = ObjDesc->Buffer.Length; - break; - - - case ACPI_TYPE_STRING: - - Value = ObjDesc->String.Length; - break; - - - case ACPI_TYPE_PACKAGE: - - Value = ObjDesc->Package.Count; - break; - - case INTERNAL_TYPE_REFERENCE: - - Value = 4; - break; - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: Not Buf/Str/Pkg - found type %X\n", - ObjDesc->Common.Type)); - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - } - - /* - * Now that we have the size of the object, create a result - * object to hold the value - */ - - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - RetDesc->Integer.Value = Value; - break; - - - /* DefRefOf := RefOfOp SourceObject */ - - case AML_REF_OF_OP: - - Status = AcpiAmlGetObjectReference (ObjDesc, &RetDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - break; - - - /* DefDerefOf := DerefOfOp ObjReference */ - - case AML_DEREF_OF_OP: - - - /* Check for a method local or argument */ - - if (!VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - /* - * Must resolve/dereference the local/arg reference first - */ - switch (ObjDesc->Reference.OpCode) - { - /* Set ObjDesc to the value of the local/arg */ - - case AML_LOCAL_OP: - - AcpiDsMethodDataGetValue (MTH_TYPE_LOCAL, - (ObjDesc->Reference.Offset), WalkState, &TmpDesc); - - /* - * Delete our reference to the input object and - * point to the object just retrieved - */ - AcpiCmRemoveReference (ObjDesc); - ObjDesc = TmpDesc; - break; - - - case AML_ARG_OP: - - AcpiDsMethodDataGetValue (MTH_TYPE_ARG, - (ObjDesc->Reference.Offset), WalkState, &TmpDesc); - - /* - * Delete our reference to the input object and - * point to the object just retrieved - */ - AcpiCmRemoveReference (ObjDesc); - ObjDesc = TmpDesc; - break; - - default: - - /* Index op - handled below */ - break; - } - } - - - /* ObjDesc may have changed from the code above */ - - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - /* Get the actual object from the Node (This is the dereference) */ - - RetDesc = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object; - - /* Returning a pointer to the object, add another reference! */ - - AcpiCmAddReference (RetDesc); - } - - else - { - /* - * This must be a reference object produced by the Index - * ASL operation -- check internal opcode - */ - - if ((ObjDesc->Reference.OpCode != AML_INDEX_OP) && - (ObjDesc->Reference.OpCode != AML_REF_OF_OP)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: DerefOf, invalid obj ref %p\n", - ObjDesc)); - - Status = AE_TYPE; - goto Cleanup; - } - - - switch (ObjDesc->Reference.OpCode) - { - case AML_INDEX_OP: - - /* - * Supported target types for the Index operator are - * 1) A Buffer - * 2) A Package - */ - - if (ObjDesc->Reference.TargetType == ACPI_TYPE_BUFFER_FIELD) - { - /* - * The target is a buffer, we must create a new object that - * contains one element of the buffer, the element pointed - * to by the index. - * - * NOTE: index into a buffer is NOT a pointer to a - * sub-buffer of the main buffer, it is only a pointer to a - * single element (byte) of the buffer! - */ - RetDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!RetDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - TmpDesc = ObjDesc->Reference.Object; - RetDesc->Integer.Value = - TmpDesc->Buffer.Pointer[ObjDesc->Reference.Offset]; - - /* TBD: [Investigate] (see below) Don't add an additional - * ref! - */ - } - - else if (ObjDesc->Reference.TargetType == ACPI_TYPE_PACKAGE) - { - /* - * The target is a package, we want to return the referenced - * element of the package. We must add another reference to - * this object, however. - */ - - RetDesc = *(ObjDesc->Reference.Where); - if (!RetDesc) - { - /* - * We can't return a NULL dereferenced value. This is - * an uninitialized package element and is thus a - * severe error. - */ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: DerefOf, NULL package element obj %p\n", - ObjDesc)); - Status = AE_AML_UNINITIALIZED_ELEMENT; - goto Cleanup; - } - - AcpiCmAddReference (RetDesc); - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecMonadic2: DerefOf, Unknown TargetType %X in obj %p\n", - ObjDesc->Reference.TargetType, ObjDesc)); - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - break; - - - case AML_REF_OF_OP: - - RetDesc = ObjDesc->Reference.Object; - - /* Add another reference to the object! */ - - AcpiCmAddReference (RetDesc); - break; - } - } - - break; - - - default: - - REPORT_ERROR (("AcpiAmlExecMonadic2: Unknown monadic opcode %X\n", - Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - -Cleanup: - - if (ObjDesc) - { - AcpiCmRemoveReference (ObjDesc); - } - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status) && - (RetDesc)) - { - AcpiCmRemoveReference (RetDesc); - RetDesc = NULL; - } - - *ReturnDesc = RetDesc; - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amnames.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amnames.c deleted file mode 100644 index 9054e2e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amnames.c +++ /dev/null @@ -1,551 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amnames - interpreter/scanner name load/execute - * $Revision: 73 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMNAMES_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amnames") - - -/* AML Package Length encodings */ - -#define ACPI_AML_PACKAGE_TYPE1 0x40 -#define ACPI_AML_PACKAGE_TYPE2 0x4000 -#define ACPI_AML_PACKAGE_TYPE3 0x400000 -#define ACPI_AML_PACKAGE_TYPE4 0x40000000 - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlAllocateNameString - * - * PARAMETERS: PrefixCount - Count of parent levels. Special cases: - * (-1) = root, 0 = none - * NumNameSegs - count of 4-character name segments - * - * RETURN: A pointer to the allocated string segment. This segment must - * be deleted by the caller. - * - * DESCRIPTION: Allocate a buffer for a name string. Ensure allocated name - * string is long enough, and set up prefix if any. - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiAmlAllocateNameString ( - UINT32 PrefixCount, - UINT32 NumNameSegs) -{ - NATIVE_CHAR *TempPtr; - NATIVE_CHAR *NameString; - UINT32 SizeNeeded; - - FUNCTION_TRACE ("AmlAllocateNameString"); - - - /* - * Allow room for all \ and ^ prefixes, all segments, and a MultiNamePrefix. - * Also, one byte for the null terminator. - * This may actually be somewhat longer than needed. - */ - - if (PrefixCount == (UINT32) -1) - { - /* Special case for root */ - - SizeNeeded = 1 + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; - } - else - { - SizeNeeded = PrefixCount + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; - } - - /* - * Allocate a buffer for the name. - * This buffer must be deleted by the caller! - */ - - NameString = AcpiCmAllocate (SizeNeeded); - if (!NameString) - { - REPORT_ERROR (("AmlAllocateNameString: name allocation failure\n")); - return_PTR (NULL); - } - - TempPtr = NameString; - - /* Set up Root or Parent prefixes if needed */ - - if (PrefixCount == (UINT32) -1) - { - *TempPtr++ = AML_ROOT_PREFIX; - } - - else - { - while (PrefixCount--) - { - *TempPtr++ = AML_PARENT_PREFIX; - } - } - - - /* Set up Dual or Multi prefixes if needed */ - - if (NumNameSegs > 2) - { - /* Set up multi prefixes */ - - *TempPtr++ = AML_MULTI_NAME_PREFIX_OP; - *TempPtr++ = (char) NumNameSegs; - } - - else if (2 == NumNameSegs) - { - /* Set up dual prefixes */ - - *TempPtr++ = AML_DUAL_NAME_PREFIX; - } - - /* - * Terminate string following prefixes. AcpiAmlExecNameSegment() will - * append the segment(s) - */ - - *TempPtr = 0; - - return_PTR (NameString); -} - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecNameSegment - * - * PARAMETERS: InterpreterMode - Current running mode (load1/Load2/Exec) - * - * RETURN: Status - * - * DESCRIPTION: Execute a name segment (4 bytes) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecNameSegment ( - UINT8 **InAmlAddress, - NATIVE_CHAR *NameString) -{ - UINT8 *AmlAddress = *InAmlAddress; - ACPI_STATUS Status = AE_OK; - UINT32 Index; - NATIVE_CHAR CharBuf[5]; - - - FUNCTION_TRACE ("AmlExecNameSegment"); - - - /* - * If first character is a digit, then we know that we aren't looking at a - * valid name segment - */ - - CharBuf[0] = *AmlAddress; - - if ('0' <= CharBuf[0] && CharBuf[0] <= '9') - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecNameSegment: leading digit: %c\n", CharBuf[0])); - return_ACPI_STATUS (AE_CTRL_PENDING); - } - - DEBUG_PRINT (TRACE_LOAD, ("AmlExecNameSegment: Bytes from stream:\n")); - - for (Index = 4; - (Index > 0) && (AcpiCmValidAcpiCharacter (*AmlAddress)); - --Index) - { - CharBuf[4 - Index] = *AmlAddress++; - DEBUG_PRINT (TRACE_LOAD, ("%c\n", CharBuf[4 - Index])); - } - - - /* Valid name segment */ - - if (0 == Index) - { - /* Found 4 valid characters */ - - CharBuf[4] = '\0'; - - if (NameString) - { - STRCAT (NameString, CharBuf); - DEBUG_PRINT (TRACE_NAMES, - ("AmlExecNameSegment: Appended to - %s \n", NameString)); - } - - else - { - DEBUG_PRINT (TRACE_NAMES, - ("AmlExecNameSegment: No Name string - %s \n", CharBuf)); - } - } - - else if (4 == Index) - { - /* - * First character was not a valid name character, - * so we are looking at something other than a name. - */ - DEBUG_PRINT (ACPI_INFO, - ("AmlExecNameSegment: Leading INT8 not alpha: %02Xh (not a name)\n", - CharBuf[0])); - Status = AE_CTRL_PENDING; - } - - else - { - /* Segment started with one or more valid characters, but fewer than 4 */ - - Status = AE_AML_BAD_NAME; - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecNameSegment: Bad INT8 %02x in name, at %p\n", - *AmlAddress, AmlAddress)); - } - - DEBUG_PRINT (TRACE_EXEC, ("Leave AcpiAmlExecNameSegment %s \n", - AcpiCmFormatException (Status))); - - *InAmlAddress = AmlAddress; - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlGetNameString - * - * PARAMETERS: DataType - Data type to be associated with this name - * - * RETURN: Status - * - * DESCRIPTION: Get a name, including any prefixes. - * - ******************************************************************************/ - - -ACPI_STATUS -AcpiAmlGetNameString ( - OBJECT_TYPE_INTERNAL DataType, - UINT8 *InAmlAddress, - NATIVE_CHAR **OutNameString, - UINT32 *OutNameLength) -{ - ACPI_STATUS Status = AE_OK; - UINT8 *AmlAddress = InAmlAddress; - NATIVE_CHAR *NameString = NULL; - UINT32 NumSegments; - UINT32 PrefixCount = 0; - UINT8 Prefix = 0; - BOOLEAN HasPrefix = FALSE; - - - FUNCTION_TRACE_PTR ("AmlGetNameString", AmlAddress); - - - if (INTERNAL_TYPE_DEF_FIELD == DataType || - INTERNAL_TYPE_BANK_FIELD == DataType || - INTERNAL_TYPE_INDEX_FIELD == DataType) - { - /* Disallow prefixes for types associated with field names */ - - NameString = AcpiAmlAllocateNameString (0, 1); - if (!NameString) - { - Status = AE_NO_MEMORY; - } - else - { - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); - } - } - - else - { - /* - * DataType is not a field name. - * Examine first character of name for root or parent prefix operators - */ - - switch (*AmlAddress) - { - - case AML_ROOT_PREFIX: - - Prefix = *AmlAddress++; - DEBUG_PRINT (TRACE_LOAD, ("RootPrefix: %x\n", Prefix)); - - /* - * Remember that we have a RootPrefix -- - * see comment in AcpiAmlAllocateNameString() - */ - PrefixCount = (UINT32) -1; - HasPrefix = TRUE; - break; - - - case AML_PARENT_PREFIX: - - /* Increment past possibly multiple parent prefixes */ - - do - { - Prefix = *AmlAddress++; - DEBUG_PRINT (TRACE_LOAD, ("ParentPrefix: %x\n", Prefix)); - - ++PrefixCount; - - } while (*AmlAddress == AML_PARENT_PREFIX); - HasPrefix = TRUE; - break; - - - default: - - break; - } - - - /* Examine first character of name for name segment prefix operator */ - - switch (*AmlAddress) - { - - case AML_DUAL_NAME_PREFIX: - - Prefix = *AmlAddress++; - DEBUG_PRINT (TRACE_LOAD, ("DualNamePrefix: %x\n", Prefix)); - - NameString = AcpiAmlAllocateNameString (PrefixCount, 2); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - /* Indicate that we processed a prefix */ - HasPrefix = TRUE; - - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); - if (ACPI_SUCCESS (Status)) - { - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); - } - break; - - - case AML_MULTI_NAME_PREFIX_OP: - - Prefix = *AmlAddress++; - DEBUG_PRINT (TRACE_LOAD, ("MultiNamePrefix: %x\n", Prefix)); - - /* Fetch count of segments remaining in name path */ - - NumSegments = *AmlAddress++; - - NameString = AcpiAmlAllocateNameString (PrefixCount, NumSegments); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - /* Indicate that we processed a prefix */ - HasPrefix = TRUE; - - while (NumSegments && - (Status = AcpiAmlExecNameSegment (&AmlAddress, NameString)) == AE_OK) - { - --NumSegments; - } - - break; - - - case 0: - - /* NullName valid as of 8-12-98 ASL/AML Grammar Update */ - - if (-1 == PrefixCount) - { - DEBUG_PRINT (TRACE_EXEC, - ("AmlDoName: NameSeg is \"\\\" followed by NULL\n")); - } - - /* Consume the NULL byte */ - - AmlAddress++; - NameString = AcpiAmlAllocateNameString (PrefixCount, 0); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - break; - - - default: - - /* Name segment string */ - - NameString = AcpiAmlAllocateNameString (PrefixCount, 1); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - Status = AcpiAmlExecNameSegment (&AmlAddress, NameString); - break; - - } /* Switch (PeekOp ()) */ - } - - - if (AE_CTRL_PENDING == Status && HasPrefix) - { - /* Ran out of segments after processing a prefix */ - - REPORT_ERROR ( - ("AmlDoName: Malformed Name at %p\n", NameString)); - Status = AE_AML_BAD_NAME; - } - - - *OutNameString = NameString; - *OutNameLength = (UINT32) (AmlAddress - InAmlAddress); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amprep.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amprep.c deleted file mode 100644 index 13c7d04..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amprep.c +++ /dev/null @@ -1,596 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amprep - ACPI AML (p-code) execution - field prep utilities - * $Revision: 73 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMPREP_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amprep") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlDecodeFieldAccessType - * - * PARAMETERS: Access - Encoded field access bits - * - * RETURN: Field granularity (8, 16, or 32) - * - * DESCRIPTION: Decode the AccessType bits of a field definition. - * - ******************************************************************************/ - -static UINT32 -AcpiAmlDecodeFieldAccessType ( - UINT32 Access, - UINT16 Length) -{ - - switch (Access) - { - case ACCESS_ANY_ACC: - if (Length <= 8) - { - return (8); - } - else if (Length <= 16) - { - return (16); - } - else if (Length <= 32) - { - return (32); - } - else - { - return (8); - } - break; - - case ACCESS_BYTE_ACC: - return (8); - break; - - case ACCESS_WORD_ACC: - return (16); - break; - - case ACCESS_DWORD_ACC: - return (32); - break; - - default: - /* Invalid field access type */ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlDecodeFieldAccessType: Unknown field access type %x\n", - Access)); - return (0); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlPrepCommonFieldObjec - * - * PARAMETERS: ObjDesc - The field object - * FieldFlags - Access, LockRule, or UpdateRule. - * The format of a FieldFlag is described - * in the ACPI specification - * FieldPosition - Field position - * FieldLength - Field length - * - * RETURN: Status - * - * DESCRIPTION: Initialize the areas of the field object that are common - * to the various types of fields. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiAmlPrepCommonFieldObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) -{ - UINT32 Granularity; - - - FUNCTION_TRACE ("AmlPrepCommonFieldObject"); - - - /* - * Note: the structure being initialized is the - * ACPI_COMMON_FIELD_INFO; Therefore, we can just use the Field union to - * access this common area. No structure fields outside of the common area - * are initialized by this procedure. - */ - - /* Decode the FieldFlags */ - - ObjDesc->Field.Access = (UINT8) ((FieldFlags & ACCESS_TYPE_MASK) - >> ACCESS_TYPE_SHIFT); - ObjDesc->Field.LockRule = (UINT8) ((FieldFlags & LOCK_RULE_MASK) - >> LOCK_RULE_SHIFT); - ObjDesc->Field.UpdateRule = (UINT8) ((FieldFlags & UPDATE_RULE_MASK) - >> UPDATE_RULE_SHIFT); - - /* Other misc fields */ - - ObjDesc->Field.Length = (UINT16) FieldLength; - ObjDesc->Field.AccessAttribute = FieldAttribute; - - /* Decode the access type so we can compute offsets */ - - Granularity = AcpiAmlDecodeFieldAccessType (ObjDesc->Field.Access, ObjDesc->Field.Length); - if (!Granularity) - { - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - } - - /* Access granularity based fields */ - - ObjDesc->Field.Granularity = (UINT8) Granularity; - ObjDesc->Field.BitOffset = (UINT8) (FieldPosition % Granularity); - ObjDesc->Field.Offset = (UINT32) FieldPosition / Granularity; - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlPrepDefFieldValue - * - * PARAMETERS: Node - Owning Node - * Region - Region in which field is being defined - * FieldFlags - Access, LockRule, or UpdateRule. - * The format of a FieldFlag is described - * in the ACPI specification - * FieldPosition - Field position - * FieldLength - Field length - * - * RETURN: Status - * - * DESCRIPTION: Construct an ACPI_OPERAND_OBJECT of type DefField and - * connect it to the parent Node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlPrepDefFieldValue ( - ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE Region, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Type; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlPrepDefFieldValue"); - - - /* Parameter validation */ - - if (!Region) - { - DEBUG_PRINT (ACPI_ERROR, ("AmlPrepDefFieldValue: null Region\n")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - Type = AcpiNsGetType (Region); - if (Type != ACPI_TYPE_REGION) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlPrepDefFieldValue: Needed Region, found type %X %s\n", - Type, AcpiCmGetTypeName (Type))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Allocate a new object */ - - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_DEF_FIELD); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - - /* ObjDesc and Region valid */ - - DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Node, IMODE_EXECUTE, - "AmlPrepDefFieldValue", 1, "case DefField"); - DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Region, IMODE_EXECUTE, - "AmlPrepDefFieldValue", 1, "case DefField"); - - /* Initialize areas of the object that are common to all fields */ - - Status = AcpiAmlPrepCommonFieldObject (ObjDesc, FieldFlags, FieldAttribute, - FieldPosition, FieldLength); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Initialize areas of the object that are specific to this field type */ - - ObjDesc->Field.Container = AcpiNsGetAttachedObject (Region); - - /* An additional reference for the container */ - - AcpiCmAddReference (ObjDesc->Field.Container); - - - /* Debug info */ - - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepDefFieldValue: bitoff=%X off=%X gran=%X\n", - ObjDesc->Field.BitOffset, ObjDesc->Field.Offset, - ObjDesc->Field.Granularity)); - - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepDefFieldValue: set NamedObj %p (%4.4s) val = %p\n", - Node, &(Node->Name), ObjDesc)); - - DUMP_STACK_ENTRY (ObjDesc); - DUMP_ENTRY (Region, ACPI_INFO); - DEBUG_PRINT (ACPI_INFO, ("\t%p \n", ObjDesc->Field.Container)); - if (ObjDesc->Field.Container) - { - DUMP_STACK_ENTRY (ObjDesc->Field.Container); - } - DEBUG_PRINT (ACPI_INFO, - ("============================================================\n")); - - /* - * Store the constructed descriptor (ObjDesc) into the NamedObj whose - * handle is on TOS, preserving the current type of that NamedObj. - */ - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) AcpiNsGetType ((ACPI_HANDLE) Node)); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlPrepBankFieldValue - * - * PARAMETERS: Node - Owning Node - * Region - Region in which field is being defined - * BankReg - Bank selection register - * BankVal - Value to store in selection register - * FieldFlags - Access, LockRule, or UpdateRule - * FieldPosition - Field position - * FieldLength - Field length - * - * RETURN: Status - * - * DESCRIPTION: Construct an ACPI_OPERAND_OBJECT of type BankField and - * connect it to the parent Node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlPrepBankFieldValue ( - ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE Region, - ACPI_HANDLE BankReg, - UINT32 BankVal, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Type; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlPrepBankFieldValue"); - - - /* Parameter validation */ - - if (!Region) - { - DEBUG_PRINT (ACPI_ERROR, ("AmlPrepBankFieldValue: null Region\n")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - Type = AcpiNsGetType (Region); - if (Type != ACPI_TYPE_REGION) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlPrepBankFieldValue: Needed Region, found type %X %s\n", - Type, AcpiCmGetTypeName (Type))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Allocate a new object */ - - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_BANK_FIELD); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* ObjDesc and Region valid */ - - DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Node, IMODE_EXECUTE, - "AmlPrepBankFieldValue", 1, "case BankField"); - DUMP_OPERANDS ((ACPI_OPERAND_OBJECT **) &Region, IMODE_EXECUTE, - "AmlPrepBankFieldValue", 1, "case BankField"); - - /* Initialize areas of the object that are common to all fields */ - - Status = AcpiAmlPrepCommonFieldObject (ObjDesc, FieldFlags, FieldAttribute, - FieldPosition, FieldLength); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Initialize areas of the object that are specific to this field type */ - - ObjDesc->BankField.Value = BankVal; - ObjDesc->BankField.Container = AcpiNsGetAttachedObject (Region); - ObjDesc->BankField.BankSelect = AcpiNsGetAttachedObject (BankReg); - - /* An additional reference for the container and bank select */ - /* TBD: [Restructure] is "BankSelect" ever a real internal object?? */ - - AcpiCmAddReference (ObjDesc->BankField.Container); - AcpiCmAddReference (ObjDesc->BankField.BankSelect); - - /* Debug info */ - - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepBankFieldValue: bitoff=%X off=%X gran=%X\n", - ObjDesc->BankField.BitOffset, ObjDesc->BankField.Offset, - ObjDesc->Field.Granularity)); - - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepBankFieldValue: set NamedObj %p (%4.4s) val = %p\n", - Node, &(Node->Name), ObjDesc)); - - DUMP_STACK_ENTRY (ObjDesc); - DUMP_ENTRY (Region, ACPI_INFO); - DUMP_ENTRY (BankReg, ACPI_INFO); - DEBUG_PRINT (ACPI_INFO, - ("============================================================\n")); - - /* - * Store the constructed descriptor (ObjDesc) into the NamedObj whose - * handle is on TOS, preserving the current type of that NamedObj. - */ - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) AcpiNsGetType ((ACPI_HANDLE) Node)); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlPrepIndexFieldValue - * - * PARAMETERS: Node - Owning Node - * IndexReg - Index register - * DataReg - Data register - * FieldFlags - Access, LockRule, or UpdateRule - * FieldPosition - Field position - * FieldLength - Field length - * - * RETURN: Status - * - * DESCRIPTION: Construct an ACPI_OPERAND_OBJECT of type IndexField and - * connect it to the parent Node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlPrepIndexFieldValue ( - ACPI_NAMESPACE_NODE *Node, - ACPI_HANDLE IndexReg, - ACPI_HANDLE DataReg, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldPosition, - UINT32 FieldLength) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlPrepIndexFieldValue"); - - - /* Parameter validation */ - - if (!IndexReg || !DataReg) - { - DEBUG_PRINT (ACPI_ERROR, ("AmlPrepIndexFieldValue: null handle\n")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* Allocate a new object descriptor */ - - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_INDEX_FIELD); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize areas of the object that are common to all fields */ - - Status = AcpiAmlPrepCommonFieldObject (ObjDesc, FieldFlags, FieldAttribute, - FieldPosition, FieldLength); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Initialize areas of the object that are specific to this field type */ - - ObjDesc->IndexField.Value = (UINT32) (FieldPosition / - ObjDesc->Field.Granularity); - ObjDesc->IndexField.Index = IndexReg; - ObjDesc->IndexField.Data = DataReg; - - /* Debug info */ - - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepIndexFieldValue: bitoff=%X off=%X gran=%X\n", - ObjDesc->IndexField.BitOffset, ObjDesc->IndexField.Offset, - ObjDesc->Field.Granularity)); - - DEBUG_PRINT (ACPI_INFO, - ("AmlPrepIndexFieldValue: set NamedObj %p (%4.4s) val = %p\n", - Node, &(Node->Name), ObjDesc)); - - DUMP_STACK_ENTRY (ObjDesc); - DUMP_ENTRY (IndexReg, ACPI_INFO); - DUMP_ENTRY (DataReg, ACPI_INFO); - DEBUG_PRINT (ACPI_INFO, - ("============================================================\n")); - - /* - * Store the constructed descriptor (ObjDesc) into the NamedObj whose - * handle is on TOS, preserving the current type of that NamedObj. - */ - Status = AcpiNsAttachObject ((ACPI_HANDLE) Node, ObjDesc, - (UINT8) AcpiNsGetType ((ACPI_HANDLE) Node)); - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amregion.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amregion.c deleted file mode 100644 index ca01974..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amregion.c +++ /dev/null @@ -1,561 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amregion - ACPI default OpRegion (address space) handlers - * $Revision: 44 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __AMREGION_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "achware.h" -#include "acevents.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amregion") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemMemorySpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the System Memory address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemMemorySpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - void *LogicalAddrPtr = NULL; - MEM_HANDLER_CONTEXT *MemInfo = RegionContext; - UINT32 Length; - - - FUNCTION_TRACE ("AmlSystemMemorySpaceHandler"); - - - /* Validate and translate the bit width */ - - switch (BitWidth) - { - case 8: - Length = 1; - break; - - case 16: - Length = 2; - break; - - case 32: - Length = 4; - break; - - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlSystemMemorySpaceHandler: Invalid SystemMemory width %d\n", - BitWidth)); - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - break; - } - - - /* - * Does the request fit into the cached memory mapping? - * Is 1) Address below the current mapping? OR - * 2) Address beyond the current mapping? - */ - - if ((Address < MemInfo->MappedPhysicalAddress) || - (((ACPI_INTEGER) Address + Length) > - ((ACPI_INTEGER) MemInfo->MappedPhysicalAddress + MemInfo->MappedLength))) - { - /* - * The request cannot be resolved by the current memory mapping; - * Delete the existing mapping and create a new one. - */ - - if (MemInfo->MappedLength) - { - /* Valid mapping, delete it */ - - AcpiOsUnmapMemory (MemInfo->MappedLogicalAddress, - MemInfo->MappedLength); - } - - MemInfo->MappedLength = 0; /* In case of failure below */ - - /* Create a new mapping starting at the address given */ - - Status = AcpiOsMapMemory (Address, SYSMEM_REGION_WINDOW_SIZE, - (void **) &MemInfo->MappedLogicalAddress); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* TBD: should these pointers go to 64-bit in all cases ? */ - - MemInfo->MappedPhysicalAddress = Address; - MemInfo->MappedLength = SYSMEM_REGION_WINDOW_SIZE; - } - - - /* - * Generate a logical pointer corresponding to the address we want to - * access - */ - - /* TBD: should these pointers go to 64-bit in all cases ? */ - - LogicalAddrPtr = MemInfo->MappedLogicalAddress + - ((ACPI_INTEGER) Address - (ACPI_INTEGER) MemInfo->MappedPhysicalAddress); - - /* Perform the memory read or write */ - - switch (Function) - { - - case ADDRESS_SPACE_READ: - - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), - ("Read (%d width) Address=%p\n", BitWidth, Address)); - - switch (BitWidth) - { - case 8: - *Value = (UINT32)* (UINT8 *) LogicalAddrPtr; - break; - - case 16: - MOVE_UNALIGNED16_TO_32 (Value, LogicalAddrPtr); - break; - - case 32: - MOVE_UNALIGNED32_TO_32 (Value, LogicalAddrPtr); - break; - } - - break; - - - case ADDRESS_SPACE_WRITE: - - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), - ("Write (%d width) Address=%p Value %X\n", - BitWidth, Address, *Value)); - - switch (BitWidth) - { - case 8: - *(UINT8 *) LogicalAddrPtr = (UINT8) *Value; - break; - - case 16: - MOVE_UNALIGNED16_TO_16 (LogicalAddrPtr, Value); - break; - - case 32: - MOVE_UNALIGNED32_TO_32 (LogicalAddrPtr, Value); - break; - } - - break; - - - default: - Status = AE_BAD_PARAMETER; - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemIoSpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the System IO address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemIoSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AmlSystemIoSpaceHandler"); - - - /* Decode the function parameter */ - - switch (Function) - { - - case ADDRESS_SPACE_READ: - - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), - ("Read(%d width) Address=%p\n", BitWidth, Address)); - - switch (BitWidth) - { - /* I/O Port width */ - - case 8: - *Value = (UINT32) AcpiOsIn8 ((ACPI_IO_ADDRESS) Address); - break; - - case 16: - *Value = (UINT32) AcpiOsIn16 ((ACPI_IO_ADDRESS) Address); - break; - - case 32: - *Value = AcpiOsIn32 ((ACPI_IO_ADDRESS) Address); - break; - - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlSystemIoSpaceHandler: Invalid SystemIO width %d\n", - BitWidth)); - Status = AE_AML_OPERAND_VALUE; - } - - break; - - - case ADDRESS_SPACE_WRITE: - - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), - ("Write(%d width) Address=%p Value %X\n", - BitWidth, Address, *Value)); - - switch (BitWidth) - { - /* I/O Port width */ - case 8: - AcpiOsOut8 ((ACPI_IO_ADDRESS) Address, (UINT8) *Value); - break; - - case 16: - AcpiOsOut16 ((ACPI_IO_ADDRESS) Address, (UINT16) *Value); - break; - - case 32: - AcpiOsOut32 ((ACPI_IO_ADDRESS) Address, *Value); - break; - - default: - DEBUG_PRINT (ACPI_ERROR, ( - "AmlSystemIoSpaceHandler: Invalid SystemIO width %d\n", - BitWidth)); - Status = AE_AML_OPERAND_VALUE; - } - - break; - - - default: - Status = AE_BAD_PARAMETER; - break; - } - - return_ACPI_STATUS (Status); -} - -/******************************************************************************* - * - * FUNCTION: AcpiAmlPciConfigSpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the PCI Config address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlPciConfigSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - UINT32 *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - UINT32 PciBus; - UINT32 DevFunc; - UINT8 PciReg; - PCI_HANDLER_CONTEXT *PCIContext; - - - FUNCTION_TRACE ("AmlPciConfigSpaceHandler"); - - /* - * The arguments to AcpiOs(Read|Write)PciCfg(Byte|Word|Dword) are: - * - * SegBus - 0xSSSSBBBB - SSSS is the PCI bus segment - * BBBB is the PCI bus number - * - * DevFunc - 0xDDDDFFFF - DDDD is the PCI device number - * FFFF is the PCI device function number - * - * RegNum - Config space register must be < 40h - * - * Value - input value for write, output for read - * - */ - - PCIContext = (PCI_HANDLER_CONTEXT *) RegionContext; - - PciBus = LOWORD(PCIContext->Seg) << 16; - PciBus |= LOWORD(PCIContext->Bus); - - DevFunc = PCIContext->DevFunc; - - PciReg = (UINT8) Address; - - switch (Function) - { - - case ADDRESS_SPACE_READ: - - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), - ("R%d S(%04x) B(%04x) DF(%08x) R(%04x)\n", BitWidth, - PCIContext->Seg,PCIContext->Bus,PCIContext->DevFunc, PciReg)); - - *Value = 0; - - switch (BitWidth) - { - /* PCI Register width */ - - case 8: - Status = AcpiOsReadPciCfgByte (PciBus, DevFunc, PciReg, - (UINT8 *) Value); - break; - - case 16: - Status = AcpiOsReadPciCfgWord (PciBus, DevFunc, PciReg, - (UINT16 *) Value); - break; - - case 32: - Status = AcpiOsReadPciCfgDword (PciBus, DevFunc, PciReg, - Value); - break; - - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlPciConfigSpaceHandler: Invalid PCIConfig width %d\n", - BitWidth)); - Status = AE_AML_OPERAND_VALUE; - - } /* Switch bitWidth */ - - break; - - - case ADDRESS_SPACE_WRITE: - - DEBUG_PRINT ((TRACE_OPREGION | VERBOSE_INFO), - ("W%d S(%04x) B(%04x) DF(%08x) R(%04x) D(%08x)\n", BitWidth, - PCIContext->Seg,PCIContext->Bus,PCIContext->DevFunc, - PciReg,*Value)); - - switch (BitWidth) - { - /* PCI Register width */ - - case 8: - Status = AcpiOsWritePciCfgByte (PciBus, DevFunc, PciReg, - *(UINT8 *) Value); - break; - - case 16: - Status = AcpiOsWritePciCfgWord (PciBus, DevFunc, PciReg, - *(UINT16 *) Value); - break; - - case 32: - Status = AcpiOsWritePciCfgDword (PciBus, DevFunc, PciReg, - *Value); - break; - - default: - DEBUG_PRINT (ACPI_ERROR, ( - "AmlPciConfigSpaceHandler: Invalid PCIConfig width %d\n", - BitWidth)); - Status = AE_AML_OPERAND_VALUE; - - } /* Switch bitWidth */ - - break; - - - default: - - Status = AE_BAD_PARAMETER; - break; - - } - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amresnte.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amresnte.c deleted file mode 100644 index 659d6f6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amresnte.c +++ /dev/null @@ -1,697 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amresnte - AML Interpreter object resolution - * $Revision: 27 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMRESNTE_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "actables.h" -#include "acevents.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amresnte") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlResolveNodeToValue - * - * PARAMETERS: StackPtr - Pointer to a location on a stack that contains - * a pointer to an Node - * - * RETURN: Status - * - * DESCRIPTION: Resolve a ACPI_NAMESPACE_NODE (Node, - * A.K.A. a "direct name pointer") - * - * Note: for some of the data types, the pointer attached to the Node - * can be either a pointer to an actual internal object or a pointer into the - * AML stream itself. These types are currently: - * - * ACPI_TYPE_INTEGER - * ACPI_TYPE_STRING - * ACPI_TYPE_BUFFER - * ACPI_TYPE_MUTEX - * ACPI_TYPE_PACKAGE - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlResolveNodeToValue ( - ACPI_NAMESPACE_NODE **StackPtr, - ACPI_WALK_STATE *WalkState) - -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ValDesc = NULL; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_NAMESPACE_NODE *Node; - UINT8 *AmlPointer = NULL; - OBJECT_TYPE_INTERNAL EntryType; - BOOLEAN Locked; - BOOLEAN AttachedAmlPointer = FALSE; - UINT8 AmlOpcode = 0; - ACPI_INTEGER TempVal; - OBJECT_TYPE_INTERNAL ObjectType; - - - FUNCTION_TRACE ("AmlResolveEntryToValue"); - - Node = *StackPtr; - - - /* - * The stack pointer is a "Direct name ptr", and points to a - * a ACPI_NAMESPACE_NODE (Node). Get the pointer that is attached to - * the Node. - */ - - ValDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); - - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveEntryToValue: Entry=%p ValDesc=%p Type=%X\n", - Node, ValDesc, EntryType)); - - /* - * The ValDesc attached to the Node can be either: - * 1) An internal ACPI object - * 2) A pointer into the AML stream (into one of the ACPI system tables) - */ - - if (AcpiTbSystemTablePointer (ValDesc)) - { - AttachedAmlPointer = TRUE; - AmlOpcode = *((UINT8 *) ValDesc); - AmlPointer = ((UINT8 *) ValDesc) + 1; - - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveEntryToValue: Unparsed AML: %p Len=%X\n", - AmlOpcode, AmlPointer)); - } - - - /* - * Several EntryTypes do not require further processing, so - * we will return immediately - */ - /* Devices rarely have an attached object, return the Node - * and Method locals and arguments have a pseudo-Node - */ - if (EntryType == ACPI_TYPE_DEVICE || - (Node->Flags & (ANOBJ_METHOD_ARG | ANOBJ_METHOD_LOCAL))) - { - return_ACPI_STATUS (AE_OK); - } - - if (!ValDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: No object attached to node %p\n", - Node)); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* - * Action is based on the type of the Node, which indicates the type - * of the attached object or pointer - */ - switch (EntryType) - { - - case ACPI_TYPE_PACKAGE: - - if (AttachedAmlPointer) - { - /* - * This means that the package initialization is not parsed - * -- should not happen - */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Unparsed Packages not supported!\n")); - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - /* ValDesc is an internal object in all cases by the time we get here */ - - if (ACPI_TYPE_PACKAGE != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Object not a package, type %X\n", - ValDesc->Common.Type)); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Return an additional reference to the object */ - - ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); - break; - - - case ACPI_TYPE_BUFFER: - - if (AttachedAmlPointer) - { - /* - * This means that the buffer initialization is not parsed - * -- should not happen - */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Unparsed Buffers not supported!\n")); - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - /* ValDesc is an internal object in all cases by the time we get here */ - - if (ACPI_TYPE_BUFFER != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Object not a buffer, type %X\n", - ValDesc->Common.Type)); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Return an additional reference to the object */ - - ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); - break; - - - case ACPI_TYPE_STRING: - - if (AttachedAmlPointer) - { - /* Allocate a new string object */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_STRING); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Init the internal object */ - - ObjDesc->String.Pointer = (NATIVE_CHAR *) AmlPointer; - ObjDesc->String.Length = STRLEN (ObjDesc->String.Pointer); - } - - else - { - if (ACPI_TYPE_STRING != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Object not a string, type %X\n", - ValDesc->Common.Type)); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Return an additional reference to the object */ - - ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); - } - - break; - - - case ACPI_TYPE_INTEGER: - - DEBUG_PRINT (TRACE_EXEC, ("AmlResolveEntryToValue: case Number \n")); - - /* - * The Node has an attached internal object, make sure that it's a - * number - */ - - if (ACPI_TYPE_INTEGER != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveToValue: Object not a Number, type %X\n", - ValDesc->Common.Type)); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Return an additional reference to the object */ - - ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); - break; - - - case INTERNAL_TYPE_DEF_FIELD: - - /* - * TBD: [Investigate] Is this the correct solution? - * - * This section was extended to convert to generic buffer if - * the return length is greater than 32 bits, but still allows - * for returning a type Number for smaller values because the - * caller can then apply arithmetic operators on those fields. - * - * XXX - Implementation limitation: Fields are implemented as type - * XXX - Number, but they really are supposed to be type Buffer. - * XXX - The two are interchangeable only for lengths <= 32 bits. - */ - if(ValDesc->Field.Length > 32) - { - ObjectType = ACPI_TYPE_BUFFER; - } - else - { - ObjectType = ACPI_TYPE_INTEGER; - } - - /* - * Create the destination buffer object and the buffer space. - */ - ObjDesc = AcpiCmCreateInternalObject (ObjectType); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Fill in the object specific details - */ - if (ACPI_TYPE_BUFFER == ObjectType) - { - ObjDesc->Buffer.Pointer = AcpiCmCallocate (ValDesc->Field.Length); - if (!ObjDesc->Buffer.Pointer) - { - AcpiCmRemoveReference(ObjDesc); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Buffer.Length = ValDesc->Field.Length; - - Status = AcpiAmlAccessNamedField (ACPI_READ, (ACPI_HANDLE) Node, - ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - else - { - Status = AcpiAmlAccessNamedField (ACPI_READ, (ACPI_HANDLE) Node, - &TempVal, sizeof (TempVal)); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ObjDesc->Integer.Value = TempVal; - } - - - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveEntryToValue: DefField Entry=%p ValDesc=%p Type=%X\n", - Node, ValDesc, EntryType)); - break; - - - case INTERNAL_TYPE_BANK_FIELD: - - if (AttachedAmlPointer) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: BankField cannot be an Aml ptr\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (INTERNAL_TYPE_BANK_FIELD != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, ( - "AmlResolveToValue: Object not a BankField, type %X\n", - ValDesc->Common.Type)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* Get the global lock if needed */ - - ObjDesc = (ACPI_OPERAND_OBJECT *) *StackPtr; - Locked = AcpiAmlAcquireGlobalLock (ObjDesc->FieldUnit.LockRule); - - /* Set Index value to select proper Data register */ - /* perform the update */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - ValDesc->BankField.BankSelect, &ValDesc->BankField.Value, - sizeof (ValDesc->BankField.Value)); - - AcpiAmlReleaseGlobalLock (Locked); - - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Read Data value */ - - Status = AcpiAmlAccessNamedField (ACPI_READ, - (ACPI_HANDLE) ValDesc->BankField.Container, - &TempVal, sizeof (TempVal)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Create an object for the result */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Integer.Value = TempVal; - break; - - - case INTERNAL_TYPE_INDEX_FIELD: - - if (AttachedAmlPointer) - { - DEBUG_PRINT (ACPI_ERROR, ("AmlResolveEntryToValue: Internal - IndexField cannot be an Aml ptr\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (INTERNAL_TYPE_INDEX_FIELD != ValDesc->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, ( - "AmlResolveToValue: Object not an IndexField, type %X\n", - ValDesc->Common.Type)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* Set Index value to select proper Data register */ - /* Get the global lock if needed */ - - ObjDesc = (ACPI_OPERAND_OBJECT *) *StackPtr; - Locked = AcpiAmlAcquireGlobalLock (ObjDesc->FieldUnit.LockRule); - - /* Perform the update */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - ValDesc->IndexField.Index, &ValDesc->IndexField.Value, - sizeof (ValDesc->IndexField.Value)); - - AcpiAmlReleaseGlobalLock (Locked); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Read Data value */ - - Status = AcpiAmlAccessNamedField (ACPI_READ, ValDesc->IndexField.Data, - &TempVal, sizeof (TempVal)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Create an object for the result */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Integer.Value = TempVal; - break; - - - case ACPI_TYPE_FIELD_UNIT: - - if (AttachedAmlPointer) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: FieldUnit cannot be an Aml ptr\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (ValDesc->Common.Type != (UINT8) EntryType) - { - DEBUG_PRINT (ACPI_ERROR, ( - "AmlResolveToValue: Object type %X not same as EntryType %X\n", - ValDesc->Common.Type, EntryType)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - break; - } - - /* Create object for result */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_ANY); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiAmlGetFieldUnitValue (ValDesc, ObjDesc); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); - } - - break; - - - /* - * For these objects, just return the object attached to the Node - */ - - case ACPI_TYPE_MUTEX: - case ACPI_TYPE_METHOD: - case ACPI_TYPE_POWER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_THERMAL: - case ACPI_TYPE_EVENT: - case ACPI_TYPE_REGION: - - - /* Return an additional reference to the object */ - - ObjDesc = ValDesc; - AcpiCmAddReference (ObjDesc); - break; - - - /* TYPE_Any is untyped, and thus there is no object associated with it */ - - case ACPI_TYPE_ANY: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Untyped entry %p, no attached object!\n", - Node)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */ - break; - - - /* - * The only named references allowed are named constants - * - * e.g. Name (\OSFL, Ones) - */ - case INTERNAL_TYPE_REFERENCE: - - switch (ValDesc->Reference.OpCode) - { - - case AML_ZERO_OP: - - TempVal = 0; - break; - - - case AML_ONE_OP: - - TempVal = 1; - break; - - - case AML_ONES_OP: - - TempVal = ACPI_INTEGER_MAX; - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveToValue/Number: Unsupported reference opcode %X\n", - ValDesc->Reference.OpCode)); - - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - /* Create object for result */ - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Integer.Value = TempVal; - - /* Truncate value if we are executing from a 32-bit ACPI table */ - - AcpiAmlTruncateFor32bitTable (ObjDesc, WalkState); - break; - - - /* Default case is for unknown types */ - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveEntryToValue: Node %p - Unknown object type %X\n", - Node, EntryType)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - - } /* switch (EntryType) */ - - - /* Put the object descriptor on the stack */ - - *StackPtr = (void *) ObjDesc; - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amresolv.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amresolv.c deleted file mode 100644 index 26ecd31..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amresolv.c +++ /dev/null @@ -1,633 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amresolv - AML Interpreter object resolution - * $Revision: 81 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMRESOLV_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "actables.h" -#include "acevents.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amresolv") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlGetFieldUnitValue - * - * PARAMETERS: *FieldDesc - Pointer to a FieldUnit - * *ResultDesc - Pointer to an empty descriptor - * which will become a Number - * containing the field's value. - * - * RETURN: Status - * - * DESCRIPTION: Retrieve the value from a FieldUnit - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlGetFieldUnitValue ( - ACPI_OPERAND_OBJECT *FieldDesc, - ACPI_OPERAND_OBJECT *ResultDesc) -{ - ACPI_STATUS Status = AE_OK; - UINT32 Mask; - UINT8 *Location = NULL; - BOOLEAN Locked = FALSE; - - - FUNCTION_TRACE ("AmlGetFieldUnitValue"); - - - if (!FieldDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - null field pointer\n")); - Status = AE_AML_NO_OPERAND; - } - - if (!(FieldDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetFieldUnitArguments (FieldDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - if (!FieldDesc->FieldUnit.Container) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - null container pointer\n")); - Status = AE_AML_INTERNAL; - } - - else if (ACPI_TYPE_BUFFER != FieldDesc->FieldUnit.Container->Common.Type) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - container is not a Buffer\n")); - Status = AE_AML_OPERAND_TYPE; - } - - else if (!ResultDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlGetFieldUnitValue: Internal error - null result pointer\n")); - Status = AE_AML_INTERNAL; - } - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* Get the global lock if needed */ - - Locked = AcpiAmlAcquireGlobalLock (FieldDesc->FieldUnit.LockRule); - - /* Field location is (base of buffer) + (byte offset) */ - - Location = FieldDesc->FieldUnit.Container->Buffer.Pointer - + FieldDesc->FieldUnit.Offset; - - /* - * Construct Mask with as many 1 bits as the field width - * - * NOTE: Only the bottom 5 bits are valid for a shift operation, so - * special care must be taken for any shift greater than 31 bits. - * - * TBD: [Unhandled] Fields greater than 32-bits will not work. - */ - - if (FieldDesc->FieldUnit.Length < 32) - { - Mask = ((UINT32) 1 << FieldDesc->FieldUnit.Length) - (UINT32) 1; - } - else - { - Mask = ACPI_UINT32_MAX; - } - - ResultDesc->Integer.Type = (UINT8) ACPI_TYPE_INTEGER; - - /* Get the 32 bit value at the location */ - - MOVE_UNALIGNED32_TO_32 (&ResultDesc->Integer.Value, Location); - - /* - * Shift the 32-bit word containing the field, and mask off the - * resulting value - */ - - ResultDesc->Integer.Value = - (ResultDesc->Integer.Value >> FieldDesc->FieldUnit.BitOffset) & Mask; - - DEBUG_PRINT (ACPI_INFO, - ("** Read from buffer %p byte %ld bit %d width %d addr %p mask %08lx val %08lx\n", - FieldDesc->FieldUnit.Container->Buffer.Pointer, - FieldDesc->FieldUnit.Offset, - FieldDesc->FieldUnit.BitOffset, - FieldDesc->FieldUnit.Length, - Location, Mask, ResultDesc->Integer.Value)); - - /* Release global lock if we acquired it earlier */ - - AcpiAmlReleaseGlobalLock (Locked); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlResolveToValue - * - * PARAMETERS: **StackPtr - Points to entry on ObjStack, which can - * be either an (ACPI_OPERAND_OBJECT *) - * or an ACPI_HANDLE. - * - * RETURN: Status - * - * DESCRIPTION: Convert Reference objects to values - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlResolveToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("AmlResolveToValue", StackPtr); - - - if (!StackPtr || !*StackPtr) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveToValue: Internal error - null pointer\n")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - - /* - * The entity pointed to by the StackPtr can be either - * 1) A valid ACPI_OPERAND_OBJECT, or - * 2) A ACPI_NAMESPACE_NODE (NamedObj) - */ - - if (VALID_DESCRIPTOR_TYPE (*StackPtr, ACPI_DESC_TYPE_INTERNAL)) - { - - Status = AcpiAmlResolveObjectToValue (StackPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Object on the stack may have changed if AcpiAmlResolveObjectToValue() - * was called (i.e., we can't use an _else_ here.) - */ - - if (VALID_DESCRIPTOR_TYPE (*StackPtr, ACPI_DESC_TYPE_NAMED)) - { - Status = AcpiAmlResolveNodeToValue ((ACPI_NAMESPACE_NODE **) StackPtr, WalkState); - } - - - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveToValue: Returning resolved object %p\n", *StackPtr)); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlResolveObjectToValue - * - * PARAMETERS: StackPtr - Pointer to a stack location that contains a - * ptr to an internal object. - * - * RETURN: Status - * - * DESCRIPTION: Retrieve the value from an internal object. The Reference type - * uses the associated AML opcode to determine the value. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlResolveObjectToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *StackDesc; - ACPI_STATUS Status = AE_OK; - ACPI_HANDLE TempHandle = NULL; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - UINT32 Index = 0; - UINT16 Opcode; - - - FUNCTION_TRACE ("AmlResolveObjectToValue"); - - - StackDesc = *StackPtr; - - /* This is an ACPI_OPERAND_OBJECT */ - - switch (StackDesc->Common.Type) - { - - case INTERNAL_TYPE_REFERENCE: - - Opcode = StackDesc->Reference.OpCode; - - switch (Opcode) - { - - case AML_NAME_OP: - - /* - * Convert indirect name ptr to a direct name ptr. - * Then, AcpiAmlResolveNodeToValue can be used to get the value - */ - - TempHandle = StackDesc->Reference.Object; - - /* Delete the Reference Object */ - - AcpiCmRemoveReference (StackDesc); - - /* Put direct name pointer onto stack and exit */ - - (*StackPtr) = TempHandle; - Status = AE_OK; - break; - - - case AML_LOCAL_OP: - - Index = StackDesc->Reference.Offset; - - /* - * Get the local from the method's state info - * Note: this increments the local's object reference count - */ - - Status = AcpiDsMethodDataGetValue (MTH_TYPE_LOCAL, Index, - WalkState, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Now we can delete the original Reference Object and - * replace it with the resolve value - */ - - AcpiCmRemoveReference (StackDesc); - *StackPtr = ObjDesc; - - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveObjectToValue: [Local%d] ValueObj is %p\n", - Index, ObjDesc)); - - if (ACPI_TYPE_INTEGER == ObjDesc->Common.Type) - { - /* Value is a Number */ - - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveObjectToValue: [Local%d] value=%X \n", - Index, ObjDesc->Integer.Value)); - } - - break; - - - case AML_ARG_OP: - - Index = StackDesc->Reference.Offset; - - - /* - * Get the argument from the method's state info - * Note: this increments the object reference count - */ - - Status = AcpiDsMethodDataGetValue (MTH_TYPE_ARG, Index, - WalkState, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Now we can delete the original Reference Object and - * replace it with the resolve value - */ - - AcpiCmRemoveReference (StackDesc); - *StackPtr = ObjDesc; - - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveObjectToValue: [Arg%d] ValueObj is %p\n", - Index, ObjDesc)); - - if (ACPI_TYPE_INTEGER == ObjDesc->Common.Type) - { - /* Value is a Number */ - - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveObjectToValue: [Arg%d] value=%X\n", - Index, ObjDesc->Integer.Value)); - } - - break; - - - /* - * TBD: [Restructure] These next three opcodes change the type of - * the object, which is actually a no-no. - */ - - case AML_ZERO_OP: - - StackDesc->Common.Type = (UINT8) ACPI_TYPE_INTEGER; - StackDesc->Integer.Value = 0; - break; - - - case AML_ONE_OP: - - StackDesc->Common.Type = (UINT8) ACPI_TYPE_INTEGER; - StackDesc->Integer.Value = 1; - break; - - - case AML_ONES_OP: - - StackDesc->Common.Type = (UINT8) ACPI_TYPE_INTEGER; - StackDesc->Integer.Value = ACPI_INTEGER_MAX; - - /* Truncate value if we are executing from a 32-bit ACPI table */ - - AcpiAmlTruncateFor32bitTable (StackDesc, WalkState); - break; - - - case AML_INDEX_OP: - - switch (StackDesc->Reference.TargetType) - { - case ACPI_TYPE_BUFFER_FIELD: - - /* Just return - leave the Reference on the stack */ - break; - - - case ACPI_TYPE_PACKAGE: - ObjDesc = *StackDesc->Reference.Where; - if (ObjDesc) - { - /* - * Valid obj descriptor, copy pointer to return value - * (i.e., dereference the package index) - * Delete the ref object, increment the returned object - */ - AcpiCmRemoveReference (StackDesc); - AcpiCmAddReference (ObjDesc); - *StackPtr = ObjDesc; - } - - else - { - /* - * A NULL object descriptor means an unitialized element of - * the package, can't deref it - */ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObjectToValue: Attempt to deref an Index to NULL pkg element Idx=%p\n", StackDesc)); - Status = AE_AML_UNINITIALIZED_ELEMENT; - } - break; - - default: - /* Invalid reference OBJ*/ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObjectToValue: Unknown TargetType %X in Index/Reference obj %p\n", - StackDesc->Reference.TargetType, StackDesc)); - Status = AE_AML_INTERNAL; - break; - } - - break; - - - case AML_DEBUG_OP: - - /* Just leave the object as-is */ - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObjectToValue: Unknown Reference object subtype %02X in %p\n", - Opcode, StackDesc)); - Status = AE_AML_INTERNAL; - - } /* switch (Opcode) */ - - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - break; /* case INTERNAL_TYPE_REFERENCE */ - - - case ACPI_TYPE_FIELD_UNIT: - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_ANY); - if (!ObjDesc) - { - /* Descriptor allocation failure */ - - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiAmlGetFieldUnitValue (StackDesc, ObjDesc); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - ObjDesc = NULL; - } - - *StackPtr = (void *) ObjDesc; - break; - - - case INTERNAL_TYPE_BANK_FIELD: - - ObjDesc = AcpiCmCreateInternalObject (ACPI_TYPE_ANY); - if (!ObjDesc) - { - /* Descriptor allocation failure */ - - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiAmlGetFieldUnitValue (StackDesc, ObjDesc); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - ObjDesc = NULL; - } - - *StackPtr = (void *) ObjDesc; - break; - - - /* TBD: [Future] - may need to handle IndexField, and DefField someday */ - - default: - - break; - - } /* switch (StackDesc->Common.Type) */ - - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amresop.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amresop.c deleted file mode 100644 index d57d2fb..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amresop.c +++ /dev/null @@ -1,670 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amresop - AML Interpreter operand/object resolution - * $Revision: 22 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMRESOP_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "actables.h" -#include "acevents.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amresop") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCheckObjectType - * - * PARAMETERS: TypeNeeded Object type needed - * ThisType Actual object type - * Object Object pointer - * - * RETURN: Status - * - * DESCRIPTION: Check required type against actual type - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCheckObjectType ( - ACPI_OBJECT_TYPE TypeNeeded, - ACPI_OBJECT_TYPE ThisType, - void *Object) -{ - - - if (TypeNeeded == ACPI_TYPE_ANY) - { - /* All types OK, so we don't perform any typechecks */ - - return (AE_OK); - } - - - if (TypeNeeded != ThisType) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [%s], found [%s] %p\n", - AcpiCmGetTypeName (TypeNeeded), - AcpiCmGetTypeName (ThisType), Object)); - - return (AE_AML_OPERAND_TYPE); - } - - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlResolveOperands - * - * PARAMETERS: Opcode Opcode being interpreted - * StackPtr Top of operand stack - * - * RETURN: Status - * - * DESCRIPTION: Convert stack entries to required types - * - * Each nibble in ArgTypes represents one required operand - * and indicates the required Type: - * - * The corresponding stack entry will be converted to the - * required type if possible, else return an exception - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlResolveOperands ( - UINT16 Opcode, - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status = AE_OK; - UINT8 ObjectType; - ACPI_HANDLE TempHandle; - UINT32 ArgTypes; - ACPI_OPCODE_INFO *OpInfo; - UINT32 ThisArgType; - ACPI_OBJECT_TYPE TypeNeeded; - - - FUNCTION_TRACE_U32 ("AmlResolveOperands", Opcode); - - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - - ArgTypes = OpInfo->RuntimeArgs; - if (ArgTypes == ARGI_INVALID_OPCODE) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Internal error - %X is not a valid AML opcode\n", Opcode)); - - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - DEBUG_PRINT (TRACE_EXEC, - ("AmlResolveOperands: Opcode %X OperandTypes=%X \n", - Opcode, ArgTypes)); - - - /* - * Normal exit is with *Types == '\0' at end of string. - * Function will return an exception from within the loop upon - * finding an entry which is not, and cannot be converted - * to, the required type; if stack underflows; or upon - * finding a NULL stack entry (which "should never happen"). - */ - - while (GET_CURRENT_ARG_TYPE (ArgTypes)) - { - if (!StackPtr || !*StackPtr) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Internal error - null stack entry at %X\n", StackPtr)); - - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* Extract useful items */ - - ObjDesc = *StackPtr; - - /* Decode the descriptor type */ - - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) - { - /* Node */ - - ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - } - - else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL)) - { - /* ACPI internal object */ - - ObjectType = ObjDesc->Common.Type; - - /* Check for bad ACPI_OBJECT_TYPE */ - - if (!AcpiAmlValidateObjectType (ObjectType)) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Bad operand object type [%X]\n", - ObjectType)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (ObjectType == (UINT8) INTERNAL_TYPE_REFERENCE) - { - /* - * Decode the Reference - */ - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - - switch (ObjDesc->Reference.OpCode) - { - case AML_ZERO_OP: - case AML_ONE_OP: - case AML_ONES_OP: - case AML_DEBUG_OP: - case AML_NAME_OP: - case AML_INDEX_OP: - case AML_ARG_OP: - case AML_LOCAL_OP: - - DEBUG_ONLY_MEMBERS (DEBUG_PRINT (ACPI_INFO, - ("Reference Opcode: %s\n", OpInfo->Name))); - break; - - default: - DEBUG_PRINT (ACPI_INFO, - ("Reference Opcode: Unknown [%02x]\n", - ObjDesc->Reference.OpCode)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - break; - } - } - } - - else - { - /* Invalid descriptor */ - - DEBUG_PRINT (ACPI_ERROR, - ("Bad descriptor type %X in Obj %p\n", - ObjDesc->Common.DataType, ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* - * Get one argument type, point to the next - */ - - ThisArgType = GET_CURRENT_ARG_TYPE (ArgTypes); - INCREMENT_ARG_LIST (ArgTypes); - - - /* - * Handle cases where the object does not need to be - * resolved to a value - */ - - switch (ThisArgType) - { - - case ARGI_REFERENCE: /* References */ - case ARGI_INTEGER_REF: - case ARGI_OBJECT_REF: - case ARGI_DEVICE_REF: - case ARGI_TARGETREF: /* TBD: must implement implicit conversion rules before store */ - case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ - case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ - - /* Need an operand of type INTERNAL_TYPE_REFERENCE */ - - if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED)) /* direct name ptr OK as-is */ - { - goto NextOperand; - } - - Status = AcpiAmlCheckObjectType (INTERNAL_TYPE_REFERENCE, - ObjectType, ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - if (AML_NAME_OP == ObjDesc->Reference.OpCode) - { - /* - * Convert an indirect name ptr to direct name ptr and put - * it on the stack - */ - - TempHandle = ObjDesc->Reference.Object; - AcpiCmRemoveReference (ObjDesc); - (*StackPtr) = TempHandle; - } - - goto NextOperand; - break; - - - case ARGI_ANYTYPE: - - /* - * We don't want to resolve IndexOp reference objects during - * a store because this would be an implicit DeRefOf operation. - * Instead, we just want to store the reference object. - * -- All others must be resolved below. - */ - - if ((Opcode == AML_STORE_OP) && - ((*StackPtr)->Common.Type == INTERNAL_TYPE_REFERENCE) && - ((*StackPtr)->Reference.OpCode == AML_INDEX_OP)) - { - goto NextOperand; - } - break; - } - - - /* - * Resolve this object to a value - */ - - Status = AcpiAmlResolveToValue (StackPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * Check the resulting object (value) type - */ - switch (ThisArgType) - { - /* - * For the simple cases, only one type of resolved object - * is allowed - */ - case ARGI_MUTEX: - - /* Need an operand of type ACPI_TYPE_MUTEX */ - - TypeNeeded = ACPI_TYPE_MUTEX; - break; - - case ARGI_EVENT: - - /* Need an operand of type ACPI_TYPE_EVENT */ - - TypeNeeded = ACPI_TYPE_EVENT; - break; - - case ARGI_REGION: - - /* Need an operand of type ACPI_TYPE_REGION */ - - TypeNeeded = ACPI_TYPE_REGION; - break; - - case ARGI_IF: /* If */ - - /* Need an operand of type INTERNAL_TYPE_IF */ - - TypeNeeded = INTERNAL_TYPE_IF; - break; - - case ARGI_PACKAGE: /* Package */ - - /* Need an operand of type ACPI_TYPE_PACKAGE */ - - TypeNeeded = ACPI_TYPE_PACKAGE; - break; - - case ARGI_ANYTYPE: - - /* Any operand type will do */ - - TypeNeeded = ACPI_TYPE_ANY; - break; - - - /* - * The more complex cases allow multiple resolved object types - */ - - case ARGI_INTEGER: /* Number */ - - /* - * Need an operand of type ACPI_TYPE_INTEGER, - * But we can implicitly convert from a STRING or BUFFER - */ - Status = AcpiAmlConvertToInteger (StackPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - return_ACPI_STATUS (Status); - } - - goto NextOperand; - break; - - - case ARGI_BUFFER: - - /* - * Need an operand of type ACPI_TYPE_BUFFER, - * But we can implicitly convert from a STRING or INTEGER - */ - Status = AcpiAmlConvertToBuffer (StackPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - return_ACPI_STATUS (Status); - } - - goto NextOperand; - break; - - - case ARGI_STRING: - - /* - * Need an operand of type ACPI_TYPE_STRING, - * But we can implicitly convert from a BUFFER or INTEGER - */ - Status = AcpiAmlConvertToString (StackPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - return_ACPI_STATUS (Status); - } - - goto NextOperand; - break; - - - case ARGI_COMPUTEDATA: - - /* Need an operand of type INTEGER, STRING or BUFFER */ - - if ((ACPI_TYPE_INTEGER != (*StackPtr)->Common.Type) && - (ACPI_TYPE_STRING != (*StackPtr)->Common.Type) && - (ACPI_TYPE_BUFFER != (*StackPtr)->Common.Type)) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Integer/String/Buffer], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - break; - - - case ARGI_DATAOBJECT: - /* - * ARGI_DATAOBJECT is only used by the SizeOf operator. - * - * The ACPI specification allows SizeOf to return the size of - * a Buffer, String or Package. However, the MS ACPI.SYS AML - * Interpreter also allows an Node reference to return without - * error with a size of 4. - */ - - /* Need a buffer, string, package or Node reference */ - - if (((*StackPtr)->Common.Type != ACPI_TYPE_BUFFER) && - ((*StackPtr)->Common.Type != ACPI_TYPE_STRING) && - ((*StackPtr)->Common.Type != ACPI_TYPE_PACKAGE) && - ((*StackPtr)->Common.Type != INTERNAL_TYPE_REFERENCE)) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Buf/Str/Pkg/Ref], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * If this is a reference, only allow a reference to an Node. - */ - if ((*StackPtr)->Common.Type == INTERNAL_TYPE_REFERENCE) - { - if (!(*StackPtr)->Reference.Node) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Node Reference], found [%p]\n", - *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - } - goto NextOperand; - break; - - - case ARGI_COMPLEXOBJ: - - /* Need a buffer or package */ - - if (((*StackPtr)->Common.Type != ACPI_TYPE_BUFFER) && - ((*StackPtr)->Common.Type != ACPI_TYPE_PACKAGE)) - { - DEBUG_PRINT (ACPI_INFO, - ("AmlResolveOperands: Needed [Buf/Pkg], found [%s] %p\n", - AcpiCmGetTypeName ((*StackPtr)->Common.Type), *StackPtr)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - break; - - - default: - - /* Unknown type */ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveOperands: Internal error - Unknown ARGI type %X\n", - ThisArgType)); - - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* - * Make sure that the original object was resolved to the - * required object type (Simple cases only). - */ - Status = AcpiAmlCheckObjectType (TypeNeeded, - (*StackPtr)->Common.Type, *StackPtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - -NextOperand: - /* - * If more operands needed, decrement StackPtr to point - * to next operand on stack - */ - if (GET_CURRENT_ARG_TYPE (ArgTypes)) - { - StackPtr--; - } - - } /* while (*Types) */ - - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amstore.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amstore.c deleted file mode 100644 index c2c29d71..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amstore.c +++ /dev/null @@ -1,764 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amstore - AML Interpreter object store support - * $Revision: 123 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMSTORE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "actables.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amstore") - - - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecStore - * - * PARAMETERS: *ValDesc - Value to be stored - * *DestDesc - Where to store it 0 Must be (ACPI_HANDLE) - * or an ACPI_OPERAND_OBJECT of type - * Reference; if the latter the descriptor - * will be either reused or deleted. - * - * RETURN: Status - * - * DESCRIPTION: Store the value described by ValDesc into the location - * described by DestDesc. Called by various interpreter - * functions to store the result of an operation into - * the destination operand. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecStore ( - ACPI_OPERAND_OBJECT *ValDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *RefDesc = DestDesc; - - - FUNCTION_TRACE_PTR ("AmlExecStore", DestDesc); - - - /* Validate parameters */ - - if (!ValDesc || !DestDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore: Internal error - null pointer\n")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* DestDesc can be either a namespace node or an ACPI object */ - - if (VALID_DESCRIPTOR_TYPE (DestDesc, ACPI_DESC_TYPE_NAMED)) - { - /* - * Dest is a namespace node, - * Storing an object into a Name "container" - */ - Status = AcpiAmlStoreObjectToNode (ValDesc, - (ACPI_NAMESPACE_NODE *) DestDesc, WalkState); - - /* All done, that's it */ - - return_ACPI_STATUS (Status); - } - - - /* Destination object must be an object of type Reference */ - - if (DestDesc->Common.Type != INTERNAL_TYPE_REFERENCE) - { - /* Destination is not an Reference */ - - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore: Destination is not a ReferenceObj [%p]\n", DestDesc)); - - DUMP_STACK_ENTRY (ValDesc); - DUMP_STACK_ENTRY (DestDesc); - DUMP_OPERANDS (&DestDesc, IMODE_EXECUTE, "AmlExecStore", - 2, "Target is not a ReferenceObj"); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - - /* - * Examine the Reference opcode. These cases are handled: - * - * 1) Store to Name (Change the object associated with a name) - * 2) Store to an indexed area of a Buffer or Package - * 3) Store to a Method Local or Arg - * 4) Store to the debug object - * 5) Store to a constant -- a noop - */ - - switch (RefDesc->Reference.OpCode) - { - - case AML_NAME_OP: - - /* Storing an object into a Name "container" */ - - Status = AcpiAmlStoreObjectToNode (ValDesc, RefDesc->Reference.Object, - WalkState); - break; - - - case AML_INDEX_OP: - - /* Storing to an Index (pointer into a packager or buffer) */ - - Status = AcpiAmlStoreObjectToIndex (ValDesc, RefDesc, WalkState); - break; - - - case AML_LOCAL_OP: - - Status = AcpiDsMethodDataSetValue (MTH_TYPE_LOCAL, - (RefDesc->Reference.Offset), ValDesc, WalkState); - break; - - - case AML_ARG_OP: - - Status = AcpiDsMethodDataSetValue (MTH_TYPE_ARG, - (RefDesc->Reference.Offset), ValDesc, WalkState); - break; - - - case AML_DEBUG_OP: - - /* - * Storing to the Debug object causes the value stored to be - * displayed and otherwise has no effect -- see ACPI Specification - * - * TBD: print known object types "prettier". - */ - DEBUG_PRINT (ACPI_INFO, ("**** Write to Debug Object: ****: \n")); - - if (ValDesc->Common.Type == ACPI_TYPE_STRING) - { - DEBUG_PRINT (ACPI_INFO, ("%s\n", ValDesc->String.Pointer)); - } - else - { - DUMP_STACK_ENTRY (ValDesc); - } - - break; - - - case AML_ZERO_OP: - case AML_ONE_OP: - case AML_ONES_OP: - - /* - * Storing to a constant is a no-op -- see ACPI Specification - * Delete the reference descriptor, however - */ - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore: Internal error - Unknown Reference subtype %02x\n", - RefDesc->Reference.OpCode)); - - /* TBD: [Restructure] use object dump routine !! */ - - DUMP_BUFFER (RefDesc, sizeof (ACPI_OPERAND_OBJECT)); - - Status = AE_AML_INTERNAL; - break; - - } /* switch (RefDesc->Reference.OpCode) */ - - - - /* Always delete the reference descriptor object */ - - if (RefDesc) - { - AcpiCmRemoveReference (RefDesc); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlStoreObjectToIndex - * - * PARAMETERS: *ValDesc - Value to be stored - * *Node - Named object to recieve the value - * - * RETURN: Status - * - * DESCRIPTION: Store the object to the named object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlStoreObjectToIndex ( - ACPI_OPERAND_OBJECT *ValDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Length; - UINT32 i; - UINT8 Value = 0; - - - FUNCTION_TRACE ("AcpiAmlStoreObjectToIndex"); - - - /* - * Destination must be a reference pointer, and - * must point to either a buffer or a package - */ - - switch (DestDesc->Reference.TargetType) - { - case ACPI_TYPE_PACKAGE: - /* - * Storing to a package element is not simple. The source must be - * evaluated and converted to the type of the destination and then the - * source is copied into the destination - we can't just point to the - * source object. - */ - if (DestDesc->Reference.TargetType == ACPI_TYPE_PACKAGE) - { - /* - * The object at *(DestDesc->Reference.Where) is the - * element within the package that is to be modified. - */ - ObjDesc = *(DestDesc->Reference.Where); - if (ObjDesc) - { - /* - * If the Destination element is a package, we will delete - * that object and construct a new one. - * - * TBD: [Investigate] Should both the src and dest be required - * to be packages? - * && (ValDesc->Common.Type == ACPI_TYPE_PACKAGE) - */ - if (ObjDesc->Common.Type == ACPI_TYPE_PACKAGE) - { - /* - * Take away the reference for being part of a package and - * delete - */ - AcpiCmRemoveReference (ObjDesc); - AcpiCmRemoveReference (ObjDesc); - - ObjDesc = NULL; - } - } - - if (!ObjDesc) - { - /* - * If the ObjDesc is NULL, it means that an uninitialized package - * element has been used as a destination (this is OK), therefore, - * we must create the destination element to match the type of the - * source element NOTE: ValDesc can be of any type. - */ - ObjDesc = AcpiCmCreateInternalObject (ValDesc->Common.Type); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * If the source is a package, copy the source to the new dest - */ - if (ACPI_TYPE_PACKAGE == ObjDesc->Common.Type) - { - Status = AcpiCmCopyIpackageToIpackage (ValDesc, ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - AcpiCmRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); - } - } - - /* - * Install the new descriptor into the package and add a - * reference to the newly created descriptor for now being - * part of the parent package - */ - - *(DestDesc->Reference.Where) = ObjDesc; - AcpiCmAddReference (ObjDesc); - } - - if (ACPI_TYPE_PACKAGE != ObjDesc->Common.Type) - { - /* - * The destination element is not a package, so we need to - * convert the contents of the source (ValDesc) and copy into - * the destination (ObjDesc) - */ - Status = AcpiAmlStoreObjectToObject (ValDesc, ObjDesc, - WalkState); - if (ACPI_FAILURE (Status)) - { - /* - * An error occurrered when copying the internal object - * so delete the reference. - */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore/Index: Unable to copy the internal object\n")); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - } - } - break; - - - case ACPI_TYPE_BUFFER_FIELD: - /* - * Storing into a buffer at a location defined by an Index. - * - * Each 8-bit element of the source object is written to the - * 8-bit Buffer Field of the Index destination object. - */ - - /* - * Set the ObjDesc to the destination object and type check. - */ - ObjDesc = DestDesc->Reference.Object; - if (ObjDesc->Common.Type != ACPI_TYPE_BUFFER) - { - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * The assignment of the individual elements will be slightly - * different for each source type. - */ - - switch (ValDesc->Common.Type) - { - /* - * If the type is Integer, assign bytewise - * This loop to assign each of the elements is somewhat - * backward because of the Big Endian-ness of IA-64 - */ - case ACPI_TYPE_INTEGER: - Length = sizeof (ACPI_INTEGER); - for (i = Length; i != 0; i--) - { - Value = (UINT8)(ValDesc->Integer.Value >> (MUL_8 (i - 1))); - ObjDesc->Buffer.Pointer[DestDesc->Reference.Offset] = Value; - } - break; - - /* - * If the type is Buffer, the Length is in the structure. - * Just loop through the elements and assign each one in turn. - */ - case ACPI_TYPE_BUFFER: - Length = ValDesc->Buffer.Length; - for (i = 0; i < Length; i++) - { - Value = *(ValDesc->Buffer.Pointer + i); - ObjDesc->Buffer.Pointer[DestDesc->Reference.Offset] = Value; - } - break; - - /* - * If the type is String, the Length is in the structure. - * Just loop through the elements and assign each one in turn. - */ - case ACPI_TYPE_STRING: - Length = ValDesc->String.Length; - for (i = 0; i < Length; i++) - { - Value = *(ValDesc->String.Pointer + i); - ObjDesc->Buffer.Pointer[DestDesc->Reference.Offset] = Value; - } - break; - - /* - * If source is not a valid type so return an error. - */ - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStore/Index: Source must be Number/Buffer/String type, not %X\n", - ValDesc->Common.Type)); - Status = AE_AML_OPERAND_TYPE; - break; - } - break; - - - default: - DEBUG_PRINT (ACPI_ERROR, - ("AmlExecStoreIndex: Target is not a Package or BufferField\n")); - Status = AE_AML_OPERAND_TYPE; - break; - } - - - return_ACPI_STATUS (Status); -} - - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlStoreObjectToNode - * - * PARAMETERS: *SourceDesc - Value to be stored - * *Node - Named object to recieve the value - * - * RETURN: Status - * - * DESCRIPTION: Store the object to the named object. - * - * The Assignment of an object to a named object is handled here - * The val passed in will replace the current value (if any) - * with the input value. - * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. - * - * NOTE: the global lock is acquired early. This will result - * in the global lock being held a bit longer. Also, if the - * function fails during set up we may get the lock when we - * don't really need it. I don't think we care. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlStoreObjectToNode ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *TargetDesc; - OBJECT_TYPE_INTERNAL TargetType = ACPI_TYPE_ANY; - - - FUNCTION_TRACE ("AmlStoreObjectToNode"); - - /* - * Assuming the parameters were already validated - */ - ACPI_ASSERT((Node) && (SourceDesc)); - - - /* - * Get current type of the node, and object attached to Node - */ - TargetType = AcpiNsGetType (Node); - TargetDesc = AcpiNsGetAttachedObject (Node); - - DEBUG_PRINT (ACPI_INFO, ("AmlStoreObjectToNode: Storing %p(%s) into node %p(%s)\n", - Node, AcpiCmGetTypeName (SourceDesc->Common.Type), - SourceDesc, AcpiCmGetTypeName (TargetType))); - - - /* - * Resolve the source object to an actual value - * (If it is a reference object) - */ - Status = AcpiAmlResolveObject (&SourceDesc, TargetType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * Do the actual store operation - */ - switch (TargetType) - { - case INTERNAL_TYPE_DEF_FIELD: - - /* Raw data copy for target types Integer/String/Buffer */ - - Status = AcpiAmlCopyDataToNamedField (SourceDesc, Node); - break; - - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - case INTERNAL_TYPE_BANK_FIELD: - case INTERNAL_TYPE_INDEX_FIELD: - case ACPI_TYPE_FIELD_UNIT: - - /* - * These target types are all of type Integer/String/Buffer, and - * therefore support implicit conversion before the store. - * - * Copy and/or convert the source object to a new target object - */ - Status = AcpiAmlStoreObject (SourceDesc, TargetType, &TargetDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Store the new TargetDesc as the new value of the Name, and set - * the Name's type to that of the value being stored in it. - * SourceDesc reference count is incremented by AttachObject. - */ - Status = AcpiNsAttachObject (Node, TargetDesc, TargetType); - DEBUG_PRINT (ACPI_INFO, - ("AmlStoreObjectToNode: Store %s into %s via Convert/Attach\n", - AcpiCmGetTypeName (TargetDesc->Common.Type), - AcpiCmGetTypeName (TargetType))); - break; - - - default: - - /* No conversions for all other types. Just attach the source object */ - - Status = AcpiNsAttachObject (Node, SourceDesc, SourceDesc->Common.Type); - - DEBUG_PRINT (ACPI_INFO, - ("AmlStoreObjectToNode: Store %s into %s via Attach only\n", - AcpiCmGetTypeName (SourceDesc->Common.Type), - AcpiCmGetTypeName (SourceDesc->Common.Type))); - break; - } - - - return_ACPI_STATUS (Status); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlStoreObjectToObject - * - * PARAMETERS: *SourceDesc - Value to be stored - * *DestDesc - Object to receive the value - * - * RETURN: Status - * - * DESCRIPTION: Store an object to another object. - * - * The Assignment of an object to another (not named) object - * is handled here. - * The val passed in will replace the current value (if any) - * with the input value. - * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. - * - * This module allows destination types of Number, String, - * and Buffer. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlStoreObjectToObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - OBJECT_TYPE_INTERNAL DestinationType = DestDesc->Common.Type; - - - FUNCTION_TRACE ("AmlStoreObjectToObject"); - - - /* - * Assuming the parameters are valid! - */ - ACPI_ASSERT((DestDesc) && (SourceDesc)); - - DEBUG_PRINT (ACPI_INFO, ("AmlStoreObjectToObject: Storing %p(%s) to %p(%s)\n", - SourceDesc, AcpiCmGetTypeName (SourceDesc->Common.Type), - DestDesc, AcpiCmGetTypeName (DestDesc->Common.Type))); - - - /* - * From this interface, we only support Integers/Strings/Buffers - */ - switch (DestinationType) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - break; - - default: - DEBUG_PRINT (ACPI_WARN, - ("AmlStoreObjectToObject: Store into %s not implemented\n", - AcpiCmGetTypeName (DestDesc->Common.Type))); - - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - - - /* - * Resolve the source object to an actual value - * (If it is a reference object) - */ - Status = AcpiAmlResolveObject (&SourceDesc, DestinationType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * Copy and/or convert the source object to the destination object - */ - Status = AcpiAmlStoreObject (SourceDesc, DestinationType, &DestDesc, WalkState); - - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amstoren.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amstoren.c deleted file mode 100644 index b6bd010..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amstoren.c +++ /dev/null @@ -1,376 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amstoren - AML Interpreter object store support, - * Store to Node (namespace object) - * $Revision: 28 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMSTOREN_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "actables.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amstoren") - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlResolveObject - * - * PARAMETERS: SourceDescPtr - Pointer to the source object - * TargetType - Current type of the target - * WalkState - Current walk state - * - * RETURN: Status, resolved object in SourceDescPtr. - * - * DESCRIPTION: Resolve an object. If the object is a reference, dereference - * it and return the actual object in the SourceDescPtr. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlResolveObject ( - ACPI_OPERAND_OBJECT **SourceDescPtr, - OBJECT_TYPE_INTERNAL TargetType, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *SourceDesc = *SourceDescPtr; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AmlResolveObject"); - - - /* - * Ensure we have a Source that can be stored in the target - */ - switch (TargetType) - { - - /* This case handles the "interchangeable" types Integer, String, and Buffer. */ - - /* - * These cases all require only Integers or values that - * can be converted to Integers (Strings or Buffers) - */ - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_FIELD_UNIT: - case INTERNAL_TYPE_BANK_FIELD: - case INTERNAL_TYPE_INDEX_FIELD: - - /* - * Stores into a Field/Region or into a Buffer/String - * are all essentially the same. - */ - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - case INTERNAL_TYPE_DEF_FIELD: - - /* - * If SourceDesc is not a valid type, try to resolve it to one. - */ - if ((SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && - (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && - (SourceDesc->Common.Type != ACPI_TYPE_STRING)) - { - /* - * Initially not a valid type, convert - */ - Status = AcpiAmlResolveToValue (SourceDescPtr, WalkState); - if (ACPI_SUCCESS (Status) && - (SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && - (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && - (SourceDesc->Common.Type != ACPI_TYPE_STRING)) - { - /* - * Conversion successful but still not a valid type - */ - DEBUG_PRINT (ACPI_ERROR, - ("AmlResolveObject: Cannot assign type %s to %s (must be type Int/Str/Buf)\n", - AcpiCmGetTypeName ((*SourceDescPtr)->Common.Type), - AcpiCmGetTypeName (TargetType))); - Status = AE_AML_OPERAND_TYPE; - } - } - break; - - - case INTERNAL_TYPE_ALIAS: - - /* - * Aliases are resolved by AcpiAmlPrepOperands - */ - DEBUG_PRINT (ACPI_WARN, - ("AmlResolveObject: Store into Alias - should never happen\n")); - - Status = AE_AML_INTERNAL; - break; - - - case ACPI_TYPE_PACKAGE: - default: - - /* - * All other types than Alias and the various Fields come here, - * including the untyped case - ACPI_TYPE_ANY. - */ - break; - } - - return_ACPI_STATUS (Status); -} - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlStoreObject - * - * PARAMETERS: SourceDesc - Object to store - * TargetType - Current type of the target - * TargetDescPtr - Pointer to the target - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: "Store" an object to another object. This may include - * converting the source type to the target type (implicit - * conversion), and a copy of the value of the source to - * the target. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlStoreObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - OBJECT_TYPE_INTERNAL TargetType, - ACPI_OPERAND_OBJECT **TargetDescPtr, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *TargetDesc = *TargetDescPtr; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlStoreObject"); - - - /* - * Perform the "implicit conversion" of the source to the current type - * of the target - As per the ACPI specification. - * - * If no conversion performed, SourceDesc is left alone, otherwise it - * is updated with a new object. - */ - Status = AcpiAmlConvertToTargetType (TargetType, &SourceDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * We now have two objects of identical types, and we can perform a - * copy of the *value* of the source object. - */ - switch (TargetType) - { - case ACPI_TYPE_ANY: - case INTERNAL_TYPE_DEF_ANY: - - /* - * The target namespace node is uninitialized (has no target object), - * and will take on the type of the source object - */ - - *TargetDescPtr = SourceDesc; - break; - - - case ACPI_TYPE_INTEGER: - - TargetDesc->Integer.Value = SourceDesc->Integer.Value; - - /* Truncate value if we are executing from a 32-bit ACPI table */ - - AcpiAmlTruncateFor32bitTable (TargetDesc, WalkState); - break; - - - case ACPI_TYPE_FIELD_UNIT: - - Status = AcpiAmlCopyIntegerToFieldUnit (SourceDesc, TargetDesc); - break; - - - case INTERNAL_TYPE_BANK_FIELD: - - Status = AcpiAmlCopyIntegerToBankField (SourceDesc, TargetDesc); - break; - - - case INTERNAL_TYPE_INDEX_FIELD: - - Status = AcpiAmlCopyIntegerToIndexField (SourceDesc, TargetDesc); - break; - - - case ACPI_TYPE_STRING: - - Status = AcpiAmlCopyStringToString (SourceDesc, TargetDesc); - break; - - - case ACPI_TYPE_BUFFER: - - Status = AcpiAmlCopyBufferToBuffer (SourceDesc, TargetDesc); - break; - - - case ACPI_TYPE_PACKAGE: - - /* - * TBD: [Unhandled] Not real sure what to do here - */ - Status = AE_NOT_IMPLEMENTED; - break; - - - default: - - /* - * All other types come here. - */ - DEBUG_PRINT (ACPI_WARN, - ("AmlStoreObject: Store into type %s not implemented\n", - AcpiCmGetTypeName (TargetType))); - - Status = AE_NOT_IMPLEMENTED; - break; - } - - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amstorob.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amstorob.c deleted file mode 100644 index a4bd94d..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amstorob.c +++ /dev/null @@ -1,596 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amstorob - AML Interpreter object store support, store to object - * $Revision: 23 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMSTOROB_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "actables.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amstorob") - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyBufferToBuffer - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Copy a buffer object to another buffer object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyBufferToBuffer ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - UINT32 Length; - UINT8 *Buffer; - - - /* - * We know that SourceDesc is a buffer by now - */ - Buffer = (UINT8 *) SourceDesc->Buffer.Pointer; - Length = SourceDesc->Buffer.Length; - - /* - * If target is a buffer of length zero, allocate a new - * buffer of the proper length - */ - if (TargetDesc->Buffer.Length == 0) - { - TargetDesc->Buffer.Pointer = AcpiCmAllocate (Length); - if (!TargetDesc->Buffer.Pointer) - { - return (AE_NO_MEMORY); - } - - TargetDesc->Buffer.Length = Length; - } - - /* - * Buffer is a static allocation, - * only place what will fit in the buffer. - */ - if (Length <= TargetDesc->Buffer.Length) - { - /* Clear existing buffer and copy in the new one */ - - MEMSET(TargetDesc->Buffer.Pointer, 0, TargetDesc->Buffer.Length); - MEMCPY(TargetDesc->Buffer.Pointer, Buffer, Length); - } - - else - { - /* - * Truncate the source, copy only what will fit - */ - MEMCPY(TargetDesc->Buffer.Pointer, Buffer, TargetDesc->Buffer.Length); - - DEBUG_PRINT (ACPI_INFO, - ("AmlCopyBufferToBuffer: Truncating src buffer from %X to %X\n", - Length, TargetDesc->Buffer.Length)); - } - - return (AE_OK); -} - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyStringToString - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Copy a String object to another String object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyStringToString ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - UINT32 Length; - UINT8 *Buffer; - - - /* - * We know that SourceDesc is a string by now. - */ - Buffer = (UINT8 *) SourceDesc->String.Pointer; - Length = SourceDesc->String.Length; - - /* - * Setting a string value replaces the old string - */ - if (Length < TargetDesc->String.Length) - { - /* Clear old string and copy in the new one */ - - MEMSET(TargetDesc->String.Pointer, 0, TargetDesc->String.Length); - MEMCPY(TargetDesc->String.Pointer, Buffer, Length); - } - - else - { - /* - * Free the current buffer, then allocate a buffer - * large enough to hold the value - */ - if (TargetDesc->String.Pointer && - !AcpiTbSystemTablePointer (TargetDesc->String.Pointer)) - { - /* - * Only free if not a pointer into the DSDT - */ - AcpiCmFree(TargetDesc->String.Pointer); - } - - TargetDesc->String.Pointer = AcpiCmAllocate (Length + 1); - if (!TargetDesc->String.Pointer) - { - return (AE_NO_MEMORY); - } - TargetDesc->String.Length = Length; - - - MEMCPY(TargetDesc->String.Pointer, Buffer, Length); - } - - return (AE_OK); -} - - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyIntegerToIndexField - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Write an Integer to an Index Field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyIntegerToIndexField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - ACPI_STATUS Status; - BOOLEAN Locked; - - - /* - * Get the global lock if needed - */ - Locked = AcpiAmlAcquireGlobalLock (TargetDesc->IndexField.LockRule); - - /* - * Set Index value to select proper Data register - * perform the update (Set index) - */ - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->IndexField.Index, - &TargetDesc->IndexField.Value, - sizeof (TargetDesc->IndexField.Value)); - if (ACPI_SUCCESS (Status)) - { - /* SetIndex was successful, next set Data value */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->IndexField.Data, - &SourceDesc->Integer.Value, - sizeof (SourceDesc->Integer.Value)); - - DEBUG_PRINT (ACPI_INFO, - ("AmlCopyIntegerToIndexField: IndexField: set data returned %s\n", - AcpiCmFormatException (Status))); - } - - else - { - DEBUG_PRINT (ACPI_INFO, - ("AmlCopyIntegerToIndexField: IndexField: set index returned %s\n", - AcpiCmFormatException (Status))); - } - - - /* - * Release global lock if we acquired it earlier - */ - AcpiAmlReleaseGlobalLock (Locked); - - return (Status); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyIntegerToBankField - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Write an Integer to a Bank Field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyIntegerToBankField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - ACPI_STATUS Status; - BOOLEAN Locked; - - - /* - * Get the global lock if needed - */ - Locked = AcpiAmlAcquireGlobalLock (TargetDesc->IndexField.LockRule); - - - - /* - * Set Bank value to select proper Bank - * Perform the update (Set Bank Select) - */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->BankField.BankSelect, - &TargetDesc->BankField.Value, - sizeof (TargetDesc->BankField.Value)); - if (ACPI_SUCCESS (Status)) - { - /* Set bank select successful, set data value */ - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - TargetDesc->BankField.BankSelect, - &SourceDesc->BankField.Value, - sizeof (SourceDesc->BankField.Value)); - } - - else - { - DEBUG_PRINT (ACPI_INFO, - ("AmlCopyIntegerToBankField: BankField: set bakn returned %s\n", - AcpiCmFormatException (Status))); - } - - - /* - * Release global lock if we acquired it earlier - */ - AcpiAmlReleaseGlobalLock (Locked); - - return (Status); -} - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyDataToNamedField - * - * PARAMETERS: SourceDesc - Source object to copy - * Node - Destination Namespace node - * - * RETURN: Status - * - * DESCRIPTION: Copy raw data to a Named Field. No implicit conversion - * is performed on the source object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyDataToNamedField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_STATUS Status; - BOOLEAN Locked; - UINT32 Length; - UINT8 *Buffer; - - - /* - * Named fields (CreateXxxField) - We don't perform any conversions on the - * source operand, just use the raw data - */ - switch (SourceDesc->Common.Type) - { - case ACPI_TYPE_INTEGER: - Buffer = (UINT8 *) &SourceDesc->Integer.Value; - Length = sizeof (SourceDesc->Integer.Value); - break; - - case ACPI_TYPE_BUFFER: - Buffer = (UINT8 *) SourceDesc->Buffer.Pointer; - Length = SourceDesc->Buffer.Length; - break; - - case ACPI_TYPE_STRING: - Buffer = (UINT8 *) SourceDesc->String.Pointer; - Length = SourceDesc->String.Length; - break; - - default: - return (AE_TYPE); - } - - /* - * Get the global lock if needed before the update - * TBD: not needed! - */ - Locked = AcpiAmlAcquireGlobalLock (SourceDesc->Field.LockRule); - - Status = AcpiAmlAccessNamedField (ACPI_WRITE, - Node, Buffer, Length); - - AcpiAmlReleaseGlobalLock (Locked); - - return (Status); -} - - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlCopyIntegerToFieldUnit - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Write an Integer to a Field Unit. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlCopyIntegerToFieldUnit ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - ACPI_STATUS Status = AE_OK; - UINT8 *Location = NULL; - UINT32 Mask; - UINT32 NewValue; - BOOLEAN Locked = FALSE; - - - - FUNCTION_TRACE ("AmlCopyIntegerToFieldUnit"); - - /* - * If the Field Buffer and Index have not been previously evaluated, - * evaluate them and save the results. - */ - if (!(TargetDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetFieldUnitArguments (TargetDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - if ((!TargetDesc->FieldUnit.Container || - ACPI_TYPE_BUFFER != TargetDesc->FieldUnit.Container->Common.Type)) - { - DEBUG_PRINT (ACPI_ERROR, - ("Null Container or wrong type: %p", TargetDesc->FieldUnit.Container)); - - if (TargetDesc->FieldUnit.Container) - { - DEBUG_PRINT_RAW (ACPI_ERROR, (" Type %X", - TargetDesc->FieldUnit.Container->Common.Type)); - } - DEBUG_PRINT_RAW (ACPI_ERROR, ("\n")); - - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* - * Get the global lock if needed - */ - Locked = AcpiAmlAcquireGlobalLock (TargetDesc->FieldUnit.LockRule); - - /* - * TBD: [Unhandled] REMOVE this limitation - * Make sure the operation is within the limits of our implementation - * this is not a Spec limitation!! - */ - if (TargetDesc->FieldUnit.Length + TargetDesc->FieldUnit.BitOffset > 32) - { - DEBUG_PRINT (ACPI_ERROR, - ("AmlCopyIntegerToFieldUnit: FieldUnit: Implementation limitation - Field exceeds UINT32\n")); - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - /* Field location is (base of buffer) + (byte offset) */ - - Location = TargetDesc->FieldUnit.Container->Buffer.Pointer - + TargetDesc->FieldUnit.Offset; - - /* - * Construct Mask with 1 bits where the field is, - * 0 bits elsewhere - */ - Mask = ((UINT32) 1 << TargetDesc->FieldUnit.Length) - ((UINT32)1 - << TargetDesc->FieldUnit.BitOffset); - - DEBUG_PRINT (TRACE_EXEC, - ("** Store %lx in buffer %p byte %ld bit %X width %d addr %p mask %08lx\n", - SourceDesc->Integer.Value, - TargetDesc->FieldUnit.Container->Buffer.Pointer, - TargetDesc->FieldUnit.Offset, TargetDesc->FieldUnit.BitOffset, - TargetDesc->FieldUnit.Length,Location, Mask)); - - /* Zero out the field in the buffer */ - - MOVE_UNALIGNED32_TO_32 (&NewValue, Location); - NewValue &= ~Mask; - - /* - * Shift and mask the new value into position, - * and or it into the buffer. - */ - NewValue |= (SourceDesc->Integer.Value << TargetDesc->FieldUnit.BitOffset) & - Mask; - - /* Store back the value */ - - MOVE_UNALIGNED32_TO_32 (Location, &NewValue); - - DEBUG_PRINT (TRACE_EXEC, ("New Field value %08lx\n", NewValue)); - return_ACPI_STATUS (AE_OK); -} - - - - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amsystem.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amsystem.c deleted file mode 100644 index e1f64ea..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amsystem.c +++ /dev/null @@ -1,463 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amsystem - Interface to OS services - * $Revision: 54 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMSYSTEM_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "achware.h" -#include "acevents.h" - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amsystem") - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemThreadId - * - * PARAMETERS: None - * - * RETURN: Current Thread ID (for this implementation a 1 is returned) - * - * DESCRIPTION: An invocation is identified by its Thread ID. In a single - * threaded OS the Thread ID is undefined so a 1 will be - * returned. - * - ******************************************************************************/ - -UINT16 -AcpiAmlSystemThreadId (void) -{ - return (1); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemWaitSemaphore - * - * PARAMETERS: Semaphore - OSD semaphore to wait on - * Timeout - Max time to wait - * - * RETURN: Status - * - * DESCRIPTION: Implements a semaphore wait with a check to see if the - * semaphore is available immediately. If it is not, the - * interpreter is released. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemWaitSemaphore ( - ACPI_HANDLE Semaphore, - UINT32 Timeout) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiAmlSystemWaitSemaphore"); - - Status = AcpiOsWaitSemaphore (Semaphore, 1, 0); - if (ACPI_SUCCESS (Status)) - { - return_ACPI_STATUS (Status); - } - - if (Status == AE_TIME) - { - /* We must wait, so unlock the interpreter */ - - AcpiAmlExitInterpreter (); - - Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout); - - /* Reacquire the interpreter */ - - AcpiAmlEnterInterpreter (); - - DEBUG_PRINT (TRACE_EXEC, - ("*** Thread awake and inside interpreter after blocking, %s\n", - AcpiCmFormatException (Status))); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemDoStall - * - * PARAMETERS: HowLong - The amount of time to stall - * - * RETURN: None - * - * DESCRIPTION: Suspend running thread for specified amount of time. - * - ******************************************************************************/ - -void -AcpiAmlSystemDoStall ( - UINT32 HowLong) -{ - - if (HowLong > 1000) /* 1 millisecond */ - { - /* Since this thread will sleep, we must release the interpreter */ - - AcpiAmlExitInterpreter (); - - AcpiOsSleepUsec (HowLong); - - /* And now we must get the interpreter again */ - - AcpiAmlEnterInterpreter (); - } - - else - { - AcpiOsSleepUsec (HowLong); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemDoSuspend - * - * PARAMETERS: HowLong - The amount of time to suspend - * - * RETURN: None - * - * DESCRIPTION: Suspend running thread for specified amount of time. - * - ******************************************************************************/ - -void -AcpiAmlSystemDoSuspend ( - UINT32 HowLong) -{ - /* Since this thread will sleep, we must release the interpreter */ - - AcpiAmlExitInterpreter (); - - AcpiOsSleep ((UINT16) (HowLong / (UINT32) 1000), - (UINT16) (HowLong % (UINT32) 1000)); - - /* And now we must get the interpreter again */ - - AcpiAmlEnterInterpreter (); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemAcquireMutex - * - * PARAMETERS: *TimeDesc - The 'time to delay' object descriptor - * *ObjDesc - The object descriptor for this op - * - * RETURN: Status - * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. This function will cause a lock to be generated - * for the Mutex pointed to by ObjDesc. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemAcquireMutex ( - ACPI_OPERAND_OBJECT *TimeDesc, - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE_PTR ("AcpiAmlSystemAcquireMutex", ObjDesc); - - if (!ObjDesc) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Support for the _GL_ Mutex object -- go get the global lock - */ - - if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore) - { - Status = AcpiEvAcquireGlobalLock (); - return_ACPI_STATUS (Status); - } - - Status = AcpiAmlSystemWaitSemaphore (ObjDesc->Mutex.Semaphore, - (UINT32) TimeDesc->Integer.Value); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemReleaseMutex - * - * PARAMETERS: *ObjDesc - The object descriptor for this op - * - * RETURN: Status - * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. This operation is a request to release a - * previously acquired Mutex. If the Mutex variable is set then - * it will be decremented. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemReleaseMutex ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiAmlSystemReleaseMutex"); - - - if (!ObjDesc) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Support for the _GL_ Mutex object -- release the global lock - */ - if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore) - { - AcpiEvReleaseGlobalLock (); - return_ACPI_STATUS (AE_OK); - } - - Status = AcpiOsSignalSemaphore (ObjDesc->Mutex.Semaphore, 1); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemSignalEvent - * - * PARAMETERS: *ObjDesc - The object descriptor for this op - * - * RETURN: AE_OK - * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemSignalEvent ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiAmlSystemSignalEvent"); - - - if (ObjDesc) - { - Status = AcpiOsSignalSemaphore (ObjDesc->Event.Semaphore, 1); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemWaitEvent - * - * PARAMETERS: *TimeDesc - The 'time to delay' object descriptor - * *ObjDesc - The object descriptor for this op - * - * RETURN: Status - * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. This operation is a request to wait for an - * event. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemWaitEvent ( - ACPI_OPERAND_OBJECT *TimeDesc, - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("AcpiAmlSystemWaitEvent"); - - - if (ObjDesc) - { - Status = AcpiAmlSystemWaitSemaphore (ObjDesc->Event.Semaphore, - (UINT32) TimeDesc->Integer.Value); - } - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlSystemResetEvent - * - * PARAMETERS: *ObjDesc - The object descriptor for this op - * - * RETURN: Status - * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlSystemResetEvent ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - void *TempSemaphore; - - - /* - * We are going to simply delete the existing semaphore and - * create a new one! - */ - - Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore); - if (ACPI_SUCCESS (Status)) - { - AcpiOsDeleteSemaphore (ObjDesc->Mutex.Semaphore); - ObjDesc->Mutex.Semaphore = TempSemaphore; - } - - return (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amutils.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amutils.c deleted file mode 100644 index 7f17991..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amutils.c +++ /dev/null @@ -1,496 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amutils - interpreter/scanner utilities - * $Revision: 69 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMUTILS_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acevents.h" - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amutils") - - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlEnterInterpreter - * - * PARAMETERS: None - * - * DESCRIPTION: Enter the interpreter execution region - * - ******************************************************************************/ - -void -AcpiAmlEnterInterpreter (void) -{ - FUNCTION_TRACE ("AmlEnterInterpreter"); - - - AcpiCmAcquireMutex (ACPI_MTX_EXECUTE); - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExitInterpreter - * - * PARAMETERS: None - * - * DESCRIPTION: Exit the interpreter execution region - * - * Cases where the interpreter is unlocked: - * 1) Completion of the execution of a control method - * 2) Method blocked on a Sleep() AML opcode - * 3) Method blocked on an Acquire() AML opcode - * 4) Method blocked on a Wait() AML opcode - * 5) Method blocked to acquire the global lock - * 6) Method blocked to execute a serialized control method that is - * already executing - * 7) About to invoke a user-installed opregion handler - * - ******************************************************************************/ - -void -AcpiAmlExitInterpreter (void) -{ - FUNCTION_TRACE ("AmlExitInterpreter"); - - - AcpiCmReleaseMutex (ACPI_MTX_EXECUTE); - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlValidateObjectType - * - * PARAMETERS: Type Object type to validate - * - * DESCRIPTION: Determine if a type is a valid ACPI object type - * - ******************************************************************************/ - -BOOLEAN -AcpiAmlValidateObjectType ( - ACPI_OBJECT_TYPE Type) -{ - - if ((Type > ACPI_TYPE_MAX && Type < INTERNAL_TYPE_BEGIN) || - (Type > INTERNAL_TYPE_MAX)) - { - return (FALSE); - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlTruncateFor32bitTable - * - * PARAMETERS: ObjDesc - Object to be truncated - * WalkState - Current walk state - * (A method must be executing) - * - * RETURN: none - * - * DESCRIPTION: Truncate a number to 32-bits if the currently executing method - * belongs to a 32-bit ACPI table. - * - ******************************************************************************/ - -void -AcpiAmlTruncateFor32bitTable ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - - /* - * Object must be a valid number and we must be executing - * a control method - */ - - if ((!ObjDesc) || - (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) || - (!WalkState->MethodNode)) - { - return; - } - - if (WalkState->MethodNode->Flags & ANOBJ_DATA_WIDTH_32) - { - /* - * We are running a method that exists in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper 32-bit field - */ - ObjDesc->Integer.Value &= (ACPI_INTEGER) ACPI_UINT32_MAX; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlAcquireGlobalLock - * - * PARAMETERS: Rule - Lock rule: AlwaysLock, NeverLock - * - * RETURN: TRUE/FALSE indicating whether the lock was actually acquired - * - * DESCRIPTION: Obtain the global lock and keep track of this fact via two - * methods. A global variable keeps the state of the lock, and - * the state is returned to the caller. - * - ******************************************************************************/ - -BOOLEAN -AcpiAmlAcquireGlobalLock ( - UINT32 Rule) -{ - BOOLEAN Locked = FALSE; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlAcquireGlobalLock"); - - - /* Only attempt lock if the Rule says so */ - - if (Rule == (UINT32) GLOCK_ALWAYS_LOCK) - { - /* OK to get the lock */ - - Status = AcpiEvAcquireGlobalLock (); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, ("Get Global Lock Failed!!\n")); - } - - if (ACPI_SUCCESS (Status)) - { - AcpiGbl_GlobalLockSet = TRUE; - Locked = TRUE; - } - } - - return_VALUE (Locked); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlReleaseGlobalLock - * - * PARAMETERS: LockedByMe - Return value from corresponding call to - * AcquireGlobalLock. - * - * RETURN: Status - * - * DESCRIPTION: Release the global lock if it is locked. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlReleaseGlobalLock ( - BOOLEAN LockedByMe) -{ - - FUNCTION_TRACE ("AmlReleaseGlobalLock"); - - - /* Only attempt unlock if the caller locked it */ - - if (LockedByMe) - { - /* Double check against the global flag */ - - if (AcpiGbl_GlobalLockSet) - { - /* OK, now release the lock */ - - AcpiEvReleaseGlobalLock (); - AcpiGbl_GlobalLockSet = FALSE; - } - - else - { - DEBUG_PRINT (ACPI_ERROR, ("Global lock was not set\n")); - } - } - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlDigitsNeeded - * - * PARAMETERS: val - Value to be represented - * base - Base of representation - * - * RETURN: the number of digits needed to represent val in base - * - ******************************************************************************/ - -UINT32 -AcpiAmlDigitsNeeded ( - ACPI_INTEGER val, - UINT32 base) -{ - UINT32 NumDigits = 0; - - - FUNCTION_TRACE ("AmlDigitsNeeded"); - - - if (base < 1) - { - REPORT_ERROR (("AmlDigitsNeeded: Internal error - Invalid base\n")); - } - - else - { - for (NumDigits = 1 + (val < 0); (val = ACPI_DIVIDE (val,base)); ++NumDigits) - { ; } - } - - return_VALUE (NumDigits); -} - - -/******************************************************************************* - * - * FUNCTION: ntohl - * - * PARAMETERS: Value - Value to be converted - * - * DESCRIPTION: Convert a 32-bit value to big-endian (swap the bytes) - * - ******************************************************************************/ - -static UINT32 -_ntohl ( - UINT32 Value) -{ - union - { - UINT32 Value; - UINT8 Bytes[4]; - } Out; - - union - { - UINT32 Value; - UINT8 Bytes[4]; - } In; - - - In.Value = Value; - - Out.Bytes[0] = In.Bytes[3]; - Out.Bytes[1] = In.Bytes[2]; - Out.Bytes[2] = In.Bytes[1]; - Out.Bytes[3] = In.Bytes[0]; - - return (Out.Value); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlEisaIdToString - * - * PARAMETERS: NumericId - EISA ID to be converted - * OutString - Where to put the converted string (8 bytes) - * - * DESCRIPTION: Convert a numeric EISA ID to string representation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlEisaIdToString ( - UINT32 NumericId, - NATIVE_CHAR *OutString) -{ - UINT32 id; - - /* swap to big-endian to get contiguous bits */ - - id = _ntohl (NumericId); - - OutString[0] = (char) ('@' + ((id >> 26) & 0x1f)); - OutString[1] = (char) ('@' + ((id >> 21) & 0x1f)); - OutString[2] = (char) ('@' + ((id >> 16) & 0x1f)); - OutString[3] = AcpiGbl_HexToAscii[(id >> 12) & 0xf]; - OutString[4] = AcpiGbl_HexToAscii[(id >> 8) & 0xf]; - OutString[5] = AcpiGbl_HexToAscii[(id >> 4) & 0xf]; - OutString[6] = AcpiGbl_HexToAscii[id & 0xf]; - OutString[7] = 0; - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlUnsignedIntegerToString - * - * PARAMETERS: Value - Value to be converted - * OutString - Where to put the converted string (8 bytes) - * - * RETURN: Convert a number to string representation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlUnsignedIntegerToString ( - ACPI_INTEGER Value, - NATIVE_CHAR *OutString) -{ - UINT32 Count; - UINT32 DigitsNeeded; - - - DigitsNeeded = AcpiAmlDigitsNeeded (Value, 10); - - OutString[DigitsNeeded] = '\0'; - - for (Count = DigitsNeeded; Count > 0; Count--) - { - OutString[Count-1] = (NATIVE_CHAR) ('0' + (ACPI_MODULO (Value, 10))); - Value = ACPI_DIVIDE (Value, 10); - } - - return (AE_OK); -} - - - - - - diff --git a/sys/contrib/dev/acpica/Subsystem/Interpreter/amxface.c b/sys/contrib/dev/acpica/Subsystem/Interpreter/amxface.c deleted file mode 100644 index 960677e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Interpreter/amxface.c +++ /dev/null @@ -1,190 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amxface - External interpreter interfaces - * $Revision: 24 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __AMXFACE_C__ - -#include "acpi.h" -#include "acinterp.h" - - -#define _COMPONENT INTERPRETER - MODULE_NAME ("amxface") - - -/* - * DEFINE_AML_GLOBALS is tested in amlcode.h - * to determine whether certain global names should be "defined" or only - * "declared" in the current compilation. This enhances maintainability - * by enabling a single header file to embody all knowledge of the names - * in question. - * - * Exactly one module of any executable should #define DEFINE_GLOBALS - * before #including the header files which use this convention. The - * names in question will be defined and initialized in that module, - * and declared as extern in all other modules which #include those - * header files. - */ - -#define DEFINE_AML_GLOBALS -#include "amlcode.h" -#include "acparser.h" -#include "acnamesp.h" - - -/******************************************************************************* - * - * FUNCTION: AcpiAmlExecuteMethod - * - * PARAMETERS: Pcode - Pointer to the pcode stream - * PcodeLength - Length of pcode that comprises the method - * **Params - List of parameters to pass to method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAmlExecuteMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObjDesc) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AmlExecuteMethod"); - - - /* - * The point here is to lock the interpreter and call the low - * level execute. - */ - - AcpiAmlEnterInterpreter (); - - Status = AcpiPsxExecute (MethodNode, Params, ReturnObjDesc); - - AcpiAmlExitInterpreter (); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsaccess.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsaccess.c deleted file mode 100644 index 47e7785..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsaccess.c +++ /dev/null @@ -1,742 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsaccess - Top-level functions for accessing ACPI namespace - * $Revision: 119 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSACCESS_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acdispat.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsaccess") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsRootInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Allocate and initialize the default root named objects - * - * MUTEX: Locks namespace for entire execution - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsRootInitialize (void) -{ - ACPI_STATUS Status = AE_OK; - PREDEFINED_NAMES *InitVal = NULL; - ACPI_NAMESPACE_NODE *NewNode; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE ("NsRootInitialize"); - - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* - * The global root ptr is initially NULL, so a non-NULL value indicates - * that AcpiNsRootInitialize() has already been called; just return. - */ - - if (AcpiGbl_RootNode) - { - Status = AE_OK; - goto UnlockAndExit; - } - - - /* - * Tell the rest of the subsystem that the root is initialized - * (This is OK because the namespace is locked) - */ - - AcpiGbl_RootNode = &AcpiGbl_RootNodeStruct; - - - /* Enter the pre-defined names in the name table */ - - DEBUG_PRINT (ACPI_INFO, - ("Entering predefined name table entries into namespace\n")); - - for (InitVal = AcpiGbl_PreDefinedNames; InitVal->Name; InitVal++) - { - Status = AcpiNsLookup (NULL, InitVal->Name, - (OBJECT_TYPE_INTERNAL) InitVal->Type, - IMODE_LOAD_PASS2, NS_NO_UPSEARCH, - NULL, &NewNode); - - if (ACPI_FAILURE (Status) || (!NewNode)) /* Must be on same line for code converter */ - { - DEBUG_PRINT (ACPI_ERROR, - ("Could not create predefined name %s, %s\n", - InitVal->Name, AcpiCmFormatException (Status))); - } - - /* - * Name entered successfully. - * If entry in PreDefinedNames[] specifies an - * initial value, create the initial value. - */ - - if (InitVal->Val) - { - /* - * Entry requests an initial value, allocate a - * descriptor for it. - */ - - ObjDesc = AcpiCmCreateInternalObject ( - (OBJECT_TYPE_INTERNAL) InitVal->Type); - - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* - * Convert value string from table entry to - * internal representation. Only types actually - * used for initial values are implemented here. - */ - - switch (InitVal->Type) - { - - case ACPI_TYPE_INTEGER: - - ObjDesc->Integer.Value = - (ACPI_INTEGER) STRTOUL (InitVal->Val, NULL, 10); - break; - - - case ACPI_TYPE_STRING: - - ObjDesc->String.Length = - (UINT16) STRLEN (InitVal->Val); - - /* - * Allocate a buffer for the string. All - * String.Pointers must be allocated buffers! - * (makes deletion simpler) - */ - ObjDesc->String.Pointer = AcpiCmAllocate ( - (ObjDesc->String.Length + 1)); - if (!ObjDesc->String.Pointer) - { - AcpiCmRemoveReference (ObjDesc); - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - STRCPY (ObjDesc->String.Pointer, InitVal->Val); - break; - - - case ACPI_TYPE_MUTEX: - - ObjDesc->Mutex.SyncLevel = - (UINT16) STRTOUL (InitVal->Val, NULL, 10); - - if (STRCMP (InitVal->Name, "_GL_") == 0) - { - /* - * Create a counting semaphore for the - * global lock - */ - Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, - 1, &ObjDesc->Mutex.Semaphore); - - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - /* - * We just created the mutex for the - * global lock, save it - */ - - AcpiGbl_GlobalLockSemaphore = ObjDesc->Mutex.Semaphore; - } - - else - { - /* Create a mutex */ - - Status = AcpiOsCreateSemaphore (1, 1, - &ObjDesc->Mutex.Semaphore); - - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - } - break; - - - default: - REPORT_ERROR (("Unsupported initial type value %X\n", - InitVal->Type)); - AcpiCmRemoveReference (ObjDesc); - ObjDesc = NULL; - continue; - } - - /* Store pointer to value descriptor in the Node */ - - AcpiNsAttachObject (NewNode, ObjDesc, - ObjDesc->Common.Type); - } - } - - -UnlockAndExit: - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsLookup - * - * PARAMETERS: PrefixNode - Search scope if name is not fully qualified - * Pathname - Search pathname, in internal format - * (as represented in the AML stream) - * Type - Type associated with name - * InterpreterMode - IMODE_LOAD_PASS2 => add name if not found - * Flags - Flags describing the search restrictions - * WalkState - Current state of the walk - * ReturnNode - Where the Node is placed (if found - * or created successfully) - * - * RETURN: Status - * - * DESCRIPTION: Find or enter the passed name in the name space. - * Log an error if name not found in Exec mode. - * - * MUTEX: Assumes namespace is locked. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsLookup ( - ACPI_GENERIC_STATE *ScopeInfo, - NATIVE_CHAR *Pathname, - OBJECT_TYPE_INTERNAL Type, - OPERATING_MODE InterpreterMode, - UINT32 Flags, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *PrefixNode; - ACPI_NAMESPACE_NODE *CurrentNode = NULL; - ACPI_NAMESPACE_NODE *ScopeToPush = NULL; - ACPI_NAMESPACE_NODE *ThisNode = NULL; - UINT32 NumSegments; - ACPI_NAME SimpleName; - BOOLEAN NullNamePath = FALSE; - OBJECT_TYPE_INTERNAL TypeToCheckFor; - OBJECT_TYPE_INTERNAL ThisSearchType; - UINT32 LocalFlags = Flags & ~NS_ERROR_IF_FOUND; - - DEBUG_EXEC (UINT32 i;) - - - FUNCTION_TRACE ("NsLookup"); - - - if (!ReturnNode) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - AcpiGbl_NsLookupCount++; - - *ReturnNode = ENTRY_NOT_FOUND; - - - if (!AcpiGbl_RootNode) - { - return (AE_NO_NAMESPACE); - } - - /* - * Get the prefix scope. - * A null scope means use the root scope - */ - - if ((!ScopeInfo) || - (!ScopeInfo->Scope.Node)) - { - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Null scope prefix, using root node (%p)\n", AcpiGbl_RootNode)); - - PrefixNode = AcpiGbl_RootNode; - } - else - { - PrefixNode = ScopeInfo->Scope.Node; - } - - - /* - * This check is explicitly split provide relax the TypeToCheckFor - * conditions for BankFieldDefn. Originally, both BankFieldDefn and - * DefFieldDefn caused TypeToCheckFor to be set to ACPI_TYPE_REGION, - * but the BankFieldDefn may also check for a Field definition as well - * as an OperationRegion. - */ - - if (INTERNAL_TYPE_DEF_FIELD_DEFN == Type) - { - /* DefFieldDefn defines fields in a Region */ - - TypeToCheckFor = ACPI_TYPE_REGION; - } - - else if (INTERNAL_TYPE_BANK_FIELD_DEFN == Type) - { - /* BankFieldDefn defines data fields in a Field Object */ - - TypeToCheckFor = ACPI_TYPE_ANY; - } - - else - { - TypeToCheckFor = Type; - } - - - /* TBD: [Restructure] - Move the pathname stuff into a new procedure */ - - /* Examine the name pointer */ - - if (!Pathname) - { - /* 8-12-98 ASL Grammar Update supports null NamePath */ - - NullNamePath = TRUE; - NumSegments = 0; - ThisNode = AcpiGbl_RootNode; - - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Null Pathname (Zero segments), Flags=%x\n", Flags)); - } - - else - { - /* - * Valid name pointer (Internal name format) - * - * Check for prefixes. As represented in the AML stream, a - * Pathname consists of an optional scope prefix followed by - * a segment part. - * - * If present, the scope prefix is either a RootPrefix (in - * which case the name is fully qualified), or zero or more - * ParentPrefixes (in which case the name's scope is relative - * to the current scope). - * - * The segment part consists of either: - * - A single 4-byte name segment, or - * - A DualNamePrefix followed by two 4-byte name segments, or - * - A MultiNamePrefixOp, followed by a byte indicating the - * number of segments and the segments themselves. - */ - - if (*Pathname == AML_ROOT_PREFIX) - { - /* Pathname is fully qualified, look in root name table */ - - CurrentNode = AcpiGbl_RootNode; - - /* point to segment part */ - - Pathname++; - - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Searching from root [%p]\n", - CurrentNode)); - - /* Direct reference to root, "\" */ - - if (!(*Pathname)) - { - ThisNode = AcpiGbl_RootNode; - goto CheckForNewScopeAndExit; - } - } - - else - { - /* Pathname is relative to current scope, start there */ - - CurrentNode = PrefixNode; - - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Searching relative to pfx scope [%p]\n", - PrefixNode)); - - /* - * Handle up-prefix (carat). More than one prefix - * is supported - */ - - while (*Pathname == AML_PARENT_PREFIX) - { - /* Point to segment part or next ParentPrefix */ - - Pathname++; - - /* Backup to the parent's scope */ - - ThisNode = AcpiNsGetParentObject (CurrentNode); - if (!ThisNode) - { - /* Current scope has no parent scope */ - - REPORT_ERROR (("Too many parent prefixes (^) - reached root\n")); - return_ACPI_STATUS (AE_NOT_FOUND); - } - - CurrentNode = ThisNode; - } - } - - - /* - * Examine the name prefix opcode, if any, - * to determine the number of segments - */ - - if (*Pathname == AML_DUAL_NAME_PREFIX) - { - NumSegments = 2; - - /* point to first segment */ - - Pathname++; - - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Dual Pathname (2 segments, Flags=%X)\n", Flags)); - } - - else if (*Pathname == AML_MULTI_NAME_PREFIX_OP) - { - NumSegments = (UINT32)* (UINT8 *) ++Pathname; - - /* point to first segment */ - - Pathname++; - - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Multi Pathname (%d Segments, Flags=%X) \n", - NumSegments, Flags)); - } - - else - { - /* - * No Dual or Multi prefix, hence there is only one - * segment and Pathname is already pointing to it. - */ - NumSegments = 1; - - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Simple Pathname (1 segment, Flags=%X)\n", Flags)); - } - -#ifdef ACPI_DEBUG - - /* TBD: [Restructure] Make this a procedure */ - - /* Debug only: print the entire name that we are about to lookup */ - - DEBUG_PRINT (TRACE_NAMES, ("NsLookup: [")); - - for (i = 0; i < NumSegments; i++) - { - DEBUG_PRINT_RAW (TRACE_NAMES, ("%4.4s/", &Pathname[i * 4])); - } - DEBUG_PRINT_RAW (TRACE_NAMES, ("]\n")); -#endif - } - - - /* - * Search namespace for each segment of the name. - * Loop through and verify/add each name segment. - */ - - - while (NumSegments-- && CurrentNode) - { - /* - * Search for the current name segment under the current - * named object. The Type is significant only at the last (topmost) - * level. (We don't care about the types along the path, only - * the type of the final target object.) - */ - ThisSearchType = ACPI_TYPE_ANY; - if (!NumSegments) - { - ThisSearchType = Type; - LocalFlags = Flags; - } - - /* Pluck one ACPI name from the front of the pathname */ - - MOVE_UNALIGNED32_TO_32 (&SimpleName, Pathname); - - /* Try to find the ACPI name */ - - Status = AcpiNsSearchAndEnter (SimpleName, WalkState, - CurrentNode, InterpreterMode, - ThisSearchType, LocalFlags, - &ThisNode); - - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - /* Name not found in ACPI namespace */ - - DEBUG_PRINT (TRACE_NAMES, - ("NsLookup: Name [%4.4s] not found in scope %X\n", - &SimpleName, CurrentNode)); - } - - return_ACPI_STATUS (Status); - } - - - /* - * If 1) This is the last segment (NumSegments == 0) - * 2) and looking for a specific type - * (Not checking for TYPE_ANY) - * 3) Which is not an alias - * 4) which is not a local type (TYPE_DEF_ANY) - * 5) which is not a local type (TYPE_SCOPE) - * 6) which is not a local type (TYPE_INDEX_FIELD_DEFN) - * 7) and type of object is known (not TYPE_ANY) - * 8) and object does not match request - * - * Then we have a type mismatch. Just warn and ignore it. - */ - if ((NumSegments == 0) && - (TypeToCheckFor != ACPI_TYPE_ANY) && - (TypeToCheckFor != INTERNAL_TYPE_ALIAS) && - (TypeToCheckFor != INTERNAL_TYPE_DEF_ANY) && - (TypeToCheckFor != INTERNAL_TYPE_SCOPE) && - (TypeToCheckFor != INTERNAL_TYPE_INDEX_FIELD_DEFN) && - (ThisNode->Type != ACPI_TYPE_ANY) && - (ThisNode->Type != TypeToCheckFor)) - { - /* Complain about a type mismatch */ - - REPORT_WARNING ( - ("NsLookup: %4.4s, type %X, checking for type %X\n", - &SimpleName, ThisNode->Type, TypeToCheckFor)); - } - - /* - * If this is the last name segment and we are not looking for a - * specific type, but the type of found object is known, use that type - * to see if it opens a scope. - */ - - if ((0 == NumSegments) && (ACPI_TYPE_ANY == Type)) - { - Type = ThisNode->Type; - } - - if ((NumSegments || AcpiNsOpensScope (Type)) && - (ThisNode->Child == NULL)) - { - /* - * More segments or the type implies enclosed scope, - * and the next scope has not been allocated. - */ - - DEBUG_PRINT (ACPI_INFO, - ("NsLookup: Load mode=%X ThisNode=%X\n", - InterpreterMode, ThisNode)); - } - - CurrentNode = ThisNode; - - /* point to next name segment */ - - Pathname += ACPI_NAME_SIZE; - } - - - /* - * Always check if we need to open a new scope - */ - -CheckForNewScopeAndExit: - - if (!(Flags & NS_DONT_OPEN_SCOPE) && (WalkState)) - { - /* - * If entry is a type which opens a scope, - * push the new scope on the scope stack. - */ - - if (AcpiNsOpensScope (TypeToCheckFor)) - { - /* 8-12-98 ASL Grammar Update supports null NamePath */ - - if (NullNamePath) - { - /* TBD: [Investigate] - is this the correct thing to do? */ - - ScopeToPush = NULL; - } - else - { - ScopeToPush = ThisNode; - } - - Status = AcpiDsScopeStackPush (ScopeToPush, Type, - WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - DEBUG_PRINT (ACPI_INFO, - ("NsLookup: Set global scope to %p\n", ScopeToPush)); - } - } - - *ReturnNode = ThisNode; - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsalloc.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsalloc.c deleted file mode 100644 index 3f90752..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsalloc.c +++ /dev/null @@ -1,728 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsalloc - Namespace allocation and deletion utilities - * $Revision: 45 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSALLOC_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acinterp.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsalloc") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsCreateNode - * - * PARAMETERS: - * - * RETURN: None - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsCreateNode ( - UINT32 AcpiName) -{ - ACPI_NAMESPACE_NODE *Node; - - FUNCTION_TRACE ("NsCreateNode"); - - - Node = AcpiCmCallocate (sizeof (ACPI_NAMESPACE_NODE)); - if (!Node) - { - return_PTR (NULL); - } - - INCREMENT_NAME_TABLE_METRICS (sizeof (ACPI_NAMESPACE_NODE)); - - Node->DataType = ACPI_DESC_TYPE_NAMED; - Node->Name = AcpiName; - Node->ReferenceCount = 1; - - return_PTR (Node); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteNode - * - * PARAMETERS: - * - * RETURN: None - * - * DESCRIPTION: - * - ******************************************************************************/ - -void -AcpiNsDeleteNode ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_NAMESPACE_NODE *ParentNode; - ACPI_NAMESPACE_NODE *PrevNode; - ACPI_NAMESPACE_NODE *NextNode; - - - FUNCTION_TRACE_PTR ("NsDeleteNode", Node); - - ParentNode = AcpiNsGetParentObject (Node); - - PrevNode = NULL; - NextNode = ParentNode->Child; - - while (NextNode != Node) - { - PrevNode = NextNode; - NextNode = PrevNode->Peer; - } - - if (PrevNode) - { - PrevNode->Peer = NextNode->Peer; - if (NextNode->Flags & ANOBJ_END_OF_PEER_LIST) - { - PrevNode->Flags |= ANOBJ_END_OF_PEER_LIST; - } - } - else - { - ParentNode->Child = NextNode->Peer; - } - - - DECREMENT_NAME_TABLE_METRICS (sizeof (ACPI_NAMESPACE_NODE)); - - /* - * Detach an object if there is one - */ - - if (Node->Object) - { - AcpiNsDetachObject (Node); - } - - AcpiCmFree (Node); - - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInstallNode - * - * PARAMETERS: WalkState - Current state of the walk - * ParentNode - The parent of the new Node - * Node - The new Node to install - * Type - ACPI object type of the new Node - * - * RETURN: None - * - * DESCRIPTION: Initialize a new entry within a namespace table. - * - ******************************************************************************/ - -void -AcpiNsInstallNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ - ACPI_NAMESPACE_NODE *Node, /* New Child*/ - OBJECT_TYPE_INTERNAL Type) -{ - UINT16 OwnerId = TABLE_ID_DSDT; - ACPI_NAMESPACE_NODE *ChildNode; - - - FUNCTION_TRACE ("NsInstallNode"); - - - /* - * Get the owner ID from the Walk state - * The owner ID is used to track table deletion and - * deletion of objects created by methods - */ - if (WalkState) - { - OwnerId = WalkState->OwnerId; - } - - - /* link the new entry into the parent and existing children */ - - /* TBD: Could be first, last, or alphabetic */ - - ChildNode = ParentNode->Child; - if (!ChildNode) - { - ParentNode->Child = Node; - } - - else - { - while (!(ChildNode->Flags & ANOBJ_END_OF_PEER_LIST)) - { - ChildNode = ChildNode->Peer; - } - - ChildNode->Peer = Node; - - /* Clear end-of-list flag */ - - ChildNode->Flags &= ~ANOBJ_END_OF_PEER_LIST; - } - - /* Init the new entry */ - - Node->OwnerId = OwnerId; - Node->Flags |= ANOBJ_END_OF_PEER_LIST; - Node->Peer = ParentNode; - - - /* - * If adding a name with unknown type, or having to - * add the region in order to define fields in it, we - * have a forward reference. - */ - - if ((ACPI_TYPE_ANY == Type) || - (INTERNAL_TYPE_DEF_FIELD_DEFN == Type) || - (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) - { - /* - * We don't want to abort here, however! - * We will fill in the actual type when the - * real definition is found later. - */ - - DEBUG_PRINT (ACPI_INFO, - ("NsInstallNode: [%4.4s] is a forward reference\n", - &Node->Name)); - - } - - /* - * The DefFieldDefn and BankFieldDefn cases are actually - * looking up the Region in which the field will be defined - */ - - if ((INTERNAL_TYPE_DEF_FIELD_DEFN == Type) || - (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) - { - Type = ACPI_TYPE_REGION; - } - - /* - * Scope, DefAny, and IndexFieldDefn are bogus "types" which do - * not actually have anything to do with the type of the name - * being looked up. Save any other value of Type as the type of - * the entry. - */ - - if ((Type != INTERNAL_TYPE_SCOPE) && - (Type != INTERNAL_TYPE_DEF_ANY) && - (Type != INTERNAL_TYPE_INDEX_FIELD_DEFN)) - { - Node->Type = (UINT8) Type; - } - - DEBUG_PRINT (TRACE_NAMES, - ("NsInstallNode: %4.4s added to %p at %p\n", - &Node->Name, ParentNode, Node)); - - /* - * Increment the reference count(s) of all parents up to - * the root! - */ - - while ((Node = AcpiNsGetParentObject (Node)) != NULL) - { - Node->ReferenceCount++; - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteChildren - * - * PARAMETERS: ParentNode - Delete this objects children - * - * RETURN: None. - * - * DESCRIPTION: Delete all children of the parent object. Deletes a - * "scope". - * - ******************************************************************************/ - -void -AcpiNsDeleteChildren ( - ACPI_NAMESPACE_NODE *ParentNode) -{ - ACPI_NAMESPACE_NODE *ChildNode; - ACPI_NAMESPACE_NODE *NextNode; - UINT8 Flags; - - - FUNCTION_TRACE_PTR ("AcpiNsDeleteChildren", ParentNode); - - - if (!ParentNode) - { - return_VOID; - } - - /* If no children, all done! */ - - ChildNode = ParentNode->Child; - if (!ChildNode) - { - return_VOID; - } - - /* - * Deallocate all children at this level - */ - do - { - /* Get the things we need */ - - NextNode = ChildNode->Peer; - Flags = ChildNode->Flags; - - /* Grandchildren should have all been deleted already */ - - if (ChildNode->Child) - { - DEBUG_PRINT (ACPI_ERROR, - ("NsDeleteChildren: Found a grandchild! P=%X C=%X\n", - ParentNode, ChildNode)); - } - - /* Now we can free this child object */ - - DECREMENT_NAME_TABLE_METRICS (sizeof (ACPI_NAMESPACE_NODE)); - - DEBUG_PRINT (ACPI_INFO, - ("AcpiNsDeleteChildren: Object %p, Remaining %X\n", - ChildNode, AcpiGbl_CurrentNodeCount)); - - /* - * Detach an object if there is one - */ - - if (ChildNode->Object) - { - AcpiNsDetachObject (ChildNode); - } - - AcpiCmFree (ChildNode); - - /* And move on to the next child in the list */ - - ChildNode = NextNode; - - } while (!(Flags & ANOBJ_END_OF_PEER_LIST)); - - - /* Clear the parent's child pointer */ - - ParentNode->Child = NULL; - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteNamespaceSubtree - * - * PARAMETERS: None. - * - * RETURN: None. - * - * DESCRIPTION: Delete a subtree of the namespace. This includes all objects - * stored within the subtree. Scope tables are deleted also - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsDeleteNamespaceSubtree ( - ACPI_NAMESPACE_NODE *ParentNode) -{ - ACPI_NAMESPACE_NODE *ChildNode; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Level; - - - FUNCTION_TRACE ("NsDeleteNamespaceSubtree"); - - - if (!ParentNode) - { - return_ACPI_STATUS (AE_OK); - } - - - ChildNode = 0; - Level = 1; - - /* - * Traverse the tree of objects until we bubble back up - * to where we started. - */ - - while (Level > 0) - { - /* - * Get the next typed object in this scope. - * Null returned if not found - */ - - ChildNode = AcpiNsGetNextObject (ACPI_TYPE_ANY, ParentNode, - ChildNode); - if (ChildNode) - { - /* - * Found an object - delete the object within - * the Value field - */ - - ObjDesc = AcpiNsGetAttachedObject (ChildNode); - if (ObjDesc) - { - AcpiNsDetachObject (ChildNode); - AcpiCmRemoveReference (ObjDesc); - } - - - /* Check if this object has any children */ - - if (AcpiNsGetNextObject (ACPI_TYPE_ANY, ChildNode, 0)) - { - /* - * There is at least one child of this object, - * visit the object - */ - - Level++; - ParentNode = ChildNode; - ChildNode = 0; - } - } - - else - { - /* - * No more children in this object. - * We will move up to the grandparent. - */ - Level--; - - /* - * Now delete all of the children of this parent - * all at the same time. - */ - AcpiNsDeleteChildren (ParentNode); - - /* New "last child" is this parent object */ - - ChildNode = ParentNode; - - /* Now we can move up the tree to the grandparent */ - - ParentNode = AcpiNsGetParentObject (ParentNode); - } - } - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsRemoveReference - * - * PARAMETERS: Node - Named object whose reference count is to be - * decremented - * - * RETURN: None. - * - * DESCRIPTION: Remove a Node reference. Decrements the reference count - * of all parent Nodes up to the root. Any object along - * the way that reaches zero references is freed. - * - ******************************************************************************/ - -static void -AcpiNsRemoveReference ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_NAMESPACE_NODE *NextNode; - - - /* - * Decrement the reference count(s) of this object and all - * objects up to the root, Delete anything with zero remaining references. - */ - NextNode = Node; - while (NextNode) - { - /* Decrement the reference count on this object*/ - - NextNode->ReferenceCount--; - - /* Delete the object if no more references */ - - if (!NextNode->ReferenceCount) - { - /* Delete all children and delete the object */ - - AcpiNsDeleteChildren (NextNode); - AcpiNsDeleteNode (NextNode); - } - - /* Move up to parent */ - - NextNode = AcpiNsGetParentObject (NextNode); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteNamespaceByOwner - * - * PARAMETERS: None. - * - * RETURN: None. - * - * DESCRIPTION: Delete entries within the namespace that are owned by a - * specific ID. Used to delete entire ACPI tables. All - * reference counts are updated. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsDeleteNamespaceByOwner ( - UINT16 OwnerId) -{ - ACPI_NAMESPACE_NODE *ChildNode; - UINT32 Level; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *ParentNode; - - - FUNCTION_TRACE ("NsDeleteNamespaceSubtree"); - - - ParentNode = AcpiGbl_RootNode; - ChildNode = 0; - Level = 1; - - /* - * Traverse the tree of objects until we bubble back up - * to where we started. - */ - - while (Level > 0) - { - /* - * Get the next typed object in this scope. - * Null returned if not found - */ - - ChildNode = AcpiNsGetNextObject (ACPI_TYPE_ANY, ParentNode, - ChildNode); - - if (ChildNode) - { - if (ChildNode->OwnerId == OwnerId) - { - /* - * Found an object - delete the object within - * the Value field - */ - - ObjDesc = AcpiNsGetAttachedObject (ChildNode); - if (ObjDesc) - { - AcpiNsDetachObject (ChildNode); - AcpiCmRemoveReference (ObjDesc); - } - } - - /* Check if this object has any children */ - - if (AcpiNsGetNextObject (ACPI_TYPE_ANY, ChildNode, 0)) - { - /* - * There is at least one child of this object, - * visit the object - */ - - Level++; - ParentNode = ChildNode; - ChildNode = 0; - } - - else if (ChildNode->OwnerId == OwnerId) - { - AcpiNsRemoveReference (ChildNode); - } - } - - else - { - /* - * No more children in this object. Move up to grandparent. - */ - Level--; - - if (Level != 0) - { - if (ParentNode->OwnerId == OwnerId) - { - AcpiNsRemoveReference (ParentNode); - } - } - - /* New "last child" is this parent object */ - - ChildNode = ParentNode; - - /* Now we can move up the tree to the grandparent */ - - ParentNode = AcpiNsGetParentObject (ParentNode); - } - } - - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsdump.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsdump.c deleted file mode 100644 index eb907a3..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsdump.c +++ /dev/null @@ -1,679 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsdump - table dumping routines for debug - * $Revision: 85 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSDUMP_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "actables.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsdump") - - -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) - -/**************************************************************************** - * - * FUNCTION: AcpiNsDumpPathname - * - * PARAMETERS: Handle - Object - * Msg - Prefix message - * Level - Desired debug level - * Component - Caller's component ID - * - * DESCRIPTION: Print an object's full namespace pathname - * Manages allocation/freeing of a pathname buffer - * - ***************************************************************************/ - -ACPI_STATUS -AcpiNsDumpPathname ( - ACPI_HANDLE Handle, - NATIVE_CHAR *Msg, - UINT32 Level, - UINT32 Component) -{ - NATIVE_CHAR *Buffer; - UINT32 Length; - - - FUNCTION_TRACE ("NsDumpPathname"); - - /* Do this only if the requested debug level and component are enabled */ - - if (!(AcpiDbgLevel & Level) || !(AcpiDbgLayer & Component)) - { - return_ACPI_STATUS (AE_OK); - } - - Buffer = AcpiCmAllocate (PATHNAME_MAX); - if (!Buffer) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Convert handle to a full pathname and print it (with supplied message) */ - - Length = PATHNAME_MAX; - if (ACPI_SUCCESS (AcpiNsHandleToPathname (Handle, &Length, Buffer))) - { - AcpiOsPrintf ("%s %s (%p)\n", Msg, Buffer, Handle); - } - - AcpiCmFree (Buffer); - - return_ACPI_STATUS (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsDumpOneObject - * - * PARAMETERS: Handle - Node to be dumped - * Level - Nesting level of the handle - * Context - Passed into WalkNamespace - * - * DESCRIPTION: Dump a single Node - * This procedure is a UserFunction called by AcpiNsWalkNamespace. - * - ***************************************************************************/ - -ACPI_STATUS -AcpiNsDumpOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_WALK_INFO *Info = (ACPI_WALK_INFO *) Context; - ACPI_NAMESPACE_NODE *ThisNode; - UINT8 *Value; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - OBJECT_TYPE_INTERNAL ObjType; - OBJECT_TYPE_INTERNAL Type; - UINT32 BytesToDump; - UINT32 DownstreamSiblingMask = 0; - UINT32 LevelTmp; - UINT32 WhichBit; - - - ThisNode = AcpiNsConvertHandleToEntry (ObjHandle); - - LevelTmp = Level; - Type = ThisNode->Type; - WhichBit = 1; - - - if (!(AcpiDbgLevel & Info->DebugLevel)) - { - return (AE_OK); - } - - if (!ObjHandle) - { - DEBUG_PRINT (ACPI_INFO, ("Null object handle\n")); - return (AE_OK); - } - - /* Check if the owner matches */ - - if ((Info->OwnerId != ACPI_UINT32_MAX) && - (Info->OwnerId != ThisNode->OwnerId)) - { - return (AE_OK); - } - - - /* Indent the object according to the level */ - - while (LevelTmp--) - { - - /* Print appropriate characters to form tree structure */ - - if (LevelTmp) - { - if (DownstreamSiblingMask & WhichBit) - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("|")); - } - - else - { - DEBUG_PRINT_RAW (TRACE_TABLES, (" ")); - } - - WhichBit <<= 1; - } - - else - { - if (AcpiNsExistDownstreamSibling (ThisNode + 1)) - { - DownstreamSiblingMask |= (1 << (Level - 1)); - DEBUG_PRINT_RAW (TRACE_TABLES, ("+")); - } - - else - { - DownstreamSiblingMask &= ACPI_UINT32_MAX ^ (1 << (Level - 1)); - DEBUG_PRINT_RAW (TRACE_TABLES, ("+")); - } - - if (ThisNode->Child == NULL) - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("-")); - } - - else if (AcpiNsExistDownstreamSibling (ThisNode->Child)) - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("+")); - } - - else - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("-")); - } - } - } - - - /* Check the integrity of our data */ - - if (Type > INTERNAL_TYPE_MAX) - { - Type = INTERNAL_TYPE_DEF_ANY; /* prints as *ERROR* */ - } - - if (!AcpiCmValidAcpiName (ThisNode->Name)) - { - REPORT_WARNING (("Invalid ACPI Name %08X\n", ThisNode->Name)); - } - - /* - * Now we can print out the pertinent information - */ - - DEBUG_PRINT_RAW (TRACE_TABLES, (" %4.4s %-9s ", &ThisNode->Name, AcpiCmGetTypeName (Type))); - DEBUG_PRINT_RAW (TRACE_TABLES, ("%p S:%p O:%p", ThisNode, ThisNode->Child, ThisNode->Object)); - - - if (!ThisNode->Object) - { - /* No attached object, we are done */ - - DEBUG_PRINT_RAW (TRACE_TABLES, ("\n")); - return (AE_OK); - } - - switch (Type) - { - - case ACPI_TYPE_METHOD: - - /* Name is a Method and its AML offset/length are set */ - - DEBUG_PRINT_RAW (TRACE_TABLES, (" M:%p-%X\n", - ((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Method.Pcode, - ((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Method.PcodeLength)); - - break; - - - case ACPI_TYPE_INTEGER: - - DEBUG_PRINT_RAW (TRACE_TABLES, (" N:%X\n", - ((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Integer.Value)); - break; - - - case ACPI_TYPE_STRING: - - DEBUG_PRINT_RAW (TRACE_TABLES, (" S:%p-%X\n", - ((ACPI_OPERAND_OBJECT *) ThisNode->Object)->String.Pointer, - ((ACPI_OPERAND_OBJECT *) ThisNode->Object)->String.Length)); - break; - - - case ACPI_TYPE_BUFFER: - - DEBUG_PRINT_RAW (TRACE_TABLES, (" B:%p-%X\n", - ((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Buffer.Pointer, - ((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Buffer.Length)); - break; - - - default: - - DEBUG_PRINT_RAW (TRACE_TABLES, ("\n")); - break; - } - - /* If debug turned off, done */ - - if (!(AcpiDbgLevel & TRACE_VALUES)) - { - return (AE_OK); - } - - - /* If there is an attached object, display it */ - - Value = ThisNode->Object; - - /* Dump attached objects */ - - while (Value) - { - ObjType = INTERNAL_TYPE_INVALID; - - /* Decode the type of attached object and dump the contents */ - - DEBUG_PRINT_RAW (TRACE_TABLES, (" Attached Object %p: ", Value)); - - if (AcpiTbSystemTablePointer (Value)) - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("(Ptr to AML Code)\n")); - BytesToDump = 16; - } - - else if (VALID_DESCRIPTOR_TYPE (Value, ACPI_DESC_TYPE_NAMED)) - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("(Ptr to Node)\n")); - BytesToDump = sizeof (ACPI_NAMESPACE_NODE); - } - - - else if (VALID_DESCRIPTOR_TYPE (Value, ACPI_DESC_TYPE_INTERNAL)) - { - ObjDesc = (ACPI_OPERAND_OBJECT *) Value; - ObjType = ObjDesc->Common.Type; - - if (ObjType > INTERNAL_TYPE_MAX) - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("(Ptr to ACPI Object type %X [UNKNOWN])\n", ObjType)); - BytesToDump = 32; - } - - else - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("(Ptr to ACPI Object type %X [%s])\n", - ObjType, AcpiCmGetTypeName (ObjType))); - BytesToDump = sizeof (ACPI_OPERAND_OBJECT); - } - } - - else - { - DEBUG_PRINT_RAW (TRACE_TABLES, ("(String or Buffer - not descriptor)\n", Value)); - BytesToDump = 16; - } - - DUMP_BUFFER (Value, BytesToDump); - - /* If value is NOT an internal object, we are done */ - - if ((AcpiTbSystemTablePointer (Value)) || - (VALID_DESCRIPTOR_TYPE (Value, ACPI_DESC_TYPE_NAMED))) - { - goto Cleanup; - } - - /* - * Valid object, get the pointer to next level, if any - */ - switch (ObjType) - { - case ACPI_TYPE_STRING: - Value = (UINT8 *) ObjDesc->String.Pointer; - break; - - case ACPI_TYPE_BUFFER: - Value = (UINT8 *) ObjDesc->Buffer.Pointer; - break; - - case ACPI_TYPE_PACKAGE: - Value = (UINT8 *) ObjDesc->Package.Elements; - break; - - case ACPI_TYPE_METHOD: - Value = (UINT8 *) ObjDesc->Method.Pcode; - break; - - case ACPI_TYPE_FIELD_UNIT: - Value = (UINT8 *) ObjDesc->FieldUnit.Container; - break; - - case INTERNAL_TYPE_DEF_FIELD: - Value = (UINT8 *) ObjDesc->Field.Container; - break; - - case INTERNAL_TYPE_BANK_FIELD: - Value = (UINT8 *) ObjDesc->BankField.Container; - break; - - case INTERNAL_TYPE_INDEX_FIELD: - Value = (UINT8 *) ObjDesc->IndexField.Index; - break; - - default: - goto Cleanup; - } - - ObjType = INTERNAL_TYPE_INVALID; /* Terminate loop after next pass */ - } - -Cleanup: - DEBUG_PRINT_RAW (TRACE_TABLES, ("\n")); - return (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsDumpObjects - * - * PARAMETERS: Type - Object type to be dumped - * MaxDepth - Maximum depth of dump. Use ACPI_UINT32_MAX - * for an effectively unlimited depth. - * OwnerId - Dump only objects owned by this ID. Use - * ACPI_UINT32_MAX to match all owners. - * StartHandle - Where in namespace to start/end search - * - * DESCRIPTION: Dump typed objects within the loaded namespace. - * Uses AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObject. - * - ***************************************************************************/ - -void -AcpiNsDumpObjects ( - OBJECT_TYPE_INTERNAL Type, - UINT32 MaxDepth, - UINT32 OwnerId, - ACPI_HANDLE StartHandle) -{ - ACPI_WALK_INFO Info; - - - Info.DebugLevel = TRACE_TABLES; - Info.OwnerId = OwnerId; - - AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject, - (void *) &Info, NULL); -} - - -#ifndef _ACPI_ASL_COMPILER -/**************************************************************************** - * - * FUNCTION: AcpiNsDumpOneDevice - * - * PARAMETERS: Handle - Node to be dumped - * Level - Nesting level of the handle - * Context - Passed into WalkNamespace - * - * DESCRIPTION: Dump a single Node that represents a device - * This procedure is a UserFunction called by AcpiNsWalkNamespace. - * - ***************************************************************************/ - -ACPI_STATUS -AcpiNsDumpOneDevice ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_DEVICE_INFO Info; - ACPI_STATUS Status; - UINT32 i; - - - Status = AcpiNsDumpOneObject (ObjHandle, Level, Context, ReturnValue); - - Status = AcpiGetObjectInfo (ObjHandle, &Info); - if (ACPI_SUCCESS (Status)) - { - for (i = 0; i < Level; i++) - { - DEBUG_PRINT_RAW (TRACE_TABLES, (" ")); - } - - DEBUG_PRINT_RAW (TRACE_TABLES, (" HID: %.8X, ADR: %.8X, Status: %x\n", - Info.HardwareId, Info.Address, Info.CurrentStatus)); - } - - return (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsDumpRootDevices - * - * PARAMETERS: None - * - * DESCRIPTION: Dump all objects of type "device" - * - ***************************************************************************/ - -void -AcpiNsDumpRootDevices (void) -{ - ACPI_HANDLE SysBusHandle; - - - /* Only dump the table if tracing is enabled */ - - if (!(TRACE_TABLES & AcpiDbgLevel)) - { - return; - } - - AcpiGetHandle (0, NS_SYSTEM_BUS, &SysBusHandle); - - DEBUG_PRINT (TRACE_TABLES, ("Display of all devices in the namespace:\n")); - AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, ACPI_UINT32_MAX, NS_WALK_NO_UNLOCK, - AcpiNsDumpOneDevice, NULL, NULL); -} - -#endif - -/**************************************************************************** - * - * FUNCTION: AcpiNsDumpTables - * - * PARAMETERS: SearchBase - Root of subtree to be dumped, or - * NS_ALL to dump the entire namespace - * MaxDepth - Maximum depth of dump. Use INT_MAX - * for an effectively unlimited depth. - * - * DESCRIPTION: Dump the name space, or a portion of it. - * - ***************************************************************************/ - -void -AcpiNsDumpTables ( - ACPI_HANDLE SearchBase, - UINT32 MaxDepth) -{ - ACPI_HANDLE SearchHandle = SearchBase; - - - FUNCTION_TRACE ("NsDumpTables"); - - - if (!AcpiGbl_RootNode) - { - /* - * If the name space has not been initialized, - * there is nothing to dump. - */ - DEBUG_PRINT (TRACE_TABLES, ("NsDumpTables: name space not initialized!\n")); - return_VOID; - } - - if (NS_ALL == SearchBase) - { - /* entire namespace */ - - SearchHandle = AcpiGbl_RootNode; - DEBUG_PRINT (TRACE_TABLES, ("\\\n")); - } - - - AcpiNsDumpObjects (ACPI_TYPE_ANY, MaxDepth, ACPI_UINT32_MAX, SearchHandle); - return_VOID; -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsDumpEntry - * - * PARAMETERS: Handle - Node to be dumped - * DebugLevel - Output level - * - * DESCRIPTION: Dump a single Node - * - ***************************************************************************/ - -void -AcpiNsDumpEntry ( - ACPI_HANDLE Handle, - UINT32 DebugLevel) -{ - ACPI_WALK_INFO Info; - - - FUNCTION_TRACE_PTR ("NsDumpEntry", Handle); - - Info.DebugLevel = DebugLevel; - Info.OwnerId = ACPI_UINT32_MAX; - - AcpiNsDumpOneObject (Handle, 1, &Info, NULL); - - DEBUG_PRINT (TRACE_EXEC, ("leave AcpiNsDumpEntry %p\n", Handle)); - return_VOID; -} - -#endif - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nseval.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nseval.c deleted file mode 100644 index 5c34853..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nseval.c +++ /dev/null @@ -1,663 +0,0 @@ -/******************************************************************************* - * - * Module Name: nseval - Object evaluation interfaces -- includes control - * method lookup and execution. - * $Revision: 83 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSEVAL_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acinterp.h" -#include "acnamesp.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nseval") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsEvaluateRelative - * - * PARAMETERS: Handle - The relative containing object - * *Pathname - Name of method to execute, If NULL, the - * handle is the object to execute - * **Params - List of parameters to pass to the method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * *ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * - * RETURN: Status - * - * DESCRIPTION: Find and execute the requested method using the handle as a - * scope - * - * MUTEX: Locks Namespace - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsEvaluateRelative ( - ACPI_NAMESPACE_NODE *Handle, - NATIVE_CHAR *Pathname, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObject) -{ - ACPI_NAMESPACE_NODE *PrefixNode; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node = NULL; - NATIVE_CHAR *InternalPath = NULL; - ACPI_GENERIC_STATE ScopeInfo; - - - FUNCTION_TRACE ("NsEvaluateRelative"); - - - /* - * Must have a valid object handle - */ - if (!Handle) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Build an internal name string for the method */ - - Status = AcpiNsInternalizeName (Pathname, &InternalPath); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the prefix handle and Node */ - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - PrefixNode = AcpiNsConvertHandleToEntry (Handle); - if (!PrefixNode) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - Status = AE_BAD_PARAMETER; - goto Cleanup; - } - - /* Lookup the name in the namespace */ - - ScopeInfo.Scope.Node = PrefixNode; - Status = AcpiNsLookup (&ScopeInfo, InternalPath, ACPI_TYPE_ANY, - IMODE_EXECUTE, NS_NO_UPSEARCH, NULL, - &Node); - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateRelative: Object [%s] not found [%.4X]\n", - Pathname, AcpiCmFormatException (Status))); - goto Cleanup; - } - - /* - * Now that we have a handle to the object, we can attempt - * to evaluate it. - */ - - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateRelative: %s [%p] Value %p\n", - Pathname, Node, Node->Object)); - - Status = AcpiNsEvaluateByHandle (Node, Params, ReturnObject); - - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateRelative: *** Completed eval of object %s ***\n", - Pathname)); - -Cleanup: - - /* Cleanup */ - - AcpiCmFree (InternalPath); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsEvaluateByName - * - * PARAMETERS: Pathname - Fully qualified pathname to the object - * *ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * **Params - List of parameters to pass to the method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * - * RETURN: Status - * - * DESCRIPTION: Find and execute the requested method passing the given - * parameters - * - * MUTEX: Locks Namespace - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsEvaluateByName ( - NATIVE_CHAR *Pathname, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObject) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node = NULL; - NATIVE_CHAR *InternalPath = NULL; - - - FUNCTION_TRACE ("NsEvaluateByName"); - - - /* Build an internal name string for the method */ - - Status = AcpiNsInternalizeName (Pathname, &InternalPath); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Lookup the name in the namespace */ - - Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY, - IMODE_EXECUTE, NS_NO_UPSEARCH, NULL, - &Node); - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateByName: Object at [%s] was not found, status=%.4X\n", - Pathname, Status)); - goto Cleanup; - } - - /* - * Now that we have a handle to the object, we can attempt - * to evaluate it. - */ - - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateByName: %s [%p] Value %p\n", - Pathname, Node, Node->Object)); - - Status = AcpiNsEvaluateByHandle (Node, Params, ReturnObject); - - DEBUG_PRINT (ACPI_INFO, - ("NsEvaluateByName: *** Completed eval of object %s ***\n", - Pathname)); - - -Cleanup: - - /* Cleanup */ - - if (InternalPath) - { - AcpiCmFree (InternalPath); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsEvaluateByHandle - * - * PARAMETERS: Handle - Method Node to execute - * **Params - List of parameters to pass to the method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * *ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * - * RETURN: Status - * - * DESCRIPTION: Execute the requested method passing the given parameters - * - * MUTEX: Locks Namespace - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsEvaluateByHandle ( - ACPI_NAMESPACE_NODE *Handle, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObject) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *LocalReturnObject; - - - FUNCTION_TRACE ("NsEvaluateByHandle"); - - - /* Check if namespace has been initialized */ - - if (!AcpiGbl_RootNode) - { - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - - /* Parameter Validation */ - - if (!Handle) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (ReturnObject) - { - /* Initialize the return value to an invalid object */ - - *ReturnObject = NULL; - } - - /* Get the prefix handle and Node */ - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - Node = AcpiNsConvertHandleToEntry (Handle); - if (!Node) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* - * Two major cases here: - * 1) The object is an actual control method -- execute it. - * 2) The object is not a method -- just return it's current - * value - * - * In both cases, the namespace is unlocked by the - * AcpiNs* procedure - */ - if (AcpiNsGetType (Node) == ACPI_TYPE_METHOD) - { - /* - * Case 1) We have an actual control method to execute - */ - Status = AcpiNsExecuteControlMethod (Node, Params, - &LocalReturnObject); - } - - else - { - /* - * Case 2) Object is NOT a method, just return its - * current value - */ - Status = AcpiNsGetObjectValue (Node, &LocalReturnObject); - } - - - /* - * Check if there is a return value on the stack that must - * be dealt with - */ - if (Status == AE_CTRL_RETURN_VALUE) - { - /* - * If the Method returned a value and the caller - * provided a place to store a returned value, Copy - * the returned value to the object descriptor provided - * by the caller. - */ - if (ReturnObject) - { - /* - * Valid return object, copy the pointer to - * the returned object - */ - *ReturnObject = LocalReturnObject; - } - - - /* Map AE_RETURN_VALUE to AE_OK, we are done with it */ - - if (Status == AE_CTRL_RETURN_VALUE) - { - Status = AE_OK; - } - } - - /* - * Namespace was unlocked by the handling AcpiNs* function, - * so we just return - */ - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsExecuteControlMethod - * - * PARAMETERS: MethodNode - The object/method - * **Params - List of parameters to pass to the method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * **ReturnObjDesc - List of result objects to be returned - * from the method. - * - * RETURN: Status - * - * DESCRIPTION: Execute the requested method passing the given parameters - * - * MUTEX: Assumes namespace is locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsExecuteControlMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObjDesc) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE ("NsExecuteControlMethod"); - - - /* - * Unlock the namespace before execution. This allows namespace access - * via the external Acpi* interfaces while a method is being executed. - * However, any namespace deletion must acquire both the namespace and - * interpreter locks to ensure that no thread is using the portion of the - * namespace that is being deleted. - */ - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - /* Verify that there is a method associated with this object */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_HANDLE) MethodNode); - if (!ObjDesc) - { - DEBUG_PRINT (ACPI_ERROR, - ("Control method is undefined (nil value)\n")); - return_ACPI_STATUS (AE_ERROR); - } - - - DEBUG_PRINT (ACPI_INFO, ("Control method at Offset %x Length %lx]\n", - ObjDesc->Method.Pcode + 1, - ObjDesc->Method.PcodeLength - 1)); - - DUMP_PATHNAME (MethodNode, "NsExecuteControlMethod: Executing", - TRACE_NAMES, _COMPONENT); - - DEBUG_PRINT (TRACE_NAMES, - ("At offset %8XH\n", ObjDesc->Method.Pcode + 1)); - - /* - * Execute the method via the interpreter - */ - Status = AcpiAmlExecuteMethod (MethodNode, Params, ReturnObjDesc); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetObjectValue - * - * PARAMETERS: Node - The object - * - * RETURN: Status - * - * DESCRIPTION: Return the current value of the object - * - * MUTEX: Assumes namespace is locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsGetObjectValue ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OPERAND_OBJECT **ReturnObjDesc) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *ValDesc; - - - FUNCTION_TRACE ("NsGetObjectValue"); - - - /* - * We take the value from certain objects directly - */ - - if ((Node->Type == ACPI_TYPE_PROCESSOR) || - (Node->Type == ACPI_TYPE_POWER)) - { - /* - * Create a Reference object to contain the object - */ - ObjDesc = AcpiCmCreateInternalObject (Node->Type); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* - * Get the attached object - */ - - ValDesc = AcpiNsGetAttachedObject (Node); - if (!ValDesc) - { - Status = AE_NULL_OBJECT; - goto UnlockAndExit; - } - - /* - * Just copy from the original to the return object - * - * TBD: [Future] - need a low-level object copy that handles - * the reference count automatically. (Don't want to copy it) - */ - - MEMCPY (ObjDesc, ValDesc, sizeof (ACPI_OPERAND_OBJECT)); - ObjDesc->Common.ReferenceCount = 1; - } - - - /* - * Other objects require a reference object wrapper which we - * then attempt to resolve. - */ - else - { - /* Create an Reference object to contain the object */ - - ObjDesc = AcpiCmCreateInternalObject (INTERNAL_TYPE_REFERENCE); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Construct a descriptor pointing to the name */ - - ObjDesc->Reference.OpCode = (UINT8) AML_NAME_OP; - ObjDesc->Reference.Object = (void *) Node; - - /* - * Use AcpiAmlResolveToValue() to get the associated value. - * The call to AcpiAmlResolveToValue causes - * ObjDesc (allocated above) to always be deleted. - * - * NOTE: we can get away with passing in NULL for a walk state - * because ObjDesc is guaranteed to not be a reference to either - * a method local or a method argument - * - * Even though we do not technically need to use the interpreter - * for this, we must enter it because we could hit an opregion. - * The opregion access code assumes it is in the interpreter. - */ - - AcpiAmlEnterInterpreter(); - - Status = AcpiAmlResolveToValue (&ObjDesc, NULL); - - AcpiAmlExitInterpreter(); - } - - /* - * If AcpiAmlResolveToValue() succeeded, the return value was - * placed in ObjDesc. - */ - - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_RETURN_VALUE; - - *ReturnObjDesc = ObjDesc; - DEBUG_PRINT (ACPI_INFO, - ("NsGetObjectValue: Returning obj %p\n", *ReturnObjDesc)); - } - - -UnlockAndExit: - - /* Unlock the namespace */ - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsinit.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsinit.c deleted file mode 100644 index 672bbeb..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsinit.c +++ /dev/null @@ -1,455 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsinit - namespace initialization - * $Revision: 15 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSXFINIT_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acdispat.h" - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsinit") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInitializeObjects - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Walk the entire namespace and perform any necessary - * initialization on the objects found therein - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsInitializeObjects ( - void) -{ - ACPI_STATUS Status; - ACPI_INIT_WALK_INFO Info; - - - FUNCTION_TRACE ("NsInitializeObjects"); - - - DEBUG_PRINT (TRACE_DISPATCH, - ("NsInitializeObjects: **** Starting initialization of namespace objects ****\n")); - DEBUG_PRINT_RAW (ACPI_OK, ("Completing Region and Field initialization:")); - - - Info.FieldCount = 0; - Info.FieldInit = 0; - Info.OpRegionCount = 0; - Info.OpRegionInit = 0; - Info.ObjectCount = 0; - - - /* Walk entire namespace from the supplied root */ - - Status = AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, AcpiNsInitOneObject, - &Info, NULL); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("NsInitializeObjects: WalkNamespace failed! %x\n", Status)); - } - - DEBUG_PRINT_RAW (ACPI_OK, - ("\n%d/%d Regions, %d/%d Fields initialized (%d nodes total)\n", - Info.OpRegionInit, Info.OpRegionCount, Info.FieldInit, Info.FieldCount, Info.ObjectCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("NsInitializeObjects: %d Control Methods found\n", Info.MethodCount)); - DEBUG_PRINT (TRACE_DISPATCH, - ("NsInitializeObjects: %d Op Regions found\n", Info.OpRegionCount)); - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiNsInitializeDevices - * - * PARAMETERS: None - * - * RETURN: ACPI_STATUS - * - * DESCRIPTION: Walk the entire namespace and initialize all ACPI devices. - * This means running _INI on all present devices. - * - * Also: Install PCI config space handler for all PCI root bridges. - * A PCI root bridge is found by searching for devices containing - * a HID with the value EISAID("PNP0A03") - * - *****************************************************************************/ - -ACPI_STATUS -AcpiNsInitializeDevices ( - void) -{ - ACPI_STATUS Status; - ACPI_DEVICE_WALK_INFO Info; - - - FUNCTION_TRACE ("NsInitializeDevices"); - - - Info.DeviceCount = 0; - Info.Num_STA = 0; - Info.Num_INI = 0; - - - DEBUG_PRINT_RAW (ACPI_OK, ("Executing device _INI methods:")); - - Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - FALSE, AcpiNsInitOneDevice, &Info, NULL); - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, - ("NsInitializeDevices: WalkNamespace failed! %x\n", Status)); - } - - - DEBUG_PRINT_RAW (ACPI_OK, - ("\n%d Devices found: %d _STA, %d _INI\n", - Info.DeviceCount, Info.Num_STA, Info.Num_INI)); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInitOneObject - * - * PARAMETERS: ObjHandle - Node - * Level - Current nesting level - * Context - Points to a init info struct - * ReturnValue - Not used - * - * RETURN: Status - * - * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object - * within the namespace. - * - * Currently, the only objects that require initialization are: - * 1) Methods - * 2) Op Regions - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - OBJECT_TYPE_INTERNAL Type; - ACPI_STATUS Status; - ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ACPI_OPERAND_OBJECT *ObjDesc; - - - Info->ObjectCount++; - - - /* And even then, we are only interested in a few object types */ - - Type = AcpiNsGetType (ObjHandle); - ObjDesc = Node->Object; - if (!ObjDesc) - { - return (AE_OK); - } - - switch (Type) - { - - case ACPI_TYPE_REGION: - - Info->OpRegionCount++; - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - break; - } - - Info->OpRegionInit++; - Status = AcpiDsGetRegionArguments (ObjDesc); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT_RAW (ACPI_ERROR, ("\n")); - DEBUG_PRINT (ACPI_ERROR, ("%s while getting region arguments [%4.4s]\n", - AcpiCmFormatException (Status), &Node->Name)); - } - - if (!(AcpiDbgLevel & TRACE_INIT)) - { - DEBUG_PRINT_RAW (ACPI_OK, (".")); - } - - break; - - - case ACPI_TYPE_FIELD_UNIT: - - Info->FieldCount++; - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - break; - } - - Info->FieldInit++; - Status = AcpiDsGetFieldUnitArguments (ObjDesc); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT_RAW (ACPI_ERROR, ("\n")); - DEBUG_PRINT (ACPI_ERROR, ("%s while getting field arguments [%4.4s]\n", - AcpiCmFormatException (Status), &Node->Name)); - } - if (!(AcpiDbgLevel & TRACE_INIT)) - { - DEBUG_PRINT_RAW (ACPI_OK, (".")); - } - - - break; - - default: - break; - } - - /* - * We ignore errors from above, and always return OK, since - * we don't want to abort the walk on a single error. - */ - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiNsInitOneDevice - * - * PARAMETERS: WALK_CALLBACK - * - * RETURN: ACPI_STATUS - * - * DESCRIPTION: This is called once per device soon after ACPI is enabled - * to initialize each device. It determines if the device is - * present, and if so, calls _INI. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiNsInitOneDevice ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - UINT32 Flags; - ACPI_DEVICE_WALK_INFO *Info = (ACPI_DEVICE_WALK_INFO *) Context; - - - FUNCTION_TRACE ("AcpiNsInitOneDevice"); - - - if (!(AcpiDbgLevel & TRACE_INIT)) - { - DEBUG_PRINT_RAW (ACPI_OK, (".")); - } - - Info->DeviceCount++; - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - Node = AcpiNsConvertHandleToEntry (ObjHandle); - if (!Node) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_BAD_PARAMETER); - } - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - /* - * Run _STA to determine if we can run _INI on the device. - */ - - DEBUG_EXEC(AcpiCmDisplayInitPathname (Node, "_STA [Method]")); - Status = AcpiCmExecute_STA (Node, &Flags); - if (ACPI_FAILURE (Status)) - { - /* Ignore error and move on to next device */ - - return_ACPI_STATUS (AE_OK); - } - - Info->Num_STA++; - - if (!(Flags & 0x01)) - { - /* don't look at children of a not present device */ - return_ACPI_STATUS(AE_CTRL_DEPTH); - } - - - - /* - * The device is present. Run _INI. - */ - - DEBUG_EXEC(AcpiCmDisplayInitPathname (ObjHandle, "_INI [Method]")); - Status = AcpiNsEvaluateRelative (ObjHandle, "_INI", NULL, NULL); - if (AE_NOT_FOUND == Status) - { - /* No _INI means device requires no initialization */ - Status = AE_OK; - } - - else if (ACPI_FAILURE (Status)) - { - /* Ignore error and move on to next device */ - -#ifdef ACPI_DEBUG - NATIVE_CHAR *ScopeName = AcpiNsGetTablePathname (ObjHandle); - - DEBUG_PRINT (ACPI_WARN, ("%s._INI failed: %s\n", - ScopeName, AcpiCmFormatException (Status))); - - AcpiCmFree (ScopeName); -#endif - } - - else - { - /* Count of successfull INIs */ - - Info->Num_INI++; - } - - return_ACPI_STATUS (AE_OK); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsload.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsload.c deleted file mode 100644 index 2b49884..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsload.c +++ /dev/null @@ -1,706 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsload - namespace loading/expanding/contracting procedures - * $Revision: 35 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSLOAD_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdispat.h" -#include "acdebug.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsload") - - -/****************************************************************************** - * - * FUNCTION: AcpiLoadNamespace - * - * PARAMETERS: DisplayAmlDuringLoad - * - * RETURN: Status - * - * DESCRIPTION: Load the name space from what ever is pointed to by DSDT. - * (DSDT points to either the BIOS or a buffer.) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsLoadNamespace ( - void) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiLoadNameSpace"); - - - /* There must be at least a DSDT installed */ - - if (AcpiGbl_DSDT == NULL) - { - DEBUG_PRINT (ACPI_ERROR, ("DSDT is not in memory\n")); - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - - /* - * Load the namespace. The DSDT is required, - * but the SSDT and PSDT tables are optional. - */ - - Status = AcpiNsLoadTableByType (ACPI_TABLE_DSDT); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Ignore exceptions from these */ - - AcpiNsLoadTableByType (ACPI_TABLE_SSDT); - AcpiNsLoadTableByType (ACPI_TABLE_PSDT); - - - DEBUG_PRINT_RAW (ACPI_OK, - ("ACPI Namespace successfully loaded at root %p\n", - AcpiGbl_RootNode)); - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsOneParsePass - * - * PARAMETERS: - * - * RETURN: Status - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsOneCompleteParse ( - UINT32 PassNumber, - ACPI_TABLE_DESC *TableDesc) -{ - ACPI_PARSE_DOWNWARDS DescendingCallback; - ACPI_PARSE_UPWARDS AscendingCallback; - ACPI_PARSE_OBJECT *ParseRoot; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("NsOneCompleteParse"); - - - switch (PassNumber) - { - case 1: - DescendingCallback = AcpiDsLoad1BeginOp; - AscendingCallback = AcpiDsLoad1EndOp; - break; - - case 2: - DescendingCallback = AcpiDsLoad2BeginOp; - AscendingCallback = AcpiDsLoad2EndOp; - break; - - case 3: - DescendingCallback = AcpiDsExecBeginOp; - AscendingCallback = AcpiDsExecEndOp; - break; - - default: - return (AE_BAD_PARAMETER); - } - - /* Create and init a Root Node */ - - ParseRoot = AcpiPsAllocOp (AML_SCOPE_OP); - if (!ParseRoot) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ((ACPI_PARSE2_OBJECT *) ParseRoot)->Name = ACPI_ROOT_NAME; - - - /* Pass 1: Parse everything except control method bodies */ - - DEBUG_PRINT (TRACE_PARSE, - ("NsParseTable: *PARSE* pass %d parse\n", PassNumber)); - - Status = AcpiPsParseAml (ParseRoot, - TableDesc->AmlPointer, - TableDesc->AmlLength, - ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE, - NULL, NULL, NULL, - DescendingCallback, - AscendingCallback); - - AcpiPsDeleteParseTree (ParseRoot); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsParseTable - * - * PARAMETERS: TableDesc - An ACPI table descriptor for table to parse - * StartNode - Where to enter the table into the namespace - * - * RETURN: Status - * - * DESCRIPTION: Parse AML within an ACPI table and return a tree of ops - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsParseTable ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NAMESPACE_NODE *StartNode) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("NsParseTable"); - - - /* - * AML Parse, pass 1 - * - * In this pass, we load most of the namespace. Control methods - * are not parsed until later. A parse tree is not created. Instead, - * each Parser Op subtree is deleted when it is finished. This saves - * a great deal of memory, and allows a small cache of parse objects - * to service the entire parse. The second pass of the parse then - * performs another complete parse of the AML.. - */ - - Status = AcpiNsOneCompleteParse (1, TableDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * AML Parse, pass 2 - * - * In this pass, we resolve forward references and other things - * that could not be completed during the first pass. - * Another complete parse of the AML is performed, but the - * overhead of this is compensated for by the fact that the - * parse objects are all cached. - */ - - Status = AcpiNsOneCompleteParse (2, TableDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiNsLoadTable - * - * PARAMETERS: *PcodeAddr - Address of pcode block - * PcodeLength - Length of pcode block - * - * RETURN: Status - * - * DESCRIPTION: Load one ACPI table into the namespace - * - ****************************************************************************/ - -ACPI_STATUS -AcpiNsLoadTable ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("NsLoadTable"); - - - if (!TableDesc->AmlPointer) - { - DEBUG_PRINT (ACPI_ERROR, ("NsLoadTable: Null AML pointer\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: AML block at %p\n", TableDesc->AmlPointer)); - - - if (!TableDesc->AmlLength) - { - DEBUG_PRINT (ACPI_ERROR, - ("NsLoadTable: Zero-length AML block\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* - * Parse the table and load the namespace with all named - * objects found within. Control methods are NOT parsed - * at this time. In fact, the control methods cannot be - * parsed until the entire namespace is loaded, because - * if a control method makes a forward reference (call) - * to another control method, we can't continue parsing - * because we don't know how many arguments to parse next! - */ - - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: **** Loading table into namespace ****\n")); - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - Status = AcpiNsParseTable (TableDesc, Node->Child); - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Now we can parse the control methods. We always parse - * them here for a sanity check, and if configured for - * just-in-time parsing, we delete the control method - * parse trees. - */ - - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: **** Begin Table Method Parsing and Object Initialization ****\n")); - - Status = AcpiDsInitializeObjects (TableDesc, Node); - - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTable: **** Completed Table Method Parsing and Object Initialization ****\n")); - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiNsLoadTableByType - * - * PARAMETERS: TableType - Id of the table type to load - * - * RETURN: Status - * - * DESCRIPTION: Load an ACPI table or tables into the namespace. All tables - * of the given type are loaded. The mechanism allows this - * routine to be called repeatedly. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiNsLoadTableByType ( - ACPI_TABLE_TYPE TableType) -{ - UINT32 i; - ACPI_STATUS Status = AE_OK; - ACPI_TABLE_HEADER *TablePtr; - ACPI_TABLE_DESC *TableDesc; - - - FUNCTION_TRACE ("NsLoadTableByType"); - - - AcpiCmAcquireMutex (ACPI_MTX_TABLES); - - - /* - * Table types supported are: - * DSDT (one), SSDT/PSDT (multiple) - */ - - switch (TableType) - { - - case ACPI_TABLE_DSDT: - - DEBUG_PRINT (ACPI_INFO, ("NsLoadTableByType: Loading DSDT\n")); - - TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_DSDT]; - - /* If table already loaded into namespace, just return */ - - if (TableDesc->LoadedIntoNamespace) - { - goto UnlockAndExit; - } - - TableDesc->TableId = TABLE_ID_DSDT; - - /* Now load the single DSDT */ - - Status = AcpiNsLoadTable (TableDesc, AcpiGbl_RootNode); - if (ACPI_SUCCESS (Status)) - { - TableDesc->LoadedIntoNamespace = TRUE; - } - - break; - - - case ACPI_TABLE_SSDT: - - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTableByType: Loading %d SSDTs\n", - AcpiGbl_AcpiTables[ACPI_TABLE_SSDT].Count)); - - /* - * Traverse list of SSDT tables - */ - - TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_SSDT]; - for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_SSDT].Count; i++) - { - TablePtr = TableDesc->Pointer; - - /* - * Only attempt to load table if it is not - * already loaded! - */ - - if (!TableDesc->LoadedIntoNamespace) - { - Status = AcpiNsLoadTable (TableDesc, - AcpiGbl_RootNode); - if (ACPI_FAILURE (Status)) - { - break; - } - - TableDesc->LoadedIntoNamespace = TRUE; - } - - TableDesc = TableDesc->Next; - } - - break; - - - case ACPI_TABLE_PSDT: - - DEBUG_PRINT (ACPI_INFO, - ("NsLoadTableByType: Loading %d PSDTs\n", - AcpiGbl_AcpiTables[ACPI_TABLE_PSDT].Count)); - - /* - * Traverse list of PSDT tables - */ - - TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_PSDT]; - - for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_PSDT].Count; i++) - { - TablePtr = TableDesc->Pointer; - - /* Only attempt to load table if it is not already loaded! */ - - if (!TableDesc->LoadedIntoNamespace) - { - Status = AcpiNsLoadTable (TableDesc, - AcpiGbl_RootNode); - if (ACPI_FAILURE (Status)) - { - break; - } - - TableDesc->LoadedIntoNamespace = TRUE; - } - - TableDesc = TableDesc->Next; - } - - break; - - - default: - Status = AE_SUPPORT; - } - - -UnlockAndExit: - - AcpiCmReleaseMutex (ACPI_MTX_TABLES); - - return_ACPI_STATUS (Status); - -} - - -/****************************************************************************** - * - * FUNCTION: AcpiNsDeleteSubtree - * - * PARAMETERS: StartHandle - Handle in namespace where search begins - * - * RETURNS Status - * - * DESCRIPTION: Walks the namespace starting at the given handle and deletes - * all objects, entries, and scopes in the entire subtree. - * - * TBD: [Investigate] What if any part of this subtree is in use? - * (i.e. on one of the object stacks?) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsDeleteSubtree ( - ACPI_HANDLE StartHandle) -{ - ACPI_STATUS Status; - ACPI_HANDLE ChildHandle; - ACPI_HANDLE ParentHandle; - ACPI_HANDLE NextChildHandle; - ACPI_HANDLE Dummy; - UINT32 Level; - - - FUNCTION_TRACE ("NsDeleteSubtree"); - - - ParentHandle = StartHandle; - ChildHandle = 0; - Level = 1; - - /* - * Traverse the tree of objects until we bubble back up - * to where we started. - */ - - while (Level > 0) - { - /* Attempt to get the next object in this scope */ - - Status = AcpiGetNextObject (ACPI_TYPE_ANY, ParentHandle, - ChildHandle, - &NextChildHandle); - - ChildHandle = NextChildHandle; - - - /* Did we get a new object? */ - - if (ACPI_SUCCESS (Status)) - { - /* Check if this object has any children */ - - if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, - ChildHandle, 0, - &Dummy))) - { - /* - * There is at least one child of this object, - * visit the object - */ - - Level++; - ParentHandle = ChildHandle; - ChildHandle = 0; - } - } - - else - { - /* - * No more children in this object, go back up to - * the object's parent - */ - Level--; - - /* Delete all children now */ - - AcpiNsDeleteChildren (ChildHandle); - - ChildHandle = ParentHandle; - AcpiGetParent (ParentHandle, &ParentHandle); - } - } - - /* Now delete the starting object, and we are done */ - - AcpiNsDeleteNode (ChildHandle); - - - return_ACPI_STATUS (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsUnloadNameSpace - * - * PARAMETERS: Handle - Root of namespace subtree to be deleted - * - * RETURN: Status - * - * DESCRIPTION: Shrinks the namespace, typically in response to an undocking - * event. Deletes an entire subtree starting from (and - * including) the given handle. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiNsUnloadNamespace ( - ACPI_HANDLE Handle) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("NsUnloadNameSpace"); - - - /* Parameter validation */ - - if (!AcpiGbl_RootNode) - { - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - - if (!Handle) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* This function does the real work */ - - Status = AcpiNsDeleteSubtree (Handle); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsnames.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsnames.c deleted file mode 100644 index b7cc321..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsnames.c +++ /dev/null @@ -1,367 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsnames - Name manipulation and search - * $Revision: 54 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSNAMES_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acinterp.h" -#include "acnamesp.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsnames") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetTablePathname - * - * PARAMETERS: Node - Scope whose name is needed - * - * RETURN: Pointer to storage containing the fully qualified name of - * the scope, in Label format (all segments strung together - * with no separators) - * - * DESCRIPTION: Used for debug printing in AcpiNsSearchTable(). - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiNsGetTablePathname ( - ACPI_NAMESPACE_NODE *Node) -{ - NATIVE_CHAR *NameBuffer; - UINT32 Size; - ACPI_NAME Name; - ACPI_NAMESPACE_NODE *ChildNode; - ACPI_NAMESPACE_NODE *ParentNode; - - - FUNCTION_TRACE_PTR ("AcpiNsGetTablePathname", Node); - - - if (!AcpiGbl_RootNode || !Node) - { - /* - * If the name space has not been initialized, - * this function should not have been called. - */ - return_PTR (NULL); - } - - ChildNode = Node->Child; - - - /* Calculate required buffer size based on depth below root */ - - Size = 1; - ParentNode = ChildNode; - while (ParentNode) - { - ParentNode = AcpiNsGetParentObject (ParentNode); - if (ParentNode) - { - Size += ACPI_NAME_SIZE; - } - } - - - /* Allocate a buffer to be returned to caller */ - - NameBuffer = AcpiCmCallocate (Size + 1); - if (!NameBuffer) - { - REPORT_ERROR (("NsGetTablePathname: allocation failure\n")); - return_PTR (NULL); - } - - - /* Store terminator byte, then build name backwards */ - - NameBuffer[Size] = '\0'; - while ((Size > ACPI_NAME_SIZE) && - AcpiNsGetParentObject (ChildNode)) - { - Size -= ACPI_NAME_SIZE; - Name = AcpiNsFindParentName (ChildNode); - - /* Put the name into the buffer */ - - MOVE_UNALIGNED32_TO_32 ((NameBuffer + Size), &Name); - ChildNode = AcpiNsGetParentObject (ChildNode); - } - - NameBuffer[--Size] = AML_ROOT_PREFIX; - - if (Size != 0) - { - DEBUG_PRINT (ACPI_ERROR, - ("NsGetTablePathname: Bad pointer returned; size=%X\n", Size)); - } - - return_PTR (NameBuffer); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetPathnameLength - * - * PARAMETERS: Node - Namespace node - * - * RETURN: Length of path, including prefix - * - * DESCRIPTION: Get the length of the pathname string for this node - * - ******************************************************************************/ - -UINT32 -AcpiNsGetPathnameLength ( - ACPI_NAMESPACE_NODE *Node) -{ - UINT32 Size; - ACPI_NAMESPACE_NODE *NextNode; - - /* - * Compute length of pathname as 5 * number of name segments. - * Go back up the parent tree to the root - */ - for (Size = 0, NextNode = Node; - AcpiNsGetParentObject (NextNode); - NextNode = AcpiNsGetParentObject (NextNode)) - { - Size += PATH_SEGMENT_LENGTH; - } - - /* Special case for size still 0 - no parent for "special" nodes */ - - if (!Size) - { - Size = PATH_SEGMENT_LENGTH; - } - - return (Size + 1); -} - - - -/******************************************************************************* - * - * FUNCTION: AcpiNsHandleToPathname - * - * PARAMETERS: TargetHandle - Handle of named object whose name is - * to be found - * BufSize - Size of the buffer provided - * UserBuffer - Where the pathname is returned - * - * RETURN: Status, Buffer is filled with pathname if status is AE_OK - * - * DESCRIPTION: Build and return a full namespace pathname - * - * MUTEX: Locks Namespace - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsHandleToPathname ( - ACPI_HANDLE TargetHandle, - UINT32 *BufSize, - NATIVE_CHAR *UserBuffer) -{ - ACPI_STATUS Status = AE_OK; - ACPI_NAMESPACE_NODE *Node; - UINT32 PathLength; - UINT32 UserBufSize; - ACPI_NAME Name; - UINT32 Size; - - FUNCTION_TRACE_PTR ("NsHandleToPathname", TargetHandle); - - - if (!AcpiGbl_RootNode || !TargetHandle) - { - /* - * If the name space has not been initialized, - * this function should not have been called. - */ - - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - - Node = AcpiNsConvertHandleToEntry (TargetHandle); - if (!Node) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Set return length to the required path length */ - - PathLength = AcpiNsGetPathnameLength (Node); - Size = PathLength - 1; - - UserBufSize = *BufSize; - *BufSize = PathLength; - - /* Check if the user buffer is sufficiently large */ - - if (PathLength > UserBufSize) - { - Status = AE_BUFFER_OVERFLOW; - goto Exit; - } - - /* Store null terminator */ - - UserBuffer[Size] = 0; - Size -= ACPI_NAME_SIZE; - - /* Put the original ACPI name at the end of the path */ - - MOVE_UNALIGNED32_TO_32 ((UserBuffer + Size), - &Node->Name); - - UserBuffer[--Size] = PATH_SEPARATOR; - - /* Build name backwards, putting "." between segments */ - - while ((Size > ACPI_NAME_SIZE) && Node) - { - Size -= ACPI_NAME_SIZE; - Name = AcpiNsFindParentName (Node); - MOVE_UNALIGNED32_TO_32 ((UserBuffer + Size), &Name); - - UserBuffer[--Size] = PATH_SEPARATOR; - Node = AcpiNsGetParentObject (Node); - } - - /* - * Overlay the "." preceding the first segment with - * the root name "\" - */ - - UserBuffer[Size] = '\\'; - - DEBUG_PRINT (TRACE_EXEC, - ("NsHandleToPathname: Len=%X, %s \n", - PathLength, UserBuffer)); - -Exit: - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsobject.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsobject.c deleted file mode 100644 index f0192fb..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsobject.c +++ /dev/null @@ -1,523 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsobject - Utilities for objects attached to namespace - * table entries - * $Revision: 49 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSOBJECT_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "actables.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsobject") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsAttachObject - * - * PARAMETERS: Node - Parent Node - * Object - Object to be attached - * Type - Type of object, or ACPI_TYPE_ANY if not - * known - * - * DESCRIPTION: Record the given object as the value associated with the - * name whose ACPI_HANDLE is passed. If Object is NULL - * and Type is ACPI_TYPE_ANY, set the name as having no value. - * - * MUTEX: Assumes namespace is locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsAttachObject ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OPERAND_OBJECT *Object, - OBJECT_TYPE_INTERNAL Type) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *PreviousObjDesc; - OBJECT_TYPE_INTERNAL ObjType = ACPI_TYPE_ANY; - UINT8 Flags; - UINT16 Opcode; - - - FUNCTION_TRACE ("NsAttachObject"); - - - /* - * Parameter validation - */ - - if (!AcpiGbl_RootNode) - { - /* Name space not initialized */ - - REPORT_ERROR (("NsAttachObject: Namespace not initialized\n")); - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - - if (!Node) - { - /* Invalid handle */ - - REPORT_ERROR (("NsAttachObject: Null NamedObj handle\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (!Object && (ACPI_TYPE_ANY != Type)) - { - /* Null object */ - - REPORT_ERROR (("NsAttachObject: Null object, but type not ACPI_TYPE_ANY\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (!VALID_DESCRIPTOR_TYPE (Node, ACPI_DESC_TYPE_NAMED)) - { - /* Not a name handle */ - - REPORT_ERROR (("NsAttachObject: Invalid handle\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Check if this object is already attached */ - - if (Node->Object == Object) - { - DEBUG_PRINT (TRACE_EXEC, - ("NsAttachObject: Obj %p already installed in NameObj %p\n", - Object, Node)); - - return_ACPI_STATUS (AE_OK); - } - - - /* Get the current flags field of the Node */ - - Flags = Node->Flags; - Flags &= ~ANOBJ_AML_ATTACHMENT; - - - /* If null object, we will just install it */ - - if (!Object) - { - ObjDesc = NULL; - ObjType = ACPI_TYPE_ANY; - } - - /* - * If the object is an Node with an attached object, - * we will use that (attached) object - */ - - else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED) && - ((ACPI_NAMESPACE_NODE *) Object)->Object) - { - /* - * Value passed is a name handle and that name has a - * non-null value. Use that name's value and type. - */ - - ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; - ObjType = ((ACPI_NAMESPACE_NODE *) Object)->Type; - - /* - * Copy appropriate flags - */ - - if (((ACPI_NAMESPACE_NODE *) Object)->Flags & ANOBJ_AML_ATTACHMENT) - { - Flags |= ANOBJ_AML_ATTACHMENT; - } - } - - - /* - * Otherwise, we will use the parameter object, but we must type - * it first - */ - - else - { - ObjDesc = (ACPI_OPERAND_OBJECT *) Object; - - - /* If a valid type (non-ANY) was given, just use it */ - - if (ACPI_TYPE_ANY != Type) - { - ObjType = Type; - } - - - /* - * Type is TYPE_Any, we must try to determinte the - * actual type of the object - */ - - /* - * Check if value points into the AML code - */ - else if (AcpiTbSystemTablePointer (Object)) - { - /* - * Object points into the AML stream. - * Set a flag bit in the Node to indicate this - */ - - Flags |= ANOBJ_AML_ATTACHMENT; - - /* - * The next byte (perhaps the next two bytes) - * will be the AML opcode - */ - - MOVE_UNALIGNED16_TO_16 (&Opcode, Object); - - /* Check for a recognized OpCode */ - - switch ((UINT8) Opcode) - { - - case AML_OP_PREFIX: - - if (Opcode != AML_REVISION_OP) - { - /* - * OpPrefix is unrecognized unless part - * of RevisionOp - */ - - break; - } - - /* Else fall through to set type as Number */ - - - case AML_ZERO_OP: case AML_ONES_OP: case AML_ONE_OP: - case AML_BYTE_OP: case AML_WORD_OP: case AML_DWORD_OP: - - ObjType = ACPI_TYPE_INTEGER; - break; - - - case AML_STRING_OP: - - ObjType = ACPI_TYPE_STRING; - break; - - - case AML_BUFFER_OP: - - ObjType = ACPI_TYPE_BUFFER; - break; - - - case AML_MUTEX_OP: - - ObjType = ACPI_TYPE_MUTEX; - break; - - - case AML_PACKAGE_OP: - - ObjType = ACPI_TYPE_PACKAGE; - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, - ("AML Opcode/Type [%x] not supported in attach\n", - (UINT8) Opcode)); - - return_ACPI_STATUS (AE_TYPE); - break; - } - } - - else - { - /* - * Cannot figure out the type -- set to DefAny which - * will print as an error in the name table dump - */ - - if (GetDebugLevel () > 0) - { - DUMP_PATHNAME (Node, - "NsAttachObject confused: setting bogus type for ", - ACPI_INFO, _COMPONENT); - - if (AcpiTbSystemTablePointer (Object)) - { - DEBUG_PRINT (ACPI_INFO, - ("AML-stream code %02x\n", *(UINT8 *) Object)); - } - - else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED)) - { - DUMP_PATHNAME (Object, - "name ", ACPI_INFO, - _COMPONENT); - } - - else - { - DUMP_PATHNAME (Object, "object ", - ACPI_INFO, _COMPONENT); - DUMP_STACK_ENTRY (Object); - } - } - - ObjType = INTERNAL_TYPE_DEF_ANY; - } - } - - - DEBUG_PRINT (TRACE_EXEC, - ("NsAttachObject: Installing obj %p into NameObj %p [%4.4s]\n", - ObjDesc, Node, &Node->Name)); - - - /* - * Must increment the new value's reference count - * (if it is an internal object) - */ - - AcpiCmAddReference (ObjDesc); - - /* Save the existing object (if any) for deletion later */ - - PreviousObjDesc = Node->Object; - - /* Install the object and set the type, flags */ - - Node->Object = ObjDesc; - Node->Type = (UINT8) ObjType; - Node->Flags |= Flags; - - - /* - * Delete an existing attached object. - */ - - if (PreviousObjDesc) - { - /* One for the attach to the Node */ - - AcpiCmRemoveReference (PreviousObjDesc); - - /* Now delete */ - - AcpiCmRemoveReference (PreviousObjDesc); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDetachObject - * - * PARAMETERS: Node - An object whose Value will be deleted - * - * RETURN: None. - * - * DESCRIPTION: Delete the Value associated with a namespace object. If the - * Value is an allocated object, it is freed. Otherwise, the - * field is simply cleared. - * - ******************************************************************************/ - -void -AcpiNsDetachObject ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - - - FUNCTION_TRACE ("NsDetachObject"); - - ObjDesc = Node->Object; - if (!ObjDesc) - { - return_VOID; - } - - /* Clear the entry in all cases */ - - Node->Object = NULL; - - /* Found a valid value */ - - DEBUG_PRINT (ACPI_INFO, - ("NsDetachObject: Object=%p Value=%p Name %4.4s\n", - Node, ObjDesc, &Node->Name)); - - /* - * Not every value is an object allocated via AcpiCmCallocate, - * - must check - */ - - if (!AcpiTbSystemTablePointer (ObjDesc)) - { - /* Attempt to delete the object (and all subobjects) */ - - AcpiCmRemoveReference (ObjDesc); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetAttachedObject - * - * PARAMETERS: Handle - Parent Node to be examined - * - * RETURN: Current value of the object field from the Node whose - * handle is passed - * - ******************************************************************************/ - -void * -AcpiNsGetAttachedObject ( - ACPI_HANDLE Handle) -{ - FUNCTION_TRACE_PTR ("NsGetAttachedObject", Handle); - - - if (!Handle) - { - /* handle invalid */ - - DEBUG_PRINT (ACPI_WARN, ("NsGetAttachedObject: Null handle\n")); - return_PTR (NULL); - } - - return_PTR (((ACPI_NAMESPACE_NODE *) Handle)->Object); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nssearch.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nssearch.c deleted file mode 100644 index 3ecdf4e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nssearch.c +++ /dev/null @@ -1,525 +0,0 @@ -/******************************************************************************* - * - * Module Name: nssearch - Namespace search - * $Revision: 64 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSSEARCH_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acinterp.h" -#include "acnamesp.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nssearch") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsSearchNode - * - * PARAMETERS: *TargetName - Ascii ACPI name to search for - * *Node - Starting table where search will begin - * Type - Object type to match - * **ReturnNode - Where the matched Named obj is returned - * - * RETURN: Status - * - * DESCRIPTION: Search a single namespace table. Performs a simple search, - * does not add entries or search parents. - * - * - * Named object lists are built (and subsequently dumped) in the - * order in which the names are encountered during the namespace load; - * - * All namespace searching is linear in this implementation, but - * could be easily modified to support any improved search - * algorithm. However, the linear search was chosen for simplicity - * and because the trees are small and the other interpreter - * execution overhead is relatively high. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsSearchNode ( - UINT32 TargetName, - ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_NAMESPACE_NODE *NextNode; - - - FUNCTION_TRACE ("NsSearchNode"); - - -#ifdef ACPI_DEBUG - if (TRACE_NAMES & AcpiDbgLevel) - { - NATIVE_CHAR *ScopeName; - - ScopeName = AcpiNsGetTablePathname (Node); - if (ScopeName) - { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: Searching %s [%p]\n", - ScopeName, Node)); - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: For %4.4s (type %X)\n", - &TargetName, Type)); - - AcpiCmFree (ScopeName); - } - } -#endif - - - /* - * Search for name in this table, which is to say that we must search - * for the name among the children of this object - */ - - NextNode = Node->Child; - while (NextNode) - { - /* Check for match against the name */ - - if (NextNode->Name == TargetName) - { - /* - * Found matching entry. Capture type if - * appropriate before returning the entry. - */ - - /* - * The DefFieldDefn and BankFieldDefn cases - * are actually looking up the Region in which - * the field will be defined - */ - - if ((INTERNAL_TYPE_DEF_FIELD_DEFN == Type) || - (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) - { - Type = ACPI_TYPE_REGION; - } - - /* - * Scope, DefAny, and IndexFieldDefn are bogus - * "types" which do not actually have anything - * to do with the type of the name being looked - * up. For any other value of Type, if the type - * stored in the entry is Any (i.e. unknown), - * save the actual type. - */ - - if (Type != INTERNAL_TYPE_SCOPE && - Type != INTERNAL_TYPE_DEF_ANY && - Type != INTERNAL_TYPE_INDEX_FIELD_DEFN && - NextNode->Type == ACPI_TYPE_ANY) - { - NextNode->Type = (UINT8) Type; - } - - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: Name %4.4s (actual type %X) found at %p\n", - &TargetName, NextNode->Type, NextNode)); - - *ReturnNode = NextNode; - return_ACPI_STATUS (AE_OK); - } - - - /* - * The last entry in the list points back to the parent, - * so a flag is used to indicate the end-of-list - */ - if (NextNode->Flags & ANOBJ_END_OF_PEER_LIST) - { - /* Searched entire list, we are done */ - - break; - } - - /* Didn't match name, move on to the next peer object */ - - NextNode = NextNode->Peer; - } - - - /* Searched entire table, not found */ - - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchNode: Name %4.4s (type %X) not found at %p\n", - &TargetName, Type, NextNode)); - - - return_ACPI_STATUS (AE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsSearchParentTree - * - * PARAMETERS: *TargetName - Ascii ACPI name to search for - * *Node - Starting table where search will begin - * Type - Object type to match - * **ReturnNode - Where the matched Named Obj is returned - * - * RETURN: Status - * - * DESCRIPTION: Called when a name has not been found in the current namespace - * table. Before adding it or giving up, ACPI scope rules require - * searching enclosing scopes in cases identified by AcpiNsLocal(). - * - * "A name is located by finding the matching name in the current - * name space, and then in the parent name space. If the parent - * name space does not contain the name, the search continues - * recursively until either the name is found or the name space - * does not have a parent (the root of the name space). This - * indicates that the name is not found" (From ACPI Specification, - * section 5.3) - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsSearchParentTree ( - UINT32 TargetName, - ACPI_NAMESPACE_NODE *Node, - OBJECT_TYPE_INTERNAL Type, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *ParentNode; - - - FUNCTION_TRACE ("NsSearchParentTree"); - - - ParentNode = AcpiNsGetParentObject (Node); - - /* - * If there is no parent (at the root) or type is "local", we won't be - * searching the parent tree. - */ - if ((AcpiNsLocal (Type)) || - (!ParentNode)) - { - if (!ParentNode) - { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchParentTree: [%4.4s] has no parent\n", - &TargetName)); - } - - if (AcpiNsLocal (Type)) - { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchParentTree: [%4.4s] (type %X) is local (no search)\n", - &TargetName, Type)); - } - - return_ACPI_STATUS (AE_NOT_FOUND); - } - - - /* Search the parent tree */ - - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchParentTree: Searching parent for %4.4s\n", - &TargetName)); - - /* - * Search parents until found the target or we have backed up to - * the root - */ - - while (ParentNode) - { - /* Search parent scope */ - /* TBD: [Investigate] Why ACPI_TYPE_ANY? */ - - Status = AcpiNsSearchNode (TargetName, ParentNode, - ACPI_TYPE_ANY, ReturnNode); - - if (ACPI_SUCCESS (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Not found here, go up another level - * (until we reach the root) - */ - - ParentNode = AcpiNsGetParentObject (ParentNode); - } - - - /* Not found in parent tree */ - - return_ACPI_STATUS (AE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsSearchAndEnter - * - * PARAMETERS: TargetName - Ascii ACPI name to search for (4 chars) - * WalkState - Current state of the walk - * *Node - Starting table where search will begin - * InterpreterMode - Add names only in MODE_LoadPassX. - * Otherwise,search only. - * Type - Object type to match - * Flags - Flags describing the search restrictions - * **ReturnNode - Where the Node is returned - * - * RETURN: Status - * - * DESCRIPTION: Search for a name segment in a single name table, - * optionally adding it if it is not found. If the passed - * Type is not Any and the type previously stored in the - * entry was Any (i.e. unknown), update the stored type. - * - * In IMODE_EXECUTE, search only. - * In other modes, search and add if not found. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsSearchAndEnter ( - UINT32 TargetName, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - OPERATING_MODE InterpreterMode, - OBJECT_TYPE_INTERNAL Type, - UINT32 Flags, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *NewNode; - - - FUNCTION_TRACE ("NsSearchAndEnter"); - - - /* Parameter validation */ - - if (!Node || !TargetName || !ReturnNode) - { - DEBUG_PRINT (ACPI_ERROR, - ("NsSearchAndEnter: Null param: Table %p Name %p Return %p\n", - Node, TargetName, ReturnNode)); - - REPORT_ERROR (("NsSearchAndEnter: bad (null) parameter\n")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Name must consist of printable characters */ - - if (!AcpiCmValidAcpiName (TargetName)) - { - DEBUG_PRINT (ACPI_ERROR, - ("NsSearchAndEnter: *** Bad character in name: %08lx *** \n", - TargetName)); - - REPORT_ERROR (("NsSearchAndEnter: Bad character in ACPI Name\n")); - return_ACPI_STATUS (AE_BAD_CHARACTER); - } - - - /* Try to find the name in the table specified by the caller */ - - *ReturnNode = ENTRY_NOT_FOUND; - Status = AcpiNsSearchNode (TargetName, Node, - Type, ReturnNode); - if (Status != AE_NOT_FOUND) - { - /* - * If we found it AND the request specifies that a - * find is an error, return the error - */ - if ((Status == AE_OK) && - (Flags & NS_ERROR_IF_FOUND)) - { - Status = AE_EXIST; - } - - /* - * Either found it or there was an error - * -- finished either way - */ - return_ACPI_STATUS (Status); - } - - - /* - * Not found in the table. If we are NOT performing the - * first pass (name entry) of loading the namespace, search - * the parent tree (all the way to the root if necessary.) - * We don't want to perform the parent search when the - * namespace is actually being loaded. We want to perform - * the search when namespace references are being resolved - * (load pass 2) and during the execution phase. - */ - - if ((InterpreterMode != IMODE_LOAD_PASS1) && - (Flags & NS_SEARCH_PARENT)) - { - /* - * Not found in table - search parent tree according - * to ACPI specification - */ - - Status = AcpiNsSearchParentTree (TargetName, Node, - Type, ReturnNode); - if (ACPI_SUCCESS (Status)) - { - return_ACPI_STATUS (Status); - } - } - - - /* - * In execute mode, just search, never add names. Exit now. - */ - if (InterpreterMode == IMODE_EXECUTE) - { - DEBUG_PRINT (TRACE_NAMES, - ("NsSearchAndEnter: %4.4s Not found in %p [Not adding]\n", - &TargetName, Node)); - - return_ACPI_STATUS (AE_NOT_FOUND); - } - - - /* Create the new named object */ - - NewNode = AcpiNsCreateNode (TargetName); - if (!NewNode) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Install the new object into the parent's list of children */ - - AcpiNsInstallNode (WalkState, Node, NewNode, Type); - *ReturnNode = NewNode; - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsutils.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsutils.c deleted file mode 100644 index 936843c..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsutils.c +++ /dev/null @@ -1,1048 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsutils - Utilities for accessing ACPI namespace, accessing - * parents and siblings and Scope manipulation - * $Revision: 77 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSUTILS_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "amlcode.h" -#include "actables.h" - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsutils") - - -/**************************************************************************** - * - * FUNCTION: AcpiNsValidRootPrefix - * - * PARAMETERS: Prefix - Character to be checked - * - * RETURN: TRUE if a valid prefix - * - * DESCRIPTION: Check if a character is a valid ACPI Root prefix - * - ***************************************************************************/ - -BOOLEAN -AcpiNsValidRootPrefix ( - NATIVE_CHAR Prefix) -{ - - return ((BOOLEAN) (Prefix == '\\')); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsValidPathSeparator - * - * PARAMETERS: Sep - Character to be checked - * - * RETURN: TRUE if a valid path separator - * - * DESCRIPTION: Check if a character is a valid ACPI path separator - * - ***************************************************************************/ - -BOOLEAN -AcpiNsValidPathSeparator ( - NATIVE_CHAR Sep) -{ - - return ((BOOLEAN) (Sep == '.')); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsGetType - * - * PARAMETERS: Handle - Parent Node to be examined - * - * RETURN: Type field from Node whose handle is passed - * - ***************************************************************************/ - -OBJECT_TYPE_INTERNAL -AcpiNsGetType ( - ACPI_HANDLE handle) -{ - FUNCTION_TRACE ("NsGetType"); - - - if (!handle) - { - REPORT_WARNING (("NsGetType: Null handle\n")); - return_VALUE (ACPI_TYPE_ANY); - } - - return_VALUE (((ACPI_NAMESPACE_NODE *) handle)->Type); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsLocal - * - * PARAMETERS: Type - A namespace object type - * - * RETURN: LOCAL if names must be found locally in objects of the - * passed type, 0 if enclosing scopes should be searched - * - ***************************************************************************/ - -UINT32 -AcpiNsLocal ( - OBJECT_TYPE_INTERNAL Type) -{ - FUNCTION_TRACE ("NsLocal"); - - - if (!AcpiCmValidObjectType (Type)) - { - /* Type code out of range */ - - REPORT_WARNING (("NsLocal: Invalid Object Type\n")); - return_VALUE (NSP_NORMAL); - } - - return_VALUE ((UINT32) AcpiGbl_NsProperties[Type] & NSP_LOCAL); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsInternalizeName - * - * PARAMETERS: *ExternalName - External representation of name - * **Converted Name - Where to return the resulting - * internal represention of the name - * - * RETURN: Status - * - * DESCRIPTION: Convert an external representation (e.g. "\_PR_.CPU0") - * to internal form (e.g. 5c 2f 02 5f 50 52 5f 43 50 55 30) - * - ****************************************************************************/ - -ACPI_STATUS -AcpiNsInternalizeName ( - NATIVE_CHAR *ExternalName, - NATIVE_CHAR **ConvertedName) -{ - NATIVE_CHAR *Result = NULL; - NATIVE_CHAR *InternalName; - UINT32 NumSegments = 0; - BOOLEAN FullyQualified = FALSE; - UINT32 i; - UINT32 NumCarats = 0; - - - FUNCTION_TRACE ("NsInternalizeName"); - - - if ((!ExternalName) || - (*ExternalName == 0) || - (!ConvertedName)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* - * For the internal name, the required length is 4 bytes - * per segment, plus 1 each for RootPrefix, MultiNamePrefixOp, - * segment count, trailing null (which is not really needed, - * but no there's harm in putting it there) - * - * strlen() + 1 covers the first NameSeg, which has no - * path separator - */ - - if (AcpiNsValidRootPrefix (ExternalName[0])) - { - FullyQualified = TRUE; - ExternalName++; - } - - else - { - /* - * Handle Carat prefixes - */ - - while (*ExternalName == '^') - { - NumCarats++; - ExternalName++; - } - } - - /* - * Determine the number of ACPI name "segments" by counting - * the number of path separators within the string. Start - * with one segment since the segment count is (# separators) - * + 1, and zero separators is ok. - */ - - if (*ExternalName) - { - NumSegments = 1; - for (i = 0; ExternalName[i]; i++) - { - if (AcpiNsValidPathSeparator (ExternalName[i])) - { - NumSegments++; - } - } - } - - - /* We need a segment to store the internal version of the name */ - - InternalName = AcpiCmCallocate ((ACPI_NAME_SIZE * NumSegments) + 4 + NumCarats); - if (!InternalName) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - - /* Setup the correct prefixes, counts, and pointers */ - - if (FullyQualified) - { - InternalName[0] = '\\'; - - if (NumSegments <= 1) - { - Result = &InternalName[1]; - } - else if (NumSegments == 2) - { - InternalName[1] = AML_DUAL_NAME_PREFIX; - Result = &InternalName[2]; - } - else - { - InternalName[1] = AML_MULTI_NAME_PREFIX_OP; - InternalName[2] = (char) NumSegments; - Result = &InternalName[3]; - } - - } - - else - { - /* - * Not fully qualified. - * Handle Carats first, then append the name segments - */ - - i = 0; - if (NumCarats) - { - for (i = 0; i < NumCarats; i++) - { - InternalName[i] = '^'; - } - } - - if (NumSegments == 1) - { - Result = &InternalName[i]; - } - - else if (NumSegments == 2) - { - InternalName[i] = AML_DUAL_NAME_PREFIX; - Result = &InternalName[i+1]; - } - - else - { - InternalName[i] = AML_MULTI_NAME_PREFIX_OP; - InternalName[i+1] = (char) NumSegments; - Result = &InternalName[i+2]; - } - } - - - /* Build the name (minus path separators) */ - - for (; NumSegments; NumSegments--) - { - for (i = 0; i < ACPI_NAME_SIZE; i++) - { - if (AcpiNsValidPathSeparator (*ExternalName) || - (*ExternalName == 0)) - { - /* - * Pad the segment with underscore(s) if - * segment is short - */ - - Result[i] = '_'; - } - - else - { - /* Convert INT8 to uppercase and save it */ - - Result[i] = (char) TOUPPER (*ExternalName); - ExternalName++; - } - - } - - /* Now we must have a path separator, or the pathname is bad */ - - if (!AcpiNsValidPathSeparator (*ExternalName) && - (*ExternalName != 0)) - { - AcpiCmFree (InternalName); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Move on the next segment */ - - ExternalName++; - Result += ACPI_NAME_SIZE; - } - - - /* Return the completed name */ - - /* Terminate the string! */ - *Result = 0; - *ConvertedName = InternalName; - - - if (FullyQualified) - { - DEBUG_PRINT (TRACE_EXEC, - ("NsInternalizeName: returning [%p] (abs) \"\\%s\"\n", - InternalName, &InternalName[0])); - } - else - { - DEBUG_PRINT (TRACE_EXEC, - ("NsInternalizeName: returning [%p] (rel) \"%s\"\n", - InternalName, &InternalName[2])); - } - - return_ACPI_STATUS (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsExternalizeName - * - * PARAMETERS: *InternalName - Internal representation of name - * **ConvertedName - Where to return the resulting - * external representation of name - * - * RETURN: Status - * - * DESCRIPTION: Convert internal name (e.g. 5c 2f 02 5f 50 52 5f 43 50 55 30) - * to its external form (e.g. "\_PR_.CPU0") - * - ****************************************************************************/ - -ACPI_STATUS -AcpiNsExternalizeName ( - UINT32 InternalNameLength, - char *InternalName, - UINT32 *ConvertedNameLength, - char **ConvertedName) -{ - UINT32 PrefixLength = 0; - UINT32 NamesIndex = 0; - UINT32 NamesCount = 0; - UINT32 i = 0; - UINT32 j = 0; - - - FUNCTION_TRACE ("NsExternalizeName"); - - - if (!InternalNameLength || - !InternalName || - !ConvertedNameLength || - !ConvertedName) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* - * Check for a prefix (one '\' | one or more '^'). - */ - switch (InternalName[0]) - { - case '\\': - PrefixLength = 1; - break; - - case '^': - for (i = 0; i < InternalNameLength; i++) - { - if (InternalName[i] != '^') - { - PrefixLength = i + 1; - } - } - - if (i == InternalNameLength) - { - PrefixLength = i; - } - - break; - } - - /* - * Check for object names. Note that there could be 0-255 of these - * 4-byte elements. - */ - if (PrefixLength < InternalNameLength) - { - switch (InternalName[PrefixLength]) - { - - /* <count> 4-byte names */ - - case AML_MULTI_NAME_PREFIX_OP: - NamesIndex = PrefixLength + 2; - NamesCount = (UINT32) InternalName[PrefixLength + 1]; - break; - - - /* two 4-byte names */ - - case AML_DUAL_NAME_PREFIX: - NamesIndex = PrefixLength + 1; - NamesCount = 2; - break; - - - /* NullName */ - - case 0: - NamesIndex = 0; - NamesCount = 0; - break; - - - /* one 4-byte name */ - - default: - NamesIndex = PrefixLength; - NamesCount = 1; - break; - } - } - - /* - * Calculate the length of ConvertedName, which equals the length - * of the prefix, length of all object names, length of any required - * punctuation ('.') between object names, plus the NULL terminator. - */ - *ConvertedNameLength = PrefixLength + (4 * NamesCount) + - ((NamesCount > 0) ? (NamesCount - 1) : 0) + 1; - - /* - * Check to see if we're still in bounds. If not, there's a problem - * with InternalName (invalid format). - */ - if (*ConvertedNameLength > InternalNameLength) - { - REPORT_ERROR (("NsExternalizeName: Invalid internal name\n")); - return_ACPI_STATUS (AE_BAD_PATHNAME); - } - - /* - * Build ConvertedName... - */ - - (*ConvertedName) = AcpiCmCallocate (*ConvertedNameLength); - if (!(*ConvertedName)) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - j = 0; - - for (i = 0; i < PrefixLength; i++) - { - (*ConvertedName)[j++] = InternalName[i]; - } - - if (NamesCount > 0) - { - for (i = 0; i < NamesCount; i++) - { - if (i > 0) - { - (*ConvertedName)[j++] = '.'; - } - - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - } - } - - return_ACPI_STATUS (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsConvertHandleToEntry - * - * PARAMETERS: Handle - Handle to be converted to an Node - * - * RETURN: A Name table entry pointer - * - * DESCRIPTION: Convert a namespace handle to a real Node - * - ****************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsConvertHandleToEntry ( - ACPI_HANDLE Handle) -{ - - /* - * Simple implementation for now; - * TBD: [Future] Real integer handles allow for more verification - * and keep all pointers within this subsystem! - */ - - if (!Handle) - { - return (NULL); - } - - if (Handle == ACPI_ROOT_OBJECT) - { - return (AcpiGbl_RootNode); - } - - - /* We can at least attempt to verify the handle */ - - if (!VALID_DESCRIPTOR_TYPE (Handle, ACPI_DESC_TYPE_NAMED)) - { - return (NULL); - } - - return ((ACPI_NAMESPACE_NODE *) Handle); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsConvertEntryToHandle - * - * PARAMETERS: Node - Node to be converted to a Handle - * - * RETURN: An USER ACPI_HANDLE - * - * DESCRIPTION: Convert a real Node to a namespace handle - * - ****************************************************************************/ - -ACPI_HANDLE -AcpiNsConvertEntryToHandle ( - ACPI_NAMESPACE_NODE *Node) -{ - - - /* - * Simple implementation for now; - * TBD: [Future] Real integer handles allow for more verification - * and keep all pointers within this subsystem! - */ - - return ((ACPI_HANDLE) Node); - - -/* --------------------------------------------------- - - if (!Node) - { - return (NULL); - } - - if (Node == AcpiGbl_RootNode) - { - return (ACPI_ROOT_OBJECT); - } - - - return ((ACPI_HANDLE) Node); -------------------------------------------------------*/ -} - - -/****************************************************************************** - * - * FUNCTION: AcpiNsTerminate - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: free memory allocated for table storage. - * - ******************************************************************************/ - -void -AcpiNsTerminate (void) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *ThisNode; - - - FUNCTION_TRACE ("NsTerminate"); - - - ThisNode = AcpiGbl_RootNode; - - /* - * 1) Free the entire namespace -- all objects, tables, and stacks - */ - /* - * Delete all objects linked to the root - * (additional table descriptors) - */ - - AcpiNsDeleteNamespaceSubtree (ThisNode); - - /* Detach any object(s) attached to the root */ - - ObjDesc = AcpiNsGetAttachedObject (ThisNode); - if (ObjDesc) - { - AcpiNsDetachObject (ThisNode); - AcpiCmRemoveReference (ObjDesc); - } - - AcpiNsDeleteChildren (ThisNode); - - DEBUG_PRINT (ACPI_INFO, ("NsTerminate: Namespace freed\n")); - - - /* - * 2) Now we can delete the ACPI tables - */ - - AcpiTbDeleteAcpiTables (); - - DEBUG_PRINT (ACPI_INFO, ("NsTerminate: ACPI Tables freed\n")); - - return_VOID; -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsOpensScope - * - * PARAMETERS: Type - A valid namespace type - * - * RETURN: NEWSCOPE if the passed type "opens a name scope" according - * to the ACPI specification, else 0 - * - ***************************************************************************/ - -UINT32 -AcpiNsOpensScope ( - OBJECT_TYPE_INTERNAL Type) -{ - FUNCTION_TRACE_U32 ("NsOpensScope", Type); - - - if (!AcpiCmValidObjectType (Type)) - { - /* type code out of range */ - - REPORT_WARNING (("NsOpensScope: Invalid Object Type\n")); - return_VALUE (NSP_NORMAL); - } - - return_VALUE (((UINT32) AcpiGbl_NsProperties[Type]) & NSP_NEWSCOPE); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsGetNode - * - * PARAMETERS: *Pathname - Name to be found, in external (ASL) format. The - * \ (backslash) and ^ (carat) prefixes, and the - * . (period) to separate segments are supported. - * StartNode - Root of subtree to be searched, or NS_ALL for the - * root of the name space. If Name is fully - * qualified (first INT8 is '\'), the passed value - * of Scope will not be accessed. - * ReturnNode - Where the Node is returned - * - * DESCRIPTION: Look up a name relative to a given scope and return the - * corresponding Node. NOTE: Scope can be null. - * - * MUTEX: Locks namespace - * - ***************************************************************************/ - -ACPI_STATUS -AcpiNsGetNode ( - NATIVE_CHAR *Pathname, - ACPI_NAMESPACE_NODE *StartNode, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_GENERIC_STATE ScopeInfo; - ACPI_STATUS Status; - NATIVE_CHAR *InternalPath = NULL; - - - FUNCTION_TRACE_PTR ("NsGetNode", Pathname); - - - /* Ensure that the namespace has been initialized */ - - if (!AcpiGbl_RootNode) - { - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - - if (!Pathname) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Convert path to internal representation */ - - Status = AcpiNsInternalizeName (Pathname, &InternalPath); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Setup lookup scope (search starting point) */ - - ScopeInfo.Scope.Node = StartNode; - - /* Lookup the name in the namespace */ - - Status = AcpiNsLookup (&ScopeInfo, InternalPath, - ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE, - NULL, ReturnNode); - - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_INFO, ("NsGetNode: %s, %s\n", - InternalPath, AcpiCmFormatException (Status))); - } - - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - /* Cleanup */ - - AcpiCmFree (InternalPath); - - return_ACPI_STATUS (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsFindParentName - * - * PARAMETERS: *ChildNode - Named Obj whose name is to be found - * - * RETURN: The ACPI name - * - * DESCRIPTION: Search for the given obj in its parent scope and return the - * name segment, or "????" if the parent name can't be found - * (which "should not happen"). - * - ***************************************************************************/ - -ACPI_NAME -AcpiNsFindParentName ( - ACPI_NAMESPACE_NODE *ChildNode) -{ - ACPI_NAMESPACE_NODE *ParentNode; - - - FUNCTION_TRACE ("FindParentName"); - - - if (ChildNode) - { - /* Valid entry. Get the parent Node */ - - ParentNode = AcpiNsGetParentObject (ChildNode); - if (ParentNode) - { - DEBUG_PRINT (TRACE_EXEC, - ("Parent of %p [%4.4s] is %p [%4.4s]\n", - ChildNode, &ChildNode->Name, ParentNode, - &ParentNode->Name)); - - if (ParentNode->Name) - { - return_VALUE (ParentNode->Name); - } - } - - DEBUG_PRINT (TRACE_EXEC, - ("FindParentName: unable to find parent of %p (%4.4s)\n", - ChildNode, &ChildNode->Name)); - } - - - return_VALUE (ACPI_UNKNOWN_NAME); -} - - -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) - -/**************************************************************************** - * - * FUNCTION: AcpiNsExistDownstreamSibling - * - * PARAMETERS: *Node - pointer to first Node to examine - * - * RETURN: TRUE if sibling is found, FALSE otherwise - * - * DESCRIPTION: Searches remainder of scope being processed to determine - * whether there is a downstream sibling to the current - * object. This function is used to determine what type of - * line drawing character to use when displaying namespace - * trees. - * - ***************************************************************************/ - -BOOLEAN -AcpiNsExistDownstreamSibling ( - ACPI_NAMESPACE_NODE *Node) -{ - - if (!Node) - { - return (FALSE); - } - - if (Node->Name) - { - return (TRUE); - } - - return (FALSE); -} - -#endif /* ACPI_DEBUG */ - - -/**************************************************************************** - * - * FUNCTION: AcpiNsGetParentObject - * - * PARAMETERS: Node - Current table entry - * - * RETURN: Parent entry of the given entry - * - * DESCRIPTION: Obtain the parent entry for a given entry in the namespace. - * - ***************************************************************************/ - - -ACPI_NAMESPACE_NODE * -AcpiNsGetParentObject ( - ACPI_NAMESPACE_NODE *Node) -{ - - - if (!Node) - { - return (NULL); - } - - /* - * Walk to the end of this peer list. - * The last entry is marked with a flag and the peer - * pointer is really a pointer back to the parent. - * This saves putting a parent back pointer in each and - * every named object! - */ - - while (!(Node->Flags & ANOBJ_END_OF_PEER_LIST)) - { - Node = Node->Peer; - } - - - return (Node->Peer); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiNsGetNextValidObject - * - * PARAMETERS: Node - Current table entry - * - * RETURN: Next valid object in the table. NULL if no more valid - * objects - * - * DESCRIPTION: Find the next valid object within a name table. - * Useful for implementing NULL-end-of-list loops. - * - ***************************************************************************/ - - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextValidObject ( - ACPI_NAMESPACE_NODE *Node) -{ - - /* If we are at the end of this peer list, return NULL */ - - if (Node->Flags & ANOBJ_END_OF_PEER_LIST) - { - return NULL; - } - - /* Otherwise just return the next peer */ - - return (Node->Peer); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nswalk.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nswalk.c deleted file mode 100644 index 2244489..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nswalk.c +++ /dev/null @@ -1,384 +0,0 @@ -/****************************************************************************** - * - * Module Name: nswalk - Functions for walking the APCI namespace - * $Revision: 19 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSWALK_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nswalk") - - -/**************************************************************************** - * - * FUNCTION: AcpiGetNextObject - * - * PARAMETERS: Type - Type of object to be searched for - * Parent - Parent object whose children we are - * getting - * LastChild - Previous child that was found. - * The NEXT child will be returned - * - * RETURN: ACPI_NAMESPACE_NODE - Pointer to the NEXT child or NULL if - * none is found. - * - * DESCRIPTION: Return the next peer object within the namespace. If Handle - * is valid, Scope is ignored. Otherwise, the first object - * within Scope is returned. - * - ****************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextObject ( - OBJECT_TYPE_INTERNAL Type, - ACPI_NAMESPACE_NODE *ParentNode, - ACPI_NAMESPACE_NODE *ChildNode) -{ - ACPI_NAMESPACE_NODE *NextNode = NULL; - - - if (!ChildNode) - { - - /* It's really the parent's _scope_ that we want */ - - if (ParentNode->Child) - { - NextNode = ParentNode->Child; - } - } - - else - { - /* Start search at the NEXT object */ - - NextNode = AcpiNsGetNextValidObject (ChildNode); - } - - - /* If any type is OK, we are done */ - - if (Type == ACPI_TYPE_ANY) - { - /* NextNode is NULL if we are at the end-of-list */ - - return (NextNode); - } - - - /* Must search for the object -- but within this scope only */ - - while (NextNode) - { - /* If type matches, we are done */ - - if (NextNode->Type == Type) - { - return (NextNode); - } - - /* Otherwise, move on to the next object */ - - NextNode = AcpiNsGetNextValidObject (NextNode); - } - - - /* Not found */ - - return (NULL); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiNsWalkNamespace - * - * PARAMETERS: Type - ACPI_OBJECT_TYPE to search for - * StartNode - Handle in namespace where search begins - * MaxDepth - Depth to which search is to reach - * UnlockBeforeCallback- Whether to unlock the NS before invoking - * the callback routine - * UserFunction - Called when an object of "Type" is found - * Context - Passed to user function - * - * RETURNS Return value from the UserFunction if terminated early. - * Otherwise, returns NULL. - * - * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, - * starting (and ending) at the object specified by StartHandle. - * The UserFunction is called whenever an object that matches - * the type parameter is found. If the user function returns - * a non-zero value, the search is terminated immediately and this - * value is returned to the caller. - * - * The point of this procedure is to provide a generic namespace - * walk routine that can be called from multiple places to - * provide multiple services; the User Function can be tailored - * to each task, whether it is a print function, a compare - * function, etc. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsWalkNamespace ( - OBJECT_TYPE_INTERNAL Type, - ACPI_HANDLE StartNode, - UINT32 MaxDepth, - BOOLEAN UnlockBeforeCallback, - WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *ChildNode; - ACPI_NAMESPACE_NODE *ParentNode; - OBJECT_TYPE_INTERNAL ChildType; - UINT32 Level; - - - FUNCTION_TRACE ("NsWalkNamespace"); - - /* Special case for the namespace Root Node */ - - if (StartNode == ACPI_ROOT_OBJECT) - { - StartNode = AcpiGbl_RootNode; - } - - - /* Null child means "get first object" */ - - ParentNode = StartNode; - ChildNode = 0; - ChildType = ACPI_TYPE_ANY; - Level = 1; - - /* - * Traverse the tree of objects until we bubble back up to where we - * started. When Level is zero, the loop is done because we have - * bubbled up to (and passed) the original parent handle (StartEntry) - */ - - while (Level > 0) - { - /* - * Get the next typed object in this scope. Null returned - * if not found - */ - - Status = AE_OK; - ChildNode = AcpiNsGetNextObject (ACPI_TYPE_ANY, - ParentNode, - ChildNode); - - if (ChildNode) - { - /* - * Found an object, Get the type if we are not - * searching for ANY - */ - - if (Type != ACPI_TYPE_ANY) - { - ChildType = ChildNode->Type; - } - - if (ChildType == Type) - { - /* - * Found a matching object, invoke the user - * callback function - */ - - if (UnlockBeforeCallback) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - } - - Status = UserFunction (ChildNode, Level, - Context, ReturnValue); - - if (UnlockBeforeCallback) - { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - } - - switch (Status) - { - case AE_OK: - case AE_CTRL_DEPTH: - /* Just keep going */ - break; - - case AE_CTRL_TERMINATE: - /* Exit now, with OK status */ - return_ACPI_STATUS (AE_OK); - break; - - default: - /* All others are valid exceptions */ - return_ACPI_STATUS (Status); - break; - } - } - - /* - * Depth first search: - * Attempt to go down another level in the namespace - * if we are allowed to. Don't go any further if we - * have reached the caller specified maximum depth - * or if the user function has specified that the - * maximum depth has been reached. - */ - - if ((Level < MaxDepth) && (Status != AE_CTRL_DEPTH)) - { - if (AcpiNsGetNextObject (ACPI_TYPE_ANY, - ChildNode, 0)) - { - /* - * There is at least one child of this - * object, visit the object - */ - Level++; - ParentNode = ChildNode; - ChildNode = 0; - } - } - } - - else - { - /* - * No more children in this object (AcpiNsGetNextObject - * failed), go back upwards in the namespace tree to - * the object's parent. - */ - Level--; - ChildNode = ParentNode; - ParentNode = AcpiNsGetParentObject (ParentNode); - } - } - - /* Complete walk, not terminated by user function */ - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsxfname.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsxfname.c deleted file mode 100644 index 257aafd..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsxfname.c +++ /dev/null @@ -1,409 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsxfname - Public interfaces to the ACPI subsystem - * ACPI Namespace oriented interfaces - * $Revision: 75 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSXFNAME_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdispat.h" -#include "acevents.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsxfname") - - -/**************************************************************************** - * - * FUNCTION: AcpiGetHandle - * - * PARAMETERS: Parent - Object to search under (search scope). - * PathName - Pointer to an asciiz string containing the - * name - * RetHandle - Where the return handle is placed - * - * RETURN: Status - * - * DESCRIPTION: This routine will search for a caller specified name in the - * name space. The caller can restrict the search region by - * specifying a non NULL parent. The parent value is itself a - * namespace handle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetHandle ( - ACPI_HANDLE Parent, - ACPI_STRING Pathname, - ACPI_HANDLE *RetHandle) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node = NULL; - ACPI_NAMESPACE_NODE *PrefixNode = NULL; - - - if (!RetHandle || !Pathname) - { - return (AE_BAD_PARAMETER); - } - - /* Convert a parent handle to a prefix node */ - - if (Parent) - { - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - PrefixNode = AcpiNsConvertHandleToEntry (Parent); - if (!PrefixNode) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_BAD_PARAMETER); - } - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - } - - /* Special case for root, since we can't search for it */ - - if (STRCMP (Pathname, NS_ROOT_PATH) == 0) - { - *RetHandle = AcpiNsConvertEntryToHandle (AcpiGbl_RootNode); - return (AE_OK); - } - - /* - * Find the Node and convert to a handle - */ - Status = AcpiNsGetNode (Pathname, PrefixNode, &Node); - - *RetHandle = NULL; - if (ACPI_SUCCESS (Status)) - { - *RetHandle = AcpiNsConvertEntryToHandle (Node); - } - - return (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiGetPathname - * - * PARAMETERS: Handle - Handle to be converted to a pathname - * NameType - Full pathname or single segment - * RetPathPtr - Buffer for returned path - * - * RETURN: Pointer to a string containing the fully qualified Name. - * - * DESCRIPTION: This routine returns the fully qualified name associated with - * the Handle parameter. This and the AcpiPathnameToHandle are - * complementary functions. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetName ( - ACPI_HANDLE Handle, - UINT32 NameType, - ACPI_BUFFER *RetPathPtr) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - /* Buffer pointer must be valid always */ - - if (!RetPathPtr || (NameType > ACPI_NAME_TYPE_MAX)) - { - return (AE_BAD_PARAMETER); - } - - /* Allow length to be zero and ignore the pointer */ - - if ((RetPathPtr->Length) && - (!RetPathPtr->Pointer)) - { - return (AE_BAD_PARAMETER); - } - - if (NameType == ACPI_FULL_PATHNAME) - { - /* Get the full pathname (From the namespace root) */ - - Status = AcpiNsHandleToPathname (Handle, &RetPathPtr->Length, - RetPathPtr->Pointer); - return (Status); - } - - /* - * Wants the single segment ACPI name. - * Validate handle and convert to an Node - */ - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - Node = AcpiNsConvertHandleToEntry (Handle); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Check if name will fit in buffer */ - - if (RetPathPtr->Length < PATH_SEGMENT_LENGTH) - { - RetPathPtr->Length = PATH_SEGMENT_LENGTH; - Status = AE_BUFFER_OVERFLOW; - goto UnlockAndExit; - } - - /* Just copy the ACPI name from the Node and zero terminate it */ - - STRNCPY (RetPathPtr->Pointer, (NATIVE_CHAR *) &Node->Name, - ACPI_NAME_SIZE); - ((NATIVE_CHAR *) RetPathPtr->Pointer) [ACPI_NAME_SIZE] = 0; - Status = AE_OK; - - -UnlockAndExit: - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiGetObjectInfo - * - * PARAMETERS: Handle - Object Handle - * Info - Where the info is returned - * - * RETURN: Status - * - * DESCRIPTION: Returns information about an object as gleaned from the - * namespace node and possibly by running several standard - * control methods (Such as in the case of a device.) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetObjectInfo ( - ACPI_HANDLE Handle, - ACPI_DEVICE_INFO *Info) -{ - DEVICE_ID Hid; - DEVICE_ID Uid; - ACPI_STATUS Status; - UINT32 DeviceStatus = 0; - ACPI_INTEGER Address = 0; - ACPI_NAMESPACE_NODE *Node; - - - /* Parameter validation */ - - if (!Handle || !Info) - { - return (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - Node = AcpiNsConvertHandleToEntry (Handle); - if (!Node) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_BAD_PARAMETER); - } - - Info->Type = Node->Type; - Info->Name = Node->Name; - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - /* - * If not a device, we are all done. - */ - if (Info->Type != ACPI_TYPE_DEVICE) - { - return (AE_OK); - } - - - /* - * Get extra info for ACPI devices only. Run the - * _HID, _UID, _STA, and _ADR methods. Note: none - * of these methods are required, so they may or may - * not be present. The Info->Valid bits are used - * to indicate which methods ran successfully. - */ - - Info->Valid = 0; - - /* Execute the _HID method and save the result */ - - Status = AcpiCmExecute_HID (Node, &Hid); - if (ACPI_SUCCESS (Status)) - { - STRNCPY (Info->HardwareId, Hid.Buffer, sizeof(Info->HardwareId)); - - Info->Valid |= ACPI_VALID_HID; - } - - /* Execute the _UID method and save the result */ - - Status = AcpiCmExecute_UID (Node, &Uid); - if (ACPI_SUCCESS (Status)) - { - STRCPY (Info->UniqueId, Uid.Buffer); - - Info->Valid |= ACPI_VALID_UID; - } - - /* - * Execute the _STA method and save the result - * _STA is not always present - */ - - Status = AcpiCmExecute_STA (Node, &DeviceStatus); - if (ACPI_SUCCESS (Status)) - { - Info->CurrentStatus = DeviceStatus; - Info->Valid |= ACPI_VALID_STA; - } - - /* - * Execute the _ADR method and save result if successful - * _ADR is not always present - */ - - Status = AcpiCmEvaluateNumericObject (METHOD_NAME__ADR, - Node, &Address); - - if (ACPI_SUCCESS (Status)) - { - Info->Address = Address; - Info->Valid |= ACPI_VALID_ADR; - } - - return (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Namespace/nsxfobj.c b/sys/contrib/dev/acpica/Subsystem/Namespace/nsxfobj.c deleted file mode 100644 index b90c31a..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Namespace/nsxfobj.c +++ /dev/null @@ -1,852 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsxfobj - Public interfaces to the ACPI subsystem - * ACPI Object oriented interfaces - * $Revision: 80 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSXFOBJ_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acdispat.h" - - -#define _COMPONENT NAMESPACE - MODULE_NAME ("nsxfobj") - - -/******************************************************************************* - * - * FUNCTION: AcpiEvaluateObject - * - * PARAMETERS: Handle - Object handle (optional) - * *Pathname - Object pathname (optional) - * **Params - List of parameters to pass to - * method, terminated by NULL. - * Params itself may be NULL - * if no parameters are being - * passed. - * *ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * - * RETURN: Status - * - * DESCRIPTION: Find and evaluate the given object, passing the given - * parameters if necessary. One of "Handle" or "Pathname" must - * be valid (non-null) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvaluateObject ( - ACPI_HANDLE Handle, - ACPI_STRING Pathname, - ACPI_OBJECT_LIST *ParamObjects, - ACPI_BUFFER *ReturnBuffer) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **ParamPtr = NULL; - ACPI_OPERAND_OBJECT *ReturnObj = NULL; - ACPI_OPERAND_OBJECT *ObjectPtr = NULL; - UINT32 BufferSpaceNeeded; - UINT32 UserBufferLength; - UINT32 Count; - UINT32 i; - UINT32 ParamLength; - UINT32 ObjectLength; - - - FUNCTION_TRACE ("AcpiEvaluateObject"); - - - /* - * If there are parameters to be passed to the object - * (which must be a control method), the external objects - * must be converted to internal objects - */ - - if (ParamObjects && ParamObjects->Count) - { - /* - * Allocate a new parameter block for the internal objects - * Add 1 to count to allow for null terminated internal list - */ - - Count = ParamObjects->Count; - ParamLength = (Count + 1) * sizeof (void *); - ObjectLength = Count * sizeof (ACPI_OPERAND_OBJECT); - - ParamPtr = AcpiCmCallocate (ParamLength + /* Parameter List part */ - ObjectLength); /* Actual objects */ - if (!ParamPtr) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjectPtr = (ACPI_OPERAND_OBJECT *) ((UINT8 *) ParamPtr + - ParamLength); - - /* - * Init the param array of pointers and NULL terminate - * the list - */ - - for (i = 0; i < Count; i++) - { - ParamPtr[i] = &ObjectPtr[i]; - AcpiCmInitStaticObject (&ObjectPtr[i]); - } - ParamPtr[Count] = NULL; - - /* - * Convert each external object in the list to an - * internal object - */ - for (i = 0; i < Count; i++) - { - Status = AcpiCmCopyEobjectToIobject (&ParamObjects->Pointer[i], - ParamPtr[i]); - - if (ACPI_FAILURE (Status)) - { - AcpiCmDeleteInternalObjectList (ParamPtr); - return_ACPI_STATUS (Status); - } - } - } - - - /* - * Three major cases: - * 1) Fully qualified pathname - * 2) No handle, not fully qualified pathname (error) - * 3) Valid handle - */ - - if ((Pathname) && - (AcpiNsValidRootPrefix (Pathname[0]))) - { - /* - * The path is fully qualified, just evaluate by name - */ - Status = AcpiNsEvaluateByName (Pathname, ParamPtr, &ReturnObj); - } - - else if (!Handle) - { - /* - * A handle is optional iff a fully qualified pathname - * is specified. Since we've already handled fully - * qualified names above, this is an error - */ - - if (!Pathname) - { - DEBUG_PRINT (ACPI_ERROR, - ("AcpiEvaluateObject: Both Handle and Pathname are NULL\n")); - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("AcpiEvaluateObject: Handle is NULL and Pathname is relative\n")); - } - - Status = AE_BAD_PARAMETER; - } - - else - { - /* - * We get here if we have a handle -- and if we have a - * pathname it is relative. The handle will be validated - * in the lower procedures - */ - - if (!Pathname) - { - /* - * The null pathname case means the handle is for - * the actual object to be evaluated - */ - Status = AcpiNsEvaluateByHandle (Handle, ParamPtr, &ReturnObj); - } - - else - { - /* - * Both a Handle and a relative Pathname - */ - Status = AcpiNsEvaluateRelative (Handle, Pathname, ParamPtr, - &ReturnObj); - } - } - - - /* - * If we are expecting a return value, and all went well above, - * copy the return value to an external object. - */ - - if (ReturnBuffer) - { - UserBufferLength = ReturnBuffer->Length; - ReturnBuffer->Length = 0; - - if (ReturnObj) - { - if (VALID_DESCRIPTOR_TYPE (ReturnObj, ACPI_DESC_TYPE_NAMED)) - { - /* - * If we got an Node as a return object, - * this means the object we are evaluating - * has nothing interesting to return (such - * as a mutex, etc.) We return an error - * because these types are essentially - * unsupported by this interface. We - * don't check up front because this makes - * it easier to add support for various - * types at a later date if necessary. - */ - Status = AE_TYPE; - ReturnObj = NULL; /* No need to delete an Node */ - } - - if (ACPI_SUCCESS (Status)) - { - /* - * Find out how large a buffer is needed - * to contain the returned object - */ - Status = AcpiCmGetObjectSize (ReturnObj, - &BufferSpaceNeeded); - if (ACPI_SUCCESS (Status)) - { - /* - * Check if there is enough room in the - * caller's buffer - */ - - if (UserBufferLength < BufferSpaceNeeded) - { - /* - * Caller's buffer is too small, can't - * give him partial results fail the call - * but return the buffer size needed - */ - - DEBUG_PRINT (ACPI_INFO, - ("AcpiEvaluateObject: Needed buffer size %X, received %X\n", - BufferSpaceNeeded, UserBufferLength)); - - ReturnBuffer->Length = BufferSpaceNeeded; - Status = AE_BUFFER_OVERFLOW; - } - - else - { - /* - * We have enough space for the object, build it - */ - Status = AcpiCmCopyIobjectToEobject (ReturnObj, - ReturnBuffer); - ReturnBuffer->Length = BufferSpaceNeeded; - } - } - } - } - } - - - /* Delete the return and parameter objects */ - - if (ReturnObj) - { - /* - * Delete the internal return object. (Or at least - * decrement the reference count by one) - */ - AcpiCmRemoveReference (ReturnObj); - } - - /* - * Free the input parameter list (if we created one), - */ - - if (ParamPtr) - { - /* Free the allocated parameter block */ - - AcpiCmDeleteInternalObjectList (ParamPtr); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetNextObject - * - * PARAMETERS: Type - Type of object to be searched for - * Parent - Parent object whose children we are getting - * LastChild - Previous child that was found. - * The NEXT child will be returned - * RetHandle - Where handle to the next object is placed - * - * RETURN: Status - * - * DESCRIPTION: Return the next peer object within the namespace. If Handle is - * valid, Scope is ignored. Otherwise, the first object within - * Scope is returned. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetNextObject ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE Parent, - ACPI_HANDLE Child, - ACPI_HANDLE *RetHandle) -{ - ACPI_STATUS Status = AE_OK; - ACPI_NAMESPACE_NODE *Node; - ACPI_NAMESPACE_NODE *ParentNode = NULL; - ACPI_NAMESPACE_NODE *ChildNode = NULL; - - - /* Parameter validation */ - - if (Type > ACPI_TYPE_MAX) - { - return (AE_BAD_PARAMETER); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* If null handle, use the parent */ - - if (!Child) - { - /* Start search at the beginning of the specified scope */ - - ParentNode = AcpiNsConvertHandleToEntry (Parent); - if (!ParentNode) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - } - - /* Non-null handle, ignore the parent */ - - else - { - /* Convert and validate the handle */ - - ChildNode = AcpiNsConvertHandleToEntry (Child); - if (!ChildNode) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - } - - - /* Internal function does the real work */ - - Node = AcpiNsGetNextObject ((OBJECT_TYPE_INTERNAL) Type, - ParentNode, ChildNode); - if (!Node) - { - Status = AE_NOT_FOUND; - goto UnlockAndExit; - } - - if (RetHandle) - { - *RetHandle = AcpiNsConvertEntryToHandle (Node); - } - - -UnlockAndExit: - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetType - * - * PARAMETERS: Handle - Handle of object whose type is desired - * *RetType - Where the type will be placed - * - * RETURN: Status - * - * DESCRIPTION: This routine returns the type associatd with a particular handle - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetType ( - ACPI_HANDLE Handle, - ACPI_OBJECT_TYPE *RetType) -{ - ACPI_NAMESPACE_NODE *Node; - - - /* Parameter Validation */ - - if (!RetType) - { - return (AE_BAD_PARAMETER); - } - - /* - * Special case for the predefined Root Node - * (return type ANY) - */ - if (Handle == ACPI_ROOT_OBJECT) - { - *RetType = ACPI_TYPE_ANY; - return (AE_OK); - } - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Convert and validate the handle */ - - Node = AcpiNsConvertHandleToEntry (Handle); - if (!Node) - { - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_BAD_PARAMETER); - } - - *RetType = Node->Type; - - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetParent - * - * PARAMETERS: Handle - Handle of object whose parent is desired - * RetHandle - Where the parent handle will be placed - * - * RETURN: Status - * - * DESCRIPTION: Returns a handle to the parent of the object represented by - * Handle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetParent ( - ACPI_HANDLE Handle, - ACPI_HANDLE *RetHandle) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status = AE_OK; - - - /* No trace macro, too verbose */ - - - if (!RetHandle) - { - return (AE_BAD_PARAMETER); - } - - /* Special case for the predefined Root Node (no parent) */ - - if (Handle == ACPI_ROOT_OBJECT) - { - return (AE_NULL_ENTRY); - } - - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - /* Convert and validate the handle */ - - Node = AcpiNsConvertHandleToEntry (Handle); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - - /* Get the parent entry */ - - *RetHandle = - AcpiNsConvertEntryToHandle (AcpiNsGetParentObject (Node)); - - /* Return exeption if parent is null */ - - if (!AcpiNsGetParentObject (Node)) - { - Status = AE_NULL_ENTRY; - } - - -UnlockAndExit: - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiWalkNamespace - * - * PARAMETERS: Type - ACPI_OBJECT_TYPE to search for - * StartObject - Handle in namespace where search begins - * MaxDepth - Depth to which search is to reach - * UserFunction - Called when an object of "Type" is found - * Context - Passed to user function - * ReturnValue - Location where return value of - * UserFunction is put if terminated early - * - * RETURNS Return value from the UserFunction if terminated early. - * Otherwise, returns NULL. - * - * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, - * starting (and ending) at the object specified by StartHandle. - * The UserFunction is called whenever an object that matches - * the type parameter is found. If the user function returns - * a non-zero value, the search is terminated immediately and this - * value is returned to the caller. - * - * The point of this procedure is to provide a generic namespace - * walk routine that can be called from multiple places to - * provide multiple services; the User Function can be tailored - * to each task, whether it is a print function, a compare - * function, etc. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiWalkNamespace ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE StartObject, - UINT32 MaxDepth, - WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiWalkNamespace"); - - - /* Parameter validation */ - - if ((Type > ACPI_TYPE_MAX) || - (!MaxDepth) || - (!UserFunction)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Lock the namespace around the walk. - * The namespace will be unlocked/locked around each call - * to the user function - since this function - * must be allowed to make Acpi calls itself. - */ - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - Status = AcpiNsWalkNamespace ((OBJECT_TYPE_INTERNAL) Type, - StartObject, MaxDepth, - NS_WALK_UNLOCK, - UserFunction, Context, - ReturnValue); - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetDeviceCallback - * - * PARAMETERS: Callback from AcpiGetDevice - * - * RETURN: Status - * - * DESCRIPTION: Takes callbacks from WalkNamespace and filters out all non- - * present devices, or if they specified a HID, it filters based - * on that. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsGetDeviceCallback ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - UINT32 Flags; - DEVICE_ID DeviceId; - ACPI_GET_DEVICES_INFO *Info; - - - Info = Context; - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - - Node = AcpiNsConvertHandleToEntry (ObjHandle); - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - if (!Node) - { - return (AE_BAD_PARAMETER); - } - - /* - * Run _STA to determine if device is present - */ - - Status = AcpiCmExecute_STA (Node, &Flags); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - if (!(Flags & 0x01)) - { - /* don't return at the device or children of the device if not there */ - - return (AE_CTRL_DEPTH); - } - - /* - * Filter based on device HID - */ - if (Info->Hid != NULL) - { - Status = AcpiCmExecute_HID (Node, &DeviceId); - - if (Status == AE_NOT_FOUND) - { - return (AE_OK); - } - - else if (ACPI_FAILURE (Status)) - { - return (Status); - } - - if (STRNCMP (DeviceId.Buffer, Info->Hid, sizeof (DeviceId.Buffer)) != 0) - { - return (AE_OK); - } - } - - Info->UserFunction (ObjHandle, NestingLevel, Info->Context, ReturnValue); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetDevices - * - * PARAMETERS: HID - HID to search for. Can be NULL. - * UserFunction - Called when a matching object is found - * Context - Passed to user function - * ReturnValue - Location where return value of - * UserFunction is put if terminated early - * - * RETURNS Return value from the UserFunction if terminated early. - * Otherwise, returns NULL. - * - * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, - * starting (and ending) at the object specified by StartHandle. - * The UserFunction is called whenever an object that matches - * the type parameter is found. If the user function returns - * a non-zero value, the search is terminated immediately and this - * value is returned to the caller. - * - * This is a wrapper for WalkNamespace, but the callback performs - * additional filtering. Please see AcpiGetDeviceCallback. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetDevices ( - NATIVE_CHAR *HID, - WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - ACPI_GET_DEVICES_INFO Info; - - - FUNCTION_TRACE ("AcpiGetDevices"); - - - /* Parameter validation */ - - if (!UserFunction) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * We're going to call their callback from OUR callback, so we need - * to know what it is, and their context parameter. - */ - Info.Context = Context; - Info.UserFunction = UserFunction; - Info.Hid = HID; - - /* - * Lock the namespace around the walk. - * The namespace will be unlocked/locked around each call - * to the user function - since this function - * must be allowed to make Acpi calls itself. - */ - - AcpiCmAcquireMutex (ACPI_MTX_NAMESPACE); - Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, - ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - NS_WALK_UNLOCK, - AcpiNsGetDeviceCallback, &Info, - ReturnValue); - - AcpiCmReleaseMutex (ACPI_MTX_NAMESPACE); - - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/psargs.c b/sys/contrib/dev/acpica/Subsystem/Parser/psargs.c deleted file mode 100644 index 1ea0986..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/psargs.c +++ /dev/null @@ -1,890 +0,0 @@ -/****************************************************************************** - * - * Module Name: psargs - Parse AML opcode arguments - * $Revision: 43 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __PSARGS_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" - -#define _COMPONENT PARSER - MODULE_NAME ("psargs") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextPackageLength - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Decoded package length. On completion, the AML pointer points - * past the length byte or bytes. - * - * DESCRIPTION: Decode and return a package length field - * - ******************************************************************************/ - -UINT32 -AcpiPsGetNextPackageLength ( - ACPI_PARSE_STATE *ParserState) -{ - UINT32 EncodedLength; - UINT32 Length = 0; - - - FUNCTION_TRACE ("PsGetNextPackageLength"); - - - EncodedLength = (UINT32) GET8 (ParserState->Aml); - ParserState->Aml++; - - - switch (EncodedLength >> 6) /* bits 6-7 contain encoding scheme */ - { - case 0: /* 1-byte encoding (bits 0-5) */ - - Length = (EncodedLength & 0x3F); - break; - - - case 1: /* 2-byte encoding (next byte + bits 0-3) */ - - Length = ((GET8 (ParserState->Aml) << 04) | - (EncodedLength & 0x0F)); - ParserState->Aml++; - break; - - - case 2: /* 3-byte encoding (next 2 bytes + bits 0-3) */ - - Length = ((GET8 (ParserState->Aml + 1) << 12) | - (GET8 (ParserState->Aml) << 04) | - (EncodedLength & 0x0F)); - ParserState->Aml += 2; - break; - - - case 3: /* 4-byte encoding (next 3 bytes + bits 0-3) */ - - Length = ((GET8 (ParserState->Aml + 2) << 20) | - (GET8 (ParserState->Aml + 1) << 12) | - (GET8 (ParserState->Aml) << 04) | - (EncodedLength & 0x0F)); - ParserState->Aml += 3; - break; - } - - return_VALUE (Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextPackageEnd - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Pointer to end-of-package +1 - * - * DESCRIPTION: Get next package length and return a pointer past the end of - * the package. Consumes the package length field - * - ******************************************************************************/ - -UINT8 * -AcpiPsGetNextPackageEnd ( - ACPI_PARSE_STATE *ParserState) -{ - UINT8 *Start = ParserState->Aml; - NATIVE_UINT Length; - - - FUNCTION_TRACE ("PsGetNextPackageEnd"); - - - Length = (NATIVE_UINT) AcpiPsGetNextPackageLength (ParserState); - - return_PTR (Start + Length); /* end of package */ -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextNamestring - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Pointer to the start of the name string (pointer points into - * the AML. - * - * DESCRIPTION: Get next raw namestring within the AML stream. Handles all name - * prefix characters. Set parser state to point past the string. - * (Name is consumed from the AML.) - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiPsGetNextNamestring ( - ACPI_PARSE_STATE *ParserState) -{ - UINT8 *Start = ParserState->Aml; - UINT8 *End = ParserState->Aml; - UINT32 Length; - - - FUNCTION_TRACE ("PsGetNextNamestring"); - - - /* Handle multiple prefix characters */ - - while (AcpiPsIsPrefixChar (GET8 (End))) - { - /* include prefix '\\' or '^' */ - - End++; - } - - /* Decode the path */ - - switch (GET8 (End)) - { - case 0: - - /* NullName */ - - if (End == Start) - { - Start = NULL; - } - End++; - break; - - - case AML_DUAL_NAME_PREFIX: - - /* two name segments */ - - End += 9; - break; - - - case AML_MULTI_NAME_PREFIX_OP: - - /* multiple name segments */ - - Length = (UINT32) GET8 (End + 1) * 4; - End += 2 + Length; - break; - - - default: - - /* single name segment */ - /* assert (AcpiPsIsLead (GET8 (End))); */ - - End += 4; - break; - } - - ParserState->Aml = (UINT8*) End; - - return_PTR ((NATIVE_CHAR *) Start); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextNamepath - * - * PARAMETERS: ParserState - Current parser state object - * Arg - Where the namepath will be stored - * ArgCount - If the namepath points to a control method - * the method's argument is returned here. - * MethodCall - Whether the namepath can be the start - * of a method call - * - * RETURN: None - * - * DESCRIPTION: Get next name (if method call, push appropriate # args). Names - * are looked up in either the parsed or internal namespace to - * determine if the name represents a control method. If a method - * is found, the number of arguments to the method is returned. - * This information is critical for parsing to continue correctly. - * - ******************************************************************************/ - - -#ifdef PARSER_ONLY - -void -AcpiPsGetNextNamepath ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Arg, - UINT32 *ArgCount, - BOOLEAN MethodCall) -{ - NATIVE_CHAR *Path; - ACPI_PARSE_OBJECT *NameOp; - ACPI_PARSE_OBJECT *Op; - ACPI_PARSE_OBJECT *Count; - - - FUNCTION_TRACE ("PsGetNextNamepath"); - - - Path = AcpiPsGetNextNamestring (ParserState); - if (!Path || !MethodCall) - { - /* Null name case, create a null namepath object */ - - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); - Arg->Value.Name = Path; - return_VOID; - } - - - if (AcpiGbl_ParsedNamespaceRoot) - { - /* - * Lookup the name in the parsed namespace - */ - - Op = NULL; - if (MethodCall) - { - Op = AcpiPsFind (AcpiPsGetParentScope (ParserState), - Path, AML_METHOD_OP, 0); - } - - if (Op) - { - if (Op->Opcode == AML_METHOD_OP) - { - /* - * The name refers to a control method, so this namepath is a - * method invocation. We need to 1) Get the number of arguments - * associated with this method, and 2) Change the NAMEPATH - * object into a METHODCALL object. - */ - - Count = AcpiPsGetArg (Op, 0); - if (Count && Count->Opcode == AML_BYTE_OP) - { - NameOp = AcpiPsAllocOp (AML_NAMEPATH_OP); - if (NameOp) - { - /* Change arg into a METHOD CALL and attach the name */ - - AcpiPsInitOp (Arg, AML_METHODCALL_OP); - - NameOp->Value.Name = Path; - - /* Point METHODCALL/NAME to the METHOD Node */ - - NameOp->Node = (ACPI_NAMESPACE_NODE *) Op; - AcpiPsAppendArg (Arg, NameOp); - - *ArgCount = Count->Value.Integer & - METHOD_FLAGS_ARG_COUNT; - } - } - - return_VOID; - } - - /* - * Else this is normal named object reference. - * Just init the NAMEPATH object with the pathname. - * (See code below) - */ - } - } - - - /* - * Either we didn't find the object in the namespace, or the object is - * something other than a control method. Just initialize the Op with the - * pathname - */ - - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); - Arg->Value.Name = Path; - - - return_VOID; -} - - -#else - - -void -AcpiPsGetNextNamepath ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Arg, - UINT32 *ArgCount, - BOOLEAN MethodCall) -{ - NATIVE_CHAR *Path; - ACPI_PARSE_OBJECT *NameOp; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *MethodNode = NULL; - ACPI_NAMESPACE_NODE *Node; - ACPI_GENERIC_STATE ScopeInfo; - - - FUNCTION_TRACE ("PsGetNextNamepath"); - - - Path = AcpiPsGetNextNamestring (ParserState); - if (!Path || !MethodCall) - { - /* Null name case, create a null namepath object */ - - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); - Arg->Value.Name = Path; - return_VOID; - } - - - if (MethodCall) - { - /* - * Lookup the name in the internal namespace - */ - ScopeInfo.Scope.Node = NULL; - Node = ParserState->StartNode; - if (Node) - { - ScopeInfo.Scope.Node = Node; - } - - /* - * Lookup object. We don't want to add anything new to the namespace - * here, however. So we use MODE_EXECUTE. Allow searching of the - * parent tree, but don't open a new scope -- we just want to lookup the - * object (MUST BE mode EXECUTE to perform upsearch) - */ - - Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, IMODE_EXECUTE, - NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE, NULL, - &Node); - if (ACPI_SUCCESS (Status)) - { - if (Node->Type == ACPI_TYPE_METHOD) - { - MethodNode = Node; - DEBUG_PRINT (TRACE_PARSE, - ("PsGetNextNamepath: method - %p Path=%p\n", - MethodNode, Path)); - - NameOp = AcpiPsAllocOp (AML_NAMEPATH_OP); - if (NameOp) - { - /* Change arg into a METHOD CALL and attach name to it */ - - AcpiPsInitOp (Arg, AML_METHODCALL_OP); - - NameOp->Value.Name = Path; - - /* Point METHODCALL/NAME to the METHOD Node */ - - NameOp->Node = MethodNode; - AcpiPsAppendArg (Arg, NameOp); - - if (!(ACPI_OPERAND_OBJECT *) MethodNode->Object) - { - return_VOID; - } - - *ArgCount = ((ACPI_OPERAND_OBJECT *) MethodNode->Object)->Method.ParamCount; - } - - return_VOID; - } - - /* - * Else this is normal named object reference. - * Just init the NAMEPATH object with the pathname. - * (See code below) - */ - } - } - - /* - * Either we didn't find the object in the namespace, or the object is - * something other than a control method. Just initialize the Op with the - * pathname. - */ - - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); - Arg->Value.Name = Path; - - - return_VOID; -} - -#endif - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextSimpleArg - * - * PARAMETERS: ParserState - Current parser state object - * ArgType - The argument type (AML_*_ARG) - * Arg - Where the argument is returned - * - * RETURN: None - * - * DESCRIPTION: Get the next simple argument (constant, string, or namestring) - * - ******************************************************************************/ - -void -AcpiPsGetNextSimpleArg ( - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, - ACPI_PARSE_OBJECT *Arg) -{ - - - FUNCTION_TRACE_U32 ("PsGetNextSimpleArg", ArgType); - - - switch (ArgType) - { - - case ARGP_BYTEDATA: - - AcpiPsInitOp (Arg, AML_BYTE_OP); - Arg->Value.Integer = (UINT32) GET8 (ParserState->Aml); - ParserState->Aml++; - break; - - - case ARGP_WORDDATA: - - AcpiPsInitOp (Arg, AML_WORD_OP); - - /* Get 2 bytes from the AML stream */ - - MOVE_UNALIGNED16_TO_32 (&Arg->Value.Integer, ParserState->Aml); - ParserState->Aml += 2; - break; - - - case ARGP_DWORDDATA: - - AcpiPsInitOp (Arg, AML_DWORD_OP); - - /* Get 4 bytes from the AML stream */ - - MOVE_UNALIGNED32_TO_32 (&Arg->Value.Integer, ParserState->Aml); - ParserState->Aml += 4; - break; - - - case ARGP_CHARLIST: - - AcpiPsInitOp (Arg, AML_STRING_OP); - Arg->Value.String = (char*) ParserState->Aml; - - while (GET8 (ParserState->Aml) != '\0') - { - ParserState->Aml++; - } - ParserState->Aml++; - break; - - - case ARGP_NAME: - case ARGP_NAMESTRING: - - AcpiPsInitOp (Arg, AML_NAMEPATH_OP); - Arg->Value.Name = AcpiPsGetNextNamestring (ParserState); - break; - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextField - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: A newly allocated FIELD op - * - * DESCRIPTION: Get next field (NamedField, ReservedField, or AccessField) - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetNextField ( - ACPI_PARSE_STATE *ParserState) -{ - ACPI_PTRDIFF AmlOffset = ParserState->Aml - - ParserState->AmlStart; - ACPI_PARSE_OBJECT *Field; - UINT16 Opcode; - UINT32 Name; - - - FUNCTION_TRACE ("PsGetNextField"); - - - /* determine field type */ - - switch (GET8 (ParserState->Aml)) - { - - default: - - Opcode = AML_NAMEDFIELD_OP; - break; - - - case 0x00: - - Opcode = AML_RESERVEDFIELD_OP; - ParserState->Aml++; - break; - - - case 0x01: - - Opcode = AML_ACCESSFIELD_OP; - ParserState->Aml++; - break; - } - - - /* Allocate a new field op */ - - Field = AcpiPsAllocOp (Opcode); - if (Field) - { - Field->AmlOffset = AmlOffset; - - /* Decode the field type */ - - switch (Opcode) - { - case AML_NAMEDFIELD_OP: - - /* Get the 4-character name */ - - MOVE_UNALIGNED32_TO_32 (&Name, ParserState->Aml); - AcpiPsSetName (Field, Name); - ParserState->Aml += 4; - - /* Get the length which is encoded as a package length */ - - Field->Value.Size = AcpiPsGetNextPackageLength (ParserState); - break; - - - case AML_RESERVEDFIELD_OP: - - /* Get the length which is encoded as a package length */ - - Field->Value.Size = AcpiPsGetNextPackageLength (ParserState); - break; - - - case AML_ACCESSFIELD_OP: - - /* Get AccessType and AccessAtrib and merge into the field Op */ - - Field->Value.Integer = ((GET8 (ParserState->Aml) << 8) | - GET8 (ParserState->Aml)); - ParserState->Aml += 2; - break; - } - } - - return_PTR (Field); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextArg - * - * PARAMETERS: ParserState - Current parser state object - * ArgType - The argument type (AML_*_ARG) - * ArgCount - If the argument points to a control method - * the method's argument is returned here. - * - * RETURN: An op object containing the next argument. - * - * DESCRIPTION: Get next argument (including complex list arguments that require - * pushing the parser stack) - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetNextArg ( - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, - UINT32 *ArgCount) -{ - ACPI_PARSE_OBJECT *Arg = NULL; - ACPI_PARSE_OBJECT *Prev = NULL; - ACPI_PARSE_OBJECT *Field; - UINT32 Subop; - - - FUNCTION_TRACE_PTR ("PsGetNextArg", ParserState); - - - switch (ArgType) - { - case ARGP_BYTEDATA: - case ARGP_WORDDATA: - case ARGP_DWORDDATA: - case ARGP_CHARLIST: - case ARGP_NAME: - case ARGP_NAMESTRING: - - /* constants, strings, and namestrings are all the same size */ - - Arg = AcpiPsAllocOp (AML_BYTE_OP); - if (Arg) - { - AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); - } - break; - - - case ARGP_PKGLENGTH: - - /* package length, nothing returned */ - - ParserState->PkgEnd = AcpiPsGetNextPackageEnd (ParserState); - break; - - - case ARGP_FIELDLIST: - - if (ParserState->Aml < ParserState->PkgEnd) - { - /* non-empty list */ - - while (ParserState->Aml < ParserState->PkgEnd) - { - Field = AcpiPsGetNextField (ParserState); - if (!Field) - { - break; - } - - if (Prev) - { - Prev->Next = Field; - } - - else - { - Arg = Field; - } - - Prev = Field; - } - - /* skip to End of byte data */ - - ParserState->Aml = ParserState->PkgEnd; - } - break; - - - case ARGP_BYTELIST: - - if (ParserState->Aml < ParserState->PkgEnd) - { - /* non-empty list */ - - Arg = AcpiPsAllocOp (AML_BYTELIST_OP); - if (Arg) - { - /* fill in bytelist data */ - - Arg->Value.Size = (ParserState->PkgEnd - ParserState->Aml); - ((ACPI_PARSE2_OBJECT *) Arg)->Data = ParserState->Aml; - } - - /* skip to End of byte data */ - - ParserState->Aml = ParserState->PkgEnd; - } - break; - - - case ARGP_TARGET: - case ARGP_SUPERNAME: - { - Subop = AcpiPsPeekOpcode (ParserState); - if (Subop == 0 || - AcpiPsIsLeadingChar (Subop) || - AcpiPsIsPrefixChar (Subop)) - { - /* NullName or NameString */ - - Arg = AcpiPsAllocOp (AML_NAMEPATH_OP); - if (Arg) - { - AcpiPsGetNextNamepath (ParserState, Arg, ArgCount, 0); - } - } - - else - { - /* single complex argument, nothing returned */ - - *ArgCount = 1; - } - } - break; - - - case ARGP_DATAOBJ: - case ARGP_TERMARG: - - /* single complex argument, nothing returned */ - - *ArgCount = 1; - break; - - - case ARGP_DATAOBJLIST: - case ARGP_TERMLIST: - case ARGP_OBJLIST: - - if (ParserState->Aml < ParserState->PkgEnd) - { - /* non-empty list of variable arguments, nothing returned */ - - *ArgCount = ACPI_VAR_ARGS; - } - break; - } - - return_PTR (Arg); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/psfind.c b/sys/contrib/dev/acpica/Subsystem/Parser/psfind.c deleted file mode 100644 index 6686d7f..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/psfind.c +++ /dev/null @@ -1,460 +0,0 @@ - -/****************************************************************************** - * - * Module Name: psfind - Parse tree search routine - * $Revision: 21 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __PSFIND_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" - -#define _COMPONENT PARSER - MODULE_NAME ("psfind") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetParent - * - * PARAMETERS: Op - Get the parent of this Op - * - * RETURN: The Parent op. - * - * DESCRIPTION: Get op's parent - * - ******************************************************************************/ - -static ACPI_PARSE_OBJECT* -AcpiPsGetParent ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Parent = Op; - - - /* Traverse the tree upward (to root if necessary) */ - - while (Parent) - { - switch (Parent->Opcode) - { - case AML_SCOPE_OP: - case AML_PACKAGE_OP: - case AML_METHOD_OP: - case AML_DEVICE_OP: - case AML_POWER_RES_OP: - case AML_THERMAL_ZONE_OP: - - return (Parent->Parent); - } - - Parent = Parent->Parent; - } - - return (Parent); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsFindName - * - * PARAMETERS: Scope - Scope to search - * Name - ACPI name to search for - * Opcode - Opcode to search for - * - * RETURN: Op containing the name - * - * DESCRIPTION: Find name segment from a list of acpi_ops. Searches a single - * scope, no more. - * - ******************************************************************************/ - -static ACPI_PARSE_OBJECT * -AcpiPsFindName ( - ACPI_PARSE_OBJECT *Scope, - UINT32 Name, - UINT32 Opcode) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_PARSE_OBJECT *Field; - - - /* search scope level for matching name segment */ - - Op = AcpiPsGetChild (Scope); - - while (Op) - { - - if (AcpiPsIsFieldOp (Op->Opcode)) - { - /* Field, search named fields */ - - Field = AcpiPsGetChild (Op); - while (Field) - { - if (AcpiPsIsNamedOp (Field->Opcode) && - AcpiPsGetName (Field) == Name && - (!Opcode || Field->Opcode == Opcode)) - { - return (Field); - } - - Field = Field->Next; - } - } - - else if (AcpiPsIsCreateFieldOp (Op->Opcode)) - { - if (Op->Opcode == AML_CREATE_FIELD_OP) - { - Field = AcpiPsGetArg (Op, 3); - } - - else - { - /* CreateXXXField, check name */ - - Field = AcpiPsGetArg (Op, 2); - } - - if ((Field) && - (Field->Value.String) && - (!STRNCMP (Field->Value.String, (char *) &Name, ACPI_NAME_SIZE))) - { - return (Op); - } - } - - else if ((AcpiPsIsNamedOp (Op->Opcode)) && - (AcpiPsGetName (Op) == Name) && - (!Opcode || Op->Opcode == Opcode || Opcode == AML_SCOPE_OP)) - { - break; - } - - Op = Op->Next; - } - - return (Op); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsFind - * - * PARAMETERS: Scope - Where to begin the search - * Path - ACPI Path to the named object - * Opcode - Opcode associated with the object - * Create - if TRUE, create the object if not found. - * - * RETURN: Op if found, NULL otherwise. - * - * DESCRIPTION: Find object within scope - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT* -AcpiPsFind ( - ACPI_PARSE_OBJECT *Scope, - NATIVE_CHAR *Path, - UINT16 Opcode, - UINT32 Create) -{ - UINT32 SegCount; - UINT32 Name; - UINT32 NameOp; - ACPI_PARSE_OBJECT *Op = NULL; - BOOLEAN Unprefixed = TRUE; - - - FUNCTION_TRACE_PTR ("PsFind", Scope); - - - if (!Scope || !Path) - { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Null path (%p) or scope (%p)!\n", Path, Scope)); - return_VALUE (NULL); - } - - - AcpiGbl_PsFindCount++; - - - /* Handle all prefixes in the name path */ - - while (AcpiPsIsPrefixChar (GET8 (Path))) - { - switch (GET8 (Path)) - { - - case '\\': - - /* Could just use a global for "root scope" here */ - - while (Scope->Parent) - { - Scope = Scope->Parent; - } - - /* get first object within the scope */ - /* TBD: [Investigate] OR - set next in root scope to point to the same value as arg */ - - /* Scope = Scope->Value.Arg; */ - - break; - - - case '^': - - /* Go up to the next valid scoping Op (method, scope, etc.) */ - - if (AcpiPsGetParent (Scope)) - { - Scope = AcpiPsGetParent (Scope); - } - - break; - } - - Unprefixed = FALSE; - Path++; - } - - /* get name segment count */ - - switch (GET8 (Path)) - { - case '\0': - SegCount = 0; - - /* Null name case */ - - if (Unprefixed) - { - Op = NULL; - } - else - { - Op = Scope; - } - - - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Null path, returning current root scope Op=%p\n", Op)); - return_PTR (Op); - break; - - case AML_DUAL_NAME_PREFIX: - SegCount = 2; - Path++; - break; - - case AML_MULTI_NAME_PREFIX_OP: - SegCount = GET8 (Path + 1); - Path += 2; - break; - - default: - SegCount = 1; - break; - } - - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Search scope %p Segs=%d Opcode=%4.4X Create=%d\n", - Scope, SegCount, Opcode, Create)); - - /* match each name segment */ - - while (Scope && SegCount) - { - MOVE_UNALIGNED32_TO_32 (&Name, Path); - Path += 4; - SegCount --; - - if (SegCount) - { - NameOp = 0; - } - else - { - NameOp = Opcode; - } - - Op = AcpiPsFindName (Scope, Name, NameOp); - if (Op) - { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Found! Op=%p Opcode=%4.4X\n", &Name, Op, Op->Opcode)); - } - - if (!Op) - { - if (Create) - { - /* Create a new Scope level */ - - if (SegCount) - { - Op = AcpiPsAllocOp (AML_SCOPE_OP); - } - else - { - Op = AcpiPsAllocOp (Opcode); - } - - if (Op) - { - AcpiPsSetName (Op, Name); - AcpiPsAppendArg (Scope, Op); - - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Not found, created Op=%p Opcode=%4.4X\n", &Name, Op, Opcode)); - } - } - - else if (Unprefixed) - { - /* Search higher scopes for unprefixed name */ - - while (!Op && Scope->Parent) - { - Scope = Scope->Parent; - Op = AcpiPsFindName (Scope, Name, Opcode); - if (Op) - { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Found in parent tree! Op=%p Opcode=%4.4X\n", &Name, Op, Op->Opcode)); - } - - else - { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: [%4.4s] Not found in parent=%p\n", &Name, Scope)); - } - } - } - - else - { - DEBUG_PRINT (TRACE_PARSE, ("PsFind: Segment [%4.4s] Not Found in scope %p!\n", &Name, Scope)); - } - } - - Unprefixed = FALSE; - Scope = Op; - } - - return_PTR (Op); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/psopcode.c b/sys/contrib/dev/acpica/Subsystem/Parser/psopcode.c deleted file mode 100644 index 88e18f6..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/psopcode.c +++ /dev/null @@ -1,753 +0,0 @@ -/****************************************************************************** - * - * Module Name: psopcode - Parser opcode information table - * $Revision: 27 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" - - -#define _COMPONENT PARSER - MODULE_NAME ("psopcode") - - -#define _UNK 0x6B -/* - * Reserved ASCII characters. Do not use any of these for - * internal opcodes, since they are used to differentiate - * name strings from AML opcodes - */ -#define _ASC 0x6C -#define _NAM 0x6C -#define _PFX 0x6D -#define _UNKNOWN_OPCODE 0x02 /* An example unknown opcode */ - -#define MAX_EXTENDED_OPCODE 0x88 -#define NUM_EXTENDED_OPCODE MAX_EXTENDED_OPCODE + 1 -#define MAX_INTERNAL_OPCODE -#define NUM_INTERNAL_OPCODE MAX_INTERNAL_OPCODE + 1 - - -/******************************************************************************* - * - * NAME: AcpiGbl_AmlOpInfo - * - * DESCRIPTION: Opcode table. Each entry contains <opcode, type, name, operands> - * The name is a simple ascii string, the operand specifier is an - * ascii string with one letter per operand. The letter specifies - * the operand type. - * - ******************************************************************************/ - - -/* - * Flags byte: 0-4 (5 bits) = Opcode Type - * 5 (1 bit) = Has arguments flag - * 6-7 (2 bits) = Reserved - */ -#define AML_NO_ARGS 0 -#define AML_HAS_ARGS ACPI_OP_ARGS_MASK - -/* - * All AML opcodes and the parse-time arguments for each. Used by the AML parser Each list is compressed - * into a 32-bit number and stored in the master opcode table at the end of this file. - */ - -#define ARGP_ZERO_OP ARG_NONE -#define ARGP_ONE_OP ARG_NONE -#define ARGP_ALIAS_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_NAME) -#define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ) -#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA) -#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA) -#define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA) -#define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST) -#define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA) -#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST) -#define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST) -#define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST) -#define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST) -#define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST) -#define ARGP_LOCAL0 ARG_NONE -#define ARGP_LOCAL1 ARG_NONE -#define ARGP_LOCAL2 ARG_NONE -#define ARGP_LOCAL3 ARG_NONE -#define ARGP_LOCAL4 ARG_NONE -#define ARGP_LOCAL5 ARG_NONE -#define ARGP_LOCAL6 ARG_NONE -#define ARGP_LOCAL7 ARG_NONE -#define ARGP_ARG0 ARG_NONE -#define ARGP_ARG1 ARG_NONE -#define ARGP_ARG2 ARG_NONE -#define ARGP_ARG3 ARG_NONE -#define ARGP_ARG4 ARG_NONE -#define ARGP_ARG5 ARG_NONE -#define ARGP_ARG6 ARG_NONE -#define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME) -#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_MULTIPLY_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET) -#define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_AND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_NAND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_NOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_NOT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) -#define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_LEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LGREATER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LLESS_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_TO_BUFFER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_DEC_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_COPY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SIMPLENAME) -#define ARGP_MID_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_CONTINUE_OP ARG_NONE -#define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST) -#define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST) -#define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST) -#define ARGP_NOOP_OP ARG_NONE -#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_BREAK_OP ARG_NONE -#define ARGP_BREAK_POINT_OP ARG_NONE -#define ARGP_ONES_OP ARG_NONE -#define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA) -#define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME) -#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME) -#define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME) -#define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA) -#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) -#define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_REVISION_OP ARG_NONE -#define ARGP_DEBUG_OP ARG_NONE -#define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG) -#define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_DEF_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST) -#define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST) -#define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST) -#define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST) -#define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST) -#define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST) -#define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST) -#define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAMESTRING, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_STATICSTRING_OP ARGP_LIST1 (ARGP_NAMESTRING) - - -/* - * All AML opcodes and the runtime arguments for each. Used by the AML interpreter Each list is compressed - * into a 32-bit number and stored in the master opcode table at the end of this file. - * - * (Used by AcpiAmlPrepOperands procedure and the ASL Compiler) - */ - -#define ARGI_ZERO_OP ARG_NONE -#define ARGI_ONE_OP ARG_NONE -#define ARGI_ALIAS_OP ARGI_INVALID_OPCODE -#define ARGI_NAME_OP ARGI_INVALID_OPCODE -#define ARGI_BYTE_OP ARGI_INVALID_OPCODE -#define ARGI_WORD_OP ARGI_INVALID_OPCODE -#define ARGI_DWORD_OP ARGI_INVALID_OPCODE -#define ARGI_STRING_OP ARGI_INVALID_OPCODE -#define ARGI_QWORD_OP ARGI_INVALID_OPCODE -#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE -#define ARGI_BUFFER_OP ARGI_INVALID_OPCODE -#define ARGI_PACKAGE_OP ARGI_INVALID_OPCODE -#define ARGI_VAR_PACKAGE_OP ARGI_INVALID_OPCODE -#define ARGI_METHOD_OP ARGI_INVALID_OPCODE -#define ARGI_LOCAL0 ARG_NONE -#define ARGI_LOCAL1 ARG_NONE -#define ARGI_LOCAL2 ARG_NONE -#define ARGI_LOCAL3 ARG_NONE -#define ARGI_LOCAL4 ARG_NONE -#define ARGI_LOCAL5 ARG_NONE -#define ARGI_LOCAL6 ARG_NONE -#define ARGI_LOCAL7 ARG_NONE -#define ARGI_ARG0 ARG_NONE -#define ARGI_ARG1 ARG_NONE -#define ARGI_ARG2 ARG_NONE -#define ARGI_ARG3 ARG_NONE -#define ARGI_ARG4 ARG_NONE -#define ARGI_ARG5 ARG_NONE -#define ARGI_ARG6 ARG_NONE -#define ARGI_STORE_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_TARGETREF) -#define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF) -#define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF) -#define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF) -#define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF) -#define ARGI_MULTIPLY_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF) -#define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_NOT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REFERENCE) -#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) -#define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER) -#define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT) -#define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) -#define ARGI_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_LEQUAL_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_LGREATER_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_LLESS_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET) -#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET) -#define ARGI_MID_OP ARGI_LIST4 (ARGI_BUFFERSTRING,ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE -#define ARGI_IF_OP ARGI_INVALID_OPCODE -#define ARGI_ELSE_OP ARGI_INVALID_OPCODE -#define ARGI_WHILE_OP ARGI_INVALID_OPCODE -#define ARGI_NOOP_OP ARG_NONE -#define ARGI_RETURN_OP ARGI_INVALID_OPCODE -#define ARGI_BREAK_OP ARG_NONE -#define ARGI_BREAK_POINT_OP ARG_NONE -#define ARGI_ONES_OP ARG_NONE -#define ARGI_MUTEX_OP ARGI_INVALID_OPCODE -#define ARGI_EVENT_OP ARGI_INVALID_OPCODE -#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) -#define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_TARGETREF) -#define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION, ARGI_TARGETREF) -#define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER) -#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT) -#define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER) -#define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT) -#define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX) -#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET) -#define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE) -#define ARGI_REVISION_OP ARG_NONE -#define ARGI_DEBUG_OP ARG_NONE -#define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_DEF_FIELD_OP ARGI_INVALID_OPCODE -#define ARGI_DEVICE_OP ARGI_INVALID_OPCODE -#define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE -#define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE -#define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE -#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE -#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE -#define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING) -#define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE -#define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE -#define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE -#define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE -#define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE -#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE -#define ARGI_RESERVEDFIELD_OP ARGI_INVALID_OPCODE -#define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE -#define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE -#define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE - - -/* - * Master Opcode information table. A summary of everything we know about each opcode, all in one place. - */ - - -static ACPI_OPCODE_INFO AmlOpInfo[] = -{ -/* Index Opcode Type Class Has Arguments? Name Parser Args Interpreter Args */ - -/* 00 */ /* AML_ZERO_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Zero", ARGP_ZERO_OP, ARGI_ZERO_OP), -/* 01 */ /* AML_ONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "One", ARGP_ONE_OP, ARGI_ONE_OP), -/* 02 */ /* AML_ALIAS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP), -/* 03 */ /* AML_NAME_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Name", ARGP_NAME_OP, ARGI_NAME_OP), -/* 04 */ /* AML_BYTE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP), -/* 05 */ /* AML_WORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "WordConst", ARGP_WORD_OP, ARGI_WORD_OP), -/* 06 */ /* AML_DWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP), -/* 07 */ /* AML_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "String", ARGP_STRING_OP, ARGI_STRING_OP), -/* 08 */ /* AML_SCOPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP), -/* 09 */ /* AML_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP), -/* 0A */ /* AML_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP), -/* 0B */ /* AML_METHOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Method", ARGP_METHOD_OP, ARGI_METHOD_OP), -/* 0C */ /* AML_LOCAL0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local0", ARGP_LOCAL0, ARGI_LOCAL0), -/* 0D */ /* AML_LOCAL1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local1", ARGP_LOCAL1, ARGI_LOCAL1), -/* 0E */ /* AML_LOCAL2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local2", ARGP_LOCAL2, ARGI_LOCAL2), -/* 0F */ /* AML_LOCAL3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local3", ARGP_LOCAL3, ARGI_LOCAL3), -/* 10 */ /* AML_LOCAL4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local4", ARGP_LOCAL4, ARGI_LOCAL4), -/* 11 */ /* AML_LOCAL5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local5", ARGP_LOCAL5, ARGI_LOCAL5), -/* 12 */ /* AML_LOCAL6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local6", ARGP_LOCAL6, ARGI_LOCAL6), -/* 13 */ /* AML_LOCAL7 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS, "Local7", ARGP_LOCAL7, ARGI_LOCAL7), -/* 14 */ /* AML_ARG0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg0", ARGP_ARG0, ARGI_ARG0), -/* 15 */ /* AML_ARG1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg1", ARGP_ARG1, ARGI_ARG1), -/* 16 */ /* AML_ARG2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg2", ARGP_ARG2, ARGI_ARG2), -/* 17 */ /* AML_ARG3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg3", ARGP_ARG3, ARGI_ARG3), -/* 18 */ /* AML_ARG4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg4", ARGP_ARG4, ARGI_ARG4), -/* 19 */ /* AML_ARG5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg5", ARGP_ARG5, ARGI_ARG5), -/* 1A */ /* AML_ARG6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS, "Arg6", ARGP_ARG6, ARGI_ARG6), -/* 1B */ /* AML_STORE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Store", ARGP_STORE_OP, ARGI_STORE_OP), -/* 1C */ /* AML_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP), -/* 1D */ /* AML_ADD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Add", ARGP_ADD_OP, ARGI_ADD_OP), -/* 1E */ /* AML_CONCAT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP), -/* 1F */ /* AML_SUBTRACT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP), -/* 20 */ /* AML_INCREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP), -/* 21 */ /* AML_DECREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP), -/* 22 */ /* AML_MULTIPLY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP), -/* 23 */ /* AML_DIVIDE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP), -/* 24 */ /* AML_SHIFT_LEFT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP), -/* 25 */ /* AML_SHIFT_RIGHT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP), -/* 26 */ /* AML_BIT_AND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP), -/* 27 */ /* AML_BIT_NAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP), -/* 28 */ /* AML_BIT_OR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP), -/* 29 */ /* AML_BIT_NOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP), -/* 2A */ /* AML_BIT_XOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP), -/* 2B */ /* AML_BIT_NOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP), -/* 2C */ /* AML_FIND_SET_LEFT_BIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP), -/* 2D */ /* AML_FIND_SET_RIGHT_BIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP, ARGI_FIND_SET_RIGHT_BIT_OP), -/* 2E */ /* AML_DEREF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP), -/* 2F */ /* AML_NOTIFY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC1| AML_HAS_ARGS, "Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP), -/* 30 */ /* AML_SIZE_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP), -/* 31 */ /* AML_INDEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_INDEX| AML_HAS_ARGS, "Index", ARGP_INDEX_OP, ARGI_INDEX_OP), -/* 32 */ /* AML_MATCH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MATCH| AML_HAS_ARGS, "Match", ARGP_MATCH_OP, ARGI_MATCH_OP), -/* 33 */ /* AML_DWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateDWordField", ARGP_DWORD_FIELD_OP, ARGI_DWORD_FIELD_OP), -/* 34 */ /* AML_WORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateWordField", ARGP_WORD_FIELD_OP, ARGI_WORD_FIELD_OP), -/* 35 */ /* AML_BYTE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateByteField", ARGP_BYTE_FIELD_OP, ARGI_BYTE_FIELD_OP), -/* 36 */ /* AML_BIT_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateBitField", ARGP_BIT_FIELD_OP, ARGI_BIT_FIELD_OP), -/* 37 */ /* AML_TYPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP), -/* 38 */ /* AML_LAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LAnd", ARGP_LAND_OP, ARGI_LAND_OP), -/* 39 */ /* AML_LOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LOr", ARGP_LOR_OP, ARGI_LOR_OP), -/* 3A */ /* AML_LNOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS, "LNot", ARGP_LNOT_OP, ARGI_LNOT_OP), -/* 3B */ /* AML_LEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP), -/* 3C */ /* AML_LGREATER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP), -/* 3D */ /* AML_LLESS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS, "LLess", ARGP_LLESS_OP, ARGI_LLESS_OP), -/* 3E */ /* AML_IF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "If", ARGP_IF_OP, ARGI_IF_OP), -/* 3F */ /* AML_ELSE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "Else", ARGP_ELSE_OP, ARGI_ELSE_OP), -/* 40 */ /* AML_WHILE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "While", ARGP_WHILE_OP, ARGI_WHILE_OP), -/* 41 */ /* AML_NOOP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Noop", ARGP_NOOP_OP, ARGI_NOOP_OP), -/* 42 */ /* AML_RETURN_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS, "Return", ARGP_RETURN_OP, ARGI_RETURN_OP), -/* 43 */ /* AML_BREAK_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Break", ARGP_BREAK_OP, ARGI_BREAK_OP), -/* 44 */ /* AML_BREAK_POINT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP), -/* 45 */ /* AML_ONES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Ones", ARGP_ONES_OP, ARGI_ONES_OP), - -/* Prefixed opcodes (Two-byte opcodes with a prefix op) */ - -/* 46 */ /* AML_MUTEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP), -/* 47 */ /* AML_EVENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_NO_ARGS, "Event", ARGP_EVENT_OP, ARGI_EVENT_OP), -/* 48 */ /* AML_COND_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP), -/* 49 */ /* AML_CREATE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP), -/* 4A */ /* AML_LOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS, "Load", ARGP_LOAD_OP, ARGI_LOAD_OP), -/* 4B */ /* AML_STALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Stall", ARGP_STALL_OP, ARGI_STALL_OP), -/* 4C */ /* AML_SLEEP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP), -/* 4D */ /* AML_ACQUIRE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2S| AML_HAS_ARGS, "Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP), -/* 4E */ /* AML_SIGNAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP), -/* 4F */ /* AML_WAIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2S| AML_HAS_ARGS, "Wait", ARGP_WAIT_OP, ARGI_WAIT_OP), -/* 50 */ /* AML_RESET_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Reset", ARGP_RESET_OP, ARGI_RESET_OP), -/* 51 */ /* AML_RELEASE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS, "Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP), -/* 52 */ /* AML_FROM_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP), -/* 53 */ /* AML_TO_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP), -/* 54 */ /* AML_UNLOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS, "Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP), -/* 55 */ /* AML_REVISION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Revision", ARGP_REVISION_OP, ARGI_REVISION_OP), -/* 56 */ /* AML_DEBUG_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS, "Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP), -/* 57 */ /* AML_FATAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_FATAL| AML_HAS_ARGS, "Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP), -/* 58 */ /* AML_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "OpRegion", ARGP_REGION_OP, ARGI_REGION_OP), -/* 59 */ /* AML_DEF_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Field", ARGP_DEF_FIELD_OP, ARGI_DEF_FIELD_OP), -/* 5A */ /* AML_DEVICE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP), -/* 5B */ /* AML_PROCESSOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP), -/* 5C */ /* AML_POWER_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP), -/* 5D */ /* AML_THERMAL_ZONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP), -/* 5E */ /* AML_INDEX_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP), -/* 5F */ /* AML_BANK_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS, "BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP), - -/* Internal opcodes that map to invalid AML opcodes */ - -/* 60 */ /* AML_LNOTEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP), -/* 61 */ /* AML_LLESSEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP), -/* 62 */ /* AML_LGREATEREQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS, "LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP), -/* 63 */ /* AML_NAMEPATH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "NamePath", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP), -/* 64 */ /* AML_METHODCALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_CALL| AML_HAS_ARGS, "MethodCall", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP), -/* 65 */ /* AML_BYTELIST_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "ByteList", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP), -/* 66 */ /* AML_RESERVEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "ReservedField", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP), -/* 67 */ /* AML_NAMEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "NamedField", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP), -/* 68 */ /* AML_ACCESSFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "AccessField", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP), -/* 69 */ /* AML_STATICSTRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS, "StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP), -/* 6A */ /* AML_RETURN_VALUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_RETURN| AML_HAS_ARGS, "[Return Value]", ARG_NONE, ARG_NONE), -/* 6B */ /* UNKNOWN OPCODES */ OP_INFO_ENTRY (ACPI_OP_TYPE_UNKNOWN | OPTYPE_BOGUS| AML_HAS_ARGS, "UNKNOWN_OP!", ARG_NONE, ARG_NONE), -/* 6C */ /* ASCII CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_ASCII | OPTYPE_BOGUS| AML_HAS_ARGS, "ASCII_ONLY!", ARG_NONE, ARG_NONE), -/* 6D */ /* PREFIX CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_PREFIX | OPTYPE_BOGUS| AML_HAS_ARGS, "PREFIX_ONLY!", ARG_NONE, ARG_NONE), - - -/* ACPI 2.0 (new) opcodes */ - -/* 6E */ /* AML_QWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS, "QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP), -/* 6F */ /* AML_VAR_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS, "VarPackage", ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP), -/* 70 */ /* AML_CONCAT_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "ConcatRes", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP), -/* 71 */ /* AML_MOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2R| AML_HAS_ARGS, "Mod", ARGP_MOD_OP, ARGI_MOD_OP), -/* 72 */ /* AML_QWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS, "CreateQWordField", ARGP_QWORD_FIELD_OP, ARGI_QWORD_FIELD_OP), -/* 73 */ /* AML_TO_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP), -/* 74 */ /* AML_TO_DEC_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToDecString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP), -/* 75 */ /* AML_TO_HEX_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP), -/* 76 */ /* AML_TO_INTEGER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP), -/* 77 */ /* AML_TO_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP), -/* 78 */ /* AML_COPY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Copy", ARGP_COPY_OP, ARGI_COPY_OP), -/* 79 */ /* AML_MID_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "Mid", ARGP_MID_OP, ARGI_MID_OP), -/* 7A */ /* AML_CONTINUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS, "Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP), -/* 7B */ /* AML_LOAD_TABLE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP), -/* 7C */ /* AML_DATA_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS, "DataOpRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP), - -}; - -/* - * This table is directly indexed by the opcodes, and returns an - * index into the table above - */ - -static UINT8 AmlShortOpInfoIndex[256] = -{ -/* 0 1 2 3 4 5 6 7 */ -/* 8 9 A B C D E F */ -/* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK, -/* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK, -/* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK, _UNK, _UNK, -/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX, -/* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, _UNK, -/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, -/* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, -/* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, -/* 0x58 */ _ASC, _ASC, _ASC, _UNK, _PFX, _UNK, _PFX, _ASC, -/* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, -/* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK, -/* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, -/* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, -/* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30, -/* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72, -/* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74, -/* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A, -/* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61, -/* 0xA8 */ 0x62, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xC8 */ _UNK, _UNK, _UNK, _UNK, 0x44, _UNK, _UNK, _UNK, -/* 0xD0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xD8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xE0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xE8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xF0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xF8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x45, -}; - - -static UINT8 AmlLongOpInfoIndex[NUM_EXTENDED_OPCODE] = -{ -/* 0 1 2 3 4 5 6 7 */ -/* 8 9 A B C D E F */ -/* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x08 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x10 */ _UNK, _UNK, 0x48, 0x49, _UNK, _UNK, _UNK, _UNK, -/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x7B, -/* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, -/* 0x28 */ 0x52, 0x53, 0x54, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x30 */ 0x55, 0x56, 0x57, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x40 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x48 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x50 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x58 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x60 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x68 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x70 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x78 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, -/* 0x88 */ 0x7C, -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetOpcodeInfo - * - * PARAMETERS: Opcode - The AML opcode - * - * RETURN: A pointer to the info about the opcode. NULL if the opcode was - * not found in the table. - * - * DESCRIPTION: Find AML opcode description based on the opcode. - * NOTE: This procedure must ALWAYS return a valid pointer! - * - ******************************************************************************/ - -ACPI_OPCODE_INFO * -AcpiPsGetOpcodeInfo ( - UINT16 Opcode) -{ - ACPI_OPCODE_INFO *OpInfo; - UINT8 UpperOpcode; - UINT8 LowerOpcode; - - - /* Split the 16-bit opcode into separate bytes */ - - UpperOpcode = (UINT8) (Opcode >> 8); - LowerOpcode = (UINT8) Opcode; - - /* Default is "unknown opcode" */ - - OpInfo = &AmlOpInfo [_UNK]; - - - /* - * Detect normal 8-bit opcode or extended 16-bit opcode - */ - - switch (UpperOpcode) - { - case 0: - - /* Simple (8-bit) opcode: 0-255, can't index beyond table */ - - OpInfo = &AmlOpInfo [AmlShortOpInfoIndex [LowerOpcode]]; - break; - - - case AML_EXTOP: - - /* Extended (16-bit, prefix+opcode) opcode */ - - if (LowerOpcode <= MAX_EXTENDED_OPCODE) - { - OpInfo = &AmlOpInfo [AmlLongOpInfoIndex [LowerOpcode]]; - } - break; - - - case AML_LNOT_OP: - - /* This case is for the bogus opcodes LNOTEQUAL, LLESSEQUAL, LGREATEREQUAL */ - /* TBD: [Investigate] remove this case? */ - - DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Bad multi-byte opcode=%X\n", - Opcode)); - - break; - - - default: - - DEBUG_PRINT (ACPI_ERROR, ("PsGetOpcodeInfo: Unknown extended opcode=%X\n", - Opcode)); - - break; - } - - - /* Get the Op info pointer for this opcode */ - - return (OpInfo); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetOpcodeName - * - * PARAMETERS: Opcode - The AML opcode - * - * RETURN: A pointer to the name of the opcode (ASCII String) - * Note: Never returns NULL. - * - * DESCRIPTION: Translate an opcode into a human-readable string - * - ******************************************************************************/ - -NATIVE_CHAR * -AcpiPsGetOpcodeName ( - UINT16 Opcode) -{ - ACPI_OPCODE_INFO *Op; - - - Op = AcpiPsGetOpcodeInfo (Opcode); - - /* Always guaranteed to return a valid pointer */ - -#ifdef ACPI_DEBUG - return (Op->Name); -#else - return ("AE_NOT_CONFIGURED"); -#endif -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/psparse.c b/sys/contrib/dev/acpica/Subsystem/Parser/psparse.c deleted file mode 100644 index 78443bc..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/psparse.c +++ /dev/null @@ -1,1458 +0,0 @@ -/****************************************************************************** - * - * Module Name: psparse - Parser top level AML parse routines - * $Revision: 74 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -/* - * Parse the AML and build an operation tree as most interpreters, - * like Perl, do. Parsing is done by hand rather than with a YACC - * generated parser to tightly constrain stack and dynamic memory - * usage. At the same time, parsing is kept flexible and the code - * fairly compact by parsing based on a list of AML opcode - * templates in AmlOpInfo[] - */ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdebug.h" - -#define _COMPONENT PARSER - MODULE_NAME ("psparse") - - -UINT32 AcpiGbl_Depth = 0; -extern UINT32 AcpiGbl_ScopeDepth; - - -/******************************************************************************* - * - * FUNCTION: AcpiPsPeekOpcode - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Get next AML opcode (without incrementing AML pointer) - * - ******************************************************************************/ - -static UINT32 -AcpiPsGetOpcodeSize ( - UINT32 Opcode) -{ - - /* Extended (2-byte) opcode if > 255 */ - - if (Opcode > 0x00FF) - { - return (2); - } - - /* Otherwise, just a single byte opcode */ - - return (1); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsPeekOpcode - * - * PARAMETERS: ParserState - A parser state object - * - * RETURN: Status - * - * DESCRIPTION: Get next AML opcode (without incrementing AML pointer) - * - ******************************************************************************/ - -UINT16 -AcpiPsPeekOpcode ( - ACPI_PARSE_STATE *ParserState) -{ - UINT8 *Aml; - UINT16 Opcode; - - - Aml = ParserState->Aml; - Opcode = (UINT16) GET8 (Aml); - - Aml++; - - - /* - * Original code special cased LNOTEQUAL, LLESSEQUAL, LGREATEREQUAL. - * These opcodes are no longer recognized. Instead, they are broken into - * two opcodes. - * - * - * if (Opcode == AML_EXTOP - * || (Opcode == AML_LNOT - * && (GET8 (AcpiAml) == AML_LEQUAL - * || GET8 (AcpiAml) == AML_LGREATER - * || GET8 (AcpiAml) == AML_LLESS))) - * - * extended Opcode, !=, <=, or >= - */ - - if (Opcode == AML_EXTOP) - { - /* Extended opcode */ - - Opcode = (UINT16) ((Opcode << 8) | GET8 (Aml)); - Aml++; - } - - /* don't convert bare name to a namepath */ - - return (Opcode); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCreateState - * - * PARAMETERS: AcpiAml - AcpiAml code pointer - * AcpiAmlSize - Length of AML code - * - * RETURN: A new parser state object - * - * DESCRIPTION: Create and initialize a new parser state object - * - ******************************************************************************/ - -ACPI_PARSE_STATE * -AcpiPsCreateState ( - UINT8 *Aml, - UINT32 AmlSize) -{ - ACPI_PARSE_STATE *ParserState; - - - FUNCTION_TRACE ("PsCreateState"); - - - ParserState = AcpiCmCallocate (sizeof (ACPI_PARSE_STATE)); - if (!ParserState) - { - return_VALUE (NULL); - } - - ParserState->Aml = Aml; - ParserState->AmlEnd = Aml + AmlSize; - ParserState->PkgEnd = ParserState->AmlEnd; - ParserState->AmlStart = Aml; - - - return_PTR (ParserState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsFindObject - * - * PARAMETERS: Opcode - Current opcode - * ParserState - Current state - * WalkState - Current state - * *Op - Where found/new op is returned - * - * RETURN: Status - * - * DESCRIPTION: Find a named object. Two versions - one to search the parse - * tree (for parser-only applications such as acpidump), another - * to search the ACPI internal namespace (the parse tree may no - * longer exist) - * - ******************************************************************************/ - -#ifdef PARSER_ONLY - -ACPI_STATUS -AcpiPsFindObject ( - UINT16 Opcode, - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - NATIVE_CHAR *Path; - - - /* We are only interested in opcodes that have an associated name */ - - if (!AcpiPsIsNamedOp (Opcode)) - { - *OutOp = Op; - return (AE_OK); - } - - /* Find the name in the parse tree */ - - Path = AcpiPsGetNextNamestring (WalkState->ParserState); - - *OutOp = AcpiPsFind (AcpiPsGetParentScope (WalkState->ParserState), - Path, Opcode, 1); - - if (!(*OutOp)) - { - return (AE_NOT_FOUND); - } - - return (AE_OK); -} - -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCompleteThisOp - * - * PARAMETERS: WalkState - Current State - * Op - Op to complete - * - * RETURN: TRUE if Op and subtree was deleted - * - * DESCRIPTION: Perform any cleanup at the completion of an Op. - * - ******************************************************************************/ - -static BOOLEAN -AcpiPsCompleteThisOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ -#ifndef PARSER_ONLY - ACPI_PARSE_OBJECT *Prev; - ACPI_PARSE_OBJECT *Next; - ACPI_OPCODE_INFO *OpInfo; - ACPI_OPCODE_INFO *ParentInfo; - UINT32 OpcodeClass; - ACPI_PARSE_OBJECT *ReplacementOp = NULL; - - - FUNCTION_TRACE_PTR ("PsCompleteThisOp", Op); - - - OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - OpcodeClass = ACPI_GET_OP_CLASS (OpInfo); - - - /* Delete this op and the subtree below it if asked to */ - - if (((WalkState->ParseFlags & ACPI_PARSE_TREE_MASK) == ACPI_PARSE_DELETE_TREE) && - (OpcodeClass != OPTYPE_CONSTANT) && - (OpcodeClass != OPTYPE_LITERAL) && - (OpcodeClass != OPTYPE_LOCAL_VARIABLE) && - (OpcodeClass != OPTYPE_METHOD_ARGUMENT) && - (OpcodeClass != OPTYPE_DATA_TERM) && - (Op->Opcode != AML_NAMEPATH_OP)) - { - /* Make sure that we only delete this subtree */ - - if (Op->Parent) - { - /* - * Check if we need to replace the operator and its subtree - * with a return value op (placeholder op) - */ - - ParentInfo = AcpiPsGetOpcodeInfo (Op->Parent->Opcode); - - switch (ACPI_GET_OP_CLASS (ParentInfo)) - { - case OPTYPE_CONTROL: /* IF, ELSE, WHILE only */ - break; - - case OPTYPE_NAMED_OBJECT: /* Scope, method, etc. */ - - /* - * These opcodes contain TermArg operands. The current - * op must be replace by a placeholder return op - */ - - if ((Op->Parent->Opcode == AML_REGION_OP) || - (Op->Parent->Opcode == AML_CREATE_FIELD_OP) || - (Op->Parent->Opcode == AML_BIT_FIELD_OP) || - (Op->Parent->Opcode == AML_BYTE_FIELD_OP) || - (Op->Parent->Opcode == AML_WORD_FIELD_OP) || - (Op->Parent->Opcode == AML_DWORD_FIELD_OP) || - (Op->Parent->Opcode == AML_QWORD_FIELD_OP)) - { - ReplacementOp = AcpiPsAllocOp (AML_RETURN_VALUE_OP); - if (!ReplacementOp) - { - return_VALUE (FALSE); - } - } - - break; - - default: - ReplacementOp = AcpiPsAllocOp (AML_RETURN_VALUE_OP); - if (!ReplacementOp) - { - return_VALUE (FALSE); - } - } - - /* We must unlink this op from the parent tree */ - - Prev = Op->Parent->Value.Arg; - if (Prev == Op) - { - /* This op is the first in the list */ - - if (ReplacementOp) - { - ReplacementOp->Parent = Op->Parent; - ReplacementOp->Value.Arg = NULL; - Op->Parent->Value.Arg = ReplacementOp; - ReplacementOp->Next = Op->Next; - } - else - { - Op->Parent->Value.Arg = Op->Next; - } - } - - /* Search the parent list */ - - else while (Prev) - { - /* Traverse all siblings in the parent's argument list */ - - Next = Prev->Next; - if (Next == Op) - { - if (ReplacementOp) - { - ReplacementOp->Parent = Op->Parent; - ReplacementOp->Value.Arg = NULL; - Prev->Next = ReplacementOp; - ReplacementOp->Next = Op->Next; - Next = NULL; - } - else - { - Prev->Next = Op->Next; - Next = NULL; - } - } - - Prev = Next; - } - - } - - /* Now we can actually delete the subtree rooted at op */ - - AcpiPsDeleteParseTree (Op); - - return_VALUE (TRUE); - } - - return_VALUE (FALSE); - -#else - return (FALSE); -#endif -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsNextParseState - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: - * - * DESCRIPTION: - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsNextParseState ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_STATUS CallbackStatus) -{ - ACPI_PARSE_STATE *ParserState = WalkState->ParserState; - ACPI_STATUS Status = AE_CTRL_PENDING; - UINT8 *Start; - UINT32 PackageLength; - - - FUNCTION_TRACE_PTR ("PsNextParseState", Op); - - - switch (CallbackStatus) - { - case AE_CTRL_TERMINATE: - - /* - * A control method was terminated via a RETURN statement. - * The walk of this method is complete. - */ - - ParserState->Aml = ParserState->AmlEnd; - Status = AE_CTRL_TERMINATE; - break; - - - case AE_CTRL_PENDING: - - /* - * Predicate of a WHILE was true and the loop just completed an - * execution. Go back to the start of the loop and reevaluate the - * predicate. - */ -/* WalkState->ControlState->Common.State = - CONTROL_PREDICATE_EXECUTING;*/ - - /* TBD: How to handle a break within a while. */ - /* This code attempts it */ - - ParserState->Aml = WalkState->AmlLastWhile; - break; - - - case AE_CTRL_TRUE: - /* - * Predicate of an IF was true, and we are at the matching ELSE. - * Just close out this package - * - * Note: ParserState->Aml is modified by the package length procedure - * TBD: [Investigate] perhaps it shouldn't, too much trouble - */ - Start = ParserState->Aml; - PackageLength = AcpiPsGetNextPackageLength (ParserState); - ParserState->Aml = Start + PackageLength; - break; - - - case AE_CTRL_FALSE: - - /* - * Either an IF/WHILE Predicate was false or we encountered a BREAK - * opcode. In both cases, we do not execute the rest of the - * package; We simply close out the parent (finishing the walk of - * this branch of the tree) and continue execution at the parent - * level. - */ - - ParserState->Aml = ParserState->Scope->ParseScope.PkgEnd; - - /* In the case of a BREAK, just force a predicate (if any) to FALSE */ - - WalkState->ControlState->Common.Value = FALSE; - Status = AE_CTRL_END; - break; - - - case AE_CTRL_TRANSFER: - - /* - * A method call (invocation) -- transfer control - */ - Status = AE_CTRL_TRANSFER; - WalkState->PrevOp = Op; - WalkState->MethodCallOp = Op; - WalkState->MethodCallNode = (Op->Value.Arg)->Node; - - /* Will return value (if any) be used by the caller? */ - - WalkState->ReturnUsed = AcpiDsIsResultUsed (Op, WalkState); - break; - - - default: - Status = CallbackStatus; - if ((CallbackStatus & AE_CODE_MASK) == AE_CODE_CONTROL) - { - Status = AE_OK; - } - break; - } - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsParseLoop - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Status - * - * DESCRIPTION: Parse AML (pointed to by the current parser state) and return - * a tree of ops. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsParseLoop ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PARSE_OBJECT *Op = NULL; /* current op */ - ACPI_OPCODE_INFO *OpInfo; - ACPI_PARSE_OBJECT *Arg = NULL; - ACPI_PARSE2_OBJECT *DeferredOp; - UINT32 ArgCount; /* push for fixed or var args */ - UINT32 ArgTypes = 0; - ACPI_PTRDIFF AmlOffset; - UINT16 Opcode; - ACPI_PARSE_OBJECT PreOp; - ACPI_PARSE_STATE *ParserState; - UINT8 *AmlOpStart; - - - FUNCTION_TRACE_PTR ("PsParseLoop", WalkState); - - - ParserState = WalkState->ParserState; - -#ifndef PARSER_ONLY - if (WalkState->WalkType & WALK_METHOD_RESTART) - { - /* We are restarting a preempted control method */ - - if (AcpiPsHasCompletedScope (ParserState)) - { - /* - * We must check if a predicate to an IF or WHILE statement - * was just completed - */ - if ((ParserState->Scope->ParseScope.Op) && - ((ParserState->Scope->ParseScope.Op->Opcode == AML_IF_OP) || - (ParserState->Scope->ParseScope.Op->Opcode == AML_WHILE_OP)) && - (WalkState->ControlState) && - (WalkState->ControlState->Common.State == - CONTROL_PREDICATE_EXECUTING)) - { - - /* - * A predicate was just completed, get the value of the - * predicate and branch based on that value - */ - - Status = AcpiDsGetPredicateValue (WalkState, NULL, TRUE); - if (ACPI_FAILURE (Status) && - ((Status & AE_CODE_MASK) != AE_CODE_CONTROL)) - { - if (Status == AE_AML_NO_RETURN_VALUE) - { - DEBUG_PRINT (ACPI_ERROR, - ("PsParseLoop: Invoked method did not return a value, %s\n", - AcpiCmFormatException (Status))); - - } - DEBUG_PRINT (ACPI_ERROR, - ("PsParseLoop: GetPredicate Failed, %s\n", - AcpiCmFormatException (Status))); - return_ACPI_STATUS (Status); - } - - Status = AcpiPsNextParseState (WalkState, Op, Status); - } - - AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - DEBUG_PRINT (TRACE_PARSE, ("ParseLoop: Popped scope, Op=%p\n", Op)); - } - - else if (WalkState->PrevOp) - { - /* We were in the middle of an op */ - - Op = WalkState->PrevOp; - ArgTypes = WalkState->PrevArgTypes; - } - } -#endif - - /* - * Iterative parsing loop, while there is more aml to process: - */ - while ((ParserState->Aml < ParserState->AmlEnd) || (Op)) - { - if (!Op) - { - /* Get the next opcode from the AML stream */ - - AmlOpStart = ParserState->Aml; - AmlOffset = ParserState->Aml - ParserState->AmlStart; - Opcode = AcpiPsPeekOpcode (ParserState); - - /* - * First cut to determine what we have found: - * 1) A valid AML opcode - * 2) A name string - * 3) An unknown/invalid opcode - */ - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - switch (ACPI_GET_OP_TYPE (OpInfo)) - { - case ACPI_OP_TYPE_OPCODE: - - /* Found opcode info, this is a normal opcode */ - - ParserState->Aml += AcpiPsGetOpcodeSize (Opcode); - ArgTypes = OpInfo->ParseArgs; - break; - - case ACPI_OP_TYPE_ASCII: - case ACPI_OP_TYPE_PREFIX: - /* - * Starts with a valid prefix or ASCII char, this is a name - * string. Convert the bare name string to a namepath. - */ - - Opcode = AML_NAMEPATH_OP; - ArgTypes = ARGP_NAMESTRING; - break; - - case ACPI_OP_TYPE_UNKNOWN: - - /* The opcode is unrecognized. Just skip unknown opcodes */ - - DEBUG_PRINT (ACPI_ERROR, - ("ParseLoop: Found unknown opcode %lX at AML offset %X, ignoring\n", - Opcode, AmlOffset)); - - DUMP_BUFFER (ParserState->Aml, 128); - - /* Assume one-byte bad opcode */ - - ParserState->Aml++; - continue; - } - - - /* Create Op structure and append to parent's argument list */ - - if (AcpiPsIsNamedOp (Opcode)) - { - PreOp.Value.Arg = NULL; - PreOp.Opcode = Opcode; - - while (GET_CURRENT_ARG_TYPE (ArgTypes) != ARGP_NAME) - { - Arg = AcpiPsGetNextArg (ParserState, - GET_CURRENT_ARG_TYPE (ArgTypes), - &ArgCount); - AcpiPsAppendArg (&PreOp, Arg); - INCREMENT_ARG_LIST (ArgTypes); - } - - - /* We know that this arg is a name, move to next arg */ - - INCREMENT_ARG_LIST (ArgTypes); - - if (WalkState->DescendingCallback != NULL) - { - /* - * Find the object. This will either insert the object into - * the namespace or simply look it up - */ - Status = WalkState->DescendingCallback (Opcode, NULL, WalkState, &Op); - if (Op == NULL) - { - continue; - } - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AE_OK; - goto CloseThisOp; - } - - if (ACPI_FAILURE (Status)) - { - goto CloseThisOp; - } - } - - AcpiPsAppendArg (Op, PreOp.Value.Arg); - AcpiGbl_Depth++; - - - if (Op->Opcode == AML_REGION_OP) - { - DeferredOp = AcpiPsToExtendedOp (Op); - if (DeferredOp) - { - /* - * Defer final parsing of an OperationRegion body, - * because we don't have enough info in the first pass - * to parse it correctly (i.e., there may be method - * calls within the TermArg elements of the body. - * - * However, we must continue parsing because - * the opregion is not a standalone package -- - * we don't know where the end is at this point. - * - * (Length is unknown until parse of the body complete) - */ - - DeferredOp->Data = AmlOpStart; - DeferredOp->Length = 0; - } - } - } - - - else - { - /* Not a named opcode, just allocate Op and append to parent */ - - Op = AcpiPsAllocOp (Opcode); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - - if ((Op->Opcode == AML_CREATE_FIELD_OP) || - (Op->Opcode == AML_BIT_FIELD_OP) || - (Op->Opcode == AML_BYTE_FIELD_OP) || - (Op->Opcode == AML_WORD_FIELD_OP) || - (Op->Opcode == AML_DWORD_FIELD_OP)) - { - /* - * Backup to beginning of CreateXXXfield declaration - * BodyLength is unknown until we parse the body - */ - DeferredOp = (ACPI_PARSE2_OBJECT *) Op; - - DeferredOp->Data = AmlOpStart; - DeferredOp->Length = 0; - } - - AcpiPsAppendArg (AcpiPsGetParentScope (ParserState), Op); - - if ((WalkState->DescendingCallback != NULL)) - { - /* - * Find the object. This will either insert the object into - * the namespace or simply look it up - */ - Status = WalkState->DescendingCallback (Opcode, Op, WalkState, &Op); - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AE_OK; - goto CloseThisOp; - } - - if (ACPI_FAILURE (Status)) - { - goto CloseThisOp; - } - } - } - - Op->AmlOffset = AmlOffset; - - if (OpInfo) - { - DEBUG_PRINT (TRACE_PARSE, - ("ParseLoop: Op=%p Opcode=%4.4lX Aml %p Oft=%5.5lX\n", - Op, Op->Opcode, ParserState->Aml, Op->AmlOffset)); - } - } - - - /* Start ArgCount at zero because we don't know if there are any args yet */ - - ArgCount = 0; - - - if (ArgTypes) /* Are there any arguments that must be processed? */ - { - /* get arguments */ - - switch (Op->Opcode) - { - case AML_BYTE_OP: /* AML_BYTEDATA_ARG */ - case AML_WORD_OP: /* AML_WORDDATA_ARG */ - case AML_DWORD_OP: /* AML_DWORDATA_ARG */ - case AML_STRING_OP: /* AML_ASCIICHARLIST_ARG */ - - /* fill in constant or string argument directly */ - - AcpiPsGetNextSimpleArg (ParserState, - GET_CURRENT_ARG_TYPE (ArgTypes), Op); - break; - - case AML_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ - - AcpiPsGetNextNamepath (ParserState, Op, &ArgCount, 1); - ArgTypes = 0; - break; - - - default: - - /* Op is not a constant or string, append each argument */ - - while (GET_CURRENT_ARG_TYPE (ArgTypes) && !ArgCount) - { - AmlOffset = ParserState->Aml - ParserState->AmlStart; - Arg = AcpiPsGetNextArg (ParserState, - GET_CURRENT_ARG_TYPE (ArgTypes), - &ArgCount); - if (Arg) - { - Arg->AmlOffset = AmlOffset; - AcpiPsAppendArg (Op, Arg); - } - - INCREMENT_ARG_LIST (ArgTypes); - } - - - /* For a method, save the length and address of the body */ - - if (Op->Opcode == AML_METHOD_OP) - { - DeferredOp = AcpiPsToExtendedOp (Op); - if (DeferredOp) - { - /* - * Skip parsing of control method or opregion body, - * because we don't have enough info in the first pass - * to parse them correctly. - */ - - DeferredOp->Data = ParserState->Aml; - DeferredOp->Length = ParserState->PkgEnd - - ParserState->Aml; - - /* - * Skip body of method. For OpRegions, we must continue - * parsing because the opregion is not a standalone - * package (We don't know where the end is). - */ - ParserState->Aml = ParserState->PkgEnd; - ArgCount = 0; - } - } - - break; - } - } - - - /* - * Zero ArgCount means that all arguments for this op have been processed - */ - if (!ArgCount) - { - /* completed Op, prepare for next */ - - if (AcpiPsIsNamedOp (Op->Opcode)) - { - if (AcpiGbl_Depth) - { - AcpiGbl_Depth--; - } - - if (Op->Opcode == AML_REGION_OP) - { - DeferredOp = AcpiPsToExtendedOp (Op); - if (DeferredOp) - { - /* - * Skip parsing of control method or opregion body, - * because we don't have enough info in the first pass - * to parse them correctly. - * - * Completed parsing an OpRegion declaration, we now - * know the length. - */ - - DeferredOp->Length = ParserState->Aml - - DeferredOp->Data; - } - } - } - - if ((Op->Opcode == AML_CREATE_FIELD_OP) || - (Op->Opcode == AML_BIT_FIELD_OP) || - (Op->Opcode == AML_BYTE_FIELD_OP) || - (Op->Opcode == AML_WORD_FIELD_OP) || - (Op->Opcode == AML_DWORD_FIELD_OP) || - (Op->Opcode == AML_QWORD_FIELD_OP)) - { - /* - * Backup to beginning of CreateXXXfield declaration (1 for - * Opcode) - * - * BodyLength is unknown until we parse the body - */ - DeferredOp = (ACPI_PARSE2_OBJECT *) Op; - DeferredOp->Length = ParserState->Aml - DeferredOp->Data; - } - - /* This op complete, notify the dispatcher */ - - if (WalkState->AscendingCallback != NULL) - { - Status = WalkState->AscendingCallback (WalkState, Op); - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AE_OK; - goto CloseThisOp; - } - } - - -CloseThisOp: - - /* - * Finished one argument of the containing scope - */ - ParserState->Scope->ParseScope.ArgCount--; - - /* Close this Op (may result in parse subtree deletion) */ - - if (AcpiPsCompleteThisOp (WalkState, Op)) - { - Op = NULL; - } - - - switch (Status) - { - case AE_OK: - break; - - - case AE_CTRL_TRANSFER: - - /* - * We are about to transfer to a called method. - */ - WalkState->PrevOp = Op; - WalkState->PrevArgTypes = ArgTypes; - return_ACPI_STATUS (Status); - break; - - - case AE_CTRL_END: - - AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - - Status = WalkState->AscendingCallback (WalkState, Op); - Status = AcpiPsNextParseState (WalkState, Op, Status); - - AcpiPsCompleteThisOp (WalkState, Op); - Op = NULL; - Status = AE_OK; - break; - - - case AE_CTRL_TERMINATE: - - Status = AE_OK; - - /* Clean up */ - do - { - if (Op) - { - AcpiPsCompleteThisOp (WalkState, Op); - } - - AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - } while (Op); - - return_ACPI_STATUS (Status); - break; - - - default: /* All other non-AE_OK status */ - - if (Op == NULL) - { - AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - } - WalkState->PrevOp = Op; - WalkState->PrevArgTypes = ArgTypes; - - /* - * TEMP: - */ - - return_ACPI_STATUS (Status); - break; - } - - - /* This scope complete? */ - - if (AcpiPsHasCompletedScope (ParserState)) - { - AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - DEBUG_PRINT (TRACE_PARSE, ("ParseLoop: Popped scope, Op=%p\n", Op)); - } - - else - { - Op = NULL; - } - - } - - - /* ArgCount is non-zero */ - - else - { - /* complex argument, push Op and prepare for argument */ - - AcpiPsPushScope (ParserState, Op, ArgTypes, ArgCount); - Op = NULL; - } - - } /* while ParserState->Aml */ - - - /* - * Complete the last Op (if not completed), and clear the scope stack. - * It is easily possible to end an AML "package" with an unbounded number - * of open scopes (such as when several AML blocks are closed with - * sequential closing braces). We want to terminate each one cleanly. - */ - - DEBUG_PRINT (TRACE_PARSE, ("PsParseLoop: Package complete at Op %p\n", Op)); - do - { - if (Op) - { - if (WalkState->AscendingCallback != NULL) - { - Status = WalkState->AscendingCallback (WalkState, Op); - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AE_OK; - goto CloseThisOp; - } - - if (Status == AE_CTRL_TERMINATE) - { - Status = AE_OK; - - /* Clean up */ - do - { - if (Op) - { - AcpiPsCompleteThisOp (WalkState, Op); - } - - AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - - } while (Op); - - return_ACPI_STATUS (Status); - } - - else if (ACPI_FAILURE (Status)) - { - AcpiPsCompleteThisOp (WalkState, Op); - return_ACPI_STATUS (Status); - } - } - - AcpiPsCompleteThisOp (WalkState, Op); - } - - AcpiPsPopScope (ParserState, &Op, &ArgTypes, &ArgCount); - - } while (Op); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsParseAml - * - * PARAMETERS: StartScope - The starting point of the parse. Becomes the - * root of the parsed op tree. - * Aml - Pointer to the raw AML code to parse - * AmlSize - Length of the AML to parse - * - * RETURN: Status - * - * DESCRIPTION: Parse raw AML and return a tree of ops - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsParseAml ( - ACPI_PARSE_OBJECT *StartScope, - UINT8 *Aml, - UINT32 AmlSize, - UINT32 ParseFlags, - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **CallerReturnDesc, - ACPI_PARSE_DOWNWARDS DescendingCallback, - ACPI_PARSE_UPWARDS AscendingCallback) -{ - ACPI_STATUS Status; - ACPI_PARSE_STATE *ParserState; - ACPI_WALK_STATE *WalkState; - ACPI_WALK_LIST WalkList; - ACPI_NAMESPACE_NODE *Node = NULL; - ACPI_WALK_LIST *PrevWalkList = AcpiGbl_CurrentWalkList; - ACPI_OPERAND_OBJECT *ReturnDesc; - ACPI_OPERAND_OBJECT *MthDesc = NULL; - - - FUNCTION_TRACE ("PsParseAml"); - - DEBUG_PRINT (TRACE_PARSE, - ("PsParseAml: Entered with Scope=%p Aml=%p size=%lX\n", - StartScope, Aml, AmlSize)); - - - /* Create and initialize a new parser state */ - - ParserState = AcpiPsCreateState (Aml, AmlSize); - if (!ParserState) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - AcpiPsInitScope (ParserState, StartScope); - - if (MethodNode) - { - MthDesc = AcpiNsGetAttachedObject (MethodNode); - } - - /* Create and initialize a new walk list */ - - WalkList.WalkState = NULL; - - WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, ParserState->StartOp, MthDesc, &WalkList); - if (!WalkState) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - WalkState->MethodNode = MethodNode; - WalkState->ParserState = ParserState; - WalkState->ParseFlags = ParseFlags; - WalkState->DescendingCallback = DescendingCallback; - WalkState->AscendingCallback = AscendingCallback; - - /* TBD: [Restructure] TEMP until we pass WalkState to the interpreter - */ - AcpiGbl_CurrentWalkList = &WalkList; - - - if (MethodNode) - { - ParserState->StartNode = MethodNode; - WalkState->WalkType = WALK_METHOD; - - /* Push start scope on scope stack and make it current */ - - Status = AcpiDsScopeStackPush (MethodNode, ACPI_TYPE_METHOD, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Init arguments if this is a control method */ - /* TBD: [Restructure] add walkstate as a param */ - - AcpiDsMethodDataInitArgs (Params, MTH_NUM_ARGS, WalkState); - } - - else - { - /* Setup the current scope */ - - Node = ParserState->StartOp->Node; - ParserState->StartNode = Node; - - if (Node) - { - /* Push start scope on scope stack and make it current */ - - Status = AcpiDsScopeStackPush (Node, Node->Type, - WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - } - } - - - Status = AE_OK; - - /* - * Execute the walk loop as long as there is a valid Walk State. This - * handles nested control method invocations without recursion. - */ - - DEBUG_PRINT (TRACE_PARSE, ("PsParseAml: State=%p\n", - WalkState)); - - while (WalkState) - { - if (ACPI_SUCCESS (Status)) - { - Status = AcpiPsParseLoop (WalkState); - } - - DEBUG_PRINT (TRACE_PARSE, - ("PsParseAml: Completed one call to walk loop, State=%p\n", - WalkState)); - - if (Status == AE_CTRL_TRANSFER) - { - /* - * A method call was detected. - * Transfer control to the called control method - */ - - Status = AcpiDsCallControlMethod (&WalkList, WalkState, NULL); - - /* - * If the transfer to the new method method call worked, a new walk - * state was created -- get it - */ - - WalkState = AcpiDsGetCurrentWalkState (&WalkList); - continue; - } - - else if (Status == AE_CTRL_TERMINATE) - { - Status = AE_OK; - } - - /* We are done with this walk, move on to the parent if any */ - - - WalkState = AcpiDsPopWalkState (&WalkList); - - /* Extract return value before we delete WalkState */ - - ReturnDesc = WalkState->ReturnDesc; - - DEBUG_PRINT (TRACE_PARSE, - ("PsParseAml: ReturnValue=%p, State=%p\n", - WalkState->ReturnDesc, WalkState)); - - /* Reset the current scope to the beginning of scope stack */ - - AcpiDsScopeStackClear (WalkState); - - /* - * If we just returned from the execution of a control method, - * there's lots of cleanup to do - */ - - if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) - { - AcpiDsTerminateControlMethod (WalkState); - } - - /* Delete this walk state and all linked control states */ - - AcpiPsCleanupScope (WalkState->ParserState); - AcpiCmFree (WalkState->ParserState); - AcpiDsDeleteWalkState (WalkState); - - /* Check if we have restarted a preempted walk */ - - WalkState = AcpiDsGetCurrentWalkState (&WalkList); - if (WalkState && - ACPI_SUCCESS (Status)) - { - /* There is another walk state, restart it */ - - /* - * If the method returned value is not used by the parent, - * The object is deleted - */ - - AcpiDsRestartControlMethod (WalkState, ReturnDesc); - WalkState->WalkType |= WALK_METHOD_RESTART; - } - - /* - * Just completed a 1st-level method, save the final internal return - * value (if any) - */ - - else if (CallerReturnDesc) - { - *CallerReturnDesc = ReturnDesc; /* NULL if no return value */ - } - - else if (ReturnDesc) - { - /* Caller doesn't want it, must delete it */ - - AcpiCmRemoveReference (ReturnDesc); - } - } - - - /* Normal exit */ - - AcpiGbl_CurrentWalkList = PrevWalkList; - return_ACPI_STATUS (Status); - - -Cleanup: - - /* Cleanup */ - - AcpiDsDeleteWalkState (WalkState); - AcpiPsCleanupScope (ParserState); - AcpiCmFree (ParserState); - - AcpiGbl_CurrentWalkList = PrevWalkList; - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/psscope.c b/sys/contrib/dev/acpica/Subsystem/Parser/psscope.c deleted file mode 100644 index 5e91b74..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/psscope.c +++ /dev/null @@ -1,375 +0,0 @@ -/****************************************************************************** - * - * Module Name: psscope - Parser scope stack management routines - * $Revision: 24 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" - -#define _COMPONENT PARSER - MODULE_NAME ("psscope") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetParentScope - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Pointer to an Op object - * - * DESCRIPTION: Get parent of current op being parsed - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetParentScope ( - ACPI_PARSE_STATE *ParserState) -{ - return (ParserState->Scope->ParseScope.Op); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsHasCompletedScope - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Boolean, TRUE = scope completed. - * - * DESCRIPTION: Is parsing of current argument complete? Determined by - * 1) AML pointer is at or beyond the end of the scope - * 2) The scope argument count has reached zero. - * - ******************************************************************************/ - -BOOLEAN -AcpiPsHasCompletedScope ( - ACPI_PARSE_STATE *ParserState) -{ - return ((BOOLEAN) ((ParserState->Aml >= ParserState->Scope->ParseScope.ArgEnd || - !ParserState->Scope->ParseScope.ArgCount))); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsInitScope - * - * PARAMETERS: ParserState - Current parser state object - * Root - the Root Node of this new scope - * - * RETURN: Status - * - * DESCRIPTION: Allocate and init a new scope object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsInitScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *RootOp) -{ - ACPI_GENERIC_STATE *Scope; - - - FUNCTION_TRACE_PTR ("PsInitScope", RootOp); - - - Scope = AcpiCmCreateGenericState (); - if (!Scope) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Scope->ParseScope.Op = RootOp; - Scope->ParseScope.ArgCount = ACPI_VAR_ARGS; - Scope->ParseScope.ArgEnd = ParserState->AmlEnd; - Scope->ParseScope.PkgEnd = ParserState->AmlEnd; - - ParserState->Scope = Scope; - ParserState->StartOp = RootOp; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsPushScope - * - * PARAMETERS: ParserState - Current parser state object - * Op - Current op to be pushed - * RemainingArgs - List of args remaining - * ArgCount - Fixed or variable number of args - * - * RETURN: Status - * - * DESCRIPTION: Push current op to begin parsing its argument - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsPushScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Op, - UINT32 RemainingArgs, - UINT32 ArgCount) -{ - ACPI_GENERIC_STATE *Scope; - - - FUNCTION_TRACE_PTR ("PsPushScope", Op); - - - Scope = AcpiCmCreateGenericState (); - if (!Scope) - { - return (AE_NO_MEMORY); - } - - - Scope->ParseScope.Op = Op; - Scope->ParseScope.ArgList = RemainingArgs; - Scope->ParseScope.ArgCount = ArgCount; - Scope->ParseScope.PkgEnd = ParserState->PkgEnd; - - /* Push onto scope stack */ - - AcpiCmPushGenericState (&ParserState->Scope, Scope); - - - if (ArgCount == ACPI_VAR_ARGS) - { - /* multiple arguments */ - - Scope->ParseScope.ArgEnd = ParserState->PkgEnd; - } - - else - { - /* single argument */ - - Scope->ParseScope.ArgEnd = ACPI_MAX_AML; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsPopScope - * - * PARAMETERS: ParserState - Current parser state object - * Op - Where the popped op is returned - * ArgList - Where the popped "next argument" is - * returned - * ArgCount - Count of objects in ArgList - * - * RETURN: Status - * - * DESCRIPTION: Return to parsing a previous op - * - ******************************************************************************/ - -void -AcpiPsPopScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT **Op, - UINT32 *ArgList, - UINT32 *ArgCount) -{ - ACPI_GENERIC_STATE *Scope = ParserState->Scope; - - - FUNCTION_TRACE ("PsPopScope"); - - /* - * Only pop the scope if there is in fact a next scope - */ - if (Scope->Common.Next) - { - Scope = AcpiCmPopGenericState (&ParserState->Scope); - - - /* return to parsing previous op */ - - *Op = Scope->ParseScope.Op; - *ArgList = Scope->ParseScope.ArgList; - *ArgCount = Scope->ParseScope.ArgCount; - ParserState->PkgEnd = Scope->ParseScope.PkgEnd; - - /* All done with this scope state structure */ - - AcpiCmDeleteGenericState (Scope); - } - - else - { - /* empty parse stack, prepare to fetch next opcode */ - - *Op = NULL; - *ArgList = 0; - *ArgCount = 0; - } - - - DEBUG_PRINT (TRACE_PARSE, - ("PsPopScope: Popped Op %p Args %X\n", *Op, *ArgCount)); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCleanupScope - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Status - * - * DESCRIPTION: Destroy available list, remaining stack levels, and return - * root scope - * - ******************************************************************************/ - -void -AcpiPsCleanupScope ( - ACPI_PARSE_STATE *ParserState) -{ - ACPI_GENERIC_STATE *Scope; - - FUNCTION_TRACE_PTR ("PsCleanupScope", ParserState); - - - if (!ParserState) - { - return; - } - - - /* Delete anything on the scope stack */ - - while (ParserState->Scope) - { - Scope = AcpiCmPopGenericState (&ParserState->Scope); - AcpiCmDeleteGenericState (Scope); - } - - return_VOID; -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/pstree.c b/sys/contrib/dev/acpica/Subsystem/Parser/pstree.c deleted file mode 100644 index 2f7cf49..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/pstree.c +++ /dev/null @@ -1,399 +0,0 @@ -/****************************************************************************** - * - * Module Name: pstree - Parser op tree manipulation/traversal/search - * $Revision: 27 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __PSTREE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" - -#define _COMPONENT PARSER - MODULE_NAME ("pstree") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetArg - * - * PARAMETERS: Op - Get an argument for this op - * Argn - Nth argument to get - * - * RETURN: The argument (as an Op object). NULL if argument does not exist - * - * DESCRIPTION: Get the specified op's argument. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetArg ( - ACPI_PARSE_OBJECT *Op, - UINT32 Argn) -{ - ACPI_PARSE_OBJECT *Arg = NULL; - ACPI_OPCODE_INFO *OpInfo; - - - /* Get the info structure for this opcode */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - /* Invalid opcode or ASCII character */ - - return (NULL); - } - - /* Check if this opcode requires argument sub-objects */ - - if (!(ACPI_GET_OP_ARGS (OpInfo))) - { - /* Has no linked argument objects */ - - return (NULL); - } - - /* Get the requested argument object */ - - Arg = Op->Value.Arg; - while (Arg && Argn) - { - Argn--; - Arg = Arg->Next; - } - - return (Arg); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsAppendArg - * - * PARAMETERS: Op - Append an argument to this Op. - * Arg - Argument Op to append - * - * RETURN: None. - * - * DESCRIPTION: Append an argument to an op's argument list (a NULL arg is OK) - * - ******************************************************************************/ - -void -AcpiPsAppendArg ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *Arg) -{ - ACPI_PARSE_OBJECT *PrevArg; - ACPI_OPCODE_INFO *OpInfo; - - - if (!Op) - { - return; - } - - /* Get the info structure for this opcode */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode); - if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE) - { - /* Invalid opcode */ - - return; - } - - /* Check if this opcode requires argument sub-objects */ - - if (!(ACPI_GET_OP_ARGS (OpInfo))) - { - /* Has no linked argument objects */ - - return; - } - - - /* Append the argument to the linked argument list */ - - if (Op->Value.Arg) - { - /* Append to existing argument list */ - - PrevArg = Op->Value.Arg; - while (PrevArg->Next) - { - PrevArg = PrevArg->Next; - } - PrevArg->Next = Arg; - } - - else - { - /* No argument list, this will be the first argument */ - - Op->Value.Arg = Arg; - } - - - /* Set the parent in this arg and any args linked after it */ - - while (Arg) - { - Arg->Parent = Op; - Arg = Arg->Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetChild - * - * PARAMETERS: Op - Get the child of this Op - * - * RETURN: Child Op, Null if none is found. - * - * DESCRIPTION: Get op's children or NULL if none - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetChild ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Child = NULL; - - - switch (Op->Opcode) - { - case AML_SCOPE_OP: - case AML_ELSE_OP: - case AML_DEVICE_OP: - case AML_THERMAL_ZONE_OP: - case AML_METHODCALL_OP: - - Child = AcpiPsGetArg (Op, 0); - break; - - - case AML_BUFFER_OP: - case AML_PACKAGE_OP: - case AML_METHOD_OP: - case AML_IF_OP: - case AML_WHILE_OP: - case AML_DEF_FIELD_OP: - - Child = AcpiPsGetArg (Op, 1); - break; - - - case AML_POWER_RES_OP: - case AML_INDEX_FIELD_OP: - - Child = AcpiPsGetArg (Op, 2); - break; - - - case AML_PROCESSOR_OP: - case AML_BANK_FIELD_OP: - - Child = AcpiPsGetArg (Op, 3); - break; - - } - - return (Child); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetDepthNext - * - * PARAMETERS: Origin - Root of subtree to search - * Op - Last (previous) Op that was found - * - * RETURN: Next Op found in the search. - * - * DESCRIPTION: Get next op in tree (walking the tree in depth-first order) - * Return NULL when reaching "origin" or when walking up from root - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetDepthNext ( - ACPI_PARSE_OBJECT *Origin, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next = NULL; - ACPI_PARSE_OBJECT *Parent; - ACPI_PARSE_OBJECT *Arg; - - - if (!Op) - { - return (NULL); - } - - /* look for an argument or child */ - - Next = AcpiPsGetArg (Op, 0); - if (Next) - { - return (Next); - } - - /* look for a sibling */ - - Next = Op->Next; - if (Next) - { - return (Next); - } - - /* look for a sibling of parent */ - - Parent = Op->Parent; - - while (Parent) - { - Arg = AcpiPsGetArg (Parent, 0); - while (Arg && (Arg != Origin) && (Arg != Op)) - { - Arg = Arg->Next; - } - - if (Arg == Origin) - { - /* reached parent of origin, end search */ - - return (NULL); - } - - if (Parent->Next) - { - /* found sibling of parent */ - return (Parent->Next); - } - - Op = Parent; - Parent = Parent->Parent; - } - - return (Next); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/psutils.c b/sys/contrib/dev/acpica/Subsystem/Parser/psutils.c deleted file mode 100644 index e49b9a1..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/psutils.c +++ /dev/null @@ -1,683 +0,0 @@ -/****************************************************************************** - * - * Module Name: psutils - Parser miscellaneous utilities (Parser only) - * $Revision: 32 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" - -#define _COMPONENT PARSER - MODULE_NAME ("psutils") - - -#define PARSEOP_GENERIC 0x01 -#define PARSEOP_NAMED 0x02 -#define PARSEOP_DEFERRED 0x03 -#define PARSEOP_BYTELIST 0x04 -#define PARSEOP_IN_CACHE 0x80 - - -/******************************************************************************* - * - * FUNCTION: AcpiPsInitOp - * - * PARAMETERS: Op - A newly allocated Op object - * Opcode - Opcode to store in the Op - * - * RETURN: Status - * - * DESCRIPTION: Allocate an acpi_op, choose op type (and thus size) based on - * opcode - * - ******************************************************************************/ - -void -AcpiPsInitOp ( - ACPI_PARSE_OBJECT *Op, - UINT16 Opcode) -{ - ACPI_OPCODE_INFO *AmlOp; - - - Op->DataType = ACPI_DESC_TYPE_PARSER; - Op->Opcode = Opcode; - - AmlOp = AcpiPsGetOpcodeInfo (Opcode); - - DEBUG_ONLY_MEMBERS (STRNCPY (Op->OpName, AmlOp->Name, - sizeof (Op->OpName))); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsAllocOp - * - * PARAMETERS: Opcode - Opcode that will be stored in the new Op - * - * RETURN: Pointer to the new Op. - * - * DESCRIPTION: Allocate an acpi_op, choose op type (and thus size) based on - * opcode. A cache of opcodes is available for the pure - * GENERIC_OP, since this is by far the most commonly used. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT* -AcpiPsAllocOp ( - UINT16 Opcode) -{ - ACPI_PARSE_OBJECT *Op = NULL; - UINT32 Size; - UINT8 Flags; - - - /* Allocate the minimum required size object */ - - if (AcpiPsIsDeferredOp (Opcode)) - { - Size = sizeof (ACPI_PARSE2_OBJECT); - Flags = PARSEOP_DEFERRED; - } - - else if (AcpiPsIsNamedOp (Opcode)) - { - Size = sizeof (ACPI_PARSE2_OBJECT); - Flags = PARSEOP_NAMED; - } - - else if (AcpiPsIsBytelistOp (Opcode)) - { - Size = sizeof (ACPI_PARSE2_OBJECT); - Flags = PARSEOP_BYTELIST; - } - - else - { - Size = sizeof (ACPI_PARSE_OBJECT); - Flags = PARSEOP_GENERIC; - } - - - if (Size == sizeof (ACPI_PARSE_OBJECT)) - { - /* - * The generic op is by far the most common (16 to 1), and therefore - * the op cache is implemented with this type. - * - * Check if there is an Op already available in the cache - */ - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - AcpiGbl_ParseCacheRequests++; - if (AcpiGbl_ParseCache) - { - /* Extract an op from the front of the cache list */ - - AcpiGbl_ParseCacheDepth--; - AcpiGbl_ParseCacheHits++; - - Op = AcpiGbl_ParseCache; - AcpiGbl_ParseCache = Op->Next; - - if (Op->DataType == 0xFF) - { - DEBUG_PRINT (ACPI_ERROR, ("Op %p deleted while in cache!\n", Op)); - } - - /* Clear the previously used Op */ - - MEMSET (Op, 0, sizeof (ACPI_PARSE_OBJECT)); - - DEBUG_PRINT (TRACE_PARSE, - ("PsAllocOp: Op %p from Parse Cache\n", Op)); - } - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - } - - else - { - /* - * The generic op is by far the most common (16 to 1), and therefore - * the op cache is implemented with this type. - * - * Check if there is an Op already available in the cache - */ - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - AcpiGbl_ExtParseCacheRequests++; - if (AcpiGbl_ExtParseCache) - { - /* Extract an op from the front of the cache list */ - - AcpiGbl_ExtParseCacheDepth--; - AcpiGbl_ExtParseCacheHits++; - - Op = (ACPI_PARSE_OBJECT *) AcpiGbl_ExtParseCache; - AcpiGbl_ExtParseCache = (ACPI_PARSE2_OBJECT *) Op->Next; - - if (Op->DataType == 0xFF) - { - DEBUG_PRINT (ACPI_ERROR, ("Op %p deleted while in cache!\n", Op)); - } - - /* Clear the previously used Op */ - - MEMSET (Op, 0, sizeof (ACPI_PARSE2_OBJECT)); - - DEBUG_PRINT (TRACE_PARSE, - ("PsAllocOp: Op %p from ExtParse Cache\n", Op)); - } - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - } - - - /* Allocate a new Op if necessary */ - - if (!Op) - { - Op = AcpiCmCallocate (Size); - } - - /* Initialize the Op */ - if (Op) - { - AcpiPsInitOp (Op, Opcode); - Op->Flags = Flags; - } - - return (Op); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsFreeOp - * - * PARAMETERS: Op - Op to be freed - * - * RETURN: None. - * - * DESCRIPTION: Free an Op object. Either put it on the GENERIC_OP cache list - * or actually free it. - * - ******************************************************************************/ - -void -AcpiPsFreeOp ( - ACPI_PARSE_OBJECT *Op) -{ - - - if (Op->Opcode == AML_RETURN_VALUE_OP) - { - DEBUG_PRINT (ACPI_INFO, ("Free retval op: %p\n", Op)); - } - - if (Op->Flags == PARSEOP_GENERIC) - { - /* Is the cache full? */ - - if (AcpiGbl_ParseCacheDepth < MAX_PARSE_CACHE_DEPTH) - { - /* Put a GENERIC_OP back into the cache */ - - /* Clear the previously used Op */ - - MEMSET (Op, 0, sizeof (ACPI_PARSE_OBJECT)); - Op->Flags = PARSEOP_IN_CACHE; - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - AcpiGbl_ParseCacheDepth++; - - Op->Next = AcpiGbl_ParseCache; - AcpiGbl_ParseCache = Op; - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - return; - } - } - - else - { - /* Is the cache full? */ - - if (AcpiGbl_ExtParseCacheDepth < MAX_EXTPARSE_CACHE_DEPTH) - { - /* Put a GENERIC_OP back into the cache */ - - /* Clear the previously used Op */ - - MEMSET (Op, 0, sizeof (ACPI_PARSE2_OBJECT)); - Op->Flags = PARSEOP_IN_CACHE; - - AcpiCmAcquireMutex (ACPI_MTX_CACHES); - AcpiGbl_ExtParseCacheDepth++; - - Op->Next = (ACPI_PARSE_OBJECT *) AcpiGbl_ExtParseCache; - AcpiGbl_ExtParseCache = (ACPI_PARSE2_OBJECT *) Op; - - AcpiCmReleaseMutex (ACPI_MTX_CACHES); - return; - } - } - - - /* - * Not a GENERIC OP, or the cache is full, just free the Op - */ - - AcpiCmFree (Op); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsDeleteParseCache - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Free all objects that are on the parse cache list. - * - ******************************************************************************/ - -void -AcpiPsDeleteParseCache ( - void) -{ - ACPI_PARSE_OBJECT *Next; - - - FUNCTION_TRACE ("PsDeleteParseCache"); - - - /* Traverse the global cache list */ - - while (AcpiGbl_ParseCache) - { - /* Delete one cached state object */ - - Next = AcpiGbl_ParseCache->Next; - AcpiCmFree (AcpiGbl_ParseCache); - AcpiGbl_ParseCache = Next; - AcpiGbl_ParseCacheDepth--; - } - - /* Traverse the global cache list */ - - while (AcpiGbl_ExtParseCache) - { - /* Delete one cached state object */ - - Next = AcpiGbl_ExtParseCache->Next; - AcpiCmFree (AcpiGbl_ExtParseCache); - AcpiGbl_ExtParseCache = (ACPI_PARSE2_OBJECT *) Next; - AcpiGbl_ExtParseCacheDepth--; - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: Utility functions - * - * DESCRIPTION: Low level functions - * - * TBD: [Restructure] - * 1) Some of these functions should be macros - * 2) Some can be simplified - * - ******************************************************************************/ - - -/* - * Is "c" a namestring lead character? - */ - - -BOOLEAN -AcpiPsIsLeadingChar ( - UINT32 c) -{ - return ((BOOLEAN) (c == '_' || (c >= 'A' && c <= 'Z'))); -} - - -/* - * Is "c" a namestring prefix character? - */ -BOOLEAN -AcpiPsIsPrefixChar ( - UINT32 c) -{ - return ((BOOLEAN) (c == '\\' || c == '^')); -} - - -BOOLEAN -AcpiPsIsNamespaceObjectOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) - (Opcode == AML_SCOPE_OP || - Opcode == AML_DEVICE_OP || - Opcode == AML_THERMAL_ZONE_OP || - Opcode == AML_METHOD_OP || - Opcode == AML_POWER_RES_OP || - Opcode == AML_PROCESSOR_OP || - Opcode == AML_DEF_FIELD_OP || - Opcode == AML_INDEX_FIELD_OP || - Opcode == AML_BANK_FIELD_OP || - Opcode == AML_NAMEDFIELD_OP || - Opcode == AML_NAME_OP || - Opcode == AML_ALIAS_OP || - Opcode == AML_MUTEX_OP || - Opcode == AML_EVENT_OP || - Opcode == AML_REGION_OP || - Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP || - Opcode == AML_METHODCALL_OP || - Opcode == AML_NAMEPATH_OP)); -} - -BOOLEAN -AcpiPsIsNamespaceOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) - (Opcode == AML_SCOPE_OP || - Opcode == AML_DEVICE_OP || - Opcode == AML_THERMAL_ZONE_OP || - Opcode == AML_METHOD_OP || - Opcode == AML_POWER_RES_OP || - Opcode == AML_PROCESSOR_OP || - Opcode == AML_DEF_FIELD_OP || - Opcode == AML_INDEX_FIELD_OP || - Opcode == AML_BANK_FIELD_OP || - Opcode == AML_NAME_OP || - Opcode == AML_ALIAS_OP || - Opcode == AML_MUTEX_OP || - Opcode == AML_EVENT_OP || - Opcode == AML_REGION_OP || - Opcode == AML_NAMEDFIELD_OP)); -} - - -/* - * Is opcode for a named object Op? - * (Includes all named object opcodes) - * - * TBD: [Restructure] Need a better way than this brute force approach! - */ -BOOLEAN -AcpiPsIsNodeOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) - (Opcode == AML_SCOPE_OP || - Opcode == AML_DEVICE_OP || - Opcode == AML_THERMAL_ZONE_OP || - Opcode == AML_METHOD_OP || - Opcode == AML_POWER_RES_OP || - Opcode == AML_PROCESSOR_OP || - Opcode == AML_NAMEDFIELD_OP || - Opcode == AML_NAME_OP || - Opcode == AML_ALIAS_OP || - Opcode == AML_MUTEX_OP || - Opcode == AML_EVENT_OP || - Opcode == AML_REGION_OP || - - - Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP || - Opcode == AML_METHODCALL_OP || - Opcode == AML_NAMEPATH_OP)); -} - - -/* - * Is opcode for a named Op? - */ -BOOLEAN -AcpiPsIsNamedOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) - (Opcode == AML_SCOPE_OP || - Opcode == AML_DEVICE_OP || - Opcode == AML_THERMAL_ZONE_OP || - Opcode == AML_METHOD_OP || - Opcode == AML_POWER_RES_OP || - Opcode == AML_PROCESSOR_OP || - Opcode == AML_NAME_OP || - Opcode == AML_ALIAS_OP || - Opcode == AML_MUTEX_OP || - Opcode == AML_EVENT_OP || - Opcode == AML_REGION_OP || - Opcode == AML_NAMEDFIELD_OP)); -} - - -BOOLEAN -AcpiPsIsDeferredOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) - (Opcode == AML_METHOD_OP || - Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP || - Opcode == AML_REGION_OP)); -} - - -/* - * Is opcode for a bytelist? - */ -BOOLEAN -AcpiPsIsBytelistOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) (Opcode == AML_BYTELIST_OP)); -} - - -/* - * Is opcode for a Field, IndexField, or BankField - */ -BOOLEAN -AcpiPsIsFieldOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) - (Opcode == AML_CREATE_FIELD_OP - || Opcode == AML_DEF_FIELD_OP - || Opcode == AML_INDEX_FIELD_OP - || Opcode == AML_BANK_FIELD_OP)); -} - - -/* - * Is field creation op - */ -BOOLEAN -AcpiPsIsCreateFieldOp ( - UINT16 Opcode) -{ - return ((BOOLEAN) - (Opcode == AML_CREATE_FIELD_OP || - Opcode == AML_BIT_FIELD_OP || - Opcode == AML_BYTE_FIELD_OP || - Opcode == AML_WORD_FIELD_OP || - Opcode == AML_DWORD_FIELD_OP)); -} - - -/* - * Cast an acpi_op to an acpi_extended_op if possible - */ - -/* TBD: This is very inefficient, fix */ -ACPI_PARSE2_OBJECT * -AcpiPsToExtendedOp ( - ACPI_PARSE_OBJECT *Op) -{ - return ((AcpiPsIsDeferredOp (Op->Opcode) || AcpiPsIsNamedOp (Op->Opcode) || AcpiPsIsBytelistOp (Op->Opcode)) - ? ( (ACPI_PARSE2_OBJECT *) Op) : NULL); -} - - -/* - * Get op's name (4-byte name segment) or 0 if unnamed - */ -UINT32 -AcpiPsGetName ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE2_OBJECT *Named = AcpiPsToExtendedOp (Op); - - return (Named ? Named->Name : 0); -} - - -/* - * Set op's name - */ -void -AcpiPsSetName ( - ACPI_PARSE_OBJECT *Op, - UINT32 name) -{ - ACPI_PARSE2_OBJECT *Named = AcpiPsToExtendedOp (Op); - - if (Named) - { - Named->Name = name; - } -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/pswalk.c b/sys/contrib/dev/acpica/Subsystem/Parser/pswalk.c deleted file mode 100644 index e3a0f70..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/pswalk.c +++ /dev/null @@ -1,387 +0,0 @@ -/****************************************************************************** - * - * Module Name: pswalk - Parser routines to walk parsed op tree(s) - * $Revision: 52 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "acinterp.h" - -#define _COMPONENT PARSER - MODULE_NAME ("pswalk") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextWalkOp - * - * PARAMETERS: WalkState - Current state of the walk - * Op - Current Op to be walked - * AscendingCallback - Procedure called when Op is complete - * - * RETURN: Status - * - * DESCRIPTION: Get the next Op in a walk of the parse tree. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsGetNextWalkOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_UPWARDS AscendingCallback) -{ - ACPI_PARSE_OBJECT *Next; - ACPI_PARSE_OBJECT *Parent; - ACPI_PARSE_OBJECT *GrandParent; - ACPI_STATUS Status; - - - FUNCTION_TRACE_PTR ("PsGetNextWalkOp", Op); - - - /* Check for a argument only if we are descending in the tree */ - - if (WalkState->NextOpInfo != NEXT_OP_UPWARD) - { - /* Look for an argument or child of the current op */ - - Next = AcpiPsGetArg (Op, 0); - if (Next) - { - /* Still going downward in tree (Op is not completed yet) */ - - WalkState->PrevOp = Op; - WalkState->NextOp = Next; - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; - - return_ACPI_STATUS (AE_OK); - } - - - /* - * No more children, this Op is complete. Save Next and Parent - * in case the Op object gets deleted by the callback routine - */ - - Next = Op->Next; - Parent = Op->Parent; - - Status = AscendingCallback (WalkState, Op); - - /* - * If we are back to the starting point, the walk is complete. - */ - if (Op == WalkState->Origin) - { - /* Reached the point of origin, the walk is complete */ - - WalkState->PrevOp = Op; - WalkState->NextOp = NULL; - - return_ACPI_STATUS (Status); - } - - /* - * Check for a sibling to the current op. A sibling means - * we are still going "downward" in the tree. - */ - - if (Next) - { - /* There is a sibling, it will be next */ - - WalkState->PrevOp = Op; - WalkState->NextOp = Next; - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; - - /* Continue downward */ - - return_ACPI_STATUS (Status); - } - - - /* - * Drop into the loop below because we are moving upwards in - * the tree - */ - } - - else - { - /* - * We are resuming a walk, and we were (are) going upward in the tree. - * So, we want to drop into the parent loop below. - */ - - Parent = Op; - } - - - /* - * Look for a sibling of the current Op's parent - * Continue moving up the tree until we find a node that has not been - * visited, or we get back to where we started. - */ - while (Parent) - { - /* We are moving up the tree, therefore this parent Op is complete */ - - GrandParent = Parent->Parent; - Next = Parent->Next; - - Status = AscendingCallback (WalkState, Parent); - - /* - * If we are back to the starting point, the walk is complete. - */ - if (Parent == WalkState->Origin) - { - /* Reached the point of origin, the walk is complete */ - - WalkState->PrevOp = Parent; - WalkState->NextOp = NULL; - - return_ACPI_STATUS (Status); - } - - /* - * If there is a sibling to this parent (it is not the starting point - * Op), then we will visit it. - */ - if (Next) - { - /* found sibling of parent */ - - WalkState->PrevOp = Parent; - WalkState->NextOp = Next; - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; - - return_ACPI_STATUS (Status); - } - - /* No siblings, no errors, just move up one more level in the tree */ - - Op = Parent; - Parent = GrandParent; - WalkState->PrevOp = Op; - } - - - /* Got all the way to the top of the tree, we must be done! */ - /* However, the code should have terminated in the loop above */ - - WalkState->NextOp = NULL; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsDeleteCompletedOp - * - * PARAMETERS: State - Walk state - * Op - Completed op - * - * RETURN: AE_OK - * - * DESCRIPTION: Callback function for AcpiPsGetNextWalkOp(). Used during - * AcpiPsDeleteParse tree to delete Op objects when all sub-objects - * have been visited (and deleted.) - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsDeleteCompletedOp ( - ACPI_WALK_STATE *State, - ACPI_PARSE_OBJECT *Op) -{ - - AcpiPsFreeOp (Op); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsDeleteParseTree - * - * PARAMETERS: SubtreeRoot - Root of tree (or subtree) to delete - * - * RETURN: None - * - * DESCRIPTION: Delete a portion of or an entire parse tree. - * - ******************************************************************************/ - -void -AcpiPsDeleteParseTree ( - ACPI_PARSE_OBJECT *SubtreeRoot) -{ - ACPI_WALK_STATE *WalkState; - ACPI_WALK_LIST WalkList; - - - FUNCTION_TRACE_PTR ("PsDeleteParseTree", SubtreeRoot); - - - if (!SubtreeRoot) - { - return_VOID; - } - - /* Create and initialize a new walk list */ - - WalkList.WalkState = NULL; - WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT, NULL, NULL, &WalkList); - if (!WalkState) - { - return_VOID; - } - - WalkState->ParserState = NULL; - WalkState->ParseFlags = 0; - WalkState->DescendingCallback = NULL; - WalkState->AscendingCallback = NULL; - - - WalkState->Origin = SubtreeRoot; - WalkState->NextOp = SubtreeRoot; - - - /* Head downward in the tree */ - - WalkState->NextOpInfo = NEXT_OP_DOWNWARD; - - /* Visit all nodes in the subtree */ - - while (WalkState->NextOp) - { - AcpiPsGetNextWalkOp (WalkState, WalkState->NextOp, - AcpiPsDeleteCompletedOp); - } - - /* We are done with this walk */ - - AcpiDsDeleteWalkState (WalkState); - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Parser/psxface.c b/sys/contrib/dev/acpica/Subsystem/Parser/psxface.c deleted file mode 100644 index 00248b1..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Parser/psxface.c +++ /dev/null @@ -1,276 +0,0 @@ -/****************************************************************************** - * - * Module Name: psxface - Parser external interfaces - * $Revision: 40 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __PSXFACE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" - - -#define _COMPONENT PARSER - MODULE_NAME ("psxface") - - -/***************************************************************************** - * - * FUNCTION: AcpiPsxExecute - * - * PARAMETERS: MethodNode - A method object containing both the AML - * address and length. - * **Params - List of parameters to pass to method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * **ReturnObjDesc - Return object from execution of the - * method. - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method - * - ****************************************************************************/ - -ACPI_STATUS -AcpiPsxExecute ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **ReturnObjDesc) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 i; - ACPI_PARSE_OBJECT *Op; - - - FUNCTION_TRACE ("PsxExecute"); - - - /* Validate the Node and get the attached object */ - - if (!MethodNode) - { - return_ACPI_STATUS (AE_NULL_ENTRY); - } - - ObjDesc = AcpiNsGetAttachedObject (MethodNode); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - /* Init for new method, wait on concurrency semaphore */ - - Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (Params) - { - /* - * The caller "owns" the parameters, so give each one an extra - * reference - */ - - for (i = 0; Params[i]; i++) - { - AcpiCmAddReference (Params[i]); - } - } - - /* - * Perform the first pass parse of the method to enter any - * named objects that it creates into the namespace - */ - - DEBUG_PRINT (ACPI_INFO, - ("PsxExecute: **** Begin Method Execution **** Entry=%p obj=%p\n", - MethodNode, ObjDesc)); - - /* Create and init a Root Node */ - - Op = AcpiPsAllocOp (AML_SCOPE_OP); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode, - ObjDesc->Method.PcodeLength, - ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE, - MethodNode, Params, ReturnObjDesc, - AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp); - AcpiPsDeleteParseTree (Op); - - /* Create and init a Root Node */ - - Op = AcpiPsAllocOp (AML_SCOPE_OP); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - - /* Init new op with the method name and pointer back to the NS node */ - - AcpiPsSetName (Op, MethodNode->Name); - Op->Node = MethodNode; - - /* - * The walk of the parse tree is where we actually execute the method - */ - Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode, - ObjDesc->Method.PcodeLength, - ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE, - MethodNode, Params, ReturnObjDesc, - AcpiDsExecBeginOp, AcpiDsExecEndOp); - AcpiPsDeleteParseTree (Op); - - if (Params) - { - /* Take away the extra reference that we gave the parameters above */ - - for (i = 0; Params[i]; i++) - { - AcpiCmUpdateObjectReference (Params[i], REF_DECREMENT); - } - } - - - /* - * Normal exit is with Status == AE_RETURN_VALUE when a ReturnOp has been - * executed, or with Status == AE_PENDING at end of AML block (end of - * Method code) - */ - - if (*ReturnObjDesc) - { - DEBUG_PRINT (ACPI_INFO, ("Method returned ObjDesc=%X\n", - *ReturnObjDesc)); - DUMP_STACK_ENTRY (*ReturnObjDesc); - - Status = AE_CTRL_RETURN_VALUE; - } - - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsaddr.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsaddr.c deleted file mode 100644 index 546ff9b..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsaddr.c +++ /dev/null @@ -1,923 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsaddr - AcpiRsAddress16Resource - * AcpiRsAddress16Stream - * AcpiRsAddress32Resource - * AcpiRsAddress32Stream - * $Revision: 14 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSADDR_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsaddr") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsAddress16Resource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsAddress16Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16; - UINT8 Temp8; - UINT32 Index; - UINT32 StructSize = sizeof(ADDRESS16_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsAddress16Resource"); - - /* - * Point past the Descriptor to get the number of bytes consumed - */ - Buffer += 1; - - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - *BytesConsumed = Temp16 + 3; - - OutputStruct->Id = Address16; - - OutputStruct->Length = StructSize; - - /* - * Get the Resource Type (Byte3) - */ - Buffer += 2; - Temp8 = *Buffer; - - /* Values 0-2 are valid */ - if (Temp8 > 2) - { - return_ACPI_STATUS (AE_AML_ERROR); - } - - OutputStruct->Data.Address16.ResourceType = Temp8 & 0x03; - - /* - * Get the General Flags (Byte4) - */ - Buffer += 1; - Temp8 = *Buffer; - - /* - * Producer / Consumer - */ - OutputStruct->Data.Address16.ProducerConsumer = Temp8 & 0x01; - - /* - * Decode - */ - OutputStruct->Data.Address16.Decode = (Temp8 >> 1) & 0x01; - - /* - * Min Address Fixed - */ - OutputStruct->Data.Address16.MinAddressFixed = (Temp8 >> 2) & 0x01; - - /* - * Max Address Fixed - */ - OutputStruct->Data.Address16.MaxAddressFixed = (Temp8 >> 3) & 0x01; - - /* - * Get the Type Specific Flags (Byte5) - */ - Buffer += 1; - Temp8 = *Buffer; - - if (MEMORY_RANGE == OutputStruct->Data.Address16.ResourceType) - { - OutputStruct->Data.Address16.Attribute.Memory.ReadWriteAttribute = - (UINT16) (Temp8 & 0x01); - OutputStruct->Data.Address16.Attribute.Memory.CacheAttribute = - (UINT16) ((Temp8 >> 1) & 0x0F); - } - - else - { - if (IO_RANGE == OutputStruct->Data.Address16.ResourceType) - { - OutputStruct->Data.Address16.Attribute.Io.RangeAttribute = - (UINT16) (Temp8 & 0x03); - } - - else - { - /* BUS_NUMBER_RANGE == Address32Data->ResourceType */ - /* Nothing needs to be filled in */ - } - } - - /* - * Get Granularity (Bytes 6-7) - */ - Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.Granularity, - Buffer); - - /* - * Get MinAddressRange (Bytes 8-9) - */ - Buffer += 2; - MOVE_UNALIGNED16_TO_16 (&OutputStruct->Data.Address16.MinAddressRange, - Buffer); - - /* - * Get MaxAddressRange (Bytes 10-11) - */ - Buffer += 2; - MOVE_UNALIGNED16_TO_16 - (&OutputStruct->Data.Address16.MaxAddressRange, - Buffer); - - /* - * Get AddressTranslationOffset (Bytes 12-13) - */ - Buffer += 2; - MOVE_UNALIGNED16_TO_16 - (&OutputStruct->Data.Address16.AddressTranslationOffset, - Buffer); - - /* - * Get AddressLength (Bytes 14-15) - */ - Buffer += 2; - MOVE_UNALIGNED16_TO_16 - (&OutputStruct->Data.Address16.AddressLength, - Buffer); - - /* - * Resource Source Index (if present) - */ - Buffer += 2; - - /* - * This will leave us pointing to the Resource Source Index - * If it is present, then save it off and calculate the - * pointer to where the null terminated string goes: - * Each Interrupt takes 32-bits + the 5 bytes of the - * stream that are default. - */ - if (*BytesConsumed > 16) - { - /* Dereference the Index */ - - Temp8 = *Buffer; - OutputStruct->Data.Address16.ResourceSourceIndex = - (UINT32) Temp8; - - /* Point to the String */ - - Buffer += 1; - - /* Copy the string into the buffer */ - - Index = 0; - - while (0x00 != *Buffer) - { - OutputStruct->Data.Address16.ResourceSource[Index] = - *Buffer; - - Buffer += 1; - Index += 1; - } - - /* - * Add the terminating null - */ - OutputStruct->Data.Address16.ResourceSource[Index] = 0x00; - - OutputStruct->Data.Address16.ResourceSourceStringLength = - Index + 1; - - /* - * In order for the StructSize to fall on a 32-bit boundry, - * calculate the length of the string and expand the - * StructSize to the next 32-bit boundry. - */ - Temp8 = (UINT8) (Index + 1); - StructSize += ROUND_UP_TO_32BITS (Temp8); - OutputStruct->Length = StructSize; - } - else - { - OutputStruct->Data.Address16.ResourceSourceIndex = 0x00; - OutputStruct->Data.Address16.ResourceSourceStringLength = 0; - OutputStruct->Data.Address16.ResourceSource[0] = 0x00; - } - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsAddress16Stream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsAddress16Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT8 *LengthField; - UINT8 Temp8; - NATIVE_CHAR *TempPointer = NULL; - UINT32 ActualBytes; - - - FUNCTION_TRACE ("RsAddress16Stream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x88; - Buffer += 1; - - /* - * Save a pointer to the Length field - to be filled in later - */ - LengthField = Buffer; - Buffer += 2; - - /* - * Set the Resource Type (Memory, Io, BusNumber) - */ - Temp8 = (UINT8) (LinkedList->Data.Address16.ResourceType & 0x03); - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the general flags - */ - Temp8 = (UINT8) (LinkedList->Data.Address16.ProducerConsumer & 0x01); - - Temp8 |= (LinkedList->Data.Address16.Decode & 0x01) << 1; - Temp8 |= (LinkedList->Data.Address16.MinAddressFixed & 0x01) << 2; - Temp8 |= (LinkedList->Data.Address16.MaxAddressFixed & 0x01) << 3; - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the type specific flags - */ - Temp8 = 0; - - if (MEMORY_RANGE == LinkedList->Data.Address16.ResourceType) - { - Temp8 = (UINT8) - (LinkedList->Data.Address16.Attribute.Memory.ReadWriteAttribute & - 0x01); - - Temp8 |= - (LinkedList->Data.Address16.Attribute.Memory.CacheAttribute & - 0x0F) << 1; - } - - else if (IO_RANGE == LinkedList->Data.Address16.ResourceType) - { - Temp8 = (UINT8) - (LinkedList->Data.Address16.Attribute.Io.RangeAttribute & - 0x03); - } - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the address space granularity - */ - MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.Granularity); - Buffer += 2; - - /* - * Set the address range minimum - */ - MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.MinAddressRange); - Buffer += 2; - - /* - * Set the address range maximum - */ - MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.MaxAddressRange); - Buffer += 2; - - /* - * Set the address translation offset - */ - MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.AddressTranslationOffset); - Buffer += 2; - - /* - * Set the address length - */ - MOVE_UNALIGNED16_TO_16 (Buffer, - &LinkedList->Data.Address16.AddressLength); - Buffer += 2; - - /* - * Resource Source Index and Resource Source are optional - */ - if (0 != LinkedList->Data.Address16.ResourceSourceStringLength) - { - Temp8 = (UINT8) LinkedList->Data.Address16.ResourceSourceIndex; - - *Buffer = Temp8; - Buffer += 1; - - TempPointer = (NATIVE_CHAR *) Buffer; - - /* - * Copy the string - */ - STRCPY (TempPointer, LinkedList->Data.Address16.ResourceSource); - - /* - * Buffer needs to be set to the length of the sting + one for the - * terminating null - */ - Buffer += (STRLEN (LinkedList->Data.Address16.ResourceSource) + 1); - } - - /* - * Return the number of bytes consumed in this operation - */ - ActualBytes = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - *BytesConsumed = ActualBytes; - - /* - * Set the length field to the number of bytes consumed - * minus the header size (3 bytes) - */ - ActualBytes -= 3; - MOVE_UNALIGNED16_TO_16 (LengthField, &ActualBytes); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsAddress32Resource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsAddress32Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer; - RESOURCE *OutputStruct; - UINT16 Temp16; - UINT8 Temp8; - UINT32 StructSize; - UINT32 Index; - - - FUNCTION_TRACE ("RsAddress32Resource"); - - Buffer = ByteStreamBuffer; - - OutputStruct = (RESOURCE *) *OutputBuffer; - - StructSize = sizeof (ADDRESS32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - /* - * Point past the Descriptor to get the number of bytes consumed - */ - Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - *BytesConsumed = Temp16 + 3; - - OutputStruct->Id = Address32; - - /* - * Get the Resource Type (Byte3) - */ - Buffer += 2; - Temp8 = *Buffer; - - /* Values 0-2 are valid */ - if(Temp8 > 2) - { - return_ACPI_STATUS (AE_AML_ERROR); - } - - OutputStruct->Data.Address32.ResourceType = Temp8 & 0x03; - - /* - * Get the General Flags (Byte4) - */ - Buffer += 1; - Temp8 = *Buffer; - - /* - * Producer / Consumer - */ - OutputStruct->Data.Address32.ProducerConsumer = Temp8 & 0x01; - - /* - * Decode - */ - OutputStruct->Data.Address32.Decode = (Temp8 >> 1) & 0x01; - - /* - * Min Address Fixed - */ - OutputStruct->Data.Address32.MinAddressFixed = (Temp8 >> 2) & 0x01; - - /* - * Max Address Fixed - */ - OutputStruct->Data.Address32.MaxAddressFixed = (Temp8 >> 3) & 0x01; - - /* - * Get the Type Specific Flags (Byte5) - */ - Buffer += 1; - Temp8 = *Buffer; - - if (MEMORY_RANGE == OutputStruct->Data.Address32.ResourceType) - { - OutputStruct->Data.Address32.Attribute.Memory.ReadWriteAttribute = - (UINT16) (Temp8 & 0x01); - - OutputStruct->Data.Address32.Attribute.Memory.CacheAttribute = - (UINT16) ((Temp8 >> 1) & 0x0F); - } - - else - { - if (IO_RANGE == OutputStruct->Data.Address32.ResourceType) - { - OutputStruct->Data.Address32.Attribute.Io.RangeAttribute = - (UINT16) (Temp8 & 0x03); - } - - else - { - /* BUS_NUMBER_RANGE == OutputStruct->Data.Address32.ResourceType */ - /* Nothing needs to be filled in */ - } - } - - /* - * Get Granularity (Bytes 6-9) - */ - Buffer += 1; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.Granularity, - Buffer); - - /* - * Get MinAddressRange (Bytes 10-13) - */ - Buffer += 4; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MinAddressRange, - Buffer); - - /* - * Get MaxAddressRange (Bytes 14-17) - */ - Buffer += 4; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.MaxAddressRange, - Buffer); - - /* - * Get AddressTranslationOffset (Bytes 18-21) - */ - Buffer += 4; - MOVE_UNALIGNED32_TO_32 - (&OutputStruct->Data.Address32.AddressTranslationOffset, - Buffer); - - /* - * Get AddressLength (Bytes 22-25) - */ - Buffer += 4; - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Address32.AddressLength, - Buffer); - - /* - * Resource Source Index (if present) - */ - Buffer += 4; - - /* - * This will leave us pointing to the Resource Source Index - * If it is present, then save it off and calculate the - * pointer to where the null terminated string goes: - * Each Interrupt takes 32-bits + the 5 bytes of the - * stream that are default. - */ - if (*BytesConsumed > 26) - { - /* Dereference the Index */ - - Temp8 = *Buffer; - OutputStruct->Data.Address32.ResourceSourceIndex = (UINT32)Temp8; - - /* Point to the String */ - - Buffer += 1; - - /* Copy the string into the buffer */ - - Index = 0; - - while (0x00 != *Buffer) - { - OutputStruct->Data.Address32.ResourceSource[Index] = *Buffer; - Buffer += 1; - Index += 1; - } - - /* - * Add the terminating null - */ - OutputStruct->Data.Address32.ResourceSource[Index] = 0x00; - - OutputStruct->Data.Address32.ResourceSourceStringLength = Index + 1; - - /* - * In order for the StructSize to fall on a 32-bit boundry, - * calculate the length of the string and expand the - * StructSize to the next 32-bit boundry. - */ - Temp8 = (UINT8) (Index + 1); - StructSize += ROUND_UP_TO_32BITS (Temp8); - } - - else - { - OutputStruct->Data.Address32.ResourceSourceIndex = 0x00; - OutputStruct->Data.Address32.ResourceSourceStringLength = 0; - OutputStruct->Data.Address32.ResourceSource[0] = 0x00; - } - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsAddress32Stream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsAddress32Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer; - UINT16 *LengthField; - UINT8 Temp8; - NATIVE_CHAR *TempPointer; - - - FUNCTION_TRACE ("RsAddress32Stream"); - - Buffer = *OutputBuffer; - - /* - * The descriptor field is static - */ - *Buffer = 0x87; - Buffer += 1; - - /* - * Set a pointer to the Length field - to be filled in later - */ - - LengthField = (UINT16 *)Buffer; - Buffer += 2; - - /* - * Set the Resource Type (Memory, Io, BusNumber) - */ - Temp8 = (UINT8) (LinkedList->Data.Address32.ResourceType & 0x03); - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the general flags - */ - Temp8 = (UINT8) (LinkedList->Data.Address32.ProducerConsumer & 0x01); - Temp8 |= (LinkedList->Data.Address32.Decode & 0x01) << 1; - Temp8 |= (LinkedList->Data.Address32.MinAddressFixed & 0x01) << 2; - Temp8 |= (LinkedList->Data.Address32.MaxAddressFixed & 0x01) << 3; - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the type specific flags - */ - Temp8 = 0; - - if(MEMORY_RANGE == LinkedList->Data.Address32.ResourceType) - { - Temp8 = (UINT8) - (LinkedList->Data.Address32.Attribute.Memory.ReadWriteAttribute & - 0x01); - - Temp8 |= - (LinkedList->Data.Address32.Attribute.Memory.CacheAttribute & - 0x0F) << 1; - } - - else if (IO_RANGE == LinkedList->Data.Address32.ResourceType) - { - Temp8 = (UINT8) - (LinkedList->Data.Address32.Attribute.Io.RangeAttribute & - 0x03); - } - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the address space granularity - */ - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.Granularity); - Buffer += 4; - - /* - * Set the address range minimum - */ - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.MinAddressRange); - Buffer += 4; - - /* - * Set the address range maximum - */ - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.MaxAddressRange); - Buffer += 4; - - /* - * Set the address translation offset - */ - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.AddressTranslationOffset); - Buffer += 4; - - /* - * Set the address length - */ - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.Address32.AddressLength); - Buffer += 4; - - /* - * Resource Source Index and Resource Source are optional - */ - if (0 != LinkedList->Data.Address32.ResourceSourceStringLength) - { - Temp8 = (UINT8) LinkedList->Data.Address32.ResourceSourceIndex; - - *Buffer = Temp8; - Buffer += 1; - - TempPointer = (NATIVE_CHAR *) Buffer; - - /* - * Copy the string - */ - STRCPY (TempPointer, LinkedList->Data.Address32.ResourceSource); - - /* - * Buffer needs to be set to the length of the sting + one for the - * terminating null - */ - Buffer += (STRLEN (LinkedList->Data.Address32.ResourceSource) + 1); - } - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - /* - * Set the length field to the number of bytes consumed - * minus the header size (3 bytes) - */ - *LengthField = (UINT16) (*BytesConsumed - 3); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rscalc.c b/sys/contrib/dev/acpica/Subsystem/Resources/rscalc.c deleted file mode 100644 index 2f03cf4..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rscalc.c +++ /dev/null @@ -1,1003 +0,0 @@ -/******************************************************************************* - * - * Module Name: rscalc - AcpiRsCalculateByteStreamLength - * AcpiRsCalculateListLength - * $Revision: 21 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSCALC_C__ - -#include "acpi.h" -#include "acresrc.h" -#include "amlcode.h" -#include "acnamesp.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rscalc") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCalculateByteStreamLength - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * SizeNeeded - UINT32 pointer of the size buffer needed - * to properly return the parsed data - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Takes the resource byte stream and parses it once, calculating - * the size buffer needed to hold the linked list that conveys - * the resource data. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCalculateByteStreamLength ( - RESOURCE *LinkedList, - UINT32 *SizeNeeded) -{ - UINT32 ByteStreamSizeNeeded = 0; - UINT32 SegmentSize; - EXTENDED_IRQ_RESOURCE *ExIrq = NULL; - BOOLEAN Done = FALSE; - - - FUNCTION_TRACE ("RsCalculateByteStreamLength"); - - - while (!Done) - { - - /* - * Init the variable that will hold the size to add to the - * total. - */ - SegmentSize = 0; - - switch (LinkedList->Id) - { - case Irq: - /* - * IRQ Resource - */ - /* - * For an IRQ Resource, Byte 3, although optional, will - * always be created - it holds IRQ information. - */ - SegmentSize = 4; - break; - - case Dma: - /* - * DMA Resource - */ - /* - * For this resource the size is static - */ - SegmentSize = 3; - break; - - case StartDependentFunctions: - /* - * Start Dependent Functions Resource - */ - /* - * For a StartDependentFunctions Resource, Byte 1, - * although optional, will always be created. - */ - SegmentSize = 2; - break; - - case EndDependentFunctions: - /* - * End Dependent Functions Resource - */ - /* - * For this resource the size is static - */ - SegmentSize = 1; - break; - - case Io: - /* - * IO Port Resource - */ - /* - * For this resource the size is static - */ - SegmentSize = 8; - break; - - case FixedIo: - /* - * Fixed IO Port Resource - */ - /* - * For this resource the size is static - */ - SegmentSize = 4; - break; - - case VendorSpecific: - /* - * Vendor Defined Resource - */ - /* - * For a Vendor Specific resource, if the Length is - * between 1 and 7 it will be created as a Small - * Resource data type, otherwise it is a Large - * Resource data type. - */ - if(LinkedList->Data.VendorSpecific.Length > 7) - { - SegmentSize = 3; - } - else - { - SegmentSize = 1; - } - SegmentSize += - LinkedList->Data.VendorSpecific.Length; - break; - - case EndTag: - /* - * End Tag - */ - /* - * For this resource the size is static - */ - SegmentSize = 2; - Done = TRUE; - break; - - case Memory24: - /* - * 24-Bit Memory Resource - */ - /* - * For this resource the size is static - */ - SegmentSize = 12; - break; - - case Memory32: - /* - * 32-Bit Memory Range Resource - */ - /* - * For this resource the size is static - */ - SegmentSize = 20; - break; - - case FixedMemory32: - /* - * 32-Bit Fixed Memory Resource - */ - /* - * For this resource the size is static - */ - SegmentSize = 12; - break; - - case Address16: - /* - * 16-Bit Address Resource - */ - /* - * The base size of this byte stream is 16. If a - * Resource Source string is not NULL, add 1 for - * the Index + the length of the null terminated - * string Resource Source + 1 for the null. - */ - SegmentSize = 16; - - if(NULL != LinkedList->Data.Address16.ResourceSource) - { - SegmentSize += (1 + - LinkedList->Data.Address16.ResourceSourceStringLength); - } - break; - - case Address32: - /* - * 32-Bit Address Resource - */ - /* - * The base size of this byte stream is 26. If a Resource - * Source string is not NULL, add 1 for the Index + the - * length of the null terminated string Resource Source + - * 1 for the null. - */ - SegmentSize = 26; - - if(NULL != LinkedList->Data.Address16.ResourceSource) - { - SegmentSize += (1 + - LinkedList->Data.Address16.ResourceSourceStringLength); - } - break; - - case ExtendedIrq: - /* - * Extended IRQ Resource - */ - /* - * The base size of this byte stream is 9. This is for an - * Interrupt table length of 1. For each additional - * interrupt, add 4. - * If a Resource Source string is not NULL, add 1 for the - * Index + the length of the null terminated string - * Resource Source + 1 for the null. - */ - SegmentSize = 9; - - SegmentSize += - (LinkedList->Data.ExtendedIrq.NumberOfInterrupts - - 1) * 4; - - if(NULL != ExIrq->ResourceSource) - { - SegmentSize += (1 + - LinkedList->Data.ExtendedIrq.ResourceSourceStringLength); - } - break; - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - - } /* switch (LinkedList->Id) */ - - /* - * Update the total - */ - ByteStreamSizeNeeded += SegmentSize; - - /* - * Point to the next object - */ - LinkedList = (RESOURCE *) ((NATIVE_UINT) LinkedList + - (NATIVE_UINT) LinkedList->Length); - } - - /* - * This is the data the caller needs - */ - *SizeNeeded = ByteStreamSizeNeeded; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCalculateListLength - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource byte stream - * ByteStreamBufferLength - Size of ByteStreamBuffer - * SizeNeeded - UINT32 pointer of the size buffer - * needed to properly return the - * parsed data - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Takes the resource byte stream and parses it once, calculating - * the size buffer needed to hold the linked list that conveys - * the resource data. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCalculateListLength ( - UINT8 *ByteStreamBuffer, - UINT32 ByteStreamBufferLength, - UINT32 *SizeNeeded) -{ - UINT32 BufferSize = 0; - UINT32 BytesParsed = 0; - UINT8 NumberOfInterrupts = 0; - UINT8 NumberOfChannels = 0; - UINT8 ResourceType; - UINT32 StructureSize; - UINT32 BytesConsumed; - UINT8 *Buffer; - UINT8 Temp8; - UINT16 Temp16; - UINT8 Index; - UINT8 AdditionalBytes; - - - FUNCTION_TRACE ("RsCalculateListLength"); - - - while (BytesParsed < ByteStreamBufferLength) - { - /* - * Look at the next byte in the stream - */ - ResourceType = *ByteStreamBuffer; - - /* - * See if this is a small or large resource - */ - if(ResourceType & 0x80) - { - /* - * Large Resource Type - */ - switch (ResourceType) - { - case MEMORY_RANGE_24: - /* - * 24-Bit Memory Resource - */ - BytesConsumed = 12; - - StructureSize = sizeof (MEMORY24_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; - - case LARGE_VENDOR_DEFINED: - /* - * Vendor Defined Resource - */ - Buffer = ByteStreamBuffer; - ++Buffer; - - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - BytesConsumed = Temp16 + 3; - - /* - * Ensure a 32-bit boundary for the structure - */ - Temp16 = (UINT16) ROUND_UP_TO_32BITS (Temp16); - - StructureSize = sizeof (VENDOR_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (Temp16 * sizeof (UINT8)); - break; - - case MEMORY_RANGE_32: - /* - * 32-Bit Memory Range Resource - */ - - BytesConsumed = 20; - - StructureSize = sizeof (MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; - - case FIXED_MEMORY_RANGE_32: - /* - * 32-Bit Fixed Memory Resource - */ - BytesConsumed = 12; - - StructureSize = sizeof(FIXED_MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; - - case DWORD_ADDRESS_SPACE: - /* - * 32-Bit Address Resource - */ - Buffer = ByteStreamBuffer; - - ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - BytesConsumed = Temp16 + 3; - - /* - * Resource Source Index and Resource Source are - * optional elements. Check the length of the - * Bytestream. If it is greater than 23, that - * means that an Index exists and is followed by - * a null termininated string. Therefore, set - * the temp variable to the length minus the minimum - * byte stream length plus the byte for the Index to - * determine the size of the NULL terminiated string. - */ - if (23 < Temp16) - { - Temp8 = (UINT8) (Temp16 - 24); - } - else - { - Temp8 = 0; - } - - /* - * Ensure a 32-bit boundary for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - - StructureSize = sizeof (ADDRESS32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (Temp8 * sizeof (UINT8)); - break; - - case WORD_ADDRESS_SPACE: - /* - * 16-Bit Address Resource - */ - Buffer = ByteStreamBuffer; - - ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - BytesConsumed = Temp16 + 3; - - /* - * Resource Source Index and Resource Source are - * optional elements. Check the length of the - * Bytestream. If it is greater than 13, that - * means that an Index exists and is followed by - * a null termininated string. Therefore, set - * the temp variable to the length minus the minimum - * byte stream length plus the byte for the Index to - * determine the size of the NULL terminiated string. - */ - if (13 < Temp16) - { - Temp8 = (UINT8) (Temp16 - 14); - } - else - { - Temp8 = 0; - } - - /* - * Ensure a 32-bit boundry for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - - StructureSize = sizeof (ADDRESS16_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (Temp8 * sizeof (UINT8)); - break; - - case EXTENDED_IRQ: - /* - * Extended IRQ - */ - Buffer = ByteStreamBuffer; - - ++Buffer; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - BytesConsumed = Temp16 + 3; - - /* - * Point past the length field and the - * Interrupt vector flags to save off the - * Interrupt table length to the Temp8 variable. - */ - Buffer += 3; - Temp8 = *Buffer; - - /* - * To compensate for multiple interrupt numbers, - * Add 4 bytes for each additional interrupts - * greater than 1 - */ - AdditionalBytes = (UINT8) ((Temp8 - 1) * 4); - - /* - * Resource Source Index and Resource Source are - * optional elements. Check the length of the - * Bytestream. If it is greater than 9, that - * means that an Index exists and is followed by - * a null termininated string. Therefore, set - * the temp variable to the length minus the minimum - * byte stream length plus the byte for the Index to - * determine the size of the NULL terminiated string. - */ - if (9 + AdditionalBytes < Temp16) - { - Temp8 = (UINT8) (Temp16 - (9 + AdditionalBytes)); - } - - else - { - Temp8 = 0; - } - - /* - * Ensure a 32-bit boundry for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - - StructureSize = sizeof (EXTENDED_IRQ_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (AdditionalBytes * sizeof (UINT8)) + - (Temp8 * sizeof (UINT8)); - - break; - -/* TBD: [Future] 64-bit not currently supported */ -/* - case 0x8A: - break; -*/ - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - } - } - - else - { - /* - * Small Resource Type - * Only bits 7:3 are valid - */ - ResourceType >>= 3; - - switch (ResourceType) - { - case IRQ_FORMAT: - /* - * IRQ Resource - */ - /* - * Determine if it there are two or three - * trailing bytes - */ - Buffer = ByteStreamBuffer; - Temp8 = *Buffer; - - if(Temp8 & 0x01) - { - BytesConsumed = 4; - } - - else - { - BytesConsumed = 3; - } - - /* - * Point past the descriptor - */ - ++Buffer; - - /* - * Look at the number of bits set - */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - for (Index = 0; Index < 16; Index++) - { - if (Temp16 & 0x1) - { - ++NumberOfInterrupts; - } - - Temp16 >>= 1; - } - - StructureSize = sizeof (IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (NumberOfInterrupts * sizeof (UINT32)); - break; - - - case DMA_FORMAT: - - /* - * DMA Resource - */ - Buffer = ByteStreamBuffer; - - BytesConsumed = 3; - - /* - * Point past the descriptor - */ - ++Buffer; - - /* - * Look at the number of bits set - */ - Temp8 = *Buffer; - - for(Index = 0; Index < 8; Index++) - { - if(Temp8 & 0x1) - { - ++NumberOfChannels; - } - - Temp8 >>= 1; - } - - StructureSize = sizeof (DMA_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (NumberOfChannels * sizeof (UINT32)); - break; - - - case START_DEPENDENT_TAG: - - /* - * Start Dependent Functions Resource - */ - /* - * Determine if it there are two or three trailing bytes - */ - Buffer = ByteStreamBuffer; - Temp8 = *Buffer; - - if(Temp8 & 0x01) - { - BytesConsumed = 2; - } - else - { - BytesConsumed = 1; - } - - - StructureSize = - sizeof (START_DEPENDENT_FUNCTIONS_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; - - - case END_DEPENDENT_TAG: - - /* - * End Dependent Functions Resource - */ - BytesConsumed = 1; - StructureSize = RESOURCE_LENGTH; - break; - - - case IO_PORT_DESCRIPTOR: - /* - * IO Port Resource - */ - BytesConsumed = 8; - StructureSize = sizeof (IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; - - - case FIXED_LOCATION_IO_DESCRIPTOR: - - /* - * Fixed IO Port Resource - */ - BytesConsumed = 4; - StructureSize = sizeof (FIXED_IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - break; - - - case SMALL_VENDOR_DEFINED: - - /* - * Vendor Specific Resource - */ - Buffer = ByteStreamBuffer; - - Temp8 = *Buffer; - Temp8 = (UINT8) (Temp8 & 0x7); - BytesConsumed = Temp8 + 1; - - /* - * Ensure a 32-bit boundry for the structure - */ - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - StructureSize = sizeof (VENDOR_RESOURCE) + - RESOURCE_LENGTH_NO_DATA + - (Temp8 * sizeof (UINT8)); - break; - - - case END_TAG: - - /* - * End Tag - */ - BytesConsumed = 2; - StructureSize = RESOURCE_LENGTH; - ByteStreamBufferLength = BytesParsed; - break; - - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - - } /* switch */ - - } /* if(ResourceType & 0x80) */ - - /* - * Update the return value and counter - */ - BufferSize += StructureSize; - BytesParsed += BytesConsumed; - - /* - * Set the byte stream to point to the next resource - */ - ByteStreamBuffer += BytesConsumed; - - } - - /* - * This is the data the caller needs - */ - *SizeNeeded = BufferSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCalculatePciRoutingTableLength - * - * PARAMETERS: PackageObject - Pointer to the package object - * BufferSizeNeeded - UINT32 pointer of the size buffer - * needed to properly return the - * parsed data - * - * RETURN: Status AE_OK - * - * DESCRIPTION: Given a package representing a PCI routing table, this - * calculates the size of the corresponding linked list of - * descriptions. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCalculatePciRoutingTableLength ( - ACPI_OPERAND_OBJECT *PackageObject, - UINT32 *BufferSizeNeeded) -{ - UINT32 NumberOfElements; - UINT32 TempSizeNeeded = 0; - ACPI_OPERAND_OBJECT **TopObjectList; - UINT32 Index; - ACPI_OPERAND_OBJECT *PackageElement; - ACPI_OPERAND_OBJECT **SubObjectList; - BOOLEAN NameFound; - UINT32 TableIndex; - - - FUNCTION_TRACE ("AcpiRsCalculatePciRoutingTableLength"); - - - NumberOfElements = PackageObject->Package.Count; - - /* - * Calculate the size of the return buffer. - * The base size is the number of elements * the sizes of the - * structures. Additional space for the strings is added below. - * The minus one is to subtract the size of the UINT8 Source[1] - * member because it is added below. - * - * NOTE: The NumberOfElements is incremented by one to add an end - * table structure that is essentially a structure of zeros. - */ - - /* - * But each PRT_ENTRY structure has a pointer to a string and - * the size of that string must be found. - */ - TopObjectList = PackageObject->Package.Elements; - - for (Index = 0; Index < NumberOfElements; Index++) - { - /* - * Dereference the sub-package - */ - PackageElement = *TopObjectList; - - /* - * The SubObjectList will now point to an array of the - * four IRQ elements: Address, Pin, Source and SourceIndex - */ - SubObjectList = PackageElement->Package.Elements; - - /* - * Scan the IrqTableElements for the Source Name String - */ - NameFound = FALSE; - - for (TableIndex = 0; TableIndex < 4 && !NameFound; TableIndex++) - { - if ((ACPI_TYPE_STRING == (*SubObjectList)->Common.Type) || - ((INTERNAL_TYPE_REFERENCE == (*SubObjectList)->Common.Type) && - ((*SubObjectList)->Reference.OpCode == AML_NAMEPATH_OP))) - { - NameFound = TRUE; - } - - else - { - /* - * Look at the next element - */ - SubObjectList++; - } - } - - TempSizeNeeded += (sizeof (PCI_ROUTING_TABLE) - 4); - - /* - * Was a String type found? - */ - if (TRUE == NameFound) - { - if (ACPI_TYPE_STRING == (*SubObjectList)->Common.Type) - { - /* - * The length String.Length field includes the - * terminating NULL - */ - TempSizeNeeded += (*SubObjectList)->String.Length; - } - else - { - TempSizeNeeded += AcpiNsGetPathnameLength ((*SubObjectList)->Reference.Node); - } - } - - else - { - /* - * If no name was found, then this is a NULL, which is - * translated as a UINT32 zero. - */ - TempSizeNeeded += sizeof(UINT32); - } - - - /* Round up the size since each element must be aligned */ - - TempSizeNeeded = ROUND_UP_TO_64BITS (TempSizeNeeded); - - /* - * Point to the next ACPI_OPERAND_OBJECT - */ - TopObjectList++; - } - - - *BufferSizeNeeded = TempSizeNeeded; - - return_ACPI_STATUS (AE_OK); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rscreate.c b/sys/contrib/dev/acpica/Subsystem/Resources/rscreate.c deleted file mode 100644 index 73d60b8..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rscreate.c +++ /dev/null @@ -1,585 +0,0 @@ -/******************************************************************************* - * - * Module Name: rscreate - AcpiRsCreateResourceList - * AcpiRsCreatePciRoutingTable - * AcpiRsCreateByteStream - * $Revision: 25 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSCREATE_C__ - -#include "acpi.h" -#include "acresrc.h" -#include "amlcode.h" -#include "acnamesp.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rscreate") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCreateResourceList - * - * PARAMETERS: - * ByteStreamBuffer - Pointer to the resource byte stream - * OutputBuffer - Pointer to the user's buffer - * OutputBufferLength - Pointer to the size of OutputBuffer - * - * RETURN: Status - AE_OK if okay, else a valid ACPI_STATUS code - * If OutputBuffer is not large enough, OutputBufferLength - * indicates how large OutputBuffer should be, else it - * indicates how may UINT8 elements of OutputBuffer are valid. - * - * DESCRIPTION: Takes the byte stream returned from a _CRS, _PRS control method - * execution and parses the stream to create a linked list - * of device resources. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCreateResourceList ( - ACPI_OPERAND_OBJECT *ByteStreamBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength) -{ - - ACPI_STATUS Status; - UINT8 *ByteStreamStart = NULL; - UINT32 ListSizeNeeded = 0; - UINT32 ByteStreamBufferLength = 0; - - - FUNCTION_TRACE ("RsCreateResourceList"); - - - DEBUG_PRINT (VERBOSE_INFO, ("RsCreateResourceList: ByteStreamBuffer = %p\n", - ByteStreamBuffer)); - - /* - * Params already validated, so we don't re-validate here - */ - - ByteStreamBufferLength = ByteStreamBuffer->Buffer.Length; - ByteStreamStart = ByteStreamBuffer->Buffer.Pointer; - - /* - * Pass the ByteStreamBuffer into a module that can calculate - * the buffer size needed for the linked list - */ - Status = AcpiRsCalculateListLength (ByteStreamStart, - ByteStreamBufferLength, - &ListSizeNeeded); - - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreateResourceList: Status=%X ListSizeNeeded=%X\n", - Status, ListSizeNeeded)); - - /* - * Exit with the error passed back - */ - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * If the linked list will fit into the available buffer - * call to fill in the list - */ - - if (ListSizeNeeded <= *OutputBufferLength) - { - /* - * Zero out the return buffer before proceeding - */ - MEMSET (OutputBuffer, 0x00, *OutputBufferLength); - - Status = AcpiRsByteStreamToList (ByteStreamStart, - ByteStreamBufferLength, - &OutputBuffer); - - /* - * Exit with the error passed back - */ - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - DEBUG_PRINT (VERBOSE_INFO, ("RsByteStreamToList: OutputBuffer = %p\n", - OutputBuffer)); - } - - else - { - *OutputBufferLength = ListSizeNeeded; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - *OutputBufferLength = ListSizeNeeded; - return_ACPI_STATUS (AE_OK); - -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCreatePciRoutingTable - * - * PARAMETERS: - * PackageObject - Pointer to an ACPI_OPERAND_OBJECT - * package - * OutputBuffer - Pointer to the user's buffer - * OutputBufferLength - Size of OutputBuffer - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. - * If the OutputBuffer is too small, the error will be - * AE_BUFFER_OVERFLOW and OutputBufferLength will point - * to the size buffer needed. - * - * DESCRIPTION: Takes the ACPI_OPERAND_OBJECT package and creates a - * linked list of PCI interrupt descriptions - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCreatePciRoutingTable ( - ACPI_OPERAND_OBJECT *PackageObject, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength) -{ - UINT8 *Buffer = OutputBuffer; - ACPI_OPERAND_OBJECT **TopObjectList = NULL; - ACPI_OPERAND_OBJECT **SubObjectList = NULL; - ACPI_OPERAND_OBJECT *PackageElement = NULL; - UINT32 BufferSizeNeeded = 0; - UINT32 NumberOfElements = 0; - UINT32 Index = 0; - PCI_ROUTING_TABLE *UserPrt = NULL; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("RsCreatePciRoutingTable"); - - - /* - * Params already validated, so we don't re-validate here - */ - - Status = AcpiRsCalculatePciRoutingTableLength(PackageObject, - &BufferSizeNeeded); - - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreatePciRoutingTable: BufferSizeNeeded = %X\n", - BufferSizeNeeded)); - - /* - * If the data will fit into the available buffer - * call to fill in the list - */ - if (BufferSizeNeeded <= *OutputBufferLength) - { - /* - * Zero out the return buffer before proceeding - */ - MEMSET (OutputBuffer, 0x00, *OutputBufferLength); - - /* - * Loop through the ACPI_INTERNAL_OBJECTS - Each object should - * contain a UINT32 Address, a UINT8 Pin, a Name and a UINT8 - * SourceIndex. - */ - TopObjectList = PackageObject->Package.Elements; - NumberOfElements = PackageObject->Package.Count; - UserPrt = (PCI_ROUTING_TABLE *) Buffer; - - - Buffer = ROUND_PTR_UP_TO_8 (Buffer, UINT8); - - for (Index = 0; Index < NumberOfElements; Index++) - { - /* - * Point UserPrt past this current structure - * - * NOTE: On the first iteration, UserPrt->Length will - * be zero because we cleared the return buffer earlier - */ - Buffer += UserPrt->Length; - UserPrt = (PCI_ROUTING_TABLE *) Buffer; - - - /* - * Fill in the Length field with the information we - * have at this point. - * The minus four is to subtract the size of the - * UINT8 Source[4] member because it is added below. - */ - UserPrt->Length = (sizeof (PCI_ROUTING_TABLE) -4); - - /* - * Dereference the sub-package - */ - PackageElement = *TopObjectList; - - /* - * The SubObjectList will now point to an array of - * the four IRQ elements: Address, Pin, Source and - * SourceIndex - */ - SubObjectList = PackageElement->Package.Elements; - - /* - * 1) First subobject: Dereference the Address - */ - if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type) - { - UserPrt->Address = (*SubObjectList)->Integer.Value; - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* - * 2) Second subobject: Dereference the Pin - */ - SubObjectList++; - - if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type) - { - UserPrt->Pin = - (UINT32) (*SubObjectList)->Integer.Value; - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* - * 3) Third subobject: Dereference the Source Name - */ - SubObjectList++; - - switch ((*SubObjectList)->Common.Type) - { - case INTERNAL_TYPE_REFERENCE: - if ((*SubObjectList)->Reference.OpCode != AML_NAMEPATH_OP) - { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need name, found reference op %X\n", - (*SubObjectList)->Reference.OpCode)); - return_ACPI_STATUS (AE_BAD_DATA); - } - - Node = (*SubObjectList)->Reference.Node; - - /* TBD: use *remaining* length of the buffer! */ - - Status = AcpiNsHandleToPathname ((ACPI_HANDLE *) Node, - OutputBufferLength, UserPrt->Source); - - UserPrt->Length += STRLEN (UserPrt->Source) + 1; /* include null terminator */ - break; - - - case ACPI_TYPE_STRING: - - STRCPY (UserPrt->Source, - (*SubObjectList)->String.Pointer); - - /* - * Add to the Length field the length of the string - */ - UserPrt->Length += (*SubObjectList)->String.Length; - break; - - - case ACPI_TYPE_INTEGER: - /* - * If this is a number, then the Source Name - * is NULL, since the entire buffer was zeroed - * out, we can leave this alone. - */ - /* - * Add to the Length field the length of - * the UINT32 NULL - */ - UserPrt->Length += sizeof (UINT32); - break; - - - default: - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); - return_ACPI_STATUS (AE_BAD_DATA); - break; - } - - /* Now align the current length */ - - UserPrt->Length = ROUND_UP_TO_64BITS (UserPrt->Length); - - /* - * 4) Fourth subobject: Dereference the Source Index - */ - SubObjectList++; - - if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type) - { - UserPrt->SourceIndex = - (UINT32) (*SubObjectList)->Integer.Value; - } - - else - { - DEBUG_PRINT (ACPI_ERROR, - ("CreatePciRoutingTable: Need Integer, found %s\n", - AcpiCmGetTypeName ((*SubObjectList)->Common.Type))); - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* - * Point to the next ACPI_OPERAND_OBJECT - */ - TopObjectList++; - } - - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreatePciRoutingTable: OutputBuffer = %p\n", - OutputBuffer)); - } - - else - { - *OutputBufferLength = BufferSizeNeeded; - - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - /* - * Report the amount of buffer used - */ - *OutputBufferLength = BufferSizeNeeded; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCreateByteStream - * - * PARAMETERS: - * LinkedListBuffer - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's buffer - * OutputBufferLength - Size of OutputBuffer - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. - * If the OutputBuffer is too small, the error will be - * AE_BUFFER_OVERFLOW and OutputBufferLength will point - * to the size buffer needed. - * - * DESCRIPTION: Takes the linked list of device resources and - * creates a bytestream to be used as input for the - * _SRS control method. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCreateByteStream ( - RESOURCE *LinkedListBuffer, - UINT8 *OutputBuffer, - UINT32 *OutputBufferLength) -{ - ACPI_STATUS Status; - UINT32 ByteStreamSizeNeeded = 0; - - - FUNCTION_TRACE ("RsCreateByteStream"); - - - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreateByteStream: LinkedListBuffer = %p\n", - LinkedListBuffer)); - - /* - * Params already validated, so we don't re-validate here - * - * Pass the LinkedListBuffer into a module that can calculate - * the buffer size needed for the byte stream. - */ - Status = AcpiRsCalculateByteStreamLength (LinkedListBuffer, - &ByteStreamSizeNeeded); - - DEBUG_PRINT (VERBOSE_INFO, - ("RsCreateByteStream: ByteStreamSizeNeeded=%X, %s\n", - ByteStreamSizeNeeded, - AcpiCmFormatException (Status))); - - /* - * Exit with the error passed back - */ - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * If the linked list will fit into the available buffer - * call to fill in the list - */ - - if (ByteStreamSizeNeeded <= *OutputBufferLength) - { - /* - * Zero out the return buffer before proceeding - */ - MEMSET (OutputBuffer, 0x00, *OutputBufferLength); - - Status = AcpiRsListToByteStream (LinkedListBuffer, - ByteStreamSizeNeeded, - &OutputBuffer); - - /* - * Exit with the error passed back - */ - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - DEBUG_PRINT (VERBOSE_INFO, - ("RsListToByteStream: OutputBuffer = %p\n", - OutputBuffer)); - } - else - { - *OutputBufferLength = ByteStreamSizeNeeded; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsdump.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsdump.c deleted file mode 100644 index 70127ee..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsdump.c +++ /dev/null @@ -1,1045 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsdump - Functions do dump out the resource structures. - * $Revision: 16 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSDUMP_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsdump") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpIrq - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpIrq ( - RESOURCE_DATA *Data) -{ - IRQ_RESOURCE *IrqData = (IRQ_RESOURCE*) Data; - UINT8 Index = 0; - - - AcpiOsPrintf ("\tIRQ Resource\n"); - - AcpiOsPrintf ("\t\t%s Triggered\n", - LEVEL_SENSITIVE == IrqData->EdgeLevel ? - "Level" : "Edge"); - - AcpiOsPrintf ("\t\tActive %s\n", - ACTIVE_LOW == IrqData->ActiveHighLow ? - "Low" : "High"); - - AcpiOsPrintf ("\t\t%s\n", - SHARED == IrqData->SharedExclusive ? - "Shared" : "Exclusive"); - - AcpiOsPrintf ("\t\t%X Interrupts ( ", - IrqData->NumberOfInterrupts); - - for (Index = 0; Index < IrqData->NumberOfInterrupts; Index++) - { - AcpiOsPrintf ("%X ", IrqData->Interrupts[Index]); - } - - AcpiOsPrintf (")\n"); - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpDma - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpDma ( - RESOURCE_DATA *Data) -{ - DMA_RESOURCE *DmaData = (DMA_RESOURCE*) Data; - UINT8 Index = 0; - - - AcpiOsPrintf ("\tDMA Resource\n"); - - switch (DmaData->Type) - { - case COMPATIBILITY: - AcpiOsPrintf ("\t\tCompatibility mode\n"); - break; - - case TYPE_A: - AcpiOsPrintf ("\t\tType A\n"); - break; - - case TYPE_B: - AcpiOsPrintf ("\t\tType B\n"); - break; - - case TYPE_F: - AcpiOsPrintf ("\t\tType F\n"); - break; - - default: - AcpiOsPrintf ("\t\tInvalid DMA type\n"); - break; - } - - AcpiOsPrintf ("\t\t%sBus Master\n", - BUS_MASTER == DmaData->BusMaster ? - "" : "Not a "); - - switch (DmaData->Transfer) - { - case TRANSFER_8: - AcpiOsPrintf ("\t\t8-bit only transfer\n"); - break; - - case TRANSFER_8_16: - AcpiOsPrintf ("\t\t8 and 16-bit transfer\n"); - break; - - case TRANSFER_16: - AcpiOsPrintf ("\t\t16 bit only transfer\n"); - break; - - default: - AcpiOsPrintf ("\t\tInvalid transfer preference\n"); - break; - } - - AcpiOsPrintf ("\t\tNumber of Channels: %X ( ", - DmaData->NumberOfChannels); - - for (Index = 0; Index < DmaData->NumberOfChannels; Index++) - { - AcpiOsPrintf ("%X ", DmaData->Channels[Index]); - } - - AcpiOsPrintf (")\n"); - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpStartDependentFunctions - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpStartDependentFunctions ( - RESOURCE_DATA *Data) -{ - START_DEPENDENT_FUNCTIONS_RESOURCE *SdfData = - (START_DEPENDENT_FUNCTIONS_RESOURCE*) Data; - - - AcpiOsPrintf ("\tStart Dependent Functions Resource\n"); - - switch (SdfData->CompatibilityPriority) - { - case GOOD_CONFIGURATION: - AcpiOsPrintf ("\t\tGood configuration\n"); - break; - - case ACCEPTABLE_CONFIGURATION: - AcpiOsPrintf ("\t\tAcceptable configuration\n"); - break; - - case SUB_OPTIMAL_CONFIGURATION: - AcpiOsPrintf ("\t\tSub-optimal configuration\n"); - break; - - default: - AcpiOsPrintf ("\t\tInvalid compatibility priority\n"); - break; - } - - switch(SdfData->PerformanceRobustness) - { - case GOOD_CONFIGURATION: - AcpiOsPrintf ("\t\tGood configuration\n"); - break; - - case ACCEPTABLE_CONFIGURATION: - AcpiOsPrintf ("\t\tAcceptable configuration\n"); - break; - - case SUB_OPTIMAL_CONFIGURATION: - AcpiOsPrintf ("\t\tSub-optimal configuration\n"); - break; - - default: - AcpiOsPrintf ("\t\tInvalid performance " - "robustness preference\n"); - break; - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpIo - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpIo ( - RESOURCE_DATA *Data) -{ - IO_RESOURCE *IoData = (IO_RESOURCE*) Data; - - - AcpiOsPrintf ("\tIo Resource\n"); - - AcpiOsPrintf ("\t\t%d bit decode\n", - DECODE_16 == IoData->IoDecode ? 16 : 10); - - AcpiOsPrintf ("\t\tRange minimum base: %08X\n", - IoData->MinBaseAddress); - - AcpiOsPrintf ("\t\tRange maximum base: %08X\n", - IoData->MaxBaseAddress); - - AcpiOsPrintf ("\t\tAlignment: %08X\n", - IoData->Alignment); - - AcpiOsPrintf ("\t\tRange Length: %08X\n", - IoData->RangeLength); - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpFixedIo - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpFixedIo ( - RESOURCE_DATA *Data) -{ - FIXED_IO_RESOURCE *FixedIoData = (FIXED_IO_RESOURCE*) Data; - - - AcpiOsPrintf ("\tFixed Io Resource\n"); - AcpiOsPrintf ("\t\tRange base address: %08X", - FixedIoData->BaseAddress); - - AcpiOsPrintf ("\t\tRange length: %08X", - FixedIoData->RangeLength); - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpVendorSpecific - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpVendorSpecific ( - RESOURCE_DATA *Data) -{ - VENDOR_RESOURCE *VendorData = (VENDOR_RESOURCE*) Data; - UINT16 Index = 0; - - - AcpiOsPrintf ("\tVendor Specific Resource\n"); - - AcpiOsPrintf ("\t\tLength: %08X\n", VendorData->Length); - - for (Index = 0; Index < VendorData->Length; Index++) - { - AcpiOsPrintf ("\t\tByte %X: %08X\n", - Index, VendorData->Reserved[Index]); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpMemory24 - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpMemory24 ( - RESOURCE_DATA *Data) -{ - MEMORY24_RESOURCE *Memory24Data = (MEMORY24_RESOURCE*) Data; - - - AcpiOsPrintf ("\t24-Bit Memory Range Resource\n"); - - AcpiOsPrintf ("\t\tRead%s\n", - READ_WRITE_MEMORY == - Memory24Data->ReadWriteAttribute ? - "/Write" : " only"); - - AcpiOsPrintf ("\t\tRange minimum base: %08X\n", - Memory24Data->MinBaseAddress); - - AcpiOsPrintf ("\t\tRange maximum base: %08X\n", - Memory24Data->MaxBaseAddress); - - AcpiOsPrintf ("\t\tAlignment: %08X\n", - Memory24Data->Alignment); - - AcpiOsPrintf ("\t\tRange length: %08X\n", - Memory24Data->RangeLength); - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpMemory32 - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpMemory32 ( - RESOURCE_DATA *Data) -{ - MEMORY32_RESOURCE *Memory32Data = (MEMORY32_RESOURCE*) Data; - - - AcpiOsPrintf ("\t32-Bit Memory Range Resource\n"); - - AcpiOsPrintf ("\t\tRead%s\n", - READ_WRITE_MEMORY == - Memory32Data->ReadWriteAttribute ? - "/Write" : " only"); - - AcpiOsPrintf ("\t\tRange minimum base: %08X\n", - Memory32Data->MinBaseAddress); - - AcpiOsPrintf ("\t\tRange maximum base: %08X\n", - Memory32Data->MaxBaseAddress); - - AcpiOsPrintf ("\t\tAlignment: %08X\n", - Memory32Data->Alignment); - - AcpiOsPrintf ("\t\tRange length: %08X\n", - Memory32Data->RangeLength); - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpFixedMemory32 - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpFixedMemory32 ( - RESOURCE_DATA *Data) -{ - FIXED_MEMORY32_RESOURCE *FixedMemory32Data = (FIXED_MEMORY32_RESOURCE*) Data; - - - AcpiOsPrintf ("\t32-Bit Fixed Location Memory Range Resource\n"); - - AcpiOsPrintf ("\t\tRead%s\n", - READ_WRITE_MEMORY == - FixedMemory32Data->ReadWriteAttribute ? - "/Write" : " Only"); - - AcpiOsPrintf ("\t\tRange base address: %08X\n", - FixedMemory32Data->RangeBaseAddress); - - AcpiOsPrintf ("\t\tRange length: %08X\n", - FixedMemory32Data->RangeLength); - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpAddress16 - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpAddress16 ( - RESOURCE_DATA *Data) -{ - ADDRESS16_RESOURCE *Address16Data = (ADDRESS16_RESOURCE*) Data; - - - AcpiOsPrintf ("\t16-Bit Address Space Resource\n"); - AcpiOsPrintf ("\t\tResource Type: "); - - switch (Address16Data->ResourceType) - { - case MEMORY_RANGE: - - AcpiOsPrintf ("Memory Range\n"); - - switch (Address16Data->Attribute.Memory.CacheAttribute) - { - case NON_CACHEABLE_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Noncacheable memory\n"); - break; - - case CACHABLE_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Cacheable memory\n"); - break; - - case WRITE_COMBINING_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Write-combining memory\n"); - break; - - case PREFETCHABLE_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Prefetchable memory\n"); - break; - - default: - AcpiOsPrintf ("\t\tType Specific: " - "Invalid cache attribute\n"); - break; - } - - AcpiOsPrintf ("\t\tType Specific: Read%s\n", - READ_WRITE_MEMORY == - Address16Data->Attribute.Memory.ReadWriteAttribute ? - "/Write" : " Only"); - break; - - case IO_RANGE: - - AcpiOsPrintf ("I/O Range\n"); - - switch (Address16Data->Attribute.Io.RangeAttribute) - { - case NON_ISA_ONLY_RANGES: - AcpiOsPrintf ("\t\tType Specific: " - "Non-ISA Io Addresses\n"); - break; - - case ISA_ONLY_RANGES: - AcpiOsPrintf ("\t\tType Specific: " - "ISA Io Addresses\n"); - break; - - case ENTIRE_RANGE: - AcpiOsPrintf ("\t\tType Specific: " - "ISA and non-ISA Io Addresses\n"); - break; - - default: - AcpiOsPrintf ("\t\tType Specific: " - "Invalid range attribute\n"); - break; - } - break; - - case BUS_NUMBER_RANGE: - - AcpiOsPrintf ("Bus Number Range\n"); - break; - - default: - - AcpiOsPrintf ("Invalid resource type. Exiting.\n"); - return; - } - - AcpiOsPrintf ("\t\tResource %s\n", - CONSUMER == Address16Data->ProducerConsumer ? - "Consumer" : "Producer"); - - AcpiOsPrintf ("\t\t%s decode\n", - SUB_DECODE == Address16Data->Decode ? - "Subtractive" : "Positive"); - - AcpiOsPrintf ("\t\tMin address is %s fixed\n", - ADDRESS_FIXED == Address16Data->MinAddressFixed ? - "" : "not"); - - AcpiOsPrintf ("\t\tMax address is %s fixed\n", - ADDRESS_FIXED == Address16Data->MaxAddressFixed ? - "" : "not"); - - AcpiOsPrintf ("\t\tGranularity: %08X\n", - Address16Data->Granularity); - - AcpiOsPrintf ("\t\tAddress range min: %08X\n", - Address16Data->MinAddressRange); - - AcpiOsPrintf ("\t\tAddress range max: %08X\n", - Address16Data->MaxAddressRange); - - AcpiOsPrintf ("\t\tAddress translation offset: %08X\n", - Address16Data->AddressTranslationOffset); - - AcpiOsPrintf ("\t\tAddress Length: %08X\n", - Address16Data->AddressLength); - - if (0xFF != Address16Data->ResourceSourceIndex) - { - AcpiOsPrintf ("\t\tResource Source Index: %X\n", - Address16Data->ResourceSourceIndex); - AcpiOsPrintf ("\t\tResource Source: %s\n", - Address16Data->ResourceSource); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpAddress32 - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpAddress32 ( - RESOURCE_DATA *Data) -{ - ADDRESS32_RESOURCE *Address32Data = (ADDRESS32_RESOURCE*) Data; - - - AcpiOsPrintf ("\t32-Bit Address Space Resource\n"); - - switch (Address32Data->ResourceType) - { - case MEMORY_RANGE: - - AcpiOsPrintf ("\t\tResource Type: Memory Range\n"); - - switch (Address32Data->Attribute.Memory.CacheAttribute) - { - case NON_CACHEABLE_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Noncacheable memory\n"); - break; - - case CACHABLE_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Cacheable memory\n"); - break; - - case WRITE_COMBINING_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Write-combining memory\n"); - break; - - case PREFETCHABLE_MEMORY: - AcpiOsPrintf ("\t\tType Specific: " - "Prefetchable memory\n"); - break; - - default: - AcpiOsPrintf ("\t\tType Specific: " - "Invalid cache attribute\n"); - break; - } - - AcpiOsPrintf ("\t\tType Specific: Read%s\n", - READ_WRITE_MEMORY == - Address32Data->Attribute.Memory.ReadWriteAttribute ? - "/Write" : " Only"); - break; - - case IO_RANGE: - - AcpiOsPrintf ("\t\tResource Type: Io Range\n"); - - switch (Address32Data->Attribute.Io.RangeAttribute) - { - case NON_ISA_ONLY_RANGES: - AcpiOsPrintf ("\t\tType Specific: " - "Non-ISA Io Addresses\n"); - break; - - case ISA_ONLY_RANGES: - AcpiOsPrintf ("\t\tType Specific: " - "ISA Io Addresses\n"); - break; - - case ENTIRE_RANGE: - AcpiOsPrintf ("\t\tType Specific: " - "ISA and non-ISA Io Addresses\n"); - break; - - default: - AcpiOsPrintf ("\t\tType Specific: " - "Invalid Range attribute"); - break; - } - break; - - case BUS_NUMBER_RANGE: - - AcpiOsPrintf ("\t\tResource Type: Bus Number Range\n"); - break; - - default: - - AcpiOsPrintf ("\t\tInvalid Resource Type..exiting.\n"); - return; - } - - AcpiOsPrintf ("\t\tResource %s\n", - CONSUMER == Address32Data->ProducerConsumer ? - "Consumer" : "Producer"); - - AcpiOsPrintf ("\t\t%s decode\n", - SUB_DECODE == Address32Data->Decode ? - "Subtractive" : "Positive"); - - AcpiOsPrintf ("\t\tMin address is %s fixed\n", - ADDRESS_FIXED == Address32Data->MinAddressFixed ? - "" : "not "); - - AcpiOsPrintf ("\t\tMax address is %s fixed\n", - ADDRESS_FIXED == Address32Data->MaxAddressFixed ? - "" : "not "); - - AcpiOsPrintf ("\t\tGranularity: %08X\n", - Address32Data->Granularity); - - AcpiOsPrintf ("\t\tAddress range min: %08X\n", - Address32Data->MinAddressRange); - - AcpiOsPrintf ("\t\tAddress range max: %08X\n", - Address32Data->MaxAddressRange); - - AcpiOsPrintf ("\t\tAddress translation offset: %08X\n", - Address32Data->AddressTranslationOffset); - - AcpiOsPrintf ("\t\tAddress Length: %08X\n", - Address32Data->AddressLength); - - if(0xFF != Address32Data->ResourceSourceIndex) - { - AcpiOsPrintf ("\t\tResource Source Index: %X\n", - Address32Data->ResourceSourceIndex); - AcpiOsPrintf ("\t\tResource Source: %s\n", - Address32Data->ResourceSource); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpExtendedIrq - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Prints out the various members of the Data structure type. - * - ******************************************************************************/ - -void -AcpiRsDumpExtendedIrq ( - RESOURCE_DATA *Data) -{ - EXTENDED_IRQ_RESOURCE *ExtIrqData = (EXTENDED_IRQ_RESOURCE*) Data; - UINT8 Index = 0; - - - AcpiOsPrintf ("\tExtended IRQ Resource\n"); - - AcpiOsPrintf ("\t\tResource %s\n", - CONSUMER == ExtIrqData->ProducerConsumer ? - "Consumer" : "Producer"); - - AcpiOsPrintf ("\t\t%s\n", - LEVEL_SENSITIVE == ExtIrqData->EdgeLevel ? - "Level" : "Edge"); - - AcpiOsPrintf ("\t\tActive %s\n", - ACTIVE_LOW == ExtIrqData->ActiveHighLow ? - "low" : "high"); - - AcpiOsPrintf ("\t\t%s\n", - SHARED == ExtIrqData->SharedExclusive ? - "Shared" : "Exclusive"); - - AcpiOsPrintf ("\t\tInterrupts : %X ( ", - ExtIrqData->NumberOfInterrupts); - - for (Index = 0; Index < ExtIrqData->NumberOfInterrupts; Index++) - { - AcpiOsPrintf ("%X ", ExtIrqData->Interrupts[Index]); - } - - AcpiOsPrintf (")\n"); - - if(0xFF != ExtIrqData->ResourceSourceIndex) - { - AcpiOsPrintf ("\t\tResource Source Index: %X", - ExtIrqData->ResourceSourceIndex); - AcpiOsPrintf ("\t\tResource Source: %s", - ExtIrqData->ResourceSource); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpResourceList - * - * PARAMETERS: Data - pointer to the resource structure to dump. - * - * RETURN: - * - * DESCRIPTION: Dispatches the structure to the correct dump routine. - * - ******************************************************************************/ - -void -AcpiRsDumpResourceList ( - RESOURCE *Resource) -{ - UINT8 Count = 0; - BOOLEAN Done = FALSE; - - - if (AcpiDbgLevel & TRACE_RESOURCES && _COMPONENT & AcpiDbgLayer) - { - while (!Done) - { - AcpiOsPrintf ("\tResource structure %x.\n", Count++); - - switch (Resource->Id) - { - case Irq: - AcpiRsDumpIrq (&Resource->Data); - break; - - case Dma: - AcpiRsDumpDma (&Resource->Data); - break; - - case StartDependentFunctions: - AcpiRsDumpStartDependentFunctions (&Resource->Data); - break; - - case EndDependentFunctions: - AcpiOsPrintf ("\tEndDependentFunctions Resource\n"); - /* AcpiRsDumpEndDependentFunctions (Resource->Data);*/ - break; - - case Io: - AcpiRsDumpIo (&Resource->Data); - break; - - case FixedIo: - AcpiRsDumpFixedIo (&Resource->Data); - break; - - case VendorSpecific: - AcpiRsDumpVendorSpecific (&Resource->Data); - break; - - case EndTag: - /*RsDumpEndTag (Resource->Data);*/ - AcpiOsPrintf ("\tEndTag Resource\n"); - Done = TRUE; - break; - - case Memory24: - AcpiRsDumpMemory24 (&Resource->Data); - break; - - case Memory32: - AcpiRsDumpMemory32 (&Resource->Data); - break; - - case FixedMemory32: - AcpiRsDumpFixedMemory32 (&Resource->Data); - break; - - case Address16: - AcpiRsDumpAddress16 (&Resource->Data); - break; - - case Address32: - AcpiRsDumpAddress32 (&Resource->Data); - break; - - case ExtendedIrq: - AcpiRsDumpExtendedIrq (&Resource->Data); - break; - - default: - AcpiOsPrintf ("Invalid resource type\n"); - break; - - } - - Resource = (RESOURCE *) ((NATIVE_UINT) Resource + - (NATIVE_UINT) Resource->Length); - } - } - - return; -} - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpIrqList - * - * PARAMETERS: Data - pointer to the routing table to dump. - * - * RETURN: - * - * DESCRIPTION: Dispatches the structures to the correct dump routine. - * - ******************************************************************************/ - -void -AcpiRsDumpIrqList ( - UINT8 *RouteTable) -{ - UINT8 *Buffer = RouteTable; - UINT8 Count = 0; - BOOLEAN Done = FALSE; - PCI_ROUTING_TABLE *PrtElement; - - - if (AcpiDbgLevel & TRACE_RESOURCES && _COMPONENT & AcpiDbgLayer) - { - PrtElement = (PCI_ROUTING_TABLE *) Buffer; - - while (!Done) - { - AcpiOsPrintf ("\tPCI IRQ Routing Table structure %X.\n", Count++); - - AcpiOsPrintf ("\t\tAddress: %X\n", - PrtElement->Address); - - AcpiOsPrintf ("\t\tPin: %X\n", PrtElement->Pin); - - AcpiOsPrintf ("\t\tSource: %s\n", PrtElement->Source); - - AcpiOsPrintf ("\t\tSourceIndex: %X\n", - PrtElement->SourceIndex); - - Buffer += PrtElement->Length; - - PrtElement = (PCI_ROUTING_TABLE *) Buffer; - - if(0 == PrtElement->Length) - { - Done = TRUE; - } - } - } - - return; -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsio.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsio.c deleted file mode 100644 index 9244f58..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsio.c +++ /dev/null @@ -1,637 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsio - AcpiRsIoResource - * AcpiRsFixedIoResource - * AcpiRsIoStream - * AcpiRsFixedIoStream - * AcpiRsDmaResource - * AcpiRsDmaStream - * $Revision: 12 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSIO_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsio") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsIoResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsIoResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsIoResource"); - - /* - * The number of bytes consumed are Constant - */ - *BytesConsumed = 8; - - OutputStruct->Id = Io; - - /* - * Check Decode - */ - Buffer += 1; - Temp8 = *Buffer; - - OutputStruct->Data.Io.IoDecode = Temp8 & 0x01; - - /* - * Check MinBase Address - */ - Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - OutputStruct->Data.Io.MinBaseAddress = Temp16; - - /* - * Check MaxBase Address - */ - Buffer += 2; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - OutputStruct->Data.Io.MaxBaseAddress = Temp16; - - /* - * Check Base alignment - */ - Buffer += 2; - Temp8 = *Buffer; - - OutputStruct->Data.Io.Alignment = Temp8; - - /* - * Check RangeLength - */ - Buffer += 1; - Temp8 = *Buffer; - - OutputStruct->Data.Io.RangeLength = Temp8; - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsFixedIoResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsFixedIoResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (FIXED_IO_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsFixedIoResource"); - - /* - * The number of bytes consumed are Constant - */ - *BytesConsumed = 4; - - OutputStruct->Id = FixedIo; - - /* - * Check Range Base Address - */ - Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - OutputStruct->Data.FixedIo.BaseAddress = Temp16; - - /* - * Check RangeLength - */ - Buffer += 2; - Temp8 = *Buffer; - - OutputStruct->Data.FixedIo.RangeLength = Temp8; - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsIoStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsIoStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - - - FUNCTION_TRACE ("RsIoStream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x47; - Buffer += 1; - - /* - * Io Information Byte - */ - Temp8 = (UINT8) (LinkedList->Data.Io.IoDecode & 0x01); - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the Range minimum base address - */ - Temp16 = (UINT16) LinkedList->Data.Io.MinBaseAddress; - - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - - /* - * Set the Range maximum base address - */ - Temp16 = (UINT16) LinkedList->Data.Io.MaxBaseAddress; - - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - - /* - * Set the base alignment - */ - Temp8 = (UINT8) LinkedList->Data.Io.Alignment; - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the range length - */ - Temp8 = (UINT8) LinkedList->Data.Io.RangeLength; - - *Buffer = Temp8; - Buffer += 1; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsFixedIoStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsFixedIoStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - - - FUNCTION_TRACE ("RsFixedIoStream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x4B; - - Buffer += 1; - - /* - * Set the Range base address - */ - Temp16 = (UINT16) LinkedList->Data.FixedIo.BaseAddress; - - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - - /* - * Set the range length - */ - Temp8 = (UINT8) LinkedList->Data.FixedIo.RangeLength; - - *Buffer = Temp8; - Buffer += 1; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDmaResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsDmaResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT8 Temp8 = 0; - UINT8 Index; - UINT8 i; - UINT32 StructSize = sizeof(DMA_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsDmaResource"); - - /* - * The number of bytes consumed are Constant - */ - *BytesConsumed = 3; - OutputStruct->Id = Dma; - - /* - * Point to the 8-bits of Byte 1 - */ - Buffer += 1; - Temp8 = *Buffer; - - /* Decode the IRQ bits */ - - for (i = 0, Index = 0; Index < 8; Index++) - { - if ((Temp8 >> Index) & 0x01) - { - OutputStruct->Data.Dma.Channels[i] = Index; - i++; - } - } - OutputStruct->Data.Dma.NumberOfChannels = i; - - - /* - * Calculate the structure size based upon the number of interrupts - */ - StructSize += (OutputStruct->Data.Dma.NumberOfChannels - 1) * 4; - - /* - * Point to Byte 2 - */ - Buffer += 1; - Temp8 = *Buffer; - - /* - * Check for transfer preference (Bits[1:0]) - */ - OutputStruct->Data.Dma.Transfer = Temp8 & 0x03; - - if (0x03 == OutputStruct->Data.Dma.Transfer) - { - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* - * Get bus master preference (Bit[2]) - */ - OutputStruct->Data.Dma.BusMaster = (Temp8 >> 2) & 0x01; - - /* - * Get channel speed support (Bits[6:5]) - */ - OutputStruct->Data.Dma.Type = (Temp8 >> 5) & 0x03; - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDmaStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsDmaStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT8 Index; - - - FUNCTION_TRACE ("RsDmaStream"); - - - /* - * The descriptor field is static - */ - *Buffer = 0x2A; - Buffer += 1; - Temp8 = 0; - - /* - * Loop through all of the Channels and set the mask bits - */ - for (Index = 0; - Index < LinkedList->Data.Dma.NumberOfChannels; - Index++) - { - Temp16 = (UINT16) LinkedList->Data.Dma.Channels[Index]; - Temp8 |= 0x1 << Temp16; - } - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the DMA Info - */ - Temp8 = (UINT8) ((LinkedList->Data.Dma.Type & 0x03) << 5); - Temp8 |= ((LinkedList->Data.Dma.BusMaster & 0x01) << 2); - Temp8 |= (LinkedList->Data.Dma.Transfer & 0x03); - - *Buffer = Temp8; - Buffer += 1; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsirq.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsirq.c deleted file mode 100644 index 586195e..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsirq.c +++ /dev/null @@ -1,684 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsirq - AcpiRsIrqResource, - * AcpiRsIrqStream - * AcpiRsExtendedIrqResource - * AcpiRsExtendedIrqStream - * $Revision: 13 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSIRQ_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsirq") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsIrqResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsIrqResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT8 Index; - UINT8 i; - UINT32 StructSize = sizeof (IRQ_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsIrqResource"); - - /* - * The number of bytes consumed are contained in the descriptor - * (Bits:0-1) - */ - Temp8 = *Buffer; - *BytesConsumed = (Temp8 & 0x03) + 1; - OutputStruct->Id = Irq; - - /* - * Point to the 16-bits of Bytes 1 and 2 - */ - Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - OutputStruct->Data.Irq.NumberOfInterrupts = 0; - - /* Decode the IRQ bits */ - - for (i = 0, Index = 0; Index < 16; Index++) - { - if((Temp16 >> Index) & 0x01) - { - OutputStruct->Data.Irq.Interrupts[i] = Index; - i++; - } - } - OutputStruct->Data.Irq.NumberOfInterrupts = i; - - /* - * Calculate the structure size based upon the number of interrupts - */ - StructSize += (OutputStruct->Data.Irq.NumberOfInterrupts - 1) * 4; - - /* - * Point to Byte 3 if it is used - */ - if (4 == *BytesConsumed) - { - Buffer += 2; - Temp8 = *Buffer; - - /* - * Check for HE, LL or HL - */ - if (Temp8 & 0x01) - { - OutputStruct->Data.Irq.EdgeLevel = EDGE_SENSITIVE; - OutputStruct->Data.Irq.ActiveHighLow = ACTIVE_HIGH; - } - - else - { - if (Temp8 & 0x8) - { - OutputStruct->Data.Irq.EdgeLevel = LEVEL_SENSITIVE; - OutputStruct->Data.Irq.ActiveHighLow = ACTIVE_LOW; - } - - else - { - /* - * Only _LL and _HE polarity/trigger interrupts - * are allowed (ACPI spec v1.0b ection 6.4.2.1), - * so an error will occur if we reach this point - */ - return_ACPI_STATUS (AE_BAD_DATA); - } - } - - /* - * Check for sharable - */ - OutputStruct->Data.Irq.SharedExclusive = (Temp8 >> 3) & 0x01; - } - - else - { - /* - * Assume Edge Sensitive, Active High, Non-Sharable - * per ACPI Specification - */ - OutputStruct->Data.Irq.EdgeLevel = EDGE_SENSITIVE; - OutputStruct->Data.Irq.ActiveHighLow = ACTIVE_HIGH; - OutputStruct->Data.Irq.SharedExclusive = EXCLUSIVE; - } - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsIrqStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsIrqStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT8 Index; - BOOLEAN IRQInfoByteNeeded; - - - FUNCTION_TRACE ("RsIrqStream"); - - - /* - * The descriptor field is set based upon whether a third byte is - * needed to contain the IRQ Information. - */ - if (EDGE_SENSITIVE == LinkedList->Data.Irq.EdgeLevel && - ACTIVE_HIGH == LinkedList->Data.Irq.ActiveHighLow && - EXCLUSIVE == LinkedList->Data.Irq.SharedExclusive) - { - *Buffer = 0x22; - IRQInfoByteNeeded = FALSE; - } - else - { - *Buffer = 0x23; - IRQInfoByteNeeded = TRUE; - } - - Buffer += 1; - Temp16 = 0; - - /* - * Loop through all of the interrupts and set the mask bits - */ - for(Index = 0; - Index < LinkedList->Data.Irq.NumberOfInterrupts; - Index++) - { - Temp8 = (UINT8) LinkedList->Data.Irq.Interrupts[Index]; - Temp16 |= 0x1 << Temp8; - } - - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - - /* - * Set the IRQ Info byte if needed. - */ - if (IRQInfoByteNeeded) - { - Temp8 = 0; - Temp8 = (UINT8) ((LinkedList->Data.Irq.SharedExclusive & - 0x01) << 4); - - if (LEVEL_SENSITIVE == LinkedList->Data.Irq.EdgeLevel && - ACTIVE_LOW == LinkedList->Data.Irq.ActiveHighLow) - { - Temp8 |= 0x08; - } - - else - { - Temp8 |= 0x01; - } - - *Buffer = Temp8; - Buffer += 1; - } - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsExtendedIrqResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsExtendedIrqResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT8 Index; - UINT32 StructSize = sizeof (EXTENDED_IRQ_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsExtendedIrqResource"); - - /* - * Point past the Descriptor to get the number of bytes consumed - */ - Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - *BytesConsumed = Temp16 + 3; - OutputStruct->Id = ExtendedIrq; - - /* - * Point to the Byte3 - */ - Buffer += 2; - Temp8 = *Buffer; - - OutputStruct->Data.ExtendedIrq.ProducerConsumer = Temp8 & 0x01; - - /* - * Check for HE, LL or HL - */ - if(Temp8 & 0x02) - { - OutputStruct->Data.ExtendedIrq.EdgeLevel = EDGE_SENSITIVE; - OutputStruct->Data.ExtendedIrq.ActiveHighLow = ACTIVE_HIGH; - } - - else - { - if(Temp8 & 0x4) - { - OutputStruct->Data.ExtendedIrq.EdgeLevel = LEVEL_SENSITIVE; - OutputStruct->Data.ExtendedIrq.ActiveHighLow = ACTIVE_LOW; - } - - else - { - /* - * Only _LL and _HE polarity/trigger interrupts - * are allowed (ACPI spec v1.0b ection 6.4.2.1), - * so an error will occur if we reach this point - */ - return_ACPI_STATUS (AE_BAD_DATA); - } - } - - /* - * Check for sharable - */ - OutputStruct->Data.ExtendedIrq.SharedExclusive = - (Temp8 >> 3) & 0x01; - - /* - * Point to Byte4 (IRQ Table length) - */ - Buffer += 1; - Temp8 = *Buffer; - - OutputStruct->Data.ExtendedIrq.NumberOfInterrupts = Temp8; - - /* - * Add any additional structure size to properly calculate - * the next pointer at the end of this function - */ - StructSize += (Temp8 - 1) * 4; - - /* - * Point to Byte5 (First IRQ Number) - */ - Buffer += 1; - - /* - * Cycle through every IRQ in the table - */ - for (Index = 0; Index < Temp8; Index++) - { - OutputStruct->Data.ExtendedIrq.Interrupts[Index] = - (UINT32)*Buffer; - - /* Point to the next IRQ */ - - Buffer += 4; - } - - /* - * This will leave us pointing to the Resource Source Index - * If it is present, then save it off and calculate the - * pointer to where the null terminated string goes: - * Each Interrupt takes 32-bits + the 5 bytes of the - * stream that are default. - */ - if (*BytesConsumed > - (UINT32)(OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * - 4) + 5) - { - /* Dereference the Index */ - - Temp8 = *Buffer; - OutputStruct->Data.ExtendedIrq.ResourceSourceIndex = - (UINT32)Temp8; - - /* Point to the String */ - - Buffer += 1; - - /* Copy the string into the buffer */ - - Index = 0; - - while (0x00 != *Buffer) - { - OutputStruct->Data.ExtendedIrq.ResourceSource[Index] = - *Buffer; - - Buffer += 1; - Index += 1; - } - - /* - * Add the terminating null - */ - OutputStruct->Data.ExtendedIrq.ResourceSource[Index] = 0x00; - OutputStruct->Data.ExtendedIrq.ResourceSourceStringLength = - Index + 1; - - /* - * In order for the StructSize to fall on a 32-bit boundry, - * calculate the length of the string and expand the - * StructSize to the next 32-bit boundry. - */ - Temp8 = (UINT8) (Index + 1); - Temp8 = (UINT8) ROUND_UP_TO_32BITS (Temp8); - } - - else - { - OutputStruct->Data.ExtendedIrq.ResourceSourceIndex = 0x00; - OutputStruct->Data.ExtendedIrq.ResourceSourceStringLength = 0; - OutputStruct->Data.ExtendedIrq.ResourceSource[0] = 0x00; - } - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsExtendedIrqStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsExtendedIrqStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 *LengthField; - UINT8 Temp8 = 0; - UINT8 Index; - NATIVE_CHAR *TempPointer = NULL; - - - FUNCTION_TRACE ("RsExtendedIrqStream"); - - - /* - * The descriptor field is static - */ - *Buffer = 0x89; - Buffer += 1; - - /* - * Set a pointer to the Length field - to be filled in later - */ - - LengthField = (UINT16 *)Buffer; - Buffer += 2; - - /* - * Set the Interrupt vector flags - */ - Temp8 = (UINT8)(LinkedList->Data.ExtendedIrq.ProducerConsumer & 0x01); - - Temp8 |= ((LinkedList->Data.ExtendedIrq.SharedExclusive & 0x01) << 3); - - if (LEVEL_SENSITIVE == LinkedList->Data.ExtendedIrq.EdgeLevel && - ACTIVE_LOW == LinkedList->Data.ExtendedIrq.ActiveHighLow) - { - Temp8 |= 0x04; - } - else - { - Temp8 |= 0x02; - } - - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the Interrupt table length - */ - Temp8 = (UINT8) LinkedList->Data.ExtendedIrq.NumberOfInterrupts; - - *Buffer = Temp8; - Buffer += 1; - - for (Index = 0; - Index < LinkedList->Data.ExtendedIrq.NumberOfInterrupts; - Index++) - { - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.ExtendedIrq.Interrupts[Index]); - Buffer += 4; - } - - /* - * Resource Source Index and Resource Source are optional - */ - if (0 != LinkedList->Data.ExtendedIrq.ResourceSourceStringLength) - { - *Buffer = (UINT8) LinkedList->Data.ExtendedIrq.ResourceSourceIndex; - Buffer += 1; - - TempPointer = (NATIVE_CHAR *) Buffer; - - /* - * Copy the string - */ - STRCPY (TempPointer, LinkedList->Data.ExtendedIrq.ResourceSource); - - /* - * Buffer needs to be set to the length of the sting + one for the - * terminating null - */ - Buffer += (STRLEN (LinkedList->Data.ExtendedIrq.ResourceSource) + 1); - } - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - /* - * Set the length field to the number of bytes consumed - * minus the header size (3 bytes) - */ - *LengthField = (UINT16) (*BytesConsumed - 3); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rslist.c b/sys/contrib/dev/acpica/Subsystem/Resources/rslist.c deleted file mode 100644 index 60e10b4..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rslist.c +++ /dev/null @@ -1,605 +0,0 @@ -/******************************************************************************* - * - * Module Name: rslist - AcpiRsByteStreamToList - * AcpiListToByteStream - * $Revision: 11 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSLIST_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rslist") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsByteStreamToList - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource byte stream - * ByteStreamBufferLength - Length of ByteStreamBuffer - * OutputBuffer - Pointer to the buffer that will - * contain the output structures - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Takes the resource byte stream and parses it, creating a - * linked list of resources in the caller's output buffer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsByteStreamToList ( - UINT8 *ByteStreamBuffer, - UINT32 ByteStreamBufferLength, - UINT8 **OutputBuffer) -{ - ACPI_STATUS Status; - UINT32 BytesParsed = 0; - UINT8 ResourceType = 0; - UINT32 BytesConsumed = 0; - UINT8 **Buffer = OutputBuffer; - UINT32 StructureSize = 0; - BOOLEAN EndTagProcessed = FALSE; - - - FUNCTION_TRACE ("RsByteStreamToList"); - - - while (BytesParsed < ByteStreamBufferLength && - FALSE == EndTagProcessed) - { - /* - * Look at the next byte in the stream - */ - ResourceType = *ByteStreamBuffer; - - /* - * See if this is a small or large resource - */ - if(ResourceType & 0x80) - { - /* - * Large Resource Type - */ - switch (ResourceType) - { - case MEMORY_RANGE_24: - /* - * 24-Bit Memory Resource - */ - Status = AcpiRsMemory24Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case LARGE_VENDOR_DEFINED: - /* - * Vendor Defined Resource - */ - Status = AcpiRsVendorResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case MEMORY_RANGE_32: - /* - * 32-Bit Memory Range Resource - */ - Status = AcpiRsMemory32RangeResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case FIXED_MEMORY_RANGE_32: - /* - * 32-Bit Fixed Memory Resource - */ - Status = AcpiRsFixedMemory32Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case DWORD_ADDRESS_SPACE: - /* - * 32-Bit Address Resource - */ - Status = AcpiRsAddress32Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case WORD_ADDRESS_SPACE: - /* - * 16-Bit Address Resource - */ - Status = AcpiRsAddress16Resource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case EXTENDED_IRQ: - /* - * Extended IRQ - */ - Status = AcpiRsExtendedIrqResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - -/* TBD: [Future] 64-bit not currently supported */ -/* - case 0x8A: - break; -*/ - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - } - } - - else - { - /* - * Small Resource Type - * Only bits 7:3 are valid - */ - ResourceType >>= 3; - - switch(ResourceType) - { - case IRQ_FORMAT: - /* - * IRQ Resource - */ - Status = AcpiRsIrqResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case DMA_FORMAT: - /* - * DMA Resource - */ - Status = AcpiRsDmaResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case START_DEPENDENT_TAG: - /* - * Start Dependent Functions Resource - */ - Status = AcpiRsStartDependentFunctionsResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case END_DEPENDENT_TAG: - /* - * End Dependent Functions Resource - */ - Status = AcpiRsEndDependentFunctionsResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case IO_PORT_DESCRIPTOR: - /* - * IO Port Resource - */ - Status = AcpiRsIoResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case FIXED_LOCATION_IO_DESCRIPTOR: - /* - * Fixed IO Port Resource - */ - Status = AcpiRsFixedIoResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case SMALL_VENDOR_DEFINED: - /* - * Vendor Specific Resource - */ - Status = AcpiRsVendorResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - - break; - - case END_TAG: - /* - * End Tag - */ - Status = AcpiRsEndTagResource(ByteStreamBuffer, - &BytesConsumed, - Buffer, - &StructureSize); - EndTagProcessed = TRUE; - - break; - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_AML_ERROR); - break; - - } /* switch */ - } /* end else */ - - /* - * Update the return value and counter - */ - BytesParsed += BytesConsumed; - - /* - * Set the byte stream to point to the next resource - */ - ByteStreamBuffer += BytesConsumed; - - /* - * Set the Buffer to the next structure - */ - *Buffer += StructureSize; - - } /* end while */ - - /* - * Check the reason for exiting the while loop - */ - if (TRUE != EndTagProcessed) - { - return_ACPI_STATUS (AE_AML_ERROR); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsListToByteStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * ByteSteamSizeNeeded - Calculated size of the byte stream - * needed from calling - * AcpiRsCalculateByteStreamLength() - * The size of the OutputBuffer is - * guaranteed to be >= - * ByteStreamSizeNeeded - * OutputBuffer - Pointer to the buffer that will - * contain the byte stream - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Takes the resource linked list and parses it, creating a - * byte stream of resources in the caller's output buffer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsListToByteStream ( - RESOURCE *LinkedList, - UINT32 ByteStreamSizeNeeded, - UINT8 **OutputBuffer) -{ - ACPI_STATUS Status; - UINT8 *Buffer = *OutputBuffer; - UINT32 BytesConsumed = 0; - BOOLEAN Done = FALSE; - - - FUNCTION_TRACE ("RsListToByteStream"); - - while (!Done) - { - switch (LinkedList->Id) - { - case Irq: - /* - * IRQ Resource - */ - Status = AcpiRsIrqStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case Dma: - /* - * DMA Resource - */ - Status = AcpiRsDmaStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case StartDependentFunctions: - /* - * Start Dependent Functions Resource - */ - Status = AcpiRsStartDependentFunctionsStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case EndDependentFunctions: - /* - * End Dependent Functions Resource - */ - Status = AcpiRsEndDependentFunctionsStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case Io: - /* - * IO Port Resource - */ - Status = AcpiRsIoStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case FixedIo: - /* - * Fixed IO Port Resource - */ - Status = AcpiRsFixedIoStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case VendorSpecific: - /* - * Vendor Defined Resource - */ - Status = AcpiRsVendorStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case EndTag: - /* - * End Tag - */ - Status = AcpiRsEndTagStream (LinkedList, - &Buffer, - &BytesConsumed); - - /* - * An End Tag indicates the end of the Resource Template - */ - Done = TRUE; - break; - - case Memory24: - /* - * 24-Bit Memory Resource - */ - Status = AcpiRsMemory24Stream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case Memory32: - /* - * 32-Bit Memory Range Resource - */ - Status = AcpiRsMemory32RangeStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case FixedMemory32: - /* - * 32-Bit Fixed Memory Resource - */ - Status = AcpiRsFixedMemory32Stream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case Address16: - /* - * 16-Bit Address Descriptor Resource - */ - Status = AcpiRsAddress16Stream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case Address32: - /* - * 32-Bit Address Descriptor Resource - */ - Status = AcpiRsAddress32Stream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - case ExtendedIrq: - /* - * Extended IRQ Resource - */ - Status = AcpiRsExtendedIrqStream (LinkedList, - &Buffer, - &BytesConsumed); - break; - - default: - /* - * If we get here, everything is out of sync, - * so exit with an error - */ - return_ACPI_STATUS (AE_BAD_DATA); - break; - - } /* switch (LinkedList->Id) */ - - /* - * Set the Buffer to point to the open byte - */ - Buffer += BytesConsumed; - - /* - * Point to the next object - */ - LinkedList = (RESOURCE *) ((NATIVE_UINT) LinkedList + - (NATIVE_UINT) LinkedList->Length); - } - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsmemory.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsmemory.c deleted file mode 100644 index 21af073..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsmemory.c +++ /dev/null @@ -1,661 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsmem24 - AcpiRsMemory24Resource - * AcpiRsMemory24Stream - * AcpiRsMemory32RangeResource - * AcpiRsFixedMemory32Resource - * AcpiRsMemory32RangeStream - * AcpiRsFixedMemory32Stream - * $Revision: 12 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSMEMORY_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsmemory") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsMemory24Resource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsMemory24Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (MEMORY24_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsMemory24Resource"); - - /* - * Point past the Descriptor to get the number of bytes consumed - */ - Buffer += 1; - - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - Buffer += 2; - *BytesConsumed = Temp16 + 3; - OutputStruct->Id = Memory24; - - /* - * Check Byte 3 the Read/Write bit - */ - Temp8 = *Buffer; - Buffer += 1; - OutputStruct->Data.Memory24.ReadWriteAttribute = Temp8 & 0x01; - - /* - * Get MinBaseAddress (Bytes 4-5) - */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - Buffer += 2; - OutputStruct->Data.Memory24.MinBaseAddress = Temp16; - - /* - * Get MaxBaseAddress (Bytes 6-7) - */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - Buffer += 2; - OutputStruct->Data.Memory24.MaxBaseAddress = Temp16; - - /* - * Get Alignment (Bytes 8-9) - */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - Buffer += 2; - OutputStruct->Data.Memory24.Alignment = Temp16; - - /* - * Get RangeLength (Bytes 10-11) - */ - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - OutputStruct->Data.Memory24.RangeLength = Temp16; - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsMemory24Stream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsMemory24Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - - - FUNCTION_TRACE ("RsMemory24Stream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x81; - Buffer += 1; - - /* - * The length field is static - */ - Temp16 = 0x09; - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - - /* - * Set the Information Byte - */ - Temp8 = (UINT8) (LinkedList->Data.Memory24.ReadWriteAttribute & 0x01); - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the Range minimum base address - */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MinBaseAddress); - Buffer += 2; - - /* - * Set the Range maximum base address - */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.MaxBaseAddress); - Buffer += 2; - - /* - * Set the base alignment - */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.Alignment); - Buffer += 2; - - /* - * Set the range length - */ - MOVE_UNALIGNED16_TO_16 (Buffer, &LinkedList->Data.Memory24.RangeLength); - Buffer += 2; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsMemory32RangeResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsMemory32RangeResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsMemory32RangeResource"); - - /* - * Point past the Descriptor to get the number of bytes consumed - */ - Buffer += 1; - - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - Buffer += 2; - *BytesConsumed = Temp16 + 3; - - OutputStruct->Id = Memory32; - - /* - * Point to the place in the output buffer where the data portion will - * begin. - * 1. Set the RESOURCE_DATA * Data to point to it's own address, then - * 2. Set the pointer to the next address. - * - * NOTE: OutputStruct->Data is cast to UINT8, otherwise, this addition adds - * 4 * sizeof(RESOURCE_DATA) instead of 4 * sizeof(UINT8) - */ - - /* - * Check Byte 3 the Read/Write bit - */ - Temp8 = *Buffer; - Buffer += 1; - - OutputStruct->Data.Memory32.ReadWriteAttribute = Temp8 & 0x01; - - /* - * Get MinBaseAddress (Bytes 4-7) - */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MinBaseAddress, - Buffer); - Buffer += 4; - - /* - * Get MaxBaseAddress (Bytes 8-11) - */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.MaxBaseAddress, - Buffer); - Buffer += 4; - - /* - * Get Alignment (Bytes 12-15) - */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.Alignment, Buffer); - Buffer += 4; - - /* - * Get RangeLength (Bytes 16-19) - */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.Memory32.RangeLength, Buffer); - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsFixedMemory32Resource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsFixedMemory32Resource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT32 StructSize = sizeof (FIXED_MEMORY32_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsFixedMemory32Resource"); - - /* - * Point past the Descriptor to get the number of bytes consumed - */ - Buffer += 1; - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - Buffer += 2; - *BytesConsumed = Temp16 + 3; - - OutputStruct->Id = FixedMemory32; - - /* - * Check Byte 3 the Read/Write bit - */ - Temp8 = *Buffer; - Buffer += 1; - OutputStruct->Data.FixedMemory32.ReadWriteAttribute = Temp8 & 0x01; - - /* - * Get RangeBaseAddress (Bytes 4-7) - */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeBaseAddress, - Buffer); - Buffer += 4; - - /* - * Get RangeLength (Bytes 8-11) - */ - MOVE_UNALIGNED32_TO_32 (&OutputStruct->Data.FixedMemory32.RangeLength, - Buffer); - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsMemory32RangeStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsMemory32RangeStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - - - FUNCTION_TRACE ("RsMemory32RangeStream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x85; - Buffer += 1; - - /* - * The length field is static - */ - Temp16 = 0x11; - - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - - /* - * Set the Information Byte - */ - Temp8 = (UINT8) (LinkedList->Data.Memory32.ReadWriteAttribute & 0x01); - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the Range minimum base address - */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MinBaseAddress); - Buffer += 4; - - /* - * Set the Range maximum base address - */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.MaxBaseAddress); - Buffer += 4; - - /* - * Set the base alignment - */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.Alignment); - Buffer += 4; - - /* - * Set the range length - */ - MOVE_UNALIGNED32_TO_32 (Buffer, &LinkedList->Data.Memory32.RangeLength); - Buffer += 4; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsFixedMemory32Stream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsFixedMemory32Stream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - - - FUNCTION_TRACE ("RsFixedMemory32Stream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x86; - Buffer += 1; - - /* - * The length field is static - */ - Temp16 = 0x09; - - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - - /* - * Set the Information Byte - */ - Temp8 = (UINT8) (LinkedList->Data.FixedMemory32.ReadWriteAttribute & 0x01); - *Buffer = Temp8; - Buffer += 1; - - /* - * Set the Range base address - */ - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.FixedMemory32.RangeBaseAddress); - Buffer += 4; - - /* - * Set the range length - */ - MOVE_UNALIGNED32_TO_32 (Buffer, - &LinkedList->Data.FixedMemory32.RangeLength); - Buffer += 4; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsmisc.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsmisc.c deleted file mode 100644 index 2336ab9..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsmisc.c +++ /dev/null @@ -1,726 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsmisc - AcpiRsEndTagResource - * AcpiRsEndTagStream - * AcpiRsVendorResource - * AcpiRsVendorStream - * AcpiRsStartDependentFunctionsResource - * AcpiRsEndDependentFunctionsResource - * AcpiRsStartDependentFunctionsStream - * AcpiRsEndDependentFunctionsStream - * $Revision: 12 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSMISC_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsmisc") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsEndTagResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsEndTagResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT32 StructSize = RESOURCE_LENGTH; - - - FUNCTION_TRACE ("RsEndTagResource"); - - /* - * The number of bytes consumed is static - */ - *BytesConsumed = 2; - - /* - * Fill out the structure - */ - OutputStruct->Id = EndTag; - - /* - * Set the Length parameter - */ - OutputStruct->Length = 0; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsEndTagStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsEndTagStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT8 Temp8 = 0; - - - FUNCTION_TRACE ("RsEndTagStream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x79; - Buffer += 1; - - /* - * Set the Checksum - zero means that the resource data is treated as if - * the checksum operation succeeded (ACPI Spec 1.0b Section 6.4.2.8) - */ - Temp8 = 0; - - *Buffer = Temp8; - Buffer += 1; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsVendorResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsVendorResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT8 Index; - UINT32 StructSize = sizeof (VENDOR_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsVendorResource"); - - /* - * Dereference the Descriptor to find if this is a large or small item. - */ - Temp8 = *Buffer; - - if (Temp8 & 0x80) - { - /* - * Large Item - */ - /* Point to the length field */ - - Buffer += 1; - - /* Dereference */ - - MOVE_UNALIGNED16_TO_16 (&Temp16, Buffer); - - /* Calculate bytes consumed */ - - *BytesConsumed = Temp16 + 3; - - /* Point to the first vendor byte */ - - Buffer += 2; - } - - else - { - /* - * Small Item - */ - - /* Dereference the size */ - - Temp16 = (UINT8)(*Buffer & 0x07); - - /* Calculate bytes consumed */ - - *BytesConsumed = Temp16 + 1; - - /* Point to the first vendor byte */ - - Buffer += 1; - } - - OutputStruct->Id = VendorSpecific; - OutputStruct->Data.VendorSpecific.Length = Temp16; - - for (Index = 0; Index < Temp16; Index++) - { - OutputStruct->Data.VendorSpecific.Reserved[Index] = *Buffer; - Buffer += 1; - } - - /* - * In order for the StructSize to fall on a 32-bit boundry, - * calculate the length of the vendor string and expand the - * StructSize to the next 32-bit boundry. - */ - StructSize += ROUND_UP_TO_32BITS (Temp16); - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsVendorStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsVendorStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT16 Temp16 = 0; - UINT8 Temp8 = 0; - UINT8 Index; - - - FUNCTION_TRACE ("RsVendorStream"); - - /* - * Dereference the length to find if this is a large or small item. - */ - - if(LinkedList->Data.VendorSpecific.Length > 7) - { - /* - * Large Item - */ - /* - * Set the descriptor field and length bytes - */ - *Buffer = 0x84; - Buffer += 1; - - Temp16 = (UINT16) LinkedList->Data.VendorSpecific.Length; - - MOVE_UNALIGNED16_TO_16 (Buffer, &Temp16); - Buffer += 2; - } - - else - { - /* - * Small Item - */ - - /* - * Set the descriptor field - */ - Temp8 = 0x70; - Temp8 |= LinkedList->Data.VendorSpecific.Length; - - *Buffer = Temp8; - Buffer += 1; - } - - /* - * Loop through all of the Vendor Specific fields - */ - for (Index = 0; Index < LinkedList->Data.VendorSpecific.Length; Index++) - { - Temp8 = LinkedList->Data.VendorSpecific.Reserved[Index]; - - *Buffer = Temp8; - Buffer += 1; - } - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsStartDependentFunctionsResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsStartDependentFunctionsResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - UINT8 *Buffer = ByteStreamBuffer; - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT8 Temp8 = 0; - UINT32 StructSize = - sizeof(START_DEPENDENT_FUNCTIONS_RESOURCE) + - RESOURCE_LENGTH_NO_DATA; - - - FUNCTION_TRACE ("RsStartDependentFunctionsResource"); - - /* - * The number of bytes consumed are contained in the descriptor (Bits:0-1) - */ - Temp8 = *Buffer; - - *BytesConsumed = (Temp8 & 0x01) + 1; - - OutputStruct->Id = StartDependentFunctions; - - /* - * Point to Byte 1 if it is used - */ - if (2 == *BytesConsumed) - { - Buffer += 1; - Temp8 = *Buffer; - - /* - * Check Compatibility priority - */ - OutputStruct->Data.StartDependentFunctions.CompatibilityPriority = - Temp8 & 0x03; - - if (3 == OutputStruct->Data.StartDependentFunctions.CompatibilityPriority) - { - return_ACPI_STATUS (AE_AML_ERROR); - } - - /* - * Check Performance/Robustness preference - */ - OutputStruct->Data.StartDependentFunctions.PerformanceRobustness = - (Temp8 >> 2) & 0x03; - - if (3 == OutputStruct->Data.StartDependentFunctions.PerformanceRobustness) - { - return_ACPI_STATUS (AE_AML_ERROR); - } - } - - else - { - OutputStruct->Data.StartDependentFunctions.CompatibilityPriority = - ACCEPTABLE_CONFIGURATION; - - OutputStruct->Data.StartDependentFunctions.PerformanceRobustness = - ACCEPTABLE_CONFIGURATION; - } - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsEndDependentFunctionsResource - * - * PARAMETERS: ByteStreamBuffer - Pointer to the resource input byte - * stream - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes consumed from - * the ByteStreamBuffer - * OutputBuffer - Pointer to the user's return buffer - * StructureSize - UINT32 pointer that is filled with - * the number of bytes in the filled - * in structure - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the resource byte stream and fill out the appropriate - * structure pointed to by the OutputBuffer. Return the - * number of bytes consumed from the byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsEndDependentFunctionsResource ( - UINT8 *ByteStreamBuffer, - UINT32 *BytesConsumed, - UINT8 **OutputBuffer, - UINT32 *StructureSize) -{ - RESOURCE *OutputStruct = (RESOURCE *) * OutputBuffer; - UINT32 StructSize = RESOURCE_LENGTH; - - - FUNCTION_TRACE ("RsEndDependentFunctionsResource"); - - /* - * The number of bytes consumed is static - */ - *BytesConsumed = 1; - - /* - * Fill out the structure - */ - OutputStruct->Id = EndDependentFunctions; - - /* - * Set the Length parameter - */ - OutputStruct->Length = StructSize; - - /* - * Return the final size of the structure - */ - *StructureSize = StructSize; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsStartDependentFunctionsStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsStartDependentFunctionsStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed) -{ - UINT8 *Buffer = *OutputBuffer; - UINT8 Temp8 = 0; - - - FUNCTION_TRACE ("RsStartDependentFunctionsStream"); - - /* - * The descriptor field is set based upon whether a byte is needed - * to contain Priority data. - */ - if (ACCEPTABLE_CONFIGURATION == - LinkedList->Data.StartDependentFunctions.CompatibilityPriority && - ACCEPTABLE_CONFIGURATION == - LinkedList->Data.StartDependentFunctions.PerformanceRobustness) - { - *Buffer = 0x30; - } - else - { - *Buffer = 0x31; - Buffer += 1; - - /* - * Set the Priority Byte Definition - */ - Temp8 = 0; - Temp8 = (UINT8) - ((LinkedList->Data.StartDependentFunctions.PerformanceRobustness & - 0x03) << 2); - Temp8 |= - (LinkedList->Data.StartDependentFunctions.CompatibilityPriority & - 0x03); - - *Buffer = Temp8; - } - - Buffer += 1; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsEndDependentFunctionsStream - * - * PARAMETERS: LinkedList - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's return buffer - * BytesConsumed - UINT32 pointer that is filled with - * the number of bytes of the - * OutputBuffer used - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code - * - * DESCRIPTION: Take the linked list resource structure and fills in the - * the appropriate bytes in a byte stream - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsEndDependentFunctionsStream ( - RESOURCE *LinkedList, - UINT8 **OutputBuffer, - UINT32 *BytesConsumed - ) -{ - UINT8 *Buffer = *OutputBuffer; - - - FUNCTION_TRACE ("RsEndDependentFunctionsStream"); - - /* - * The descriptor field is static - */ - *Buffer = 0x38; - Buffer += 1; - - /* - * Return the number of bytes consumed in this operation - */ - *BytesConsumed = (UINT32) ((NATIVE_UINT) Buffer - - (NATIVE_UINT) *OutputBuffer); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsutils.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsutils.c deleted file mode 100644 index fb14be3..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsutils.c +++ /dev/null @@ -1,511 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsutils - Utilities for the resource manager - * $Revision: 14 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSUTILS_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acresrc.h" - - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetPrtMethodData - * - * PARAMETERS: Handle - a handle to the containing object - * RetBuffer - a pointer to a buffer structure for the - * results - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get the _PRT value of an object - * contained in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetPrtMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_OPERAND_OBJECT *RetObj; - ACPI_STATUS Status; - UINT32 BufferSpaceNeeded; - - - FUNCTION_TRACE ("RsGetPrtMethodData"); - - - /* already validated params, so we won't repeat here */ - - BufferSpaceNeeded = RetBuffer->Length; - - /* - * Execute the method, no parameters - */ - Status = AcpiNsEvaluateRelative (Handle, "_PRT", NULL, &RetObj); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (!RetObj) - { - /* Return object is required */ - - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _PRT\n")); - return_ACPI_STATUS (AE_TYPE); - } - - - /* - * The return object will be a package, so check the - * parameters. If the return object is not a package, - * then the underlying AML code is corrupt or improperly - * written. - */ - if (ACPI_TYPE_PACKAGE != RetObj->Common.Type) - { - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - /* - * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. - */ - Status = AcpiRsCreatePciRoutingTable (RetObj, - RetBuffer->Pointer, - &BufferSpaceNeeded); - - /* - * Tell the user how much of the buffer we have used or is needed - * and return the final status. - */ - RetBuffer->Length = BufferSpaceNeeded; - - - /* On exit, we must delete the object returned by evaluateObject */ - -Cleanup: - - AcpiCmRemoveReference (RetObj); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetCrsMethodData - * - * PARAMETERS: Handle - a handle to the containing object - * RetBuffer - a pointer to a buffer structure for the - * results - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get the _CRS value of an object - * contained in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetCrsMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_OPERAND_OBJECT *RetObj; - ACPI_STATUS Status; - UINT32 BufferSpaceNeeded = RetBuffer->Length; - - - FUNCTION_TRACE ("RsGetCrsMethodData"); - - - /* already validated params, so we won't repeat here */ - - /* - * Execute the method, no parameters - */ - Status = AcpiNsEvaluateRelative (Handle, "_CRS", NULL, &RetObj); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (!RetObj) - { - /* Return object is required */ - - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _CRS\n")); - return_ACPI_STATUS (AE_TYPE); - } - - /* - * The return object will be a buffer, but check the - * parameters. If the return object is not a buffer, - * then the underlying AML code is corrupt or improperly - * written. - */ - if (ACPI_TYPE_BUFFER != RetObj->Common.Type) - { - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - /* - * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. - */ - Status = AcpiRsCreateResourceList (RetObj, - RetBuffer->Pointer, - &BufferSpaceNeeded); - - - if (ACPI_SUCCESS (Status)) - { - DUMP_RESOURCE_LIST(RetBuffer->Pointer); - } - - /* - * Tell the user how much of the buffer we have used or is needed - * and return the final status. - */ - RetBuffer->Length = BufferSpaceNeeded; - - - /* On exit, we must delete the object returned by evaluateObject */ - -Cleanup: - - AcpiCmRemoveReference (RetObj); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetPrsMethodData - * - * PARAMETERS: Handle - a handle to the containing object - * RetBuffer - a pointer to a buffer structure for the - * results - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get the _PRS value of an object - * contained in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetPrsMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_OPERAND_OBJECT *RetObj; - ACPI_STATUS Status; - UINT32 BufferSpaceNeeded = RetBuffer->Length; - - - FUNCTION_TRACE ("RsGetPrsMethodData"); - - - /* already validated params, so we won't repeat here */ - - /* - * Execute the method, no parameters - */ - Status = AcpiNsEvaluateRelative (Handle, "_PRS", NULL, &RetObj); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (!RetObj) - { - /* Return object is required */ - - DEBUG_PRINT (ACPI_ERROR, ("No object was returned from _PRS\n")); - return_ACPI_STATUS (AE_TYPE); - } - - /* - * The return object will be a buffer, but check the - * parameters. If the return object is not a buffer, - * then the underlying AML code is corrupt or improperly - * written.. - */ - if (ACPI_TYPE_BUFFER != RetObj->Common.Type) - { - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - /* - * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. - */ - Status = AcpiRsCreateResourceList (RetObj, - RetBuffer->Pointer, - &BufferSpaceNeeded); - - /* - * Tell the user how much of the buffer we have used or is needed - * and return the final status. - */ - RetBuffer->Length = BufferSpaceNeeded; - - - /* On exit, we must delete the object returned by evaluateObject */ - -Cleanup: - - AcpiCmRemoveReference (RetObj); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsSetSrsMethodData - * - * PARAMETERS: Handle - a handle to the containing object - * InBuffer - a pointer to a buffer structure of the - * parameter - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to set the _SRS of an object contained - * in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsSetSrsMethodData ( - ACPI_HANDLE Handle, - ACPI_BUFFER *InBuffer) -{ - ACPI_OPERAND_OBJECT *Params[2]; - ACPI_OPERAND_OBJECT ParamObj; - ACPI_STATUS Status; - UINT8 *ByteStream = NULL; - UINT32 BufferSizeNeeded = 0; - - - FUNCTION_TRACE ("RsSetSrsMethodData"); - - - /* already validated params, so we won't repeat here */ - - /* - * The InBuffer parameter will point to a linked list of - * resource parameters. It needs to be formatted into a - * byte stream to be sent in as an input parameter. - */ - BufferSizeNeeded = 0; - - /* - * First call is to get the buffer size needed - */ - Status = AcpiRsCreateByteStream (InBuffer->Pointer, - ByteStream, - &BufferSizeNeeded); - /* - * We expect a return of AE_BUFFER_OVERFLOW - * if not, exit with the error - */ - if (AE_BUFFER_OVERFLOW != Status) - { - return_ACPI_STATUS (Status); - } - - /* - * Allocate the buffer needed - */ - ByteStream = AcpiCmCallocate(BufferSizeNeeded); - if (NULL == ByteStream) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Now call to convert the linked list into a byte stream - */ - Status = AcpiRsCreateByteStream (InBuffer->Pointer, - ByteStream, - &BufferSizeNeeded); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * Init the param object - */ - AcpiCmInitStaticObject (&ParamObj); - - /* - * Method requires one parameter. Set it up - */ - Params [0] = &ParamObj; - Params [1] = NULL; - - /* - * Set up the parameter object - */ - ParamObj.Common.Type = ACPI_TYPE_BUFFER; - ParamObj.Buffer.Length = BufferSizeNeeded; - ParamObj.Buffer.Pointer = ByteStream; - - /* - * Execute the method, no return value - */ - Status = AcpiNsEvaluateRelative (Handle, "_SRS", Params, NULL); - - /* - * Clean up and return the status from AcpiNsEvaluateRelative - */ - -Cleanup: - - AcpiCmFree (ByteStream); - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Resources/rsxface.c b/sys/contrib/dev/acpica/Subsystem/Resources/rsxface.c deleted file mode 100644 index fa7c7cf..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Resources/rsxface.c +++ /dev/null @@ -1,326 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsxface - Public interfaces to the ACPI subsystem - * $Revision: 10 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSXFACE_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acresrc.h" - -#define _COMPONENT RESOURCE_MANAGER - MODULE_NAME ("rsxface") - - -/******************************************************************************* - * - * FUNCTION: AcpiGetIrqRoutingTable - * - * PARAMETERS: DeviceHandle - a handle to the Bus device we are querying - * RetBuffer - a pointer to a buffer to receive the - * current resources for the device - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get the IRQ routing table for a - * specific bus. The caller must first acquire a handle for the - * desired bus. The routine table is placed in the buffer pointed - * to by the RetBuffer variable parameter. - * - * If the function fails an appropriate status will be returned - * and the value of RetBuffer is undefined. - * - * This function attempts to execute the _PRT method contained in - * the object indicated by the passed DeviceHandle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetIrqRoutingTable ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiGetIrqRoutingTable "); - - /* - * Must have a valid handle and buffer, So we have to have a handle - * and a return buffer structure, and if there is a non-zero buffer length - * we also need a valid pointer in the buffer. If it's a zero buffer length, - * we'll be returning the needed buffer size, so keep going. - */ - if ((!DeviceHandle) || - (!RetBuffer) || - ((!RetBuffer->Pointer) && (RetBuffer->Length))) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiRsGetPrtMethodData (DeviceHandle, RetBuffer); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetCurrentResources - * - * PARAMETERS: DeviceHandle - a handle to the device object for the - * device we are querying - * RetBuffer - a pointer to a buffer to receive the - * current resources for the device - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get the current resources for a - * specific device. The caller must first acquire a handle for - * the desired device. The resource data is placed in the buffer - * pointed to by the RetBuffer variable parameter. - * - * If the function fails an appropriate status will be returned - * and the value of RetBuffer is undefined. - * - * This function attempts to execute the _CRS method contained in - * the object indicated by the passed DeviceHandle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetCurrentResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiGetCurrentResources"); - - /* - * Must have a valid handle and buffer, So we have to have a handle - * and a return buffer structure, and if there is a non-zero buffer length - * we also need a valid pointer in the buffer. If it's a zero buffer length, - * we'll be returning the needed buffer size, so keep going. - */ - if ((!DeviceHandle) || - (!RetBuffer) || - ((RetBuffer->Length) && (!RetBuffer->Pointer))) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiRsGetCrsMethodData (DeviceHandle, RetBuffer); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetPossibleResources - * - * PARAMETERS: DeviceHandle - a handle to the device object for the - * device we are querying - * RetBuffer - a pointer to a buffer to receive the - * resources for the device - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get a list of the possible resources - * for a specific device. The caller must first acquire a handle - * for the desired device. The resource data is placed in the - * buffer pointed to by the RetBuffer variable. - * - * If the function fails an appropriate status will be returned - * and the value of RetBuffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetPossibleResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiGetPossibleResources"); - - /* - * Must have a valid handle and buffer, So we have to have a handle - * and a return buffer structure, and if there is a non-zero buffer length - * we also need a valid pointer in the buffer. If it's a zero buffer length, - * we'll be returning the needed buffer size, so keep going. - */ - if ((!DeviceHandle) || - (!RetBuffer) || - ((RetBuffer->Length) && (!RetBuffer->Pointer))) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiRsGetPrsMethodData (DeviceHandle, RetBuffer); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiSetCurrentResources - * - * PARAMETERS: DeviceHandle - a handle to the device object for the - * device we are changing the resources of - * InBuffer - a pointer to a buffer containing the - * resources to be set for the device - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to set the current resources for a - * specific device. The caller must first acquire a handle for - * the desired device. The resource data is passed to the routine - * the buffer pointed to by the InBuffer variable. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSetCurrentResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *InBuffer) -{ - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiSetCurrentResources"); - - /* - * Must have a valid handle and buffer - */ - if ((!DeviceHandle) || - (!InBuffer) || - (!InBuffer->Pointer) || - (!InBuffer->Length)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiRsSetSrsMethodData (DeviceHandle, InBuffer); - - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica/Subsystem/Tables/tbconvrt.c b/sys/contrib/dev/acpica/Subsystem/Tables/tbconvrt.c deleted file mode 100644 index c298c35..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Tables/tbconvrt.c +++ /dev/null @@ -1,666 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbconvrt - ACPI Table conversion utilities - * $Revision: 19 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBCONVRT_C__ - -#include "acpi.h" -#include "achware.h" -#include "actables.h" -#include "actbl.h" - - -#define _COMPONENT TABLE_MANAGER - MODULE_NAME ("tbconvrt") - - -/* - * Build a GAS structure from earlier ACPI table entries (V1.0 and 0.71 extensions) - * - * 1) Address space - * 2) Length in bytes -- convert to length in bits - * 3) Bit offset is zero - * 4) Reserved field is zero - * 5) Expand address to 64 bits - */ -#define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) {a.AddressSpaceId = (UINT8) d;\ - a.RegisterBitWidth = (UINT8) MUL_8 (b);\ - a.RegisterBitOffset = 0;\ - a.Reserved = 0;\ - ACPI_STORE_ADDRESS (a.Address,c);} - - -/* ACPI V1.0 entries -- address space is always I/O */ - -#define ASL_BUILD_GAS_FROM_V1_ENTRY(a,b,c) ASL_BUILD_GAS_FROM_ENTRY(a,b,c,ADDRESS_SPACE_SYSTEM_IO) - - -/******************************************************************************* - * - * FUNCTION: AcpiTbConvertToXsdt - * - * PARAMETERS: - * - * RETURN: - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbConvertToXsdt ( - ACPI_TABLE_DESC *TableInfo, - UINT32 *NumberOfTables) -{ - UINT32 TableSize; - UINT32 PointerSize; - UINT32 i; - XSDT_DESCRIPTOR *NewTable; - - -#ifndef _IA64 - - if (AcpiGbl_RSDP->Revision < 2) - { - PointerSize = sizeof (UINT32); - } - - else -#endif - { - PointerSize = sizeof (UINT64); - } - - /* - * Determine the number of tables pointed to by the RSDT/XSDT. - * This is defined by the ACPI Specification to be the number of - * pointers contained within the RSDT/XSDT. The size of the pointers - * is architecture-dependent. - */ - - TableSize = TableInfo->Pointer->Length; - *NumberOfTables = (TableSize - - sizeof (ACPI_TABLE_HEADER)) / PointerSize; - - /* Compute size of the converted XSDT */ - - TableSize = (*NumberOfTables * sizeof (UINT64)) + sizeof (ACPI_TABLE_HEADER); - - - /* Allocate an XSDT */ - - NewTable = AcpiCmCallocate (TableSize); - if (!NewTable) - { - return (AE_NO_MEMORY); - } - - /* Copy the header and set the length */ - - MEMCPY (NewTable, TableInfo->Pointer, sizeof (ACPI_TABLE_HEADER)); - NewTable->Header.Length = TableSize; - - /* Copy the table pointers */ - - for (i = 0; i < *NumberOfTables; i++) - { - if (AcpiGbl_RSDP->Revision < 2) - { -#ifdef _IA64 - NewTable->TableOffsetEntry[i] = - ((RSDT_DESCRIPTOR_REV071 *) TableInfo->Pointer)->TableOffsetEntry[i]; -#else - ACPI_STORE_ADDRESS (NewTable->TableOffsetEntry[i], - ((RSDT_DESCRIPTOR_REV1 *) TableInfo->Pointer)->TableOffsetEntry[i]); -#endif - } - else - { - NewTable->TableOffsetEntry[i] = - ((XSDT_DESCRIPTOR *) TableInfo->Pointer)->TableOffsetEntry[i]; - } - } - - - /* Delete the original table (either mapped or in a buffer) */ - - AcpiTbDeleteSingleTable (TableInfo); - - - /* Point the table descriptor to the new table */ - - TableInfo->Pointer = (ACPI_TABLE_HEADER *) NewTable; - TableInfo->BasePointer = (ACPI_TABLE_HEADER *) NewTable; - TableInfo->Length = TableSize; - TableInfo->Allocation = ACPI_MEM_ALLOCATED; - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbConvertTableFadt - * - * PARAMETERS: - * - * RETURN: - * - * DESCRIPTION: - * Converts BIOS supplied 1.0 and 0.71 ACPI FADT to an intermediate - * ACPI 2.0 FADT. If the BIOS supplied a 2.0 FADT then it is simply - * copied to the intermediate FADT. The ACPI CA software uses this - * intermediate FADT. Thus a significant amount of special #ifdef - * type codeing is saved. This intermediate FADT will need to be - * freed at some point. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbConvertTableFadt (void) -{ - -#ifdef _IA64 - FADT_DESCRIPTOR_REV071 *FADT71; - UINT8 Pm1AddressSpace; - UINT8 Pm2AddressSpace; - UINT8 PmTimerAddressSpace; - UINT8 Gpe0AddressSpace; - UINT8 Gpe1AddressSpace; -#else - FADT_DESCRIPTOR_REV1 *FADT1; -#endif - - FADT_DESCRIPTOR_REV2 *FADT2; - ACPI_TABLE_DESC *TableDesc; - - - FUNCTION_TRACE ("AcpiTbConvertTableFadt"); - - - /* AcpiGbl_FADT is valid */ - /* Allocate and zero the 2.0 buffer */ - - FADT2 = AcpiCmCallocate (sizeof (FADT_DESCRIPTOR_REV2)); - if (FADT2 == NULL) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - - /* The ACPI FADT revision number is FADT2_REVISION_ID=3 */ - /* So, if the current table revision is less than 3 it is type 1.0 or 0.71 */ - - if (AcpiGbl_FADT->header.Revision >= FADT2_REVISION_ID) - { - /* We have an ACPI 2.0 FADT but we must copy it to our local buffer */ - - *FADT2 = *((FADT_DESCRIPTOR_REV2*) AcpiGbl_FADT); - - } - - else - { - -#ifdef _IA64 - /* - * For the 64-bit case only, a revision ID less than V2.0 means the - * tables are the 0.71 extensions - */ - - /* The BIOS stored FADT should agree with Revision 0.71 */ - - FADT71 = (FADT_DESCRIPTOR_REV071 *) AcpiGbl_FADT; - - /* Copy the table header*/ - - FADT2->header = FADT71->header; - - /* Copy the common fields */ - - FADT2->SciInt = FADT71->SciInt; - FADT2->AcpiEnable = FADT71->AcpiEnable; - FADT2->AcpiDisable = FADT71->AcpiDisable; - FADT2->S4BiosReq = FADT71->S4BiosReq; - FADT2->Plvl2Lat = FADT71->Plvl2Lat; - FADT2->Plvl3Lat = FADT71->Plvl3Lat; - FADT2->DayAlrm = FADT71->DayAlrm; - FADT2->MonAlrm = FADT71->MonAlrm; - FADT2->Century = FADT71->Century; - FADT2->Gpe1Base = FADT71->Gpe1Base; - - /* - * We still use the block length registers even though - * the GAS structure should obsolete them. This is because - * these registers are byte lengths versus the GAS which - * contains a bit width - */ - FADT2->Pm1EvtLen = FADT71->Pm1EvtLen; - FADT2->Pm1CntLen = FADT71->Pm1CntLen; - FADT2->Pm2CntLen = FADT71->Pm2CntLen; - FADT2->PmTmLen = FADT71->PmTmLen; - FADT2->Gpe0BlkLen = FADT71->Gpe0BlkLen; - FADT2->Gpe1BlkLen = FADT71->Gpe1BlkLen; - FADT2->Gpe1Base = FADT71->Gpe1Base; - - /* Copy the existing 0.71 flags to 2.0. The other bits are zero.*/ - - FADT2->WbInvd = FADT71->FlushCash; - FADT2->ProcC1 = FADT71->ProcC1; - FADT2->Plvl2Up = FADT71->Plvl2Up; - FADT2->PwrButton = FADT71->PwrButton; - FADT2->SleepButton = FADT71->SleepButton; - FADT2->FixedRTC = FADT71->FixedRTC; - FADT2->Rtcs4 = FADT71->Rtcs4; - FADT2->TmrValExt = FADT71->TmrValExt; - FADT2->DockCap = FADT71->DockCap; - - - /* We should not use these next two addresses */ - /* Since our buffer is pre-zeroed nothing to do for */ - /* the next three data items in the structure */ - /* FADT2->FirmwareCtrl = 0; */ - /* FADT2->Dsdt = 0; */ - - /* System Interrupt Model isn't used in ACPI 2.0*/ - /* FADT2->Reserved1 = 0; */ - - /* This field is set by the OEM to convey the preferred */ - /* power management profile to OSPM. It doesn't have any*/ - /* 0.71 equivalence. Since we don't know what kind of */ - /* 64-bit system this is, we will pick unspecified. */ - - FADT2->Prefer_PM_Profile = PM_UNSPECIFIED; - - - /* Port address of SMI command port */ - /* We shouldn't use this port because IA64 doesn't */ - /* have or use SMI. It has PMI. */ - - FADT2->SmiCmd = (UINT32)(FADT71->SmiCmd & 0xFFFFFFFF); - - - /* processor performance state control*/ - /* The value OSPM writes to the SMI_CMD register to assume */ - /* processor performance state control responsibility. */ - /* There isn't any equivalence in 0.71 */ - /* Again this should be meaningless for IA64 */ - /* FADT2->PstateCnt = 0; */ - - /* The 32-bit Power management and GPE registers are */ - /* not valid in IA-64 and we are not going to use them */ - /* so leaving them pre-zeroed. */ - - /* Support for the _CST object and C States change notification.*/ - /* This data item hasn't any 0.71 equivalence so leaving it zero.*/ - /* FADT2->CstCnt = 0; */ - - /* number of flush strides that need to be read */ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->FlushSize = 0; */ - - /* Processor's memory cache line width, in bytes */ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->FlushStride = 0; */ - - /* Processor's duty cycle index in processor's P_CNT reg*/ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->DutyOffset = 0; */ - - /* Processor's duty cycle value bit width in P_CNT register.*/ - /* No 0.71 equivalence. Leave pre-zeroed. */ - /* FADT2->DutyWidth = 0; */ - - - /* Since there isn't any equivalence in 0.71 */ - /* and since BigSur had to support legacy */ - - FADT2->IapcBootArch = BAF_LEGACY_DEVICES; - - /* Copy to ACPI 2.0 64-BIT Extended Addresses */ - - FADT2->XFirmwareCtrl = FADT71->FirmwareCtrl; - FADT2->XDsdt = FADT71->Dsdt; - - - /* Extract the address space IDs */ - - Pm1AddressSpace = (UINT8)((FADT71->AddressSpace & PM1_BLK_ADDRESS_SPACE) >> 1); - Pm2AddressSpace = (UINT8)((FADT71->AddressSpace & PM2_CNT_BLK_ADDRESS_SPACE) >> 2); - PmTimerAddressSpace = (UINT8)((FADT71->AddressSpace & PM_TMR_BLK_ADDRESS_SPACE) >> 3); - Gpe0AddressSpace = (UINT8)((FADT71->AddressSpace & GPE0_BLK_ADDRESS_SPACE) >> 4); - Gpe1AddressSpace = (UINT8)((FADT71->AddressSpace & GPE1_BLK_ADDRESS_SPACE) >> 5); - - /* - * Convert the 0.71 (non-GAS style) Block addresses to V2.0 GAS structures, - * in this order: - * - * PM 1A Events - * PM 1B Events - * PM 1A Control - * PM 1B Control - * PM 2 Control - * PM Timer Control - * GPE Block 0 - * GPE Block 1 - */ - - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1aEvtBlk, FADT71->Pm1EvtLen, FADT71->Pm1aEvtBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1bEvtBlk, FADT71->Pm1EvtLen, FADT71->Pm1bEvtBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1aCntBlk, FADT71->Pm1CntLen, FADT71->Pm1aCntBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm1bCntBlk, FADT71->Pm1CntLen, FADT71->Pm1bCntBlk, Pm1AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPm2CntBlk, FADT71->Pm2CntLen, FADT71->Pm2CntBlk, Pm2AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XPmTmrBlk, FADT71->PmTmLen, FADT71->PmTmrBlk, PmTimerAddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XGpe0Blk, FADT71->Gpe0BlkLen, FADT71->Gpe0Blk, Gpe0AddressSpace); - ASL_BUILD_GAS_FROM_ENTRY (FADT2->XGpe1Blk, FADT71->Gpe1BlkLen, FADT71->Gpe1Blk, Gpe1AddressSpace); - -#else - - /* ACPI 1.0 FACS */ - - - /* The BIOS stored FADT should agree with Revision 1.0 */ - - FADT1 = (FADT_DESCRIPTOR_REV1*) AcpiGbl_FADT; - - /* - * Copy the table header and the common part of the tables - * The 2.0 table is an extension of the 1.0 table, so the - * entire 1.0 table can be copied first, then expand some - * fields to 64 bits. - */ - - MEMCPY (FADT2, FADT1, sizeof (FADT_DESCRIPTOR_REV1)); - - - /* Convert table pointers to 64-bit fields */ - - ACPI_STORE_ADDRESS (FADT2->XFirmwareCtrl, FADT1->FirmwareCtrl); - ACPI_STORE_ADDRESS (FADT2->XDsdt, FADT1->Dsdt); - - /* System Interrupt Model isn't used in ACPI 2.0*/ - /* FADT2->Reserved1 = 0; */ - - /* This field is set by the OEM to convey the preferred */ - /* power management profile to OSPM. It doesn't have any*/ - /* 1.0 equivalence. Since we don't know what kind of */ - /* 32-bit system this is, we will pick unspecified. */ - - FADT2->Prefer_PM_Profile = PM_UNSPECIFIED; - - - /* Processor Performance State Control. This is the value */ - /* OSPM writes to the SMI_CMD register to assume processor */ - /* performance state control responsibility. There isn't */ - /* any equivalence in 1.0. So leave it zeroed. */ - - FADT2->PstateCnt = 0; - - - /* Support for the _CST object and C States change notification.*/ - /* This data item hasn't any 1.0 equivalence so leaving it zero.*/ - - FADT2->CstCnt = 0; - - - /* Since there isn't any equivalence in 1.0 and since it */ - /* is highly likely that a 1.0 system has legacy support. */ - - FADT2->IapcBootArch = BAF_LEGACY_DEVICES; - - - /* - * Convert the V1.0 Block addresses to V2.0 GAS structures - * in this order: - * - * PM 1A Events - * PM 1B Events - * PM 1A Control - * PM 1B Control - * PM 2 Control - * PM Timer Control - * GPE Block 0 - * GPE Block 1 - */ - - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1aEvtBlk, FADT1->Pm1EvtLen, FADT1->Pm1aEvtBlk); - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1bEvtBlk, FADT1->Pm1EvtLen, FADT1->Pm1bEvtBlk); - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1aCntBlk, FADT1->Pm1CntLen, FADT1->Pm1aCntBlk); - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm1bCntBlk, FADT1->Pm1CntLen, FADT1->Pm1bCntBlk); - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPm2CntBlk, FADT1->Pm2CntLen, FADT1->Pm2CntBlk); - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XPmTmrBlk, FADT1->PmTmLen, FADT1->PmTmrBlk); - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XGpe0Blk, FADT1->Gpe0BlkLen, FADT1->Gpe0Blk); - ASL_BUILD_GAS_FROM_V1_ENTRY (FADT2->XGpe1Blk, FADT1->Gpe1BlkLen, FADT1->Gpe1Blk); -#endif - } - - - /* - * Global FADT pointer will point to the common V2.0 FADT - */ - AcpiGbl_FADT = FADT2; - AcpiGbl_FADT->header.Length = sizeof (FADT_DESCRIPTOR); - - - /* Free the original table */ - - TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_FADT]; - AcpiTbDeleteSingleTable (TableDesc); - - - /* Install the new table */ - - TableDesc->Pointer = (ACPI_TABLE_HEADER *) AcpiGbl_FADT; - TableDesc->BasePointer = AcpiGbl_FADT; - TableDesc->Allocation = ACPI_MEM_ALLOCATED; - TableDesc->Length = sizeof (FADT_DESCRIPTOR_REV2); - - - /* Dump the entire FADT */ - - DEBUG_PRINT (TRACE_TABLES, - ("Hex dump of common internal FADT, size %ld (%lX)\n", - AcpiGbl_FADT->header.Length, AcpiGbl_FADT->header.Length)); - DUMP_BUFFER ((UINT8 *) (AcpiGbl_FADT), AcpiGbl_FADT->header.Length); - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbConvertTableFacs - * - * PARAMETERS: - * - * RETURN: - * - * DESCRIPTION: - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbBuildCommonFacs ( - ACPI_TABLE_DESC *TableInfo) -{ - ACPI_COMMON_FACS *CommonFacs; - -#ifdef _IA64 - FACS_DESCRIPTOR_REV071 *FACS71; -#else - FACS_DESCRIPTOR_REV1 *FACS1; -#endif - - FACS_DESCRIPTOR_REV2 *FACS2; - - - FUNCTION_TRACE ("AcpiTbBuildCommonFacs"); - - - /* Allocate a common FACS */ - - CommonFacs = AcpiCmCallocate (sizeof (ACPI_COMMON_FACS)); - if (!CommonFacs) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - - /* Copy fields to the new FACS */ - - if (AcpiGbl_RSDP->Revision < 2) - { -#ifdef _IA64 - /* 0.71 FACS */ - - FACS71 = (FACS_DESCRIPTOR_REV071 *) AcpiGbl_FACS; - - CommonFacs->GlobalLock = (UINT32 *) &(FACS71->GlobalLock); - CommonFacs->FirmwareWakingVector = &FACS71->FirmwareWakingVector; - CommonFacs->VectorWidth = 64; -#else - /* ACPI 1.0 FACS */ - - FACS1 = (FACS_DESCRIPTOR_REV1 *) AcpiGbl_FACS; - - CommonFacs->GlobalLock = &(FACS1->GlobalLock); - CommonFacs->FirmwareWakingVector = (UINT64 *) &FACS1->FirmwareWakingVector; - CommonFacs->VectorWidth = 32; - -#endif - } - - else - { - /* ACPI 2.0 FACS */ - - FACS2 = (FACS_DESCRIPTOR_REV2 *) AcpiGbl_FACS; - - CommonFacs->GlobalLock = &(FACS2->GlobalLock); - CommonFacs->FirmwareWakingVector = &FACS2->XFirmwareWakingVector; - CommonFacs->VectorWidth = 64; - } - - - /* Set the global FACS pointer to point to the common FACS */ - - - AcpiGbl_FACS = CommonFacs; - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Tables/tbget.c b/sys/contrib/dev/acpica/Subsystem/Tables/tbget.c deleted file mode 100644 index 965470c..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Tables/tbget.c +++ /dev/null @@ -1,780 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbget - ACPI Table get* routines - * $Revision: 43 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBGET_C__ - -#include "acpi.h" -#include "achware.h" -#include "actables.h" - - -#define _COMPONENT TABLE_MANAGER - MODULE_NAME ("tbget") - -#define RSDP_CHECKSUM_LENGTH 20 - -/******************************************************************************* - * - * FUNCTION: AcpiTbGetTablePtr - * - * PARAMETERS: TableType - one of the defined table types - * Instance - Which table of this type - * TablePtrLoc - pointer to location to place the pointer for - * return - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get the pointer to an ACPI table. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbGetTablePtr ( - ACPI_TABLE_TYPE TableType, - UINT32 Instance, - ACPI_TABLE_HEADER **TablePtrLoc) -{ - ACPI_TABLE_DESC *TableDesc; - UINT32 i; - - - FUNCTION_TRACE ("TbGetTablePtr"); - - - if (!AcpiGbl_DSDT) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - if (TableType > ACPI_TABLE_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* - * For all table types (Single/Multiple), the first - * instance is always in the list head. - */ - - if (Instance == 1) - { - /* - * Just pluck the pointer out of the global table! - * Will be null if no table is present - */ - - *TablePtrLoc = AcpiGbl_AcpiTables[TableType].Pointer; - return_ACPI_STATUS (AE_OK); - } - - - /* - * Check for instance out of range - */ - if (Instance > AcpiGbl_AcpiTables[TableType].Count) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* Walk the list to get the desired table - * Since the if (Instance == 1) check above checked for the - * first table, setting TableDesc equal to the .Next member - * is actually pointing to the second table. Therefore, we - * need to walk from the 2nd table until we reach the Instance - * that the user is looking for and return its table pointer. - */ - TableDesc = AcpiGbl_AcpiTables[TableType].Next; - for (i = 2; i < Instance; i++) - { - TableDesc = TableDesc->Next; - } - - /* We are now pointing to the requested table's descriptor */ - - *TablePtrLoc = TableDesc->Pointer; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbGetTable - * - * PARAMETERS: PhysicalAddress - Physical address of table to retrieve - * *BufferPtr - If BufferPtr is valid, read data from - * buffer rather than searching memory - * *TableInfo - Where the table info is returned - * - * RETURN: Status - * - * DESCRIPTION: Maps the physical address of table into a logical address - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbGetTable ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress, - ACPI_TABLE_HEADER *BufferPtr, - ACPI_TABLE_DESC *TableInfo) -{ - ACPI_TABLE_HEADER *TableHeader = NULL; - ACPI_TABLE_HEADER *FullTable = NULL; - UINT32 Size; - UINT8 Allocation; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("TbGetTable"); - - if (!TableInfo) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - if (BufferPtr) - { - /* - * Getting data from a buffer, not BIOS tables - */ - - TableHeader = BufferPtr; - Status = AcpiTbValidateTableHeader (TableHeader); - if (ACPI_FAILURE (Status)) - { - /* Table failed verification, map all errors to BAD_DATA */ - - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* Allocate buffer for the entire table */ - - FullTable = AcpiCmAllocate (TableHeader->Length); - if (!FullTable) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Copy the entire table (including header) to the local buffer */ - - Size = TableHeader->Length; - MEMCPY (FullTable, BufferPtr, Size); - - /* Save allocation type */ - - Allocation = ACPI_MEM_ALLOCATED; - } - - - /* - * Not reading from a buffer, just map the table's physical memory - * into our address space. - */ - else - { - Size = SIZE_IN_HEADER; - - Status = AcpiTbMapAcpiTable (PhysicalAddress, &Size, - (void **) &FullTable); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Save allocation type */ - - Allocation = ACPI_MEM_MAPPED; - } - - - /* Return values */ - - TableInfo->Pointer = FullTable; - TableInfo->Length = Size; - TableInfo->Allocation = Allocation; - TableInfo->BasePointer = FullTable; - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbGetAllTables - * - * PARAMETERS: NumberOfTables - Number of tables to get - * TablePtr - Input buffer pointer, optional - * - * RETURN: Status - * - * DESCRIPTION: Load and validate all tables other than the RSDT. The RSDT must - * already be loaded and validated. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbGetAllTables ( - UINT32 NumberOfTables, - ACPI_TABLE_HEADER *TablePtr) -{ - ACPI_STATUS Status = AE_OK; - UINT32 Index; - ACPI_TABLE_DESC TableInfo; - - - FUNCTION_TRACE ("TbGetAllTables"); - - DEBUG_PRINT (ACPI_INFO, ("Number of tables: %d\n", NumberOfTables)); - - - /* - * Loop through all table pointers found in RSDT. - * This will NOT include the FACS and DSDT - we must get - * them after the loop - */ - - for (Index = 0; Index < NumberOfTables; Index++) - { - /* Clear the TableInfo each time */ - - MEMSET (&TableInfo, 0, sizeof (ACPI_TABLE_DESC)); - - /* Get the table via the XSDT */ - - Status = AcpiTbGetTable ((ACPI_PHYSICAL_ADDRESS) - ACPI_GET_ADDRESS (AcpiGbl_XSDT->TableOffsetEntry[Index]), - TablePtr, &TableInfo); - - /* Ignore a table that failed verification */ - - if (Status == AE_BAD_DATA) - { - continue; - } - - /* However, abort on serious errors */ - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Recognize and install the table */ - - Status = AcpiTbInstallTable (TablePtr, &TableInfo); - if (ACPI_FAILURE (Status)) - { - /* - * Unrecognized or unsupported table, delete it and ignore the - * error. Just get as many tables as we can, later we will - * determine if there are enough tables to continue. - */ - - AcpiTbUninstallTable (&TableInfo); - } - } - - - /* - * Convert the FADT to a common format. This allows earlier revisions of the - * table to coexist with newer versions, using common access code. - */ - Status = AcpiTbConvertTableFadt (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * Get the minimum set of ACPI tables, namely: - * - * 1) FADT (via RSDT in loop above) - * 2) FACS - * 3) DSDT - * - */ - - - /* - * Get the FACS (must have the FADT first, from loop above) - * AcpiTbGetTableFacs will fail if FADT pointer is not valid - */ - - Status = AcpiTbGetTableFacs (TablePtr, &TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* Install the FACS */ - - Status = AcpiTbInstallTable (TablePtr, &TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Create the common FACS pointer table - * (Contains pointers to the original table) - */ - - Status = AcpiTbBuildCommonFacs (&TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - - /* - * Get the DSDT (We know that the FADT is valid now) - */ - - Status = AcpiTbGetTable ((ACPI_PHYSICAL_ADDRESS) ACPI_GET_ADDRESS (AcpiGbl_FADT->XDsdt), - TablePtr, &TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Install the DSDT */ - - Status = AcpiTbInstallTable (TablePtr, &TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Dump the DSDT Header */ - - DEBUG_PRINT (TRACE_TABLES, ("Hex dump of DSDT Header:\n")); - DUMP_BUFFER ((UINT8 *) AcpiGbl_DSDT, sizeof (ACPI_TABLE_HEADER)); - - /* Dump the entire DSDT */ - - DEBUG_PRINT (TRACE_TABLES, - ("Hex dump of DSDT (After header), size %d (%x)\n", - AcpiGbl_DSDT->Length, AcpiGbl_DSDT->Length)); - DUMP_BUFFER ((UINT8 *) (AcpiGbl_DSDT + 1), AcpiGbl_DSDT->Length); - - /* - * Initialize the capabilities flags. - * Assumes that platform supports ACPI_MODE since we have tables! - */ - AcpiGbl_SystemFlags |= AcpiHwGetModeCapabilities (); - - - /* Always delete the RSDP mapping, we are done with it */ - - AcpiTbDeleteAcpiTable (ACPI_TABLE_RSDP); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbVerifyRsdp - * - * PARAMETERS: NumberOfTables - Where the table count is placed - * - * RETURN: Status - * - * DESCRIPTION: Load and validate the RSDP (ptr) and RSDT (table) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbVerifyRsdp ( - ACPI_PHYSICAL_ADDRESS RsdpPhysicalAddress) -{ - ACPI_TABLE_DESC TableInfo; - ACPI_STATUS Status; - UINT8 *TablePtr; - - - FUNCTION_TRACE ("AcpiTbVerifyRsdp"); - - - /* - * Obtain access to the RSDP structure - */ - Status = AcpiOsMapMemory (RsdpPhysicalAddress, - sizeof (RSDP_DESCRIPTOR), - (void **) &TablePtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * The signature and checksum must both be correct - */ - if (STRNCMP ((NATIVE_CHAR *) TablePtr, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0) - { - /* Nope, BAD Signature */ - - Status = AE_BAD_SIGNATURE; - goto Cleanup; - } - - if (AcpiTbChecksum (TablePtr, RSDP_CHECKSUM_LENGTH) != 0) - { - /* Nope, BAD Checksum */ - - Status = AE_BAD_CHECKSUM; - goto Cleanup; - } - - /* TBD: Check extended checksum if table version >= 2 */ - - /* The RSDP supplied is OK */ - - TableInfo.Pointer = (ACPI_TABLE_HEADER *) TablePtr; - TableInfo.Length = sizeof (RSDP_DESCRIPTOR); - TableInfo.Allocation = ACPI_MEM_MAPPED; - TableInfo.BasePointer = TablePtr; - - /* Save the table pointers and allocation info */ - - Status = AcpiTbInitTableDescriptor (ACPI_TABLE_RSDP, &TableInfo); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - - /* Save the RSDP in a global for easy access */ - - AcpiGbl_RSDP = (RSDP_DESCRIPTOR *) TableInfo.Pointer; - return_ACPI_STATUS (Status); - - - /* Error exit */ -Cleanup: - - AcpiOsUnmapMemory (TablePtr, sizeof (RSDP_DESCRIPTOR)); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbGetTableRsdt - * - * PARAMETERS: NumberOfTables - Where the table count is placed - * - * RETURN: Status - * - * DESCRIPTION: Load and validate the RSDP (ptr) and RSDT (table) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbGetTableRsdt ( - UINT32 *NumberOfTables) -{ - ACPI_TABLE_DESC TableInfo; - ACPI_STATUS Status = AE_OK; - ACPI_PHYSICAL_ADDRESS PhysicalAddress; - UINT32 SignatureLength; - char *TableSignature; - - - FUNCTION_TRACE ("AcpiTbGetTableRsdt"); - - - /* - * Get the RSDT from the RSDP - */ - - DEBUG_PRINT (ACPI_INFO, - ("RSDP located at %p, RSDT physical=%p \n", - AcpiGbl_RSDP, AcpiGbl_RSDP->RsdtPhysicalAddress)); - - /* - * For RSDP revision 0 or 1, we use the RSDT. - * For RSDP revision 2 (and above), we use the XSDT - */ - if (AcpiGbl_RSDP->Revision < 2) - { -#ifdef _IA64 - /* 0.71 RSDP has 64bit Rsdt address field */ - PhysicalAddress = ((RSDP_DESCRIPTOR_REV071 *)AcpiGbl_RSDP)->RsdtPhysicalAddress; -#else - PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) AcpiGbl_RSDP->RsdtPhysicalAddress; -#endif - TableSignature = RSDT_SIG; - SignatureLength = sizeof (RSDT_SIG) -1; - } - else - { - PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) - ACPI_GET_ADDRESS (AcpiGbl_RSDP->XsdtPhysicalAddress); - TableSignature = XSDT_SIG; - SignatureLength = sizeof (XSDT_SIG) -1; - } - - - /* Get the RSDT/XSDT */ - - Status = AcpiTbGetTable (PhysicalAddress, NULL, &TableInfo); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, ("GetTableRsdt: Could not get the RSDT, %s\n", - AcpiCmFormatException (Status))); - return_ACPI_STATUS (Status); - } - - - /* Check the RSDT or XSDT signature */ - - if (STRNCMP ((char *) TableInfo.Pointer, TableSignature, - SignatureLength)) - { - /* Invalid RSDT or XSDT signature */ - - REPORT_ERROR (("Invalid signature where RSDP indicates %s should be located\n", - TableSignature)); - - DUMP_BUFFER (AcpiGbl_RSDP, 20); - - DEBUG_PRINT_RAW (ACPI_ERROR, - ("RSDP points to %X at %lXh, but signature is invalid\n", - TableSignature, (void *) AcpiGbl_RSDP->RsdtPhysicalAddress)); - - return_ACPI_STATUS (Status); - } - - - /* Valid RSDT signature, verify the checksum */ - - Status = AcpiTbVerifyTableChecksum (TableInfo.Pointer); - - - /* Convert and/or copy to an XSDT structure */ - - Status = AcpiTbConvertToXsdt (&TableInfo, NumberOfTables); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Save the table pointers and allocation info */ - - Status = AcpiTbInitTableDescriptor (ACPI_TABLE_XSDT, &TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - AcpiGbl_XSDT = (XSDT_DESCRIPTOR *) TableInfo.Pointer; - - DEBUG_PRINT (ACPI_INFO, ("XSDT located at %p\n", AcpiGbl_XSDT)); - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiTbGetTableFacs - * - * PARAMETERS: *BufferPtr - If BufferPtr is valid, read data from - * buffer rather than searching memory - * *TableInfo - Where the table info is returned - * - * RETURN: Status - * - * DESCRIPTION: Returns a pointer to the FACS as defined in FADT. This - * function assumes the global variable FADT has been - * correctly initialized. The value of FADT->FirmwareCtrl - * into a far pointer which is returned. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiTbGetTableFacs ( - ACPI_TABLE_HEADER *BufferPtr, - ACPI_TABLE_DESC *TableInfo) -{ - void *TablePtr = NULL; - UINT32 Size; - UINT8 Allocation; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("TbGetTableFacs"); - - - /* Must have a valid FADT pointer */ - - if (!AcpiGbl_FADT) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - Size = sizeof (FACS_DESCRIPTOR); - if (BufferPtr) - { - /* - * Getting table from a file -- allocate a buffer and - * read the table. - */ - TablePtr = AcpiCmAllocate (Size); - if(!TablePtr) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - MEMCPY (TablePtr, BufferPtr, Size); - - /* Save allocation type */ - - Allocation = ACPI_MEM_ALLOCATED; - } - - else - { - /* Just map the physical memory to our address space */ - - Status = AcpiTbMapAcpiTable ((ACPI_PHYSICAL_ADDRESS) ACPI_GET_ADDRESS (AcpiGbl_FADT->XFirmwareCtrl), - &Size, &TablePtr); - if (ACPI_FAILURE(Status)) - { - return_ACPI_STATUS (Status); - } - - /* Save allocation type */ - - Allocation = ACPI_MEM_MAPPED; - } - - - /* Return values */ - - TableInfo->Pointer = TablePtr; - TableInfo->Length = Size; - TableInfo->Allocation = Allocation; - TableInfo->BasePointer = TablePtr; - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Tables/tbinstal.c b/sys/contrib/dev/acpica/Subsystem/Tables/tbinstal.c deleted file mode 100644 index 2df0fca..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Tables/tbinstal.c +++ /dev/null @@ -1,678 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbinstal - ACPI table installation and removal - * $Revision: 36 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __TBINSTAL_C__ - -#include "acpi.h" -#include "achware.h" -#include "actables.h" - - -#define _COMPONENT TABLE_MANAGER - MODULE_NAME ("tbinstal") - - -/******************************************************************************* - * - * FUNCTION: AcpiTbInstallTable - * - * PARAMETERS: TablePtr - Input buffer pointer, optional - * TableInfo - Return value from AcpiTbGetTable - * - * RETURN: Status - * - * DESCRIPTION: Load and validate all tables other than the RSDT. The RSDT must - * already be loaded and validated. - * Install the table into the global data structs. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbInstallTable ( - ACPI_TABLE_HEADER *TablePtr, - ACPI_TABLE_DESC *TableInfo) -{ - ACPI_STATUS Status; - - FUNCTION_TRACE ("TbInstallTable"); - - - /* - * Check the table signature and make sure it is recognized - * Also checks the header checksum - */ - - Status = AcpiTbRecognizeTable (TablePtr, TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Lock tables while installing */ - - AcpiCmAcquireMutex (ACPI_MTX_TABLES); - - /* Install the table into the global data structure */ - - Status = AcpiTbInitTableDescriptor (TableInfo->Type, TableInfo); - - DEBUG_PRINT (ACPI_INFO, ("%s located at %p\n", - AcpiGbl_AcpiTableData[TableInfo->Type].Name, TableInfo->Pointer)); - - AcpiCmReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbRecognizeTable - * - * PARAMETERS: TablePtr - Input buffer pointer, optional - * TableInfo - Return value from AcpiTbGetTable - * - * RETURN: Status - * - * DESCRIPTION: Check a table signature for a match against known table types - * - * NOTE: All table pointers are validated as follows: - * 1) Table pointer must point to valid physical memory - * 2) Signature must be 4 ASCII chars, even if we don't recognize the - * name - * 3) Table must be readable for length specified in the header - * 4) Table checksum must be valid (with the exception of the FACS - * which has no checksum for some odd reason) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbRecognizeTable ( - ACPI_TABLE_HEADER *TablePtr, - ACPI_TABLE_DESC *TableInfo) -{ - ACPI_TABLE_HEADER *TableHeader; - ACPI_STATUS Status; - ACPI_TABLE_TYPE TableType = 0; - UINT32 i; - - - FUNCTION_TRACE ("TbRecognizeTable"); - - - /* Ensure that we have a valid table pointer */ - - TableHeader = (ACPI_TABLE_HEADER *) TableInfo->Pointer; - if (!TableHeader) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Search for a signature match among the known table types - * Start at index one -> Skip the RSDP - */ - - Status = AE_SUPPORT; - for (i = 1; i < NUM_ACPI_TABLES; i++) - { - if (!STRNCMP (TableHeader->Signature, - AcpiGbl_AcpiTableData[i].Signature, - AcpiGbl_AcpiTableData[i].SigLength)) - { - /* - * Found a signature match, get the pertinent info from the - * TableData structure - */ - - TableType = i; - Status = AcpiGbl_AcpiTableData[i].Status; - - DEBUG_PRINT (ACPI_INFO, - ("TbRecognizeTable: Found %4.4s\n", - AcpiGbl_AcpiTableData[i].Signature)); - break; - } - } - - /* Return the table type and length via the info struct */ - - TableInfo->Type = (UINT8) TableType; - TableInfo->Length = TableHeader->Length; - - - /* - * Validate checksum for _most_ tables, - * even the ones whose signature we don't recognize - */ - - if (TableType != ACPI_TABLE_FACS) - { - /* But don't abort if the checksum is wrong */ - /* TBD: [Future] make this a configuration option? */ - - AcpiTbVerifyTableChecksum (TableHeader); - } - - /* - * An AE_SUPPORT means that the table was not recognized. - * We basically ignore this; just print a debug message - */ - - if (Status == AE_SUPPORT) - { - DEBUG_PRINT (ACPI_INFO, - ("Unsupported table %s (Type %X) was found and discarded\n", - AcpiGbl_AcpiTableData[TableType].Name, TableType)); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbInitTableDescriptor - * - * PARAMETERS: TableType - The type of the table - * TableInfo - A table info struct - * - * RETURN: None. - * - * DESCRIPTION: Install a table into the global data structs. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbInitTableDescriptor ( - ACPI_TABLE_TYPE TableType, - ACPI_TABLE_DESC *TableInfo) -{ - ACPI_TABLE_DESC *ListHead; - ACPI_TABLE_DESC *TableDesc; - - - FUNCTION_TRACE_U32 ("TbInitTableDescriptor", TableType); - - /* - * Install the table into the global data structure - */ - - ListHead = &AcpiGbl_AcpiTables[TableType]; - TableDesc = ListHead; - - - /* - * Two major types of tables: 1) Only one instance is allowed. This - * includes most ACPI tables such as the DSDT. 2) Multiple instances of - * the table are allowed. This includes SSDT and PSDTs. - */ - - if (IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags)) - { - /* - * Only one table allowed, and a table has alread been installed - * at this location, so return an error. - */ - - if (ListHead->Pointer) - { - return_ACPI_STATUS (AE_EXIST); - } - - TableDesc->Count = 1; - } - - - else - { - /* - * Multiple tables allowed for this table type, we must link - * the new table in to the list of tables of this type. - */ - - if (ListHead->Pointer) - { - TableDesc = AcpiCmCallocate (sizeof (ACPI_TABLE_DESC)); - if (!TableDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ListHead->Count++; - - /* Update the original previous */ - - ListHead->Prev->Next = TableDesc; - - /* Update new entry */ - - TableDesc->Prev = ListHead->Prev; - TableDesc->Next = ListHead; - - /* Update list head */ - - ListHead->Prev = TableDesc; - } - - else - { - TableDesc->Count = 1; - } - } - - - /* Common initialization of the table descriptor */ - - TableDesc->Pointer = TableInfo->Pointer; - TableDesc->BasePointer = TableInfo->BasePointer; - TableDesc->Length = TableInfo->Length; - TableDesc->Allocation = TableInfo->Allocation; - TableDesc->AmlPointer = (UINT8 *) (TableDesc->Pointer + 1), - TableDesc->AmlLength = (UINT32) (TableDesc->Length - - (UINT32) sizeof (ACPI_TABLE_HEADER)); - TableDesc->TableId = AcpiCmAllocateOwnerId (OWNER_TYPE_TABLE); - TableDesc->LoadedIntoNamespace = FALSE; - - /* - * Set the appropriate global pointer (if there is one) to point to the - * newly installed table - */ - - if (AcpiGbl_AcpiTableData[TableType].GlobalPtr) - { - *(AcpiGbl_AcpiTableData[TableType].GlobalPtr) = TableInfo->Pointer; - } - - - /* Return Data */ - - TableInfo->TableId = TableDesc->TableId; - TableInfo->InstalledDesc = TableDesc; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbDeleteAcpiTables - * - * PARAMETERS: None. - * - * RETURN: None. - * - * DESCRIPTION: Delete all internal ACPI tables - * - ******************************************************************************/ - -void -AcpiTbDeleteAcpiTables (void) -{ - ACPI_TABLE_TYPE Type; - - - /* - * Free memory allocated for ACPI tables - * Memory can either be mapped or allocated - */ - - for (Type = 0; Type < NUM_ACPI_TABLES; Type++) - { - AcpiTbDeleteAcpiTable (Type); - } - -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbDeleteAcpiTable - * - * PARAMETERS: Type - The table type to be deleted - * - * RETURN: None. - * - * DESCRIPTION: Delete an internal ACPI table - * Locks the ACPI table mutex - * - ******************************************************************************/ - -void -AcpiTbDeleteAcpiTable ( - ACPI_TABLE_TYPE Type) -{ - FUNCTION_TRACE_U32 ("TbDeleteAcpiTable", Type); - - - if (Type > ACPI_TABLE_MAX) - { - return_VOID; - } - - - AcpiCmAcquireMutex (ACPI_MTX_TABLES); - - /* Free the table */ - - AcpiTbFreeAcpiTablesOfType (&AcpiGbl_AcpiTables[Type]); - - - /* Clear the appropriate "typed" global table pointer */ - - switch (Type) - { - case ACPI_TABLE_RSDP: - AcpiGbl_RSDP = NULL; - break; - - case ACPI_TABLE_DSDT: - AcpiGbl_DSDT = NULL; - break; - - case ACPI_TABLE_FADT: - AcpiGbl_FADT = NULL; - break; - - case ACPI_TABLE_FACS: - AcpiGbl_FACS = NULL; - break; - - case ACPI_TABLE_XSDT: - AcpiGbl_XSDT = NULL; - break; - - case ACPI_TABLE_SSDT: - case ACPI_TABLE_PSDT: - default: - break; - } - - AcpiCmReleaseMutex (ACPI_MTX_TABLES); - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbFreeAcpiTablesOfType - * - * PARAMETERS: TableInfo - A table info struct - * - * RETURN: None. - * - * DESCRIPTION: Free the memory associated with an internal ACPI table - * Table mutex should be locked. - * - ******************************************************************************/ - -void -AcpiTbFreeAcpiTablesOfType ( - ACPI_TABLE_DESC *ListHead) -{ - ACPI_TABLE_DESC *TableDesc; - UINT32 Count; - UINT32 i; - - - FUNCTION_TRACE_PTR ("TbFreeAcpiTablesOfType", ListHead); - - - /* Get the head of the list */ - - TableDesc = ListHead; - Count = ListHead->Count; - - /* - * Walk the entire list, deleting both the allocated tables - * and the table descriptors - */ - - for (i = 0; i < Count; i++) - { - TableDesc = AcpiTbUninstallTable (TableDesc); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbDeleteSingleTable - * - * PARAMETERS: TableInfo - A table info struct - * - * RETURN: None. - * - * DESCRIPTION: Low-level free for a single ACPI table. Handles cases where - * the table was allocated a buffer or was mapped. - * - ******************************************************************************/ - -void -AcpiTbDeleteSingleTable ( - ACPI_TABLE_DESC *TableDesc) -{ - - if (!TableDesc) - { - return; - } - - if (TableDesc->Pointer) - { - /* Valid table, determine type of memory allocation */ - - switch (TableDesc->Allocation) - { - - case ACPI_MEM_NOT_ALLOCATED: - break; - - - case ACPI_MEM_ALLOCATED: - - AcpiCmFree (TableDesc->BasePointer); - break; - - - case ACPI_MEM_MAPPED: - - AcpiOsUnmapMemory (TableDesc->BasePointer, TableDesc->Length); - break; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbUninstallTable - * - * PARAMETERS: TableInfo - A table info struct - * - * RETURN: None. - * - * DESCRIPTION: Free the memory associated with an internal ACPI table that - * is either installed or has never been installed. - * Table mutex should be locked. - * - ******************************************************************************/ - -ACPI_TABLE_DESC * -AcpiTbUninstallTable ( - ACPI_TABLE_DESC *TableDesc) -{ - ACPI_TABLE_DESC *NextDesc; - - - FUNCTION_TRACE_PTR ("TbDeleteSingleTable", TableDesc); - - - if (!TableDesc) - { - return_PTR (NULL); - } - - - /* Unlink the descriptor */ - - if (TableDesc->Prev) - { - TableDesc->Prev->Next = TableDesc->Next; - } - - if (TableDesc->Next) - { - TableDesc->Next->Prev = TableDesc->Prev; - } - - - /* Free the memory allocated for the table itself */ - - AcpiTbDeleteSingleTable (TableDesc); - - - /* Free the table descriptor (Don't delete the list head, tho) */ - - if ((TableDesc->Prev) == (TableDesc->Next)) - { - - NextDesc = NULL; - - /* Clear the list head */ - - TableDesc->Pointer = NULL; - TableDesc->Length = 0; - TableDesc->Count = 0; - - } - - else - { - /* Free the table descriptor */ - - NextDesc = TableDesc->Next; - AcpiCmFree (TableDesc); - } - - - return_PTR (NextDesc); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Tables/tbutils.c b/sys/contrib/dev/acpica/Subsystem/Tables/tbutils.c deleted file mode 100644 index 9bf9c75..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Tables/tbutils.c +++ /dev/null @@ -1,486 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbutils - Table manipulation utilities - * $Revision: 33 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBUTILS_C__ - -#include "acpi.h" -#include "actables.h" -#include "acinterp.h" - - -#define _COMPONENT TABLE_MANAGER - MODULE_NAME ("tbutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiTbHandleToObject - * - * PARAMETERS: TableId - Id for which the function is searching - * TableDesc - Pointer to return the matching table - * descriptor. - * - * RETURN: Search the tables to find one with a matching TableId and - * return a pointer to that table descriptor. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbHandleToObject ( - UINT16 TableId, - ACPI_TABLE_DESC **TableDesc) -{ - UINT32 i; - ACPI_TABLE_DESC *ListHead; - - - for (i = 0; i < ACPI_TABLE_MAX; i++) - { - ListHead = &AcpiGbl_AcpiTables[i]; - do - { - if (ListHead->TableId == TableId) - { - *TableDesc = ListHead; - return (AE_OK); - } - - ListHead = ListHead->Next; - - } while (ListHead != &AcpiGbl_AcpiTables[i]); - } - - - DEBUG_PRINT (ACPI_ERROR, ("TableId=%X does not exist\n", TableId)); - return (AE_BAD_PARAMETER); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbSystemTablePointer - * - * PARAMETERS: *Where - Pointer to be examined - * - * RETURN: TRUE if Where is within the AML stream (in one of the ACPI - * system tables such as the DSDT or an SSDT.) - * FALSE otherwise - * - ******************************************************************************/ - -BOOLEAN -AcpiTbSystemTablePointer ( - void *Where) -{ - UINT32 i; - ACPI_TABLE_DESC *TableDesc; - ACPI_TABLE_HEADER *Table; - - - /* No function trace, called too often! */ - - - /* Ignore null pointer */ - - if (!Where) - { - return (FALSE); - } - - - /* Check for a pointer within the DSDT */ - - if ((AcpiGbl_DSDT) && - (IS_IN_ACPI_TABLE (Where, AcpiGbl_DSDT))) - { - return (TRUE); - } - - - /* Check each of the loaded SSDTs (if any)*/ - - TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_SSDT]; - - for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_SSDT].Count; i++) - { - Table = TableDesc->Pointer; - - if (IS_IN_ACPI_TABLE (Where, Table)) - { - return (TRUE); - } - - TableDesc = TableDesc->Next; - } - - - /* Check each of the loaded PSDTs (if any)*/ - - TableDesc = &AcpiGbl_AcpiTables[ACPI_TABLE_PSDT]; - - for (i = 0; i < AcpiGbl_AcpiTables[ACPI_TABLE_PSDT].Count; i++) - { - Table = TableDesc->Pointer; - - if (IS_IN_ACPI_TABLE (Where, Table)) - { - return (TRUE); - } - - TableDesc = TableDesc->Next; - } - - - /* Pointer does not point into any system table */ - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbValidateTableHeader - * - * PARAMETERS: TableHeader - Logical pointer to the table - * - * RETURN: Status - * - * DESCRIPTION: Check an ACPI table header for validity - * - * NOTE: Table pointers are validated as follows: - * 1) Table pointer must point to valid physical memory - * 2) Signature must be 4 ASCII chars, even if we don't recognize the - * name - * 3) Table must be readable for length specified in the header - * 4) Table checksum must be valid (with the exception of the FACS - * which has no checksum for some odd reason) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbValidateTableHeader ( - ACPI_TABLE_HEADER *TableHeader) -{ - ACPI_NAME Signature; - - - /* Verify that this is a valid address */ - - if (!AcpiOsReadable (TableHeader, sizeof (ACPI_TABLE_HEADER))) - { - DEBUG_PRINT (ACPI_ERROR, - ("Cannot read table header at %p\n", TableHeader)); - return (AE_BAD_ADDRESS); - } - - - /* Ensure that the signature is 4 ASCII characters */ - - MOVE_UNALIGNED32_TO_32 (&Signature, &TableHeader->Signature); - if (!AcpiCmValidAcpiName (Signature)) - { - DEBUG_PRINT (ACPI_ERROR, - ("Table signature at %p [%X] has invalid characters\n", - TableHeader, &Signature)); - - REPORT_WARNING (("Invalid table signature found\n")); - DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); - return (AE_BAD_SIGNATURE); - } - - - /* Validate the table length */ - - if (TableHeader->Length < sizeof (ACPI_TABLE_HEADER)) - { - DEBUG_PRINT (ACPI_ERROR, - ("Invalid length in table header %p name %4.4s\n", - TableHeader, &Signature)); - - REPORT_WARNING (("Invalid table header length found\n")); - DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); - return (AE_BAD_HEADER); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbMapAcpiTable - * - * PARAMETERS: PhysicalAddress - Physical address of table to map - * *Size - Size of the table. If zero, the size - * from the table header is used. - * Actual size is returned here. - * **LogicalAddress - Logical address of mapped table - * - * RETURN: Logical address of the mapped table. - * - * DESCRIPTION: Maps the physical address of table into a logical address - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbMapAcpiTable ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress, - UINT32 *Size, - void **LogicalAddress) -{ - ACPI_TABLE_HEADER *Table; - UINT32 TableSize = *Size; - ACPI_STATUS Status = AE_OK; - - - /* If size is zero, look at the table header to get the actual size */ - - if ((*Size) == 0) - { - /* Get the table header so we can extract the table length */ - - Status = AcpiOsMapMemory (PhysicalAddress, sizeof (ACPI_TABLE_HEADER), - (void **) &Table); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Extract the full table length before we delete the mapping */ - - TableSize = Table->Length; - - /* - * Validate the header and delete the mapping. - * We will create a mapping for the full table below. - */ - - Status = AcpiTbValidateTableHeader (Table); - - /* Always unmap the memory for the header */ - - AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); - - /* Exit if header invalid */ - - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - - /* Map the physical memory for the correct length */ - - Status = AcpiOsMapMemory (PhysicalAddress, TableSize, (void **) &Table); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - DEBUG_PRINT (ACPI_INFO, - ("Mapped memory for ACPI table, length=%d(%X) at %p\n", - TableSize, TableSize, Table)); - - *Size = TableSize; - *LogicalAddress = Table; - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbVerifyTableChecksum - * - * PARAMETERS: *TableHeader - ACPI table to verify - * - * RETURN: 8 bit checksum of table - * - * DESCRIPTION: Does an 8 bit checksum of table and returns status. A correct - * table should have a checksum of 0. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbVerifyTableChecksum ( - ACPI_TABLE_HEADER *TableHeader) -{ - UINT8 Checksum; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("TbVerifyTableChecksum"); - - - /* Compute the checksum on the table */ - - Checksum = AcpiTbChecksum (TableHeader, TableHeader->Length); - - /* Return the appropriate exception */ - - if (Checksum) - { - REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n", - Checksum, &TableHeader->Signature)); - - Status = AE_BAD_CHECKSUM; - } - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbChecksum - * - * PARAMETERS: Buffer - Buffer to checksum - * Length - Size of the buffer - * - * RETURNS 8 bit checksum of buffer - * - * DESCRIPTION: Computes an 8 bit checksum of the buffer(length) and returns it. - * - ******************************************************************************/ - -UINT8 -AcpiTbChecksum ( - void *Buffer, - UINT32 Length) -{ - UINT8 *limit; - UINT8 *rover; - UINT8 sum = 0; - - - if (Buffer && Length) - { - /* Buffer and Length are valid */ - - limit = (UINT8 *) Buffer + Length; - - for (rover = Buffer; rover < limit; rover++) - { - sum = (UINT8) (sum + *rover); - } - } - - return (sum); -} - - diff --git a/sys/contrib/dev/acpica/Subsystem/Tables/tbxface.c b/sys/contrib/dev/acpica/Subsystem/Tables/tbxface.c deleted file mode 100644 index d2bc9cb..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Tables/tbxface.c +++ /dev/null @@ -1,514 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbxface - Public interfaces to the ACPI subsystem - * ACPI table oriented interfaces - * $Revision: 34 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBXFACE_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acinterp.h" -#include "actables.h" - - -#define _COMPONENT TABLE_MANAGER - MODULE_NAME ("tbxface") - - -/******************************************************************************* - * - * FUNCTION: AcpiLoadTables - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: This function is called to load the ACPI tables from the - * provided RSDT - * - ******************************************************************************/ - -ACPI_STATUS -AcpiLoadTables ( - ACPI_PHYSICAL_ADDRESS RsdpPhysicalAddress) -{ - ACPI_STATUS Status = AE_OK; - UINT32 NumberOfTables = 0; - - - FUNCTION_TRACE ("AcpiLoadTables"); - - - /* Map and validate the RSDP */ - - Status = AcpiTbVerifyRsdp (RsdpPhysicalAddress); - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("AcpiLoadTables: RSDP Failed validation: %s\n", - AcpiCmFormatException (Status))); - goto ErrorExit; - } - - /* Get the RSDT via the RSDP */ - - Status = AcpiTbGetTableRsdt (&NumberOfTables); - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("AcpiLoadTables: Could not load RSDT: %s\n", - AcpiCmFormatException (Status))); - goto ErrorExit; - } - - /* Now get the rest of the tables */ - - Status = AcpiTbGetAllTables (NumberOfTables, NULL); - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("AcpiLoadTables: Error getting required tables (DSDT/FADT/FACS): %s\n", - AcpiCmFormatException (Status))); - goto ErrorExit; - } - - DEBUG_PRINT (ACPI_OK, ("ACPI Tables successfully loaded\n")); - - - /* Load the namespace from the tables */ - - Status = AcpiNsLoadNamespace (); - if (ACPI_FAILURE (Status)) - { - REPORT_ERROR (("AcpiLoadTables: Could not load namespace: %s\n", - AcpiCmFormatException (Status))); - goto ErrorExit; - } - - return_ACPI_STATUS (AE_OK); - - -ErrorExit: - REPORT_ERROR (("AcpiLoadTables: Could not load tables: %s\n", - AcpiCmFormatException (Status))); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiLoadTable - * - * PARAMETERS: TablePtr - pointer to a buffer containing the entire - * table to be loaded - * - * RETURN: Status - * - * DESCRIPTION: This function is called to load a table from the caller's - * buffer. The buffer must contain an entire ACPI Table including - * a valid header. The header fields will be verified, and if it - * is determined that the table is invalid, the call will fail. - * - * If the call fails an appropriate status will be returned. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiLoadTable ( - ACPI_TABLE_HEADER *TablePtr) -{ - ACPI_STATUS Status; - ACPI_TABLE_DESC TableInfo; - - - FUNCTION_TRACE ("AcpiLoadTable"); - - if (!TablePtr) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Copy the table to a local buffer */ - - Status = AcpiTbGetTable (0, TablePtr, &TableInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Install the new table into the local data structures */ - - Status = AcpiTbInstallTable (NULL, &TableInfo); - if (ACPI_FAILURE (Status)) - { - /* Free table allocated by AcpiTbGetTable */ - - AcpiTbDeleteSingleTable (&TableInfo); - return_ACPI_STATUS (Status); - } - - - Status = AcpiNsLoadTable (TableInfo.InstalledDesc, AcpiGbl_RootNode); - if (ACPI_FAILURE (Status)) - { - /* Uninstall table and free the buffer */ - - AcpiTbUninstallTable (TableInfo.InstalledDesc); - return_ACPI_STATUS (Status); - } - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUnloadTable - * - * PARAMETERS: TableType - Type of table to be unloaded - * - * RETURN: Status - * - * DESCRIPTION: This routine is used to force the unload of a table - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUnloadTable ( - ACPI_TABLE_TYPE TableType) -{ - ACPI_TABLE_DESC *ListHead; - - - FUNCTION_TRACE ("AcpiUnloadTable"); - - - /* Parameter validation */ - - if (TableType > ACPI_TABLE_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Find all tables of the requested type */ - - ListHead = &AcpiGbl_AcpiTables[TableType]; - do - { - /* - * Delete all namespace entries owned by this table. Note that these - * entries can appear anywhere in the namespace by virtue of the AML - * "Scope" operator. Thus, we need to track ownership by an ID, not - * simply a position within the hierarchy - */ - - AcpiNsDeleteNamespaceByOwner (ListHead->TableId); - - /* Delete (or unmap) the actual table */ - - AcpiTbDeleteAcpiTable (TableType); - - } while (ListHead != &AcpiGbl_AcpiTables[TableType]); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetTableHeader - * - * PARAMETERS: TableType - one of the defined table types - * Instance - the non zero instance of the table, allows - * support for multiple tables of the same type - * see AcpiGbl_AcpiTableFlag - * OutTableHeader - pointer to the ACPI_TABLE_HEADER if successful - * - * DESCRIPTION: This function is called to get an ACPI table header. The caller - * supplies an pointer to a data area sufficient to contain an ACPI - * ACPI_TABLE_HEADER structure. - * - * The header contains a length field that can be used to determine - * the size of the buffer needed to contain the entire table. This - * function is not valid for the RSD PTR table since it does not - * have a standard header and is fixed length. - * - * If the operation fails for any reason an appropriate status will - * be returned and the contents of OutTableHeader are undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTableHeader ( - ACPI_TABLE_TYPE TableType, - UINT32 Instance, - ACPI_TABLE_HEADER *OutTableHeader) -{ - ACPI_TABLE_HEADER *TblPtr; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiGetTableHeader"); - - if ((Instance == 0) || - (TableType == ACPI_TABLE_RSDP) || - (!OutTableHeader)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Check the table type and instance */ - - if ((TableType > ACPI_TABLE_MAX) || - (IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) && - Instance > 1)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Get a pointer to the entire table */ - - Status = AcpiTbGetTablePtr (TableType, Instance, &TblPtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * The function will return a NULL pointer if the table is not loaded - */ - if (TblPtr == NULL) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* - * Copy the header to the caller's buffer - */ - MEMCPY ((void *) OutTableHeader, (void *) TblPtr, - sizeof (ACPI_TABLE_HEADER)); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetTable - * - * PARAMETERS: TableType - one of the defined table types - * Instance - the non zero instance of the table, allows - * support for multiple tables of the same type - * see AcpiGbl_AcpiTableFlag - * RetBuffer - pointer to a structure containing a buffer to - * receive the table - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get an ACPI table. The caller - * supplies an OutBuffer large enough to contain the entire ACPI - * table. The caller should call the AcpiGetTableHeader function - * first to determine the buffer size needed. Upon completion - * the OutBuffer->Length field will indicate the number of bytes - * copied into the OutBuffer->BufPtr buffer. This table will be - * a complete table including the header. - * - * If the operation fails an appropriate status will be returned - * and the contents of OutBuffer are undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTable ( - ACPI_TABLE_TYPE TableType, - UINT32 Instance, - ACPI_BUFFER *RetBuffer) -{ - ACPI_TABLE_HEADER *TblPtr; - ACPI_STATUS Status; - UINT32 RetBufLen; - - - FUNCTION_TRACE ("AcpiGetTable"); - - /* - * If we have a buffer, we must have a length too - */ - if ((Instance == 0) || - (!RetBuffer) || - ((!RetBuffer->Pointer) && (RetBuffer->Length))) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Check the table type and instance */ - - if ((TableType > ACPI_TABLE_MAX) || - (IS_SINGLE_TABLE (AcpiGbl_AcpiTableData[TableType].Flags) && - Instance > 1)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - - /* Get a pointer to the entire table */ - - Status = AcpiTbGetTablePtr (TableType, Instance, &TblPtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * AcpiTbGetTablePtr will return a NULL pointer if the - * table is not loaded. - */ - if (TblPtr == NULL) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* - * Got a table ptr, assume it's ok and copy it to the user's buffer - */ - if (TableType == ACPI_TABLE_RSDP) - { - /* - * RSD PTR is the only "table" without a header - */ - RetBufLen = sizeof (RSDP_DESCRIPTOR); - } - else - { - RetBufLen = TblPtr->Length; - } - - /* - * Verify we have space in the caller's buffer for the table - */ - if (RetBuffer->Length < RetBufLen) - { - RetBuffer->Length = RetBufLen; - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - RetBuffer->Length = RetBufLen; - - MEMCPY ((void *) RetBuffer->Pointer, (void *) TblPtr, RetBufLen); - - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica/Subsystem/Tables/tbxfroot.c b/sys/contrib/dev/acpica/Subsystem/Tables/tbxfroot.c deleted file mode 100644 index 4bcf9c9..0000000 --- a/sys/contrib/dev/acpica/Subsystem/Tables/tbxfroot.c +++ /dev/null @@ -1,320 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbxfroot - Find the root ACPI table (RSDT) - * $Revision: 35 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBXFROOT_C__ - -#include "acpi.h" -#include "achware.h" -#include "actables.h" - - -#define _COMPONENT TABLE_MANAGER - MODULE_NAME ("tbxfroot") - -#define RSDP_CHECKSUM_LENGTH 20 - - -/******************************************************************************* - * - * FUNCTION: AcpiFindRootPointer - * - * PARAMETERS: **RsdpPhysicalAddress - Where to place the RSDP address - * - * RETURN: Status, Physical address of the RSDP - * - * DESCRIPTION: Find the RSDP - * - ******************************************************************************/ - -ACPI_STATUS -AcpiFindRootPointer ( - ACPI_PHYSICAL_ADDRESS *RsdpPhysicalAddress) -{ - ACPI_TABLE_DESC TableInfo; - ACPI_STATUS Status; - - - FUNCTION_TRACE ("AcpiFindRootPointer"); - - - /* Get the RSDP */ - - Status = AcpiTbFindRsdp (&TableInfo); - if (ACPI_FAILURE (Status)) - { - DEBUG_PRINT (ACPI_ERROR, ("RSDP structure not found\n")); - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - *RsdpPhysicalAddress = TableInfo.PhysicalAddress; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbScanMemoryForRsdp - * - * PARAMETERS: StartAddress - Starting pointer for search - * Length - Maximum length to search - * - * RETURN: Pointer to the RSDP if found, otherwise NULL. - * - * DESCRIPTION: Search a block of memory for the RSDP signature - * - ******************************************************************************/ - -UINT8 * -AcpiTbScanMemoryForRsdp ( - UINT8 *StartAddress, - UINT32 Length) -{ - UINT32 Offset; - UINT8 *MemRover; - - - FUNCTION_TRACE ("TbScanMemoryForRsdp"); - - /* Search from given start addr for the requested length */ - - for (Offset = 0, MemRover = StartAddress; - Offset < Length; - Offset += RSDP_SCAN_STEP, MemRover += RSDP_SCAN_STEP) - { - - /* The signature and checksum must both be correct */ - - if (STRNCMP ((NATIVE_CHAR *) MemRover, - RSDP_SIG, sizeof (RSDP_SIG)-1) == 0 && - AcpiTbChecksum (MemRover, RSDP_CHECKSUM_LENGTH) == 0) - { - /* If so, we have found the RSDP */ - - return_PTR (MemRover); - } - } - - /* Searched entire block, no RSDP was found */ - - return_PTR (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbFindRsdp - * - * PARAMETERS: *BufferPtr - If == NULL, read data from buffer - * rather than searching memory - * *TableInfo - Where the table info is returned - * - * RETURN: Status - * - * DESCRIPTION: Search lower 1Mbyte of memory for the root system descriptor - * pointer structure. If it is found, set *RSDP to point to it. - * - * NOTE: The RSDP must be either in the first 1K of the Extended - * BIOS Data Area or between E0000 and FFFFF (ACPI 1.0 section - * 5.2.2; assertion #421). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbFindRsdp ( - ACPI_TABLE_DESC *TableInfo) -{ - UINT8 *TablePtr; - UINT8 *MemRover; - UINT64 PhysAddr; - ACPI_STATUS Status = AE_OK; - - - FUNCTION_TRACE ("TbFindRsdp"); - - - /* - * Search memory for RSDP. First map low physical memory. - */ - - Status = AcpiOsMapMemory (LO_RSDP_WINDOW_BASE, LO_RSDP_WINDOW_SIZE, - (void **)&TablePtr); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * 1) Search EBDA (low memory) paragraphs - */ - - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, LO_RSDP_WINDOW_SIZE); - - /* This mapping is no longer needed */ - - AcpiOsUnmapMemory (TablePtr, LO_RSDP_WINDOW_SIZE); - - if (MemRover) - { - /* Found it, return the physical address */ - - PhysAddr = LO_RSDP_WINDOW_BASE; - PhysAddr += (MemRover - TablePtr); - - TableInfo->PhysicalAddress = PhysAddr; - - return_ACPI_STATUS (AE_OK); - } - - - /* - * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h - */ - - Status = AcpiOsMapMemory (HI_RSDP_WINDOW_BASE, HI_RSDP_WINDOW_SIZE, - (void **)&TablePtr); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, HI_RSDP_WINDOW_SIZE); - - /* This mapping is no longer needed */ - - AcpiOsUnmapMemory (TablePtr, HI_RSDP_WINDOW_SIZE); - - if (MemRover) - { - /* Found it, return the physical address */ - - PhysAddr = HI_RSDP_WINDOW_BASE; - PhysAddr += (MemRover - TablePtr); - - TableInfo->PhysicalAddress = PhysAddr; - - return_ACPI_STATUS (AE_OK); - } - - - /* RSDP signature was not found */ - - return_ACPI_STATUS (AE_NOT_FOUND); -} - - |