2008-11-12 Robert Millan <rmh@aybabtu.com>
Use newly-added Multiboot support in coreboot. * conf/i386-coreboot.rmk (kernel_elf_SOURCES): Replace `kern/i386/coreboot/mmap.c' with `kern/i386/multiboot_mmap.c'. * kern/i386/coreboot/startup.S: Enable Multiboot header, fix its alignment, set `MULTIBOOT_MEMORY_INFO' flag. (codestart): Store the MBI in `startup_multiboot_info' when we're being loaded using Multiboot. * kern/i386/coreboot/init.c (grub_machine_init): Move grub_at_keyboard_init() call to beginning of function (useful for debugging). Call grub_machine_mmap_init() before attempting to use grub_machine_mmap_iterate(). (grub_lower_mem, grub_upper_mem): Move from here ... * kern/i386/multiboot_mmap.c (grub_lower_mem, grub_upper_mem): ... to here (new file). * include/grub/i386/coreboot/memory.h (grub_machine_mmap_init): New function prototype.
This commit is contained in:
parent
761ca975a9
commit
95b841d37b
8 changed files with 129 additions and 18 deletions
|
@ -42,7 +42,6 @@ extern char _end[];
|
|||
|
||||
grub_addr_t grub_os_area_addr;
|
||||
grub_size_t grub_os_area_size;
|
||||
grub_size_t grub_lower_mem, grub_upper_mem;
|
||||
|
||||
/* FIXME: we need interrupts to do this right */
|
||||
static grub_uint32_t grub_time_tics = 0;
|
||||
|
@ -79,9 +78,7 @@ grub_machine_init (void)
|
|||
{
|
||||
/* Initialize the console as early as possible. */
|
||||
grub_console_init ();
|
||||
|
||||
grub_lower_mem = GRUB_MEMORY_MACHINE_LOWER_USABLE;
|
||||
grub_upper_mem = 0;
|
||||
grub_at_keyboard_init ();
|
||||
|
||||
auto int NESTED_FUNC_ATTR heap_init (grub_uint64_t, grub_uint64_t, grub_uint32_t);
|
||||
int NESTED_FUNC_ATTR heap_init (grub_uint64_t addr, grub_uint64_t size, grub_uint32_t type)
|
||||
|
@ -132,13 +129,13 @@ grub_machine_init (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
grub_machine_mmap_init ();
|
||||
grub_machine_mmap_iterate (heap_init);
|
||||
|
||||
/* This variable indicates size, not offset. */
|
||||
grub_upper_mem -= GRUB_MEMORY_MACHINE_UPPER_START;
|
||||
|
||||
grub_tsc_init ();
|
||||
grub_at_keyboard_init ();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -55,20 +55,24 @@ VARIABLE(grub_prefix)
|
|||
|
||||
. = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Support for booting GRUB from a Multiboot boot loader (e.g. GRUB itself).
|
||||
*/
|
||||
.p2align 2 /* force 4-byte alignment */
|
||||
multiboot_header:
|
||||
/* magic */
|
||||
.long 0x1BADB002
|
||||
/* flags */
|
||||
.long 0
|
||||
.long MULTIBOOT_MEMORY_INFO
|
||||
/* checksum */
|
||||
.long -0x1BADB002
|
||||
#endif
|
||||
.long -0x1BADB002 - MULTIBOOT_MEMORY_INFO
|
||||
|
||||
codestart:
|
||||
cmpl $MULTIBOOT_MAGIC2, %eax
|
||||
jne 0f
|
||||
movl %ebx, EXT_C(startup_multiboot_info)
|
||||
0:
|
||||
|
||||
/* initialize the stack */
|
||||
movl $GRUB_MEMORY_MACHINE_PROT_STACK, %esp
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue