www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1995/01/09/15:10:29

Date: Mon, 9 Jan 1995 14:12:06 +0500
From: hvb AT netrix DOT com
To: sandmann AT new-orleans DOT neosoft DOT com
Subject: Re: Accessing absolute addresses in memory (>1M) and ports.
Cc: djgpp AT sun DOT soe DOT clarkson DOT edu
Reply-To: hvb AT netrix DOT com

Cc: djgpp AT sun DOT soe DOT clarkson DOT edu
> 
> > Is it possible (and how?) to access ports and absolute addresses in 
> > memory (above 1M) with GNAT/DJGPP?
> 
> ports can be accessed via inline assembler or via routines in pc.h
> 
> Absolute addresses can be addressed under DPMI providers by using 
> DPMI call 0x0800, and the farptr.h functions.  (BTW, this is 
> supported in the free DPMI and will be the *ONLY* way to access 
> physical memory locations > 1Mb in V2).
> 
We have a number of memory mapped devices. Some of them are mapped
to the 0xd000 page of the low 1MB, some of them are mapped to the
area above 12MB of the physical memory addressing space. Will the call
to the DPMI (0x0800) function allow me:

 - to map to the whole 16MB of the physical memory addressing space
in one call, so effectively I will be able to obtain an equivalent
offset to the 0xe0000000 offset that I have today?
 - or there is a limit to each region that I need to map to, so I have
to call DPMI for each area?

I understand that I should not access to any area outside my hardware
devices area.

> Under non-DPMI providers, add 0xe0000000 to the physical address
> and use that as a pointer.  Note, this feature disappears in V2.
> 
> If you want to write to a single API and don't have DPMI, I can
> let you have an early release of the free DPMI to use with V1.12
> 

- Raw text -


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