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 <myle...@gmail.com> Acked-by: Ronald G. Minnich <rminn...@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; -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot