ACPI_PHYSICAL_ADDRESS pa = 0;
DPRINT("AcpiOsGetRootPointer\n");
-
+
AcpiFindRootPointer(&pa);
return pa;
}
/* No override */
*NewValue = NULL;
-
+
return AE_OK;
}
/* No override */
*NewTable = NULL;
-
+
+ return AE_OK;
+}
+
+ACPI_STATUS
+AcpiOsPhysicalTableOverride(
+ ACPI_TABLE_HEADER *ExistingTable,
+ ACPI_PHYSICAL_ADDRESS *NewAddress,
+ UINT32 *NewTableLength)
+{
+ if (!ExistingTable || !NewAddress || !NewTableLength)
+ {
+ DPRINT1("Invalid parameter\n");
+ return AE_BAD_PARAMETER;
+ }
+
+ /* No override */
+ *NewAddress = 0;
+ *NewTableLength = 0;
+
return AE_OK;
}
{
PHYSICAL_ADDRESS Address;
PVOID Ptr;
-
+
DPRINT("AcpiOsMapMemory(phys 0x%p size 0x%X)\n", phys, length);
-
+
ASSERT(phys);
Address.QuadPart = (ULONG)phys;
{
DPRINT1("Mapping failed\n");
}
-
+
return Ptr;
}
AcpiOsFree(void *ptr)
{
if (!ptr)
- DPRINT1("Attempt to free null pointer!!!\n");
+ DPRINT1("Attempt to free null pointer!!!\n");
ExFreePoolWithTag(ptr, 'IPCA');
}
_SEH2_TRY
{
ProbeForRead(Memory, Length, sizeof(UCHAR));
-
Ret = TRUE;
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
Ret = FALSE;
}
_SEH2_END;
-
+
return Ret;
}
_SEH2_TRY
{
ProbeForWrite(Memory, Length, sizeof(UCHAR));
-
Ret = TRUE;
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
Ret = FALSE;
}
_SEH2_END;
-
+
return Ret;
}
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS Status;
- DPRINT("AcpiOsExecute\n");
+ DPRINT("AcpiOsExecute\n");
- InitializeObjectAttributes(&ObjectAttributes,
+ InitializeObjectAttributes(&ObjectAttributes,
NULL,
OBJ_KERNEL_HANDLE,
NULL,
NULL);
-
+
Status = PsCreateSystemThread(&ThreadHandle,
THREAD_ALL_ACCESS,
&ObjectAttributes,
return AE_ERROR;
ZwClose(ThreadHandle);
-
+
return AE_OK;
}
AcpiOsSleep (UINT64 milliseconds)
{
DPRINT("AcpiOsSleep %d\n", milliseconds);
- KeStallExecutionProcessor(milliseconds*1000);
+ KeStallExecutionProcessor(milliseconds*1000);
}
void
DPRINT1("Bad parameter\n");
return AE_BAD_PARAMETER;
}
-
+
Mutex = ExAllocatePool(NonPagedPool, sizeof(FAST_MUTEX));
if (!Mutex) return AE_NO_MEMORY;
-
+
ExInitializeFastMutex(Mutex);
-
+
*OutHandle = (ACPI_MUTEX)Mutex;
-
+
return AE_OK;
}
DPRINT1("Bad parameter\n");
return;
}
-
+
ExFreePool(Handle);
}
DPRINT1("Bad parameter\n");
return;
}
-
+
ExReleaseFastMutex((PFAST_MUTEX)Handle);
}
DPRINT1("Bad parameter\n");
return AE_BAD_PARAMETER;
}
-
+
Sem = ExAllocatePool(NonPagedPool, sizeof(ACPI_SEM));
if (!Sem) return AE_NO_MEMORY;
Sem->CurrentUnits = InitialUnits;
KeInitializeEvent(&Sem->Event, SynchronizationEvent, Sem->CurrentUnits != 0);
KeInitializeSpinLock(&Sem->Lock);
-
+
*OutHandle = (ACPI_SEMAPHORE)Sem;
-
+
return AE_OK;
}
DPRINT1("Bad parameter\n");
return AE_BAD_PARAMETER;
}
-
+
ExFreePool(Handle);
-
+
return AE_OK;
}
NULL);
KeAcquireSpinLock(&Sem->Lock, &OldIrql);
}
-
+
Sem->CurrentUnits -= Units;
-
+
if (Sem->CurrentUnits != 0) KeSetEvent(&Sem->Event, IO_NO_INCREMENT, FALSE);
-
+
KeReleaseSpinLock(&Sem->Lock, OldIrql);
-
+
return AE_OK;
}
}
KeAcquireSpinLock(&Sem->Lock, &OldIrql);
-
+
Sem->CurrentUnits += Units;
KeSetEvent(&Sem->Event, IO_NO_INCREMENT, FALSE);
-
+
KeReleaseSpinLock(&Sem->Lock, OldIrql);
-
+
return AE_OK;
}
DPRINT1("Bad parameter\n");
return AE_BAD_PARAMETER;
}
-
+
SpinLock = ExAllocatePool(NonPagedPool, sizeof(KSPIN_LOCK));
if (!SpinLock) return AE_NO_MEMORY;
-
+
KeInitializeSpinLock(SpinLock);
-
+
*OutHandle = (ACPI_SPINLOCK)SpinLock;
-
+
return AE_OK;
}
DPRINT1("Bad parameter\n");
return;
}
-
+
ExFreePool(Handle);
}
ACPI_SPINLOCK Handle)
{
KIRQL OldIrql;
-
+
if ((OldIrql = KeGetCurrentIrql()) >= DISPATCH_LEVEL)
{
KeAcquireSpinLockAtDpcLevel((PKSPIN_LOCK)Handle);
{
KeAcquireSpinLock((PKSPIN_LOCK)Handle, &OldIrql);
}
-
+
return (ACPI_CPU_FLAGS)OldIrql;
}
ACPI_CPU_FLAGS Flags)
{
KIRQL OldIrql = (KIRQL)Flags;
-
+
if (OldIrql >= DISPATCH_LEVEL)
{
KeReleaseSpinLockFromDpcLevel((PKSPIN_LOCK)Handle);
KIRQL DIrql;
KAFFINITY Affinity;
NTSTATUS Status;
-
+
if (AcpiInterruptHandlerRegistered)
{
DPRINT1("Reregister interrupt attempt failed\n");
return AE_ALREADY_EXISTS;
}
-
+
if (!ServiceRoutine)
{
DPRINT1("Bad parameter\n");
ACPI_OSD_HANDLER ServiceRoutine)
{
DPRINT("AcpiOsRemoveInterruptHandler()\n");
-
+
if (!ServiceRoutine)
{
DPRINT1("Bad parameter\n");
return AE_BAD_PARAMETER;
}
-
+
if (AcpiInterruptHandlerRegistered)
{
IoDisconnectInterrupt(AcpiInterrupt);
ACPI_STATUS
AcpiOsReadMemory (
ACPI_PHYSICAL_ADDRESS Address,
- UINT32 *Value,
+ UINT64 *Value,
UINT32 Width)
{
DPRINT("AcpiOsReadMemory %p\n", Address);
case 8:
*Value = (*(PUCHAR)(ULONG_PTR)Address);
break;
+
case 16:
*Value = (*(PUSHORT)(ULONG_PTR)Address);
break;
+
case 32:
*Value = (*(PULONG)(ULONG_PTR)Address);
break;
+ case 64:
+ *Value = (*(PULONGLONG)(ULONG_PTR)Address);
+ break;
+
default:
DPRINT1("AcpiOsReadMemory got bad width: %d\n",Width);
return (AE_BAD_PARAMETER);
ACPI_STATUS
AcpiOsWriteMemory (
ACPI_PHYSICAL_ADDRESS Address,
- UINT32 Value,
+ UINT64 Value,
UINT32 Width)
{
DPRINT("AcpiOsWriteMemory %p\n", Address);
case 8:
*(PUCHAR)(ULONG_PTR)Address = Value;
break;
+
case 16:
*(PUSHORT)(ULONG_PTR)Address = Value;
break;
+
case 32:
*(PULONG)(ULONG_PTR)Address = Value;
break;
+ case 64:
+ *(PULONGLONG)(ULONG_PTR)Address = Value;
+ break;
+
default:
DPRINT1("AcpiOsWriteMemory got bad width: %d\n",Width);
return (AE_BAD_PARAMETER);
case 32:
*Value = READ_PORT_ULONG((PULONG)Address);
break;
+
default:
DPRINT1("AcpiOsReadPort got bad width: %d\n",Width);
return (AE_BAD_PARAMETER);
case 32:
WRITE_PORT_ULONG((PULONG)Address, Value);
break;
-
+
default:
DPRINT1("AcpiOsWritePort got bad width: %d\n",Width);
return (AE_BAD_PARAMETER);
void)
{
LARGE_INTEGER CurrentTime;
-
+
KeQuerySystemTime(&CurrentTime);
-
return CurrentTime.QuadPart;
}
+void
+AcpiOsWaitEventsComplete(void)
+{
+ /*
+ * Wait for all asynchronous events to complete.
+ * This implementation does nothing.
+ */
+ return;
+}
+
ACPI_STATUS
AcpiOsSignal (
UINT32 Function,
void *Info)
{
ACPI_SIGNAL_FATAL_INFO *FatalInfo = Info;
-
+
switch (Function)
{
case ACPI_SIGNAL_FATAL:
DPRINT1 ("AcpiOsBreakpoint ****\n");
break;
}
-
+
ASSERT(FALSE);
return (AE_OK);