Kernel virtual memory is accessed through the interface /dev/kmem in the same manner as /dev/mem Only kernel virtual addresses that are currently mapped to memory are allowed.
The file /dev/vmem allows access to the mapped portion of the VERSAbus I/O space. On the Tahoe the upper megabyte of the physical address space is accessible through this file (0xfff00000 through 0xffffffff). Accesses to the upper 64 kilobytes of the I/O space result in VERSAbus transfers with a 16-bit address (the offset in this region) and a ``non-privileged short I/O '' VERSAbus address modifier. Accesses to the remainder of the mapped region, result in VERSAbus transfers with a 24-bit address and a ``non-privileged standard'' VERSAbus address modifier. This region is actually part of the region between 0xfeff0000 and 0xffff0000 which generates VERSAbus transfers with a 24-bit address. Accesses to the remainder of the one gigabyte I/O space generate transfers that utilize a 32-bit address with a ``non-privileged extended'' address modifier. Any 32-bit address generated by a cpu access to this part of the I/O space have the upper two bits zero; thus, for example, an access to physical address 0xfe000000 causes the address 0x3e000000 to be supplied in the resultant VERSAbus read/write cycle.
On the Tahoe, the base address for the per-process data of the current process is virtual address 0xbffff000.