merge mainline into newreloc

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-01-30 16:46:16 +01:00
commit 6e308bd942
72 changed files with 1538 additions and 533 deletions

View file

@ -577,14 +577,14 @@ grub_freebsd_boot (void)
}
grub_memset (&bi, 0, sizeof (bi));
bi.bi_version = FREEBSD_BOOTINFO_VERSION;
bi.bi_size = sizeof (bi);
bi.version = FREEBSD_BOOTINFO_VERSION;
bi.length = sizeof (bi);
grub_bsd_get_device (&biosdev, &unit, &slice, &part);
bootdev = (FREEBSD_B_DEVMAGIC + ((slice + 1) << FREEBSD_B_SLICESHIFT) +
(unit << FREEBSD_B_UNITSHIFT) + (part << FREEBSD_B_PARTSHIFT));
bi.bi_bios_dev = biosdev;
bi.boot_device = biosdev;
p_size = 0;
grub_env_iterate (iterate_env_count);
@ -629,7 +629,7 @@ grub_freebsd_boot (void)
{
*(p++) = 0;
bi.bi_envp = p_target;
bi.environment = p_target;
}
if (is_elf_kernel)
@ -655,9 +655,9 @@ grub_freebsd_boot (void)
case FREEBSD_MODINFO_METADATA | FREEBSD_MODINFOMD_ENVP:
if (is_64bit)
*(grub_uint64_t *) p_tag = bi.bi_envp;
*(grub_uint64_t *) p_tag = bi.environment;
else
*(grub_uint32_t *) p_tag = bi.bi_envp;
*(grub_uint32_t *) p_tag = bi.environment;
break;
case FREEBSD_MODINFO_METADATA | FREEBSD_MODINFOMD_KERNEND:
@ -675,12 +675,12 @@ grub_freebsd_boot (void)
p_tag = ALIGN_VAR (p_tag - p) + p;
}
bi.bi_modulep = (p - p0) + p_target;
bi.tags = (p - p0) + p_target;
p = (ALIGN_PAGE ((p_tag - p0) + p_target) - p_target) + p0;
}
bi.bi_kernend = kern_end;
bi.kern_end = kern_end;
grub_video_set_mode ("text", 0, 0);
@ -713,7 +713,7 @@ grub_freebsd_boot (void)
state.rip = (((grub_uint64_t) entry_hi) << 32) | entry;
stack[0] = entry;
stack[1] = bi.bi_modulep;
stack[1] = bi.tags;
stack[2] = kern_end;
return grub_relocator64_boot (relocator, state, 0, 0x40000000);
}
@ -746,7 +746,7 @@ grub_freebsd_boot (void)
stack[4] = 0;
stack[5] = 0;
stack[6] = stack_target + 9 * sizeof (grub_uint32_t);
stack[7] = bi.bi_modulep;
stack[7] = bi.tags;
stack[8] = kern_end;
return grub_relocator32_boot (relocator, state);
}

View file

@ -939,6 +939,10 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
break;
}
/* We can't detect VESA, but user is implicitly telling us that it
is built-in because `vga=' parameter was used. */
params->have_vga = GRUB_VIDEO_LINUX_TYPE_VESA;
linux_mode
= &linux_vesafb_modes[vid_mode - GRUB_LINUX_VID_MODE_VESA_START];

View file

@ -199,7 +199,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
{
grub_elf_close (elf);
return grub_error (GRUB_ERR_UNKNOWN_OS,
"This ELF file is not of the right type\n");
"this ELF file is not of the right type\n");
}
/* Release the previously used memory. */
@ -239,7 +239,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
if (grub_elf_is_elf64 (elf))
err = grub_linux_load64 (elf, &extra, size);
else
err = grub_error (GRUB_ERR_BAD_FILE_TYPE, "Unknown ELF class");
err = grub_error (GRUB_ERR_BAD_FILE_TYPE, "unknown ELF class");
grub_elf_close (elf);
@ -330,13 +330,13 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
grub_err_t err;
if (argc == 0)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "No initrd specified");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no initrd specified");
if (!loaded)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "You need to load Linux first.");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "you need to load Linux first.");
if (initrd_loaded)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "Only one initrd can be loaded.");
return grub_error (GRUB_ERR_BAD_ARGUMENT, "only one initrd can be loaded.");
file = grub_file_open (argv[0]);
if (! file)
@ -359,7 +359,7 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
if (grub_file_read (file, initrd_src, size) != size)
{
grub_error (GRUB_ERR_FILE_READ_ERROR, "Couldn't read file");
grub_error (GRUB_ERR_FILE_READ_ERROR, "couldn't read file");
grub_file_close (file);
return grub_errno;