[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."