Writing Device Drivers

ISA Bus

ISA Bus Memory and I/O Space

Two address spaces are provided: memory address space and I/O address space. Depending on the device, registers may appear in one or both of these address spaces. Table 2-3 shows the registers for memory and I/O address spaces in the ISA bus.

Table 2-3 ISA Bus Address Space

ISA Space 

Name 

Address 

Size 

Data Transfer 

Size 

Physical Address 

Range 

Main memory 

24 

16 

0x0-0xffffff 

I/O 

-- 

8/16 

0x0-0xfff 

Registers can be mapped in memory address space and used by the driver as normal memory (see "Memory Space Access").

Registers in I/O space are accessed through I/O port numbers using separate kernel routines. See "I/O Space Access" for more information.

Hardware Configuration Files

Beginning with the Solaris 7 operating environment, the use of hardware configuration files to provide arguments to probe(9E) on x86 platforms is highly discouraged, since probes can lead to system hangs and resets. Exact device configuration information is maintained by the booting system and is passed to the probe(9E) function.

A separate realmode driver may need to be developed for the booting system. See the Realmode Drivers white paper in the Driver Development Site at http://www.sun.com/developers/driver for information on realmode drivers. Hardware configuration files may be needed on some occasions to augment the information provided by the booting system. See driver.conf(4) and isa(4) for further details.