Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!usc!brutus.cs.uiuc.edu!apple!agate!shelby!portia!dhinds From: dhinds@portia.Stanford.EDU (David Hinds) Newsgroups: comp.sys.ibm.pc Subject: 32-bit addressing on the 80386 in real mode?!? Keywords: 80386, 32-bit, Real mode Message-ID: <8342@portia.Stanford.EDU> Date: 17 Jan 90 21:42:37 GMT Sender: David Hinds Organization: Stanford University Lines: 25 I think I might have found a trick for allowing 32-bit addressing in real mode on the 80386. According to a book I have on the 80386, real mode address calculations pass through the same memory management hardware as in protected mode. When the 80386 is reset, it loads the segment descriptor cache registers with sets of attributes that make all the segment registers behave as if they were 8086-type segments. When switching from protected mode BACK to real mode, the book says that the descriptor cache registers all have to be re-loaded with attributes appropriate for real mode - i.e., the 80386 does not reset the attributes on its own. These attributes include the 64K segment limit. So, I thought, it should be possible to switch to protected mode for a moment, set up the segment descriptor cache to look like real mode EXCEPT that the limit fields are set to 4 Gbytes, then pop back into real mode. The descriptor cache should be locked in real mode, so from that point on, big offsets should work without causing protection violations. However, I haven't been able to get it to work. I can switch into and out of protected mode OK, and initialize the segment descriptors OK, but the 64K offset limit still seems to be enforced when I get back to real mode. So... is the book wrong? Am I missing anything trivial? Do some real-mode events cause the descriptor cache to be re-initialized, like interrupts or far jumps? Or am I just wasting my time? - David Hinds dhinds@portia.stanford.edu