merge mainline in bidi
This commit is contained in:
commit
42d2c16b39
6 changed files with 141 additions and 63 deletions
|
@ -59,6 +59,7 @@ grub_ieee1275_find_options (void)
|
|||
char tmp[32];
|
||||
int is_smartfirmware = 0;
|
||||
int is_olpc = 0;
|
||||
int is_qemu = 0;
|
||||
|
||||
grub_ieee1275_finddevice ("/", &root);
|
||||
grub_ieee1275_finddevice ("/options", &options);
|
||||
|
@ -79,6 +80,11 @@ grub_ieee1275_find_options (void)
|
|||
if (rc >= 0 && !grub_strcmp (tmp, "OLPC"))
|
||||
is_olpc = 1;
|
||||
|
||||
rc = grub_ieee1275_get_property (root, "model",
|
||||
tmp, sizeof (tmp), 0);
|
||||
if (rc >= 0 && !grub_strcmp (tmp, "Emulated PC"))
|
||||
is_qemu = 1;
|
||||
|
||||
if (is_smartfirmware)
|
||||
{
|
||||
/* Broken in all versions */
|
||||
|
@ -135,6 +141,10 @@ grub_ieee1275_find_options (void)
|
|||
grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_OFDISK_SDCARD_ONLY);
|
||||
}
|
||||
|
||||
if (is_qemu)
|
||||
/* OpenFirmware hangs on qemu if one requests any memory below 1.5 MiB. */
|
||||
grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM);
|
||||
|
||||
if (! grub_ieee1275_finddevice ("/rom/boot-rom", &bootrom))
|
||||
{
|
||||
rc = grub_ieee1275_get_property (bootrom, "model", tmp, sizeof (tmp), 0);
|
||||
|
|
|
@ -133,6 +133,17 @@ static void grub_claim_heap (void)
|
|||
if (type != 1)
|
||||
return 0;
|
||||
|
||||
if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM))
|
||||
{
|
||||
if (addr + len <= 0x180000)
|
||||
return 0;
|
||||
|
||||
if (addr < 0x180000)
|
||||
{
|
||||
len = addr + len - 0x180000;
|
||||
addr = 0x180000;
|
||||
}
|
||||
}
|
||||
len -= 1; /* Required for some firmware. */
|
||||
|
||||
/* Never exceed HEAP_MAX_SIZE */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue