Author: sparky
Date: Sun Mar 12 21:32:57 2006
New Revision: 7152

Modified:
   ppcrcd/trunk/yaboot/Makefile
   ppcrcd/trunk/yaboot/gunzip.c
Log:
- gunzip: don't use own malloc pool but part of general pool


Modified: ppcrcd/trunk/yaboot/Makefile
==============================================================================
--- ppcrcd/trunk/yaboot/Makefile        (original)
+++ ppcrcd/trunk/yaboot/Makefile        Sun Mar 12 21:32:57 2006
@@ -18,9 +18,6 @@
 # Malloc block at 3Mb -> 4Mb
 MALLOCADDR     = 0x300000
 MALLOCSIZE     = 0x100000
-# gzMalloc block (4->4.5Mb)
-GZMALLOCADDR    = 0x400000
-GZMALLOCSIZE    = 0x080000
 # Load kernel at 20Mb and ramdisk just after
 KERNELADDR     = 0x01400000
 
@@ -30,7 +27,6 @@
 YBCFLAGS += -DVERSION=\"${VERSION}\"   #"
 YBCFLAGS += -DTEXTADDR=$(TEXTADDR) -DDEBUG=$(DEBUG)
 YBCFLAGS += -DMALLOCADDR=$(MALLOCADDR) -DMALLOCSIZE=$(MALLOCSIZE)
-YBCFLAGS += -DGZMALLOCADDR=$(GZMALLOCADDR) -DGZMALLOCSIZE=$(GZMALLOCSIZE)
 YBCFLAGS += -DKERNELADDR=$(KERNELADDR)
 YBCFLAGS += -I ./include
 

Modified: ppcrcd/trunk/yaboot/gunzip.c
==============================================================================
--- ppcrcd/trunk/yaboot/gunzip.c        (original)
+++ ppcrcd/trunk/yaboot/gunzip.c        Sun Mar 12 21:32:57 2006
@@ -157,14 +157,10 @@
 /* malloc replace */
 static char *gzmalloc_ptr = 0;
 static char *gzmalloc_start = 0;
-static char *gzmalloc_top = 0;
 
-void
-gzmalloc_init(void *bottom, unsigned long size)
-{
-       gzmalloc_start = gzmalloc_ptr = bottom;
-       gzmalloc_top = bottom + size;
-}
+#define GZMEMSIZE 0x8000
+static unsigned int gzmalloc_size = GZMEMSIZE;
+
 
 void *
 gzmalloc (unsigned int size)
@@ -173,9 +169,11 @@
 
        if (!gzmalloc_ptr)
                return NULL;
-       if ((gzmalloc_ptr + size + sizeof(int)) > gzmalloc_top) {
-               prom_printf("malloc for gunzip failed\n");
-               return NULL;
+       while ((gzmalloc_ptr + size + sizeof(int)) 
+                       > gzmalloc_start + gzmalloc_size) {
+               prom_printf("warning: gunzip needs more memory\n");
+               gzmalloc_size += GZMEMSIZE;
+               gzmalloc_start = realloc(gzmalloc_start, gzmalloc_size);
        }
        *(int *)gzmalloc_ptr = size;
        caddr = gzmalloc_ptr + sizeof(int);
@@ -300,15 +298,11 @@
 
        if (!initialized_gzmalloc)
        {
-               void* gzmalloc_base = NULL;
-       
-               gzmalloc_base = prom_claim((void *)GZMALLOCADDR, GZMALLOCSIZE, 
0);
-               if (gzmalloc_base == (void *)-1) {
-                       prom_printf("Can't claim malloc buffer (%d bytes at 
0x%08x)\n",
-                               GZMALLOCSIZE, GZMALLOCADDR);
-                       return -1;
+               gzmalloc_start = gzmalloc_ptr = malloc(gzmalloc_size);
+               if (gzmalloc_start == NULL ) {
+                       prom_printf("malloc in gzunzip failed\n");
+                       return 2;
                }
-               gzmalloc_init(gzmalloc_base, GZMALLOCSIZE);
                initialized_gzmalloc = 1;
        }
 
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to