delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/04/14/20:50:08

Sender: nate AT cartsys DOT com
Message-ID: <37151F43.1FDF079C@cartsys.com>
Date: Wed, 14 Apr 1999 16:05:39 -0700
From: Nate Eldredge <nate AT cartsys DOT com>
X-Mailer: Mozilla 4.08 [en] (X11; I; Linux 2.2.5 i586)
MIME-Version: 1.0
To: djgpp AT delorie DOT com
Subject: Re: cwsdpr0.exe 4/14/99
References: <F554E1189472D21198D000805F654BFE59FFCD AT ntxchangerend DOT engr DOT rendition DOT com>
Reply-To: djgpp AT delorie DOT com

yjtseng wrote:
> 
> All right,
> 
> Now, fact:      CR0=0x80000019 which means paging is on. If I maps physical
> address 0xfb000000 to linear address using
> __dpmi_physical_address_mapping(&mi) as shown in FAQ 18.7, the returned
> linear address is 0xfb00000000 which the same as physical address
> 0xfb000000. How can this be? It does not make sense, right? Unless the
> paging mechanism is off, which is not true, as evidenced by CR0=0x80000019.
> Since paging is used, shouldn't the linear address be different from the
> physical address after Int 31H, function 0800H?

Not necessarily.

[(Over-)simplified explanation]

Paging uses a scheme whereby each page in the linear address space has a
page table entry, which contains an address in physical memory where the
page actually resides.  This may (as in your case) or may not be the
same as the linear address.

Essentially all paging does is provide a level of indirection between
linear and physical memory.  How the mapping works out is up to the DPMI
server.

-- 

Nate Eldredge
nate AT cartsys DOT com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019