2008-08-18 Robert Millan <rmh@aybabtu.com>
* include/grub/i386/linux.h (LINUX_LOADER_ID_LILO) (LINUX_LOADER_ID_LOADLIN, LINUX_LOADER_ID_BOOTSECT) (LINUX_LOADER_ID_SYSLINUX, LINUX_LOADER_ID_ETHERBOOT) (LINUX_LOADER_ID_ELILO, LINUX_LOADER_ID_GRUB, LINUX_LOADER_ID_UBOOT) (LINUX_LOADER_ID_XEN, LINUX_LOADER_ID_GUJIN, LINUX_LOADER_ID_QEMU): New macros. (GRUB_LINUX_CL_OFFSET, GRUB_LINUX_CL_END_OFFSET): Move from here ... * loader/i386/pc/linux.c (GRUB_LINUX_CL_OFFSET) (GRUB_LINUX_CL_END_OFFSET): ... to here. * loader/i386/efi/linux.c (GRUB_EFI_CL_OFFSET): Rename to ... (GRUB_LINUX_CL_OFFSET): ... this. Update all users. (GRUB_EFI_CL_END_OFFSET): Rename to ... (GRUB_LINUX_CL_END_OFFSET): ... this. Update all users. (grub_rescue_cmd_linux): Macroify `type_of_loader' initialization. Initialize `params->video_cursor_x' and `params->video_cursor_y' portably using grub_getxy(). Replace `-EFI' with `-bzImage' in boot message.
This commit is contained in:
parent
38487ddbd2
commit
7f42f83e87
4 changed files with 45 additions and 13 deletions
20
ChangeLog
20
ChangeLog
|
@ -1,3 +1,23 @@
|
|||
2008-08-18 Robert Millan <rmh@aybabtu.com>
|
||||
|
||||
* include/grub/i386/linux.h (LINUX_LOADER_ID_LILO)
|
||||
(LINUX_LOADER_ID_LOADLIN, LINUX_LOADER_ID_BOOTSECT)
|
||||
(LINUX_LOADER_ID_SYSLINUX, LINUX_LOADER_ID_ETHERBOOT)
|
||||
(LINUX_LOADER_ID_ELILO, LINUX_LOADER_ID_GRUB, LINUX_LOADER_ID_UBOOT)
|
||||
(LINUX_LOADER_ID_XEN, LINUX_LOADER_ID_GUJIN, LINUX_LOADER_ID_QEMU):
|
||||
New macros.
|
||||
(GRUB_LINUX_CL_OFFSET, GRUB_LINUX_CL_END_OFFSET): Move from here ...
|
||||
* loader/i386/pc/linux.c (GRUB_LINUX_CL_OFFSET)
|
||||
(GRUB_LINUX_CL_END_OFFSET): ... to here.
|
||||
* loader/i386/efi/linux.c (GRUB_EFI_CL_OFFSET): Rename to ...
|
||||
(GRUB_LINUX_CL_OFFSET): ... this. Update all users.
|
||||
(GRUB_EFI_CL_END_OFFSET): Rename to ...
|
||||
(GRUB_LINUX_CL_END_OFFSET): ... this. Update all users.
|
||||
(grub_rescue_cmd_linux): Macroify `type_of_loader' initialization.
|
||||
Initialize `params->video_cursor_x' and `params->video_cursor_y'
|
||||
portably using grub_getxy().
|
||||
Replace `-EFI' with `-bzImage' in boot message.
|
||||
|
||||
2008-08-17 Robert Millan <rmh@aybabtu.com>
|
||||
|
||||
* include/grub/x86_64/kernel.h: New file (<grub/i386/kernel.h> stub).
|
||||
|
|
|
@ -39,8 +39,6 @@
|
|||
#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE
|
||||
#define GRUB_LINUX_VID_MODE_ASK 0xFFFD
|
||||
|
||||
#define GRUB_LINUX_CL_OFFSET 0x9000
|
||||
#define GRUB_LINUX_CL_END_OFFSET 0x90FF
|
||||
#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100
|
||||
#define GRUB_LINUX_CL_MAGIC 0xA33F
|
||||
|
||||
|
@ -104,6 +102,17 @@ struct linux_kernel_header
|
|||
grub_uint16_t start_sys; /* The load-low segment (obsolete) */
|
||||
grub_uint16_t kernel_version; /* Points to kernel version string */
|
||||
grub_uint8_t type_of_loader; /* Boot loader identifier */
|
||||
#define LINUX_LOADER_ID_LILO 0x0
|
||||
#define LINUX_LOADER_ID_LOADLIN 0x1
|
||||
#define LINUX_LOADER_ID_BOOTSECT 0x2
|
||||
#define LINUX_LOADER_ID_SYSLINUX 0x3
|
||||
#define LINUX_LOADER_ID_ETHERBOOT 0x4
|
||||
#define LINUX_LOADER_ID_ELILO 0x5
|
||||
#define LINUX_LOADER_ID_GRUB 0x7
|
||||
#define LINUX_LOADER_ID_UBOOT 0x8
|
||||
#define LINUX_LOADER_ID_XEN 0x9
|
||||
#define LINUX_LOADER_ID_GUJIN 0xa
|
||||
#define LINUX_LOADER_ID_QEMU 0xb
|
||||
grub_uint8_t loadflags; /* Boot protocol option flags */
|
||||
grub_uint16_t setup_move_size; /* Move to high memory size */
|
||||
grub_uint32_t code32_start; /* Boot loader hook */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2006,2007 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2006,2007,2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -33,8 +33,8 @@
|
|||
#include <grub/efi/uga_draw.h>
|
||||
#include <grub/pci.h>
|
||||
|
||||
#define GRUB_EFI_CL_OFFSET 0x1000
|
||||
#define GRUB_EFI_CL_END_OFFSET 0x2000
|
||||
#define GRUB_LINUX_CL_OFFSET 0x1000
|
||||
#define GRUB_LINUX_CL_END_OFFSET 0x2000
|
||||
|
||||
#define NEXT_MEMORY_DESCRIPTOR(desc, size) \
|
||||
((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size)))
|
||||
|
@ -166,7 +166,7 @@ allocate_pages (grub_size_t prot_size)
|
|||
grub_size_t real_size;
|
||||
|
||||
/* Make sure that each size is aligned to a page boundary. */
|
||||
real_size = GRUB_EFI_CL_END_OFFSET;
|
||||
real_size = GRUB_LINUX_CL_END_OFFSET;
|
||||
prot_size = page_align (prot_size);
|
||||
mmap_size = find_mmap_size ();
|
||||
|
||||
|
@ -634,7 +634,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
|||
goto fail;
|
||||
|
||||
params = (struct linux_kernel_params *) real_mode_mem;
|
||||
grub_memset (params, 0, GRUB_EFI_CL_END_OFFSET);
|
||||
grub_memset (params, 0, GRUB_LINUX_CL_END_OFFSET);
|
||||
grub_memcpy (¶ms->setup_sects, &lh.setup_sects, sizeof (lh) - 0x1F1);
|
||||
|
||||
params->ps_mouse = params->padding10 = 0;
|
||||
|
@ -647,7 +647,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
|||
}
|
||||
|
||||
/* XXX Linux assumes that only elilo can boot Linux on EFI!!! */
|
||||
params->type_of_loader = 0x50;
|
||||
params->type_of_loader = (LINUX_LOADER_ID_ELILO << 4);
|
||||
|
||||
params->cl_magic = GRUB_LINUX_CL_MAGIC;
|
||||
params->cl_offset = 0x1000;
|
||||
|
@ -664,8 +664,8 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
|||
params->ext_mem = ((32 * 0x100000) >> 10);
|
||||
params->alt_mem = ((32 * 0x100000) >> 10);
|
||||
|
||||
params->video_cursor_x = grub_efi_system_table->con_out->mode->cursor_column;
|
||||
params->video_cursor_y = grub_efi_system_table->con_out->mode->cursor_row;
|
||||
params->video_cursor_x = grub_getxy () >> 8;
|
||||
params->video_cursor_y = grub_getxy () & 0xff;
|
||||
params->video_page = 0; /* ??? */
|
||||
params->video_mode = grub_efi_system_table->con_out->mode->mode;
|
||||
params->video_width = (grub_getwh () >> 8);
|
||||
|
@ -758,7 +758,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
|||
grub_file_seek (file, real_size + GRUB_DISK_SECTOR_SIZE);
|
||||
|
||||
/* XXX there is no way to know if the kernel really supports EFI. */
|
||||
grub_printf (" [Linux-EFI, setup=0x%x, size=0x%x]\n",
|
||||
grub_printf (" [Linux-bzImage, setup=0x%x, size=0x%x]\n",
|
||||
(unsigned) real_size, (unsigned) prot_size);
|
||||
|
||||
/* Detect explicitly specified memory size, if any. */
|
||||
|
@ -814,7 +814,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
|||
}
|
||||
|
||||
/* Specify the boot file. */
|
||||
dest = grub_stpcpy ((char *) real_mode_mem + GRUB_EFI_CL_OFFSET,
|
||||
dest = grub_stpcpy ((char *) real_mode_mem + GRUB_LINUX_CL_OFFSET,
|
||||
"BOOT_IMAGE=");
|
||||
dest = grub_stpcpy (dest, argv[0]);
|
||||
|
||||
|
@ -822,7 +822,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
|||
for (i = 1;
|
||||
i < argc
|
||||
&& dest + grub_strlen (argv[i]) + 1 < ((char *) real_mode_mem
|
||||
+ GRUB_EFI_CL_END_OFFSET);
|
||||
+ GRUB_LINUX_CL_END_OFFSET);
|
||||
i++)
|
||||
{
|
||||
*dest++ = ' ';
|
||||
|
|
|
@ -31,6 +31,9 @@
|
|||
#include <grub/dl.h>
|
||||
#include <grub/cpu/linux.h>
|
||||
|
||||
#define GRUB_LINUX_CL_OFFSET 0x9000
|
||||
#define GRUB_LINUX_CL_END_OFFSET 0x90FF
|
||||
|
||||
static grub_dl_t my_mod;
|
||||
|
||||
static grub_size_t linux_mem_size;
|
||||
|
|
Loading…
Reference in a new issue