SMP Work (APs now start, just seem to lock up on lgdt, or whatever is at that address)
[tpg/acess2.git] / Kernel / arch / x86 / mm_virt.c
index 4f272e7..0ef6771 100644 (file)
@@ -105,10 +105,10 @@ Uint32    gWorkerStacks[(NUM_WORKER_STACKS+31)/32];
 void MM_PreinitVirtual()
 {
        #if USE_PAE
 void MM_PreinitVirtual()
 {
        #if USE_PAE
-       gaInitPDPT[ 0 ] = 0;
+       //gaInitPDPT[ 0 ] = 0;
        gaInitPageDir[ ((PAGE_TABLE_ADDR >> TAB)-3*512+3)*2 ] = ((tTabEnt)&gaInitPageDir - KERNEL_BASE) | 3;
        #else
        gaInitPageDir[ ((PAGE_TABLE_ADDR >> TAB)-3*512+3)*2 ] = ((tTabEnt)&gaInitPageDir - KERNEL_BASE) | 3;
        #else
-       gaInitPageDir[ 0 ] = 0;
+       //gaInitPageDir[ 0 ] = 0;       // Needed for SMP startup code
        gaInitPageDir[ PAGE_TABLE_ADDR >> 22 ] = ((tTabEnt)&gaInitPageDir - KERNEL_BASE) | 3;
        #endif
        INVLPG( PAGE_TABLE_ADDR );
        gaInitPageDir[ PAGE_TABLE_ADDR >> 22 ] = ((tTabEnt)&gaInitPageDir - KERNEL_BASE) | 3;
        #endif
        INVLPG( PAGE_TABLE_ADDR );
@@ -958,21 +958,12 @@ tVAddr MM_AllocDMA(int Pages, int MaxBits, tPAddr *PhysAddr)
        }
        
        // Slow Allocate
        }
        
        // Slow Allocate
-       phys = MM_AllocPhysRange(Pages);
+       phys = MM_AllocPhysRange(Pages, MaxBits);
        // - Was it allocated?
        if(phys == 0) {
                LEAVE('i', 0);
                return 0;
        }
        // - Was it allocated?
        if(phys == 0) {
                LEAVE('i', 0);
                return 0;
        }
-       // - Check if the memory is OK
-       if(phys + (Pages-1)*0x1000 > maxCheck)
-       {
-               // Deallocate and return 0
-               for(;Pages--;phys+=0x1000)
-                       MM_DerefPhys(phys);
-               LEAVE('i', 0);
-               return 0;
-       }
        
        // Allocated successfully, now map
        ret = MM_MapHWPage(phys, Pages);
        
        // Allocated successfully, now map
        ret = MM_MapHWPage(phys, Pages);

UCC git Repository :: git.ucc.asn.au