[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gate A20 and i386-qemu port

From: Robert Millan
Subject: Re: gate A20 and i386-qemu port
Date: Sat, 14 Nov 2009 16:38:22 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

On Sat, Nov 14, 2009 at 01:48:00PM +0100, Vladimir 'phcoder' Serbinenko wrote:
> Robert Millan wrote:
> > I'm wondering how come the i386-qemu port works if none of its
> > initialization code takes into account gate A20.  Does this
> > mean it's supposed to be already disabled in initial CPU state,
> > and only enabled by BIOS?
> >
> > Or maybe the code only works by chance and would break unexpectedly
> > in specific situations?
> >
> >   
> Without disabling A20 even and odd mibibytes will be squashed together.
> Following code can check A20:
> *((volatile grub_uint8_t *) 0x200000) = 0;
> *((volatile grub_uint8_t *) 0x300000) = 1;
> if (*((volatile grub_uint8_t *) 0x200000))
>   grub_printf ("Expect bugs\n");
> else
>   grub_printf ("You're safe\n");

Yeah, in fact we have gate_a20_check_state() to check for this, but only
in i386-pc.

I find it surprising that i386-qemu works at all without it.  I guess it
only works because the high mem area that would overlap with our code in
0x8200 is never used.

I'll look into this...

Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."

reply via email to

[Prev in Thread] Current Thread [Next in Thread]