cleanup some of the compressed rom stream ugliness -- more to do!
olpc and rumba can now boot linux out of flash. vsa was resized to 64K. olpc and rumba now used compressed payload -- thanks stefan! git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2307 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
5d573c28e7
commit
bad9d105cf
|
@ -261,8 +261,8 @@ void do_vsmbios(void)
|
||||||
*/
|
*/
|
||||||
//rom = 0xfff80000;
|
//rom = 0xfff80000;
|
||||||
//rom = 0xfffc0000;
|
//rom = 0xfffc0000;
|
||||||
/* the VSA starts at the base of rom - 128k */
|
/* the VSA starts at the base of rom - 64 */
|
||||||
rom = ((unsigned long) 0) - (ROM_SIZE + 128*1024);
|
rom = ((unsigned long) 0) - (ROM_SIZE + 64*1024);
|
||||||
|
|
||||||
buf = (unsigned char *) rom;
|
buf = (unsigned char *) rom;
|
||||||
printk_debug("buf %p *buf %d buf[256k] %d\n",
|
printk_debug("buf %p *buf %d buf[256k] %d\n",
|
||||||
|
|
|
@ -35,7 +35,9 @@ static unsigned long unrv2b(uint8_t * src, uint8_t * dst)
|
||||||
uint32_t bb = 0;
|
uint32_t bb = 0;
|
||||||
unsigned bc = 0;
|
unsigned bc = 0;
|
||||||
const uint8_t *m_pos;
|
const uint8_t *m_pos;
|
||||||
|
unsigned long file_len = *(unsigned long *) src;
|
||||||
|
|
||||||
|
printk_debug("compressed file len is supposed to be %d bytes\n", file_len);
|
||||||
// skip length
|
// skip length
|
||||||
src += 4;
|
src += 4;
|
||||||
/* FIXME: check olen with the length stored in first 4 bytes */
|
/* FIXME: check olen with the length stored in first 4 bytes */
|
||||||
|
@ -77,6 +79,7 @@ static unsigned long unrv2b(uint8_t * src, uint8_t * dst)
|
||||||
} while (--m_len > 0);
|
} while (--m_len > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printk_debug("computed len is %d, file len is %d\n", olen, file_len);
|
||||||
return olen;
|
return olen;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ uses ROM_IMAGE_SIZE
|
||||||
uses ROM_SECTION_SIZE
|
uses ROM_SECTION_SIZE
|
||||||
uses ROM_SECTION_OFFSET
|
uses ROM_SECTION_OFFSET
|
||||||
uses CONFIG_ROM_STREAM_START
|
uses CONFIG_ROM_STREAM_START
|
||||||
|
uses CONFIG_COMPRESSED_ROM_STREAM
|
||||||
uses PAYLOAD_SIZE
|
uses PAYLOAD_SIZE
|
||||||
uses _ROMBASE
|
uses _ROMBASE
|
||||||
uses _RAMBASE
|
uses _RAMBASE
|
||||||
|
|
|
@ -21,6 +21,7 @@ uses ROM_IMAGE_SIZE
|
||||||
uses ROM_SECTION_SIZE
|
uses ROM_SECTION_SIZE
|
||||||
uses ROM_SECTION_OFFSET
|
uses ROM_SECTION_OFFSET
|
||||||
uses CONFIG_ROM_STREAM_START
|
uses CONFIG_ROM_STREAM_START
|
||||||
|
uses CONFIG_COMPRESSED_ROM_STREAM
|
||||||
uses PAYLOAD_SIZE
|
uses PAYLOAD_SIZE
|
||||||
uses _ROMBASE
|
uses _ROMBASE
|
||||||
uses _RAMBASE
|
uses _RAMBASE
|
||||||
|
|
|
@ -32,7 +32,7 @@ static const unsigned char *rom;
|
||||||
int stream_init(void)
|
int stream_init(void)
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPRESSED_ROM_STREAM
|
#if CONFIG_COMPRESSED_ROM_STREAM
|
||||||
unsigned long dest;
|
unsigned char *dest;
|
||||||
unsigned long olen;
|
unsigned long olen;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -51,14 +51,14 @@ int stream_init(void)
|
||||||
dest = (CONFIG_LB_MEM_TOPK<<10);
|
dest = (CONFIG_LB_MEM_TOPK<<10);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if((dest < 0xf0000) && ((dest+olen)>0xf0000)) { //linuxbios tables etc
|
if((dest < (unsigned char *) 0xf0000) && ((dest+olen)> (unsigned char *)0xf0000)) { //linuxbios tables etc
|
||||||
dest = (CONFIG_LB_MEM_TOPK<<10);
|
dest = (unsigned char *) (CONFIG_LB_MEM_TOPK<<10);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
printk_debug("Uncompressing to RAM 0x%08lx ", dest);
|
printk_debug("Uncompressing to RAM 0x%08lx ", dest);
|
||||||
olen = unrv2b((uint8_t *) rom_start, (uint8_t *)dest );
|
olen = unrv2b((uint8_t *) rom_start, (uint8_t *)dest );
|
||||||
printk_debug(" ilen = 0x%08lx olen = 0x%08lx done.\n", ilen, olen);
|
printk_debug(" olen = 0x%08lx done.\n", olen);
|
||||||
rom_end = dest + olen - 1;
|
rom_end = dest + olen - 1;
|
||||||
rom = dest;
|
rom = dest;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -3,31 +3,18 @@
|
||||||
target rev_a
|
target rev_a
|
||||||
mainboard olpc/rev_a
|
mainboard olpc/rev_a
|
||||||
|
|
||||||
option ROM_SIZE=1024*128
|
# leave 64k for vsa
|
||||||
|
option CONFIG_COMPRESSED_ROM_STREAM=1
|
||||||
|
option ROM_SIZE=1024*512-64*1024
|
||||||
option FALLBACK_SIZE=ROM_SIZE
|
option FALLBACK_SIZE=ROM_SIZE
|
||||||
#romimage "normal"
|
|
||||||
# option USE_FALLBACK_IMAGE=0
|
|
||||||
# option ROM_IMAGE_SIZE=0x10000
|
|
||||||
# option LINUXBIOS_EXTRA_VERSION=".0Normal"
|
|
||||||
## payload /usr/share/etherboot/5.1.9pre2-lnxi-lb/tg3--ide_disk.zelf
|
|
||||||
## payload ../../../../tg3--ide_disk.zelf
|
|
||||||
## payload ../../../../../lnxieepro100.ebi
|
|
||||||
## payload /etc/hosts
|
|
||||||
## payload /home/hamish/work/etherboot/eb-5.2.6-lne100.elf
|
|
||||||
# payload /tmp/filo.elf
|
|
||||||
#end
|
|
||||||
|
|
||||||
|
option DEFAULT_CONSOLE_LOGLEVEL = 11
|
||||||
|
option MAXIMUM_CONSOLE_LOGLEVEL = 11
|
||||||
romimage "fallback"
|
romimage "fallback"
|
||||||
option USE_FALLBACK_IMAGE=1
|
option USE_FALLBACK_IMAGE=1
|
||||||
option ROM_IMAGE_SIZE=0x10000
|
option ROM_IMAGE_SIZE=0x8000
|
||||||
option LINUXBIOS_EXTRA_VERSION=".0Fallback"
|
option LINUXBIOS_EXTRA_VERSION=".0Fallback"
|
||||||
# payload /usr/share/etherboot/5.1.9pre2-lnxi-lb/tg3--ide_disk.zelf
|
payload /tmp/olpcpayload.elf
|
||||||
# payload ../../../../tg3--ide_disk.zelf
|
|
||||||
# payload ../../../../../lnxieepro100.ebia
|
|
||||||
# payload /etc/hosts
|
|
||||||
# payload /home/hamish/work/etherboot/eb-5.2.6-lne100.elf
|
|
||||||
payload /tmp/filo.elf
|
|
||||||
end
|
end
|
||||||
|
|
||||||
buildrom ./linuxbios.rom ROM_SIZE "fallback"
|
buildrom ./linuxbios.rom ROM_SIZE "fallback"
|
||||||
#buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback"
|
|
||||||
|
|
Loading…
Reference in New Issue