X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=KernelLand%2FKernel%2Farch%2Fx86%2Facpica.c;h=5603add407b4932a7c66f2bd751ccef83dfffbde;hb=802762ae7efd39786c0e134ed0bdfe8100d97230;hp=a4a0bbc20071cce4602d7f3dc6b6ebeac59ab772;hpb=910b87da7338937ace686848fb915908df0bf09b;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/x86/acpica.c b/KernelLand/Kernel/arch/x86/acpica.c index a4a0bbc2..5603add4 100644 --- a/KernelLand/Kernel/arch/x86/acpica.c +++ b/KernelLand/Kernel/arch/x86/acpica.c @@ -6,7 +6,7 @@ * - ACPICA Interface */ #define ACPI_DEBUG_OUTPUT 0 -#define DEBUG 1 +#define DEBUG 0 #define _AcpiModuleName "Shim" #define _COMPONENT "Acess" #include @@ -118,6 +118,7 @@ ACPI_STATUS AcpiOsPhysicalTableOverride(ACPI_TABLE_HEADER *ExisitingTable, ACPI_ } // -- Memory Management --- +#if USE_ACESS_ACPI_CACHE struct sACPICache { Uint16 nObj; @@ -231,15 +232,18 @@ ACPI_STATUS AcpiOsReleaseObject(ACPI_CACHE_T *Cache, void *Object) LEAVE('i', AE_OK); return AE_OK; } +#endif void *AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_SIZE Length) { - if( PhysicalAddress < ONEMEG ) + if( PhysicalAddress < ONEMEG ) { + ASSERTCR(Length, <=, ONEMEG-PhysicalAddress, NULL); return (void*)(KERNEL_BASE | PhysicalAddress); + } Uint ofs = PhysicalAddress & (PAGE_SIZE-1); int npages = (ofs + Length + (PAGE_SIZE-1)) / PAGE_SIZE; - char *maploc = (void*)MM_MapHWPages(PhysicalAddress, npages); + char *maploc = MM_MapHWPages(PhysicalAddress, npages); if(!maploc) { LOG("Mapping %P+0x%x failed", PhysicalAddress, Length); return NULL; @@ -252,15 +256,16 @@ void *AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_SIZE Length) void AcpiOsUnmapMemory(void *LogicalAddress, ACPI_SIZE Length) { - if( (tVAddr)LogicalAddress - KERNEL_BASE < ONEMEG ) + if( (tVAddr)LogicalAddress - KERNEL_BASE < ONEMEG ) { return ; + } LOG("%p", LogicalAddress); Uint ofs = (tVAddr)LogicalAddress & (PAGE_SIZE-1); int npages = (ofs + Length + (PAGE_SIZE-1)) / PAGE_SIZE; // TODO: Validate `Length` is the same as was passed to AcpiOsMapMemory - MM_UnmapHWPages( (tVAddr)LogicalAddress, npages); + MM_UnmapHWPages( LogicalAddress, npages); } ACPI_STATUS AcpiOsGetPhysicalAddress(void *LogicalAddress, ACPI_PHYSICAL_ADDRESS *PhysicalAddress) @@ -531,6 +536,8 @@ ACPI_STATUS AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, UINT64 *Value, UINT3 MM_FreeTemp(ptr); } + LOG("*%P = [%i]%X", Address, Width, *Value); + return AE_OK; } @@ -554,7 +561,7 @@ ACPI_STATUS AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, UINT64 Value, UINT3 return AE_BAD_PARAMETER; } - if( Address >= 1024*1024 ) { + if( Address >= ONEMEG ) { MM_FreeTemp(ptr); }