ppcrcd/trunk/yaboot: Makefile gunzip.c

sparky cvs at pld-linux.org
Sun Mar 12 21:33:08 CET 2006


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;
 	}
 


More information about the pld-cvs-commit mailing list