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