Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!mtxinu!unisoft!hoptoad!peora!rtmvax!bilver!wbeebe From: wbeebe@bilver.UUCP (bill beebe) Newsgroups: comp.sys.intel Subject: Re: 386 "real" mode access beyond 1M using data_32 instruction prefix Keywords: 80386,real mode Message-ID: <413@bilver.UUCP> Date: 18 Feb 89 05:45:52 GMT References: <529@h-three.UUCP> <7187@killer.DALLAS.TX.US> Reply-To: wbeebe@bilver.UUCP (bill beebe) Organization: W. J. Vermillion, Winter Park, FL Lines: 41 In article <7187@killer.DALLAS.TX.US> chasm@killer.DALLAS.TX.US (Charles Marslett) writes: >It certainly does: Intel (for reasons known only to their architects, real >world programmers would have never done it that way!) always verifies that >the address generated in real mode is less than 00110000h (so the 386 cannot >access any more real-mode memory than the 286. > >You would have thought they should have learned a lesson from the 286's >one way mode switch . . . programmers like to be able to make mistakes! >Idiot proofing an instruction set makes it an idiot's instruction set. > >> Is it even possible to access above 1M without going into full protected >> mode? > >Nope.... > The 80386 addresses the same amount of "real" address as the 80286 as does the 8086. This is called backward compatibility and provides an easy path from the original up to the 80386 and beyond. As far as addressing memory above 1 meg, there are several ways the 80386 can do this. The first does not require full protection, and allows special LIM emulation drivers and Windows 386 to access the high (> 1 meg ) memory. The 80386 supports paging where a logical address is translated into a physical address. You can use this method to access code and data stored in the higher address. In fact, when the original Intel 301 was introduced, they also sold software from Phoenix Software called Control386. This software used paging to backfill the 301's DOS memory from 512K up to 640K by paging memory installed above 1 meg. This was 32-bit memory and when running had absolutely no impact on real-mode DOS programs. The second method, protected mode, can be switched into and out of under software control by setting the Protection Enable bit of Control Register 0. This is a great oversimplification. If you want more information, you should read chapters 10 and 14 of the 1986 80386 Programmer's Reference Manual. In any event, once protected mode is entered and a _proper_ environment created, the 80386 can address any location in 4 Gbytes of physical memory. The 80386 is also not limited to a 64K segment limitation in protected mode. With the granularity bit clear in the descriptor, segments can have a maximum limit of 1 meg. With the granularity bit set, segments can have a maximum limit of 4 Gbytes.