Port-macppc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[PATCH] Incorrect segment 0 initialization for PMAC G5



Hi,

i'm trying to run/port NetBSD on my PowerMac 11,2 G5 and stumbled upon the following bug
in function arch/powerpc/oea/pmap.c:pmap_setup_segment0_map.

Here is the patch:

--- arch/powerpc/oea/pmap.c     2013-03-27 19:37:18.652744773 +0100
+++ arch/powerpc/oea/pmap.c.new 2013-03-27 23:23:34.383534571 +0100
@@ -3077,7 +3077,7 @@
 int
 pmap_setup_segment0_map(int use_large_pages, ...)
 {
-    vaddr_t va;
+    vaddr_t va, va_end;

     register_t pte_lo = 0x0;
     int ptegidx = 0, i = 0;
@@ -3110,7 +3110,8 @@
         pa = va_arg(ap, paddr_t);
         size = va_arg(ap, size_t);

-        for (; va < (va + size); va += 0x1000, pa += 0x1000) {
+        va_end = va + size;
+        for (; va < va_end; va += 0x1000, pa += 0x1000) {
 #if 0
printf("%s: Inserting: va: %#" _PRIxva ", pa: %#" _PRIxpa "\n", __func__, va, pa);
 #endif

In consequence of the incorrect loop invariant, the loop terminates after the overflow of the variable va.


And i would appreciate any pointers regarding porting NetBSD to PowerMac G5. I managed to get the display console working and currently implementing support for U4 MPIC which is not supported by NetBSD yet.


Regards


Home | Main Index | Thread Index | Old Index