If you have a very recent kernel, you should be able to use the
"vremap()" functionality to remap an area of physical memory into kernel
memory space. Usage:
void * base = vremap(0xfbffe000,0x2000); /* start, size */
if (!base) {
printk("unable to remap high PCI memory\n");
return;
}
... access the area relative to "base" ...
Note that the kernel can't directly access all 32 bits of the physical
memory map: that wouldn't leave any virtual memory left for user
processes (we only have a 32-bit virtual address space). So we need to
use vremap() for anything that is mapped high in memory in the kernel.
NOTE! Be _very_ careful if you try to do DMA to this area. You need to
use the real physical address (0xfbffe000), not the virtually re-mapped
address (base).
Linus