X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=KernelLand%2FKernel%2Farch%2Fx86%2Fmm_virt.c;h=868fe86a55d2039c64e8ca52558fe0de84378dfa;hb=479d0634670b58da044bc58149662adba0ad1d0b;hp=d15c3d72773e9eda4ddb5abf4519e1995be8e9be;hpb=9dccbc6f16485ea62caa8c4153f6f878da8cbb0d;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/x86/mm_virt.c b/KernelLand/Kernel/arch/x86/mm_virt.c index d15c3d72..868fe86a 100644 --- a/KernelLand/Kernel/arch/x86/mm_virt.c +++ b/KernelLand/Kernel/arch/x86/mm_virt.c @@ -414,13 +414,14 @@ void MM_Deallocate(tVAddr VAddr) * \fn tPAddr MM_GetPhysAddr(tVAddr Addr) * \brief Checks if the passed address is accesable */ -tPAddr MM_GetPhysAddr(tVAddr Addr) +tPAddr MM_GetPhysAddr(const void *Addr) { - if( !(gaPageDir[Addr >> 22] & 1) ) + tVAddr addr = (tVAddr)Addr; + if( !(gaPageDir[addr >> 22] & 1) ) return 0; - if( !(gaPageTable[Addr >> 12] & 1) ) + if( !(gaPageTable[addr >> 12] & 1) ) return 0; - return (gaPageTable[Addr >> 12] & ~0xFFF) | (Addr & 0xFFF); + return (gaPageTable[addr >> 12] & ~0xFFF) | (addr & 0xFFF); } /** @@ -717,7 +718,8 @@ tVAddr MM_NewKStack(void) for(base = MM_KERNEL_STACKS; base < MM_KERNEL_STACKS_END; base += MM_KERNEL_STACK_SIZE) { // Check if space is free - if(MM_GetPhysAddr(base) != 0) continue; + if(MM_GetPhysAddr( (void*) base) != 0) + continue; // Allocate //for(i = MM_KERNEL_STACK_SIZE; i -= 0x1000 ; ) for(i = 0; i < MM_KERNEL_STACK_SIZE; i += 0x1000 ) @@ -1069,7 +1071,6 @@ tVAddr MM_MapHWPages(tPAddr PAddr, Uint Number) */ tVAddr MM_AllocDMA(int Pages, int MaxBits, tPAddr *PhysAddr) { - tPAddr maxCheck = (1 << MaxBits); tPAddr phys; tVAddr ret; @@ -1084,9 +1085,6 @@ tVAddr MM_AllocDMA(int Pages, int MaxBits, tPAddr *PhysAddr) return 0; } - // Bound - if(MaxBits >= PHYS_BITS) maxCheck = -1; - // Fast Allocate if(Pages == 1 && MaxBits >= PHYS_BITS) {