diff options
author | Stefan Reinauer <stepan@coresystems.de> | 2010-02-22 04:33:13 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2010-02-22 04:33:13 +0000 |
commit | d650e9934ff8da9b9cb69e42e642c0ee6d390bf6 (patch) | |
tree | 8c6982efa868e828c21d4d427d2678e7e0804668 /util/x86emu/yabel/compat | |
parent | 30b90fe4f0b31aa6676f507d3913579453942ba8 (diff) |
YABEL update
- drop x86emu + old biosemu in favor of YABEL
- Add YABEL_DIRECTHW to get the old biosemu behavior
- add support for vesa console using YABEL
- add coreboot table entry with console information
- add bootsplash support (reads /bootsplash.jpg from CBFS)
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Pattrick Hueper <phueper@hueper.net>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5135 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/x86emu/yabel/compat')
-rw-r--r-- | util/x86emu/yabel/compat/functions.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/util/x86emu/yabel/compat/functions.c b/util/x86emu/yabel/compat/functions.c index 600b0ba38a..599e82e54e 100644 --- a/util/x86emu/yabel/compat/functions.c +++ b/util/x86emu/yabel/compat/functions.c @@ -16,24 +16,41 @@ #include <types.h> #include <string.h> #include <device/device.h> +#include "../debug.h" -#define VMEM_SIZE 1024 *1024 /* 1 MB */ +#define VMEM_SIZE (1024 * 1024) /* 1 MB */ +#if !defined(CONFIG_YABEL_DIRECTHW) || (!CONFIG_YABEL_DIRECTHW) #ifdef CONFIG_YABEL_VIRTMEM_LOCATION u8* vmem = (u8 *) CONFIG_YABEL_VIRTMEM_LOCATION; #else u8* vmem = (u8 *) (16*1024*1024); /* default to 16MB */ #endif +#else +u8* vmem = NULL; +#endif u32 biosemu(u8 *biosmem, u32 biosmem_size, struct device *dev, unsigned long rom_addr); +#if CONFIG_BOOTSPLASH +void vbe_set_graphics(void); +#endif void run_bios(struct device * dev, unsigned long addr) { + biosemu(vmem, VMEM_SIZE, dev, addr); - memcpy(0x0, vmem + 0x0, 0x400); - memcpy(0x400, vmem + 0x400, 0x100); - memcpy(0xc0000, vmem + 0xc0000, 0x10000); + +#if CONFIG_BOOTSPLASH + vbe_set_graphics(); +#endif + + if (vmem != NULL) { + printf("Copying legacy memory from 0x%08x to the lower 1MB\n", vmem); + memcpy(0x00000, vmem + 0x00000, 0x400); // IVT + memcpy(0x00400, vmem + 0x00400, 0x100); // BDA + memcpy(0xc0000, vmem + 0xc0000, 0x10000); // VGA OPROM + } } u64 get_time(void) |