I/O Interface to Bochs Debugger

This device was added by Dave Poirier (eks@void-core.2y.net).

Compiling bochs with support

./configure --enable-iodebug
make
Other optional fields may be added to the ./configure line, see bochs documentations for all the informations.

Using the I/O Interface to the debugger

port range:  0x8A00 - 0x8A02

Port 0x8A00 servers as command register. You can use it to enable the i/o interface, change which data register is active, etc.

Port 0x8A01 is used as data register for the memory monitoring.

Port 0x8A02 is used as data register for breakpoints/watchpoints.

Commands supported by the 0x8A00 port

note: all accesses must be done using word
note2: reading this register will return 0x8A00 if currently activated, otherwise 0
0x8A00

Used to enable the device. Any I/O to the debug module before this command is sent is sent will simply be ignored.

0x8A01

Selects register 0: Memory monitoring range start address (inclusive)

0x8A02

Selects register 1: Memory monitoring range end address (exclusive)

0x8A80

Enable address range memory monitoring as indicated by register 0 and 1 and clears both registers

0x8AE0

If the debugger is enabled (via --enable-debugger), sending 0x8AE0 to port 0x8A00 after the device has been enabled will return the bochs to the debugger prompt.

0x8AFF

Disable the I/O interface to the debugger and the memory monitoring functions.

Access to port 0x8A01

(write-only)

All accesses to this port must be done using words. Writing to this port will shift to the left by 16 the current value of the register and add the provided value to it.

i.e:    reg0 = 0x01234567
        
	out port: 0x8A01 data: 0xABCD

	reg0 = 0x4567ABCD