From 9f07a529340fe07aabe6aa26bd2b0761e960b48f Mon Sep 17 00:00:00 2001 From: Carl-Daniel Hailfinger Date: Sat, 16 Feb 2008 19:18:32 +0000 Subject: [PATCH] On 16.02.2008 07:41, ron minnich wrote: > Alix1c won't boot with the zero decompress code. > I think the code is using the wrong address on decompress. Indeed, r601 broke all targets, you were just lucky that qemu didn't explode as well. It's the seemingly easy patches which break booting. With your hint, I found the bug. Myles made a small, but important mistake with the memset for the "zeroes" decompression. The memset zeroed the archive instead of the destination. No wonder it did explode. This patch fixes it and also reverts the emergency commit r604 because that one is no longer necessary. Ron tested on the Alix1c, boots fine, ethernet and IDE working. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Reinauer Acked-by: Ronald G. Minnich git-svn-id: svn://coreboot.org/repository/coreboot-v3@605 f3766cd6-281f-0410-b1cd-43a5c92072e9 --- lib/lar.c | 2 +- util/lar/stream.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/lar.c b/lib/lar.c index 325a3e1517..7a497dc989 100644 --- a/lib/lar.c +++ b/lib/lar.c @@ -172,7 +172,7 @@ int process_file(const struct mem_file *archive, void *where) #endif /* zeroes */ if (archive->compression == 3) { - memset(archive->start, 0, archive->reallen); + memset(where, 0, archive->reallen); return 0; } printk(BIOS_INFO, "LAR: Compression algorithm #%i not supported!\n", archive->compression); diff --git a/util/lar/stream.c b/util/lar/stream.c index 7de58da65e..0b9f766189 100644 --- a/util/lar/stream.c +++ b/util/lar/stream.c @@ -148,7 +148,6 @@ int output_elf_segments(struct lar *lar, char *name, char *filebuf, continue; } thisalgo = zeroes; - thisalgo = algo; if (verbose()) fprintf(stderr, "New section addr %#x size %#x\n", (u32)shdr[i].sh_addr, (u32)shdr[i].sh_size);