Rene Herman wrote:
> On 04/19/2007 04:18 PM, Bart Trojanowski wrote:
>
>> I need to preserve some state from the bios before entering protected
>> mode. For now I want to copy it into some ram accessible by
>> real-mode, say the last megabyte visible in real-mode.
>>
>> What's the easiest way to have linux ignore the megabyte starting at 15M?
>
> Note that real-mode can only access the first megabyte (*) and not the
> first 16. 16MB is the 16-bit protected mode (286) limit.
>
No, 16-bit protected mode (on 386+) is not limited to 16 MB.
The main reason there is a 16 MB limit in some current systems is that
ISA, and the ISA DMA controller only had 24 address lines.
-hpa
On 06/22/2007 03:46 AM, H. Peter Anvin wrote:
> Rene Herman wrote:
>> On 04/19/2007 04:18 PM, Bart Trojanowski wrote:
>>
>>> I need to preserve some state from the bios before entering protected
>>> mode. For now I want to copy it into some ram accessible by
>>> real-mode, say the last megabyte visible in real-mode.
>>>
>>> What's the easiest way to have linux ignore the megabyte starting at 15M?
>> Note that real-mode can only access the first megabyte (*) and not the
>> first 16. 16MB is the 16-bit protected mode (286) limit.
>>
>
> No, 16-bit protected mode (on 386+) is not limited to 16 MB.
That all depends on one's definition of 16-bit protected mode. The "(286)"
after mine meant I was talking about the definition in which descriptors
have a 24-bit base (and 16-bit limit) field -- ie, real 286 and arguably,
"real 16-bit protected mode".
Yes, I guess another valid definition is "code with a 16-bit address and
operand size default" on a 386+ and sure, that's just flipping a bit away.
In the context of Linux I agree it's also a sensible definition, so, well,
whatever. The point was that real mode could only access the first 1M, not
the first 16... :-)
Rene.