116 lines
3.2 KiB
HTML
116 lines
3.2 KiB
HTML
<HTML>
|
|
|
|
<HEAD>
|
|
<TITLE>I/O Interface to Bochs Debugger</TITLE>
|
|
</HEAD>
|
|
|
|
<BODY TEXT="#000000" BGCOLOR="#ececec" LINK="#3333cc" VLINK="#666666">
|
|
|
|
<CENTER><H1>I/O Interface to Bochs Debugger</H1></CENTER>
|
|
|
|
This device was added by Dave Poirier (eks@void-core.2y.net).
|
|
|
|
<p>
|
|
<b>Compiling bochs with support</b>
|
|
<blockquote>
|
|
<pre>
|
|
./configure --enable-iodebug
|
|
make
|
|
</pre>
|
|
Other optional fields may be added to the <cite>./configure</cite> line, see
|
|
bochs documentations for all the informations.
|
|
</blockquote>
|
|
|
|
|
|
|
|
<p>
|
|
<b>Using the I/O Interface to the debugger</b>
|
|
<blockquote>
|
|
<pre>
|
|
port range: 0x8A00 - 0x8A02
|
|
</pre>
|
|
<p>
|
|
Port <b>0x8A00</b> servers as command register. You can use it to enable the
|
|
i/o interface, change which data register is active, etc.
|
|
<p>
|
|
Port <b>0x8A01</b> is used as data register for the memory monitoring.
|
|
<p>
|
|
Port <b>0x8A02</b> is used as data register for breakpoints/watchpoints.
|
|
</blockquote>
|
|
|
|
|
|
|
|
<p>
|
|
<b>Commands supported by the 0x8A00 port</b>
|
|
<blockquote>
|
|
<i>note: all accesses must be done using word</i><br>
|
|
<i>note2: reading this register will return 0x8A00 if currently activated, otherwise 0</i>
|
|
<pre>0x8A00</pre>
|
|
<p>
|
|
Used to enable the device. Any I/O to the debug module before this command is
|
|
sent is sent will simply be ignored.
|
|
<p>
|
|
<pre>0x8A01</pre>
|
|
<p>
|
|
Selects register 0: Memory monitoring range start address (inclusive)
|
|
<p>
|
|
<pre>0x8A02</pre>
|
|
<p>
|
|
Selects register 1: Memory monitoring range end address (exclusive)
|
|
<p>
|
|
<pre>0x8A80</pre>
|
|
<p>
|
|
Enable address range memory monitoring as indicated by register 0 and 1 and clears both registers
|
|
<p>
|
|
|
|
<pre>0x8AE0 - Return to Debugger Prompt</pre>
|
|
<p>
|
|
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. Basically the same as doing CTRL+C
|
|
<p>
|
|
|
|
<pre>0x8AE2 - Instruction Trace Disable</pre>
|
|
<p>
|
|
If the debugger is enabled (via --enable-debugger), sending 0x8AE2 to port 0x8A00 after the device has been enabled will disable instruction tracing
|
|
<p>
|
|
|
|
<pre>0x8AE3 - Instruction Trace Enable</pre>
|
|
<p>
|
|
If the debugger is enabled (via --enable-debugger), sending 0x8AE3 to port 0x8A00 after the device has been enabled will enable instruction tracing
|
|
<p>
|
|
|
|
<pre>0x8AE4 - Register Trace Disable</pre>
|
|
<p>
|
|
If the debugger is enabled (via --enable-debugger), sending 0x8AE4 to port 0x8A00 after the device has been enabled will disable register tracing.
|
|
<p>
|
|
|
|
<pre>0x8AE5 - Register Trace Enable</pre>
|
|
<p>
|
|
If the debugger is enabled (via --enable-debugger), sending 0x8AE5 to port 0x8A00 after the device has been enabled will enable register tracing. This currently output the value of all the registers for each instruction traced. Note: instruction tracing must be enabled to view the register tracing
|
|
<p>
|
|
|
|
<pre>0x8AFF</pre>
|
|
<p>
|
|
Disable the I/O interface to the debugger and the memory monitoring functions.
|
|
</blockquote>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
<b>Access to port 0x8A01</b>
|
|
<blockquote>
|
|
<i>(write-only)</i>
|
|
<p>
|
|
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.
|
|
<pre>
|
|
i.e: reg0 = 0x01234567
|
|
|
|
out port: 0x8A01 data: 0xABCD
|
|
|
|
reg0 = 0x4567ABCD
|
|
</pre>
|
|
|
|
</body></html>
|