Merge mainline into mbtag
This commit is contained in:
commit
df32be8cc1
141 changed files with 5978 additions and 5414 deletions
|
@ -140,7 +140,6 @@ grub_bsd_get_device (grub_uint32_t * biosdev,
|
|||
grub_uint32_t * unit,
|
||||
grub_uint32_t * slice, grub_uint32_t * part)
|
||||
{
|
||||
char *p;
|
||||
grub_device_t dev;
|
||||
|
||||
#ifdef GRUB_MACHINE_PCBIOS
|
||||
|
@ -154,22 +153,13 @@ grub_bsd_get_device (grub_uint32_t * biosdev,
|
|||
dev = grub_device_open (0);
|
||||
if (dev && dev->disk && dev->disk->partition)
|
||||
{
|
||||
char *p0;
|
||||
p0 = p = dev->disk->partition->partmap->get_name (dev->disk->partition);
|
||||
if (p)
|
||||
if (dev->disk->partition->parent)
|
||||
{
|
||||
if ((p[0] >= '0') && (p[0] <= '9'))
|
||||
{
|
||||
*slice = grub_strtoul (p, &p, 0);
|
||||
|
||||
if ((p) && (p[0] == ','))
|
||||
p++;
|
||||
}
|
||||
|
||||
if ((p[0] >= 'a') && (p[0] <= 'z'))
|
||||
*part = p[0] - 'a';
|
||||
*part = dev->disk->partition->number;
|
||||
*slice = dev->disk->partition->parent->number + 1;
|
||||
}
|
||||
grub_free (p0);
|
||||
else
|
||||
*slice = dev->disk->partition->number + 1;
|
||||
}
|
||||
if (dev)
|
||||
grub_device_close (dev);
|
||||
|
|
|
@ -514,7 +514,6 @@ grub_multiboot_add_module (grub_addr_t start, grub_size_t size,
|
|||
void
|
||||
grub_multiboot_set_bootdev (void)
|
||||
{
|
||||
char *p;
|
||||
grub_uint32_t biosdev, slice = ~0, part = ~0;
|
||||
grub_device_t dev;
|
||||
|
||||
|
@ -530,22 +529,13 @@ grub_multiboot_set_bootdev (void)
|
|||
dev = grub_device_open (0);
|
||||
if (dev && dev->disk && dev->disk->partition)
|
||||
{
|
||||
char *p0;
|
||||
p = p0 = dev->disk->partition->partmap->get_name (dev->disk->partition);
|
||||
if (p)
|
||||
{
|
||||
if ((p[0] >= '0') && (p[0] <= '9'))
|
||||
{
|
||||
slice = grub_strtoul (p, &p, 0) - 1;
|
||||
|
||||
if ((p) && (p[0] == ','))
|
||||
p++;
|
||||
}
|
||||
|
||||
if ((p[0] >= 'a') && (p[0] <= 'z'))
|
||||
part = p[0] - 'a';
|
||||
if (dev->disk->partition->parent)
|
||||
{
|
||||
part = dev->disk->partition->number;
|
||||
slice = dev->disk->partition->parent->number;
|
||||
}
|
||||
grub_free (p0);
|
||||
else
|
||||
slice = dev->disk->partition->number;
|
||||
}
|
||||
if (dev)
|
||||
grub_device_close (dev);
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include <grub/machine/memory.h>
|
||||
#include <grub/dl.h>
|
||||
#include <grub/command.h>
|
||||
#include <grub/msdos_partition.h>
|
||||
#include <grub/machine/biosnum.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/video.h>
|
||||
|
@ -98,10 +99,22 @@ grub_chainloader_cmd (const char *filename, grub_chainloader_flags_t flags)
|
|||
dev = grub_device_open (0);
|
||||
if (dev && dev->disk && dev->disk->partition)
|
||||
{
|
||||
grub_disk_read (dev->disk, dev->disk->partition->offset, 446, 64,
|
||||
(void *) GRUB_MEMORY_MACHINE_PART_TABLE_ADDR);
|
||||
part_addr = (void *) (GRUB_MEMORY_MACHINE_PART_TABLE_ADDR
|
||||
+ (dev->disk->partition->index << 4));
|
||||
grub_disk_t disk = dev->disk;
|
||||
|
||||
if (disk)
|
||||
{
|
||||
grub_partition_t p = disk->partition;
|
||||
|
||||
if (p && grub_strcmp (p->partmap->name, "msdos") == 0)
|
||||
{
|
||||
disk->partition = p->parent;
|
||||
grub_disk_read (disk, p->offset, 446, 64,
|
||||
(void *) GRUB_MEMORY_MACHINE_PART_TABLE_ADDR);
|
||||
part_addr = (void *) (GRUB_MEMORY_MACHINE_PART_TABLE_ADDR
|
||||
+ (p->index << 4));
|
||||
disk->partition = p;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dev)
|
||||
|
|
|
@ -58,9 +58,6 @@ static grub_size_t linux_size;
|
|||
|
||||
static char *linux_args;
|
||||
|
||||
typedef void (*kernel_entry_t) (unsigned long, unsigned long,
|
||||
unsigned long, unsigned long, int (void *));
|
||||
|
||||
struct linux_bootstr_info {
|
||||
int len, valid;
|
||||
char buf[];
|
||||
|
@ -92,7 +89,6 @@ static grub_err_t
|
|||
grub_linux_boot (void)
|
||||
{
|
||||
struct linux_bootstr_info *bp;
|
||||
kernel_entry_t linuxmain;
|
||||
struct linux_hdrs *hp;
|
||||
grub_addr_t addr;
|
||||
|
||||
|
@ -141,8 +137,17 @@ grub_linux_boot (void)
|
|||
grub_dprintf ("loader", "Jumping to Linux...\n");
|
||||
|
||||
/* Boot the kernel. */
|
||||
linuxmain = (kernel_entry_t) linux_addr;
|
||||
linuxmain (0, 0, 0, 0, grub_ieee1275_entry_fn);
|
||||
asm volatile ("sethi %hi(grub_ieee1275_entry_fn), %o1\n"
|
||||
"ldx [%o1 + %lo(grub_ieee1275_entry_fn)], %o4\n"
|
||||
"sethi %hi(grub_ieee1275_original_stack), %o1\n"
|
||||
"ldx [%o1 + %lo(grub_ieee1275_original_stack)], %o6\n"
|
||||
"sethi %hi(linux_addr), %o1\n"
|
||||
"ldx [%o1 + %lo(linux_addr)], %o5\n"
|
||||
"mov %g0, %o0\n"
|
||||
"mov %g0, %o2\n"
|
||||
"mov %g0, %o3\n"
|
||||
"jmp %o5\n"
|
||||
"mov %g0, %o1\n");
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
|
|
@ -1390,7 +1390,7 @@ grub_cmd_xnu_splash (grub_extcmd_t cmd,
|
|||
}
|
||||
|
||||
|
||||
#ifndef GRUB_UTIL
|
||||
#ifndef GRUB_MACHINE_EMU
|
||||
static grub_err_t
|
||||
grub_cmd_xnu_resume (grub_command_t cmd __attribute__ ((unused)),
|
||||
int argc, char *args[])
|
||||
|
@ -1444,7 +1444,7 @@ GRUB_MOD_INIT(xnu)
|
|||
N_("Load a splash image for XNU."),
|
||||
xnu_splash_cmd_options);
|
||||
|
||||
#ifndef GRUB_UTIL
|
||||
#ifndef GRUB_MACHINE_EMU
|
||||
cmd_resume = grub_register_command ("xnu_resume", grub_cmd_xnu_resume,
|
||||
0, N_("Load XNU hibernate image."));
|
||||
#endif
|
||||
|
@ -1456,7 +1456,7 @@ GRUB_MOD_INIT(xnu)
|
|||
|
||||
GRUB_MOD_FINI(xnu)
|
||||
{
|
||||
#ifndef GRUB_UTIL
|
||||
#ifndef GRUB_MACHINE_EMU
|
||||
grub_unregister_command (cmd_resume);
|
||||
#endif
|
||||
grub_unregister_command (cmd_mkext);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue