On Thu, Jul 23, 2009 at 11:31 PM, Pavel Roskin<pro...@gnu.org> wrote:
> 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.
I'm ok with this too. The main reason for me to decide for one or
another would be core.img size but I haven't checked yet which one is
smaller. Actually asm part is kept to minimum and
grub_machine_mmap_iterate is the C wrapper and I followed this idea.
But as I said your solution is fine for me too.
> 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
For me this coode looks weird because of using edi as zero register
and eax as pointer. Could we perhaps move this code down and use eax
as 0 and edi as pointer?
>
> 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
>



-- 
Regards
Vladimir 'phcoder' Serbinenko

Personal git repository: http://repo.or.cz/w/grub2/phcoder.git


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to