Mail Archives: djgpp/2002/01/19/00:17:53
> Hi, I'm trying to peak/poke my two custom PCI cards that each occupy
> 512MB of address space, located at hardware addresses 0xA0000000 and
> 0xC0000000. Is this possible using DOS, djgpp, and cwsdpmi5?
When you map memory using page tables, each 4Mb takes 4Kb of memory,
and CWSDPMI puts this in DOS memory. Mapping 1Gb of physical address
space would take 1Mb of page tables in 640K of DOS memory. So this
won't work with the "off the shelf" stuff. It can be fixed.
This may work using pmode 1.3, or I believe it may work using the
CWSDPMI test WIP version I've made available for testing which uses
4Mb pages.
> getting SIGSEGV errors or "could not allocate page table memory".
> I can't find any examples of accessing huge areas, so I'm just flailing
> about with dpmi function calls that I don't fully understand. What's
> the right approach? What sequence of function calls? Thanks.
If you make your code work properly with a smaller area (say 50Mb) of
mapped space, first try ftp://clio.rice.edu/djgpp/csdpmi6t.zip and
see if it works - or PMODE 1.3 in raw (no emm) mode. In any case, bug
me with email if it doesn't and I'll fix up something that does.
- Raw text -