[haiku-commits] r34863 - haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc

  • From: superstippi@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 2 Jan 2010 19:40:07 +0100 (CET)

Author: stippi
Date: 2010-01-02 19:40:07 +0100 (Sat, 02 Jan 2010)
New Revision: 34863
Changeset: http://dev.haiku-os.org/changeset/34863/haiku
Ticket: http://dev.haiku-os.org/ticket/5193

Modified:
   haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp
Log:
Patch by Andreas Faerber with small changes by myself:
 * Skip mappings to non-physical memory in the PPC MMU code. Gets the
   PPC kernel booting a little further.

Thanks! Fixes ticket #5193.


Modified: haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp
===================================================================
--- haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp  
2010-01-02 18:34:42 UTC (rev 34862)
+++ haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp  
2010-01-02 18:40:07 UTC (rev 34863)
@@ -462,16 +462,22 @@
                        puts("found page table!");
                        *_physicalPageTable
                                = (page_table_entry_group 
*)map->physical_address;
-                       keepRange = false;      // we keep it explicitely anyway
+                       keepRange = false;
+                               // we keep it explicitely anyway
                }
                if ((addr_t)map->physical_address <= 0x100
                        && (addr_t)map->physical_address + map->length >= 
0x1000) {
                        puts("found exception handlers!");
                        *_exceptionHandlers = map->virtual_address;
-                       keepRange = false;      // we keep it explicitely anyway
+                       keepRange = false;
+                               // we keep it explicitely anyway
                }
                if (map->virtual_address == oldPageTable)
                        keepRange = false;
+               if (!is_physical_memory(map->physical_address)) {
+                       keepRange = false;
+                               // we only get vm_pages for physical memory
+               }
 
                // insert range in virtual allocated
 


Other related posts:

  • » [haiku-commits] r34863 - haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc - superstippi