Index: kern/powerpc/ieee1275/init.c =================================================================== RCS file: /sources/grub/grub2/kern/powerpc/ieee1275/init.c,v retrieving revision 1.31 diff -u -r1.31 init.c --- kern/powerpc/ieee1275/init.c 21 Jul 2007 23:32:27 -0000 1.31 +++ kern/powerpc/ieee1275/init.c 23 Jul 2007 19:49:44 -0000 @@ -115,14 +115,16 @@ /* Claim some available memory in the first /memory node. */ static void grub_claim_heap (unsigned long heaplimit) { + unsigned long total = 0; + auto int heap_init (grub_uint64_t addr, grub_uint64_t len); int heap_init (grub_uint64_t addr, grub_uint64_t len) { len -= 1; /* Required for some firmware. */ /* Don't claim anything above `heaplimit'. */ - if (addr + len > heaplimit) - len = heaplimit - addr; + if (total + len > heaplimit) + len = heaplimit - total; if (len) { @@ -134,6 +136,10 @@ grub_mm_init_region ((void *) (grub_addr_t) addr, len); } + total += len; + if (total >= heaplimit) + return 1; + return 0; }