On Thu, 2009-07-23 at 11:38 +0200, Vladimir 'phcoder' Serbinenko wrote: > Hello. According to xen some BIOSes update only lower 32-bit in mmap > entries. To workaround this and not get high values in memory map > zero-fill before calling BIOS
I think the fix belongs to grub_get_mmap_entry(), not to all of its callers. Something like this: diff --git a/kern/i386/pc/startup.S b/kern/i386/pc/startup.S index be258fb..5468ba8 100644 --- a/kern/i386/pc/startup.S +++ b/kern/i386/pc/startup.S @@ -997,6 +997,14 @@ FUNCTION(grub_get_mmap_entry) /* push ADDR */ pushl %eax + /* clear the request area, buggy BIOSes may not clear it */ + xor %edi, %edi + movl %edi, 4(%eax) + movl %edi, 8(%eax) + movl %edi, 12(%eax) + movl %edi, 16(%eax) + movl %edi, 20(%eax) + /* place address (+4) in ES:DI */ addl $4, %eax movl %eax, %edi I don't know whether it would interfere with the Apple CC workaround. It would be great if we get rid of it, perhaps by using labels starting with "L_". -- Regards, Pavel Roskin _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel