Possibility to prefer higher or lower chunks in relocator
This commit is contained in:
parent
611f8f0eb9
commit
49a716be3b
8 changed files with 41 additions and 17 deletions
|
@ -550,7 +550,8 @@ grub_freebsd_boot (void)
|
|||
&stack_target,
|
||||
0x10000, 0x90000,
|
||||
3 * sizeof (grub_uint32_t)
|
||||
+ sizeof (bi), 4);
|
||||
+ sizeof (bi), 4,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -575,7 +576,8 @@ grub_freebsd_boot (void)
|
|||
&stack_target,
|
||||
0x10000, 0x90000,
|
||||
9 * sizeof (grub_uint32_t)
|
||||
+ sizeof (bi), 4);
|
||||
+ sizeof (bi), 4,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE);
|
||||
if (err)
|
||||
return err;
|
||||
grub_memcpy (&stack[8], &bi, sizeof (bi));
|
||||
|
@ -798,7 +800,8 @@ grub_netbsd_boot (void)
|
|||
|
||||
err = grub_relocator_alloc_chunk_align (relocator, (void **) &stack,
|
||||
&stack_target, 0x10000, 0x90000,
|
||||
7 * sizeof (grub_uint32_t), 4);
|
||||
7 * sizeof (grub_uint32_t), 4,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
|
|
@ -943,9 +943,6 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
|||
addr_min = (grub_addr_t) prot_mode_target + ((prot_mode_pages * 3) << 12)
|
||||
+ page_align (size);
|
||||
|
||||
if (addr_max > grub_os_area_addr + grub_os_area_size)
|
||||
addr_max = grub_os_area_addr + grub_os_area_size;
|
||||
|
||||
/* Put the initrd as high as possible, 4KiB aligned. */
|
||||
addr = (addr_max - size) & ~0xFFF;
|
||||
|
||||
|
@ -957,7 +954,8 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
err = grub_relocator_alloc_chunk_align (relocator, &initrd_mem,
|
||||
&initrd_mem_target,
|
||||
addr_min, addr, size, 0x1000);
|
||||
addr_min, addr, size, 0x1000,
|
||||
GRUB_RELOCATOR_PREFERENCE_HIGH);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
|
|
@ -259,7 +259,8 @@ grub_module (int argc, char *argv[])
|
|||
err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &module,
|
||||
&target,
|
||||
0, (0xffffffff - size) + 1,
|
||||
size, MULTIBOOT_MOD_ALIGN);
|
||||
size, MULTIBOOT_MOD_ALIGN,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE);
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -125,7 +125,8 @@ grub_multiboot_make_mbi (grub_uint32_t *target)
|
|||
err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator,
|
||||
(void **) &ptrorig, &ptrdest,
|
||||
0, 0xffffffff - bufsize,
|
||||
bufsize, 4);
|
||||
bufsize, 4,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
|
|
@ -115,7 +115,8 @@ grub_xnu_resume (char *imagename)
|
|||
&target_image, 0,
|
||||
(0xffffffff - hibhead.image_size) + 1,
|
||||
hibhead.image_size,
|
||||
GRUB_XNU_PAGESIZE);
|
||||
GRUB_XNU_PAGESIZE,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE);
|
||||
if (err)
|
||||
{
|
||||
grub_file_close (file);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue