Author: myles Date: 2009-09-23 22:32:21 +0200 (Wed, 23 Sep 2009) New Revision: 4663
Modified: trunk/coreboot-v2/src/arch/i386/boot/boot.c trunk/coreboot-v2/src/boot/selfboot.c Log: Fix the bounce_size global so that the bounce buffer works with CBFS.
Make self_boot() static.
Signed-off-by: Myles Watson mylesgw@gmail.com Acked-by: Ronald G. Minnich rminnich@gmail.com
Modified: trunk/coreboot-v2/src/arch/i386/boot/boot.c =================================================================== --- trunk/coreboot-v2/src/arch/i386/boot/boot.c 2009-09-23 18:54:18 UTC (rev 4662) +++ trunk/coreboot-v2/src/arch/i386/boot/boot.c 2009-09-23 20:32:21 UTC (rev 4663) @@ -68,7 +68,7 @@ }
-void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long bounce_size) +void jmp_to_elf_entry(void *entry, unsigned long buffer, unsigned long size) { extern unsigned char _ram_seg, _eram_seg; unsigned long lb_start, lb_size; @@ -79,7 +79,7 @@
lb_start = (unsigned long)&_ram_seg; lb_size = (unsigned long)(&_eram_seg - &_ram_seg); - adjust = buffer + bounce_size - lb_start; + adjust = buffer + size - lb_start;
adjusted_boot_notes = (unsigned long)&elf_boot_notes; adjusted_boot_notes += adjust;
Modified: trunk/coreboot-v2/src/boot/selfboot.c =================================================================== --- trunk/coreboot-v2/src/boot/selfboot.c 2009-09-23 18:54:18 UTC (rev 4662) +++ trunk/coreboot-v2/src/boot/selfboot.c 2009-09-23 20:32:21 UTC (rev 4663) @@ -71,9 +71,10 @@ unsigned short ip_checksum; };
+static int selfboot(struct lb_memory *mem, struct cbfs_payload *payload); + void * cbfs_load_payload(struct lb_memory *lb_mem, const char *name) { - int selfboot(struct lb_memory *mem, struct cbfs_payload *payload); struct cbfs_payload *payload;
payload = (struct cbfs_payload *)cbfs_find_file(name, CBFS_TYPE_PAYLOAD); @@ -110,7 +111,7 @@
static unsigned long bounce_size, bounce_buffer;
-static void get_bounce_buffer(struct lb_memory *mem, unsigned long bounce_size) +static void get_bounce_buffer(struct lb_memory *mem, unsigned long req_size) { unsigned long lb_size; unsigned long mem_entries; @@ -118,7 +119,7 @@ int i; lb_size = (unsigned long)(&_eram_seg - &_ram_seg); /* Double coreboot size so I have somewhere to place a copy to return to */ - lb_size = bounce_size + lb_size; + lb_size = req_size + lb_size; mem_entries = (mem->size - sizeof(*mem))/sizeof(mem->map[0]); buffer = 0; for(i = 0; i < mem_entries; i++) { @@ -142,6 +143,7 @@ buffer = tbuffer; } bounce_buffer = buffer; + bounce_size = req_size; }
static int valid_area(struct lb_memory *mem, unsigned long buffer, @@ -424,7 +426,8 @@ for(ptr = head->next; ptr != head; ptr = ptr->next) { if (!overlaps_coreboot(ptr)) continue; unsigned long bounce = ptr->s_dstaddr + ptr->s_memsz - lb_start; - if (bounce > required_bounce_size) required_bounce_size = bounce; + if (bounce > required_bounce_size) + required_bounce_size = bounce; } get_bounce_buffer(mem, required_bounce_size); if (!bounce_buffer) { @@ -458,14 +461,12 @@ size_t len; len = ptr->s_filesz; switch(ptr->compression) { -#if CONFIG_COMPRESSED_PAYLOAD_LZMA==1 case CBFS_COMPRESS_LZMA: { printk_debug("using LZMA\n"); unsigned long ulzma(unsigned char *src, unsigned char *dst); len = ulzma(src, dest); break; } -#endif #if CONFIG_COMPRESSED_PAYLOAD_NRV2B==1 case CBFS_COMPRESS_NRV2B: { printk_debug("using NRV2B\n"); @@ -505,7 +506,7 @@ return 1; }
-int selfboot(struct lb_memory *mem, struct cbfs_payload *payload) +static int selfboot(struct lb_memory *mem, struct cbfs_payload *payload) { u32 entry=0; struct segment head;