summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Bennett <sb476@cam.ac.uk>2007-12-10 03:00:36 +0000
committerStuart Bennett <sb476@cam.ac.uk>2007-12-10 03:10:10 +0000
commitf5488a7da6e04a14a2046c2886f3478fe1fca246 (patch)
treec1ac95b9edff7c00cc1f7bed84a3d1e0cbcadcd1
parenta678a649a0b7353e0f160ea10dc9461c49bc067e (diff)
More docs and workaround for nvidia laptop issue
-rw-r--r--KNOWN_ISSUES30
-rw-r--r--QUICKSTART18
-rw-r--r--README3
3 files changed, 51 insertions, 0 deletions
diff --git a/KNOWN_ISSUES b/KNOWN_ISSUES
new file mode 100644
index 0000000..35d60ea
--- /dev/null
+++ b/KNOWN_ISSUES
@@ -0,0 +1,30 @@
+Some system biosen (called out to by laptops) use opcodes (e.g. LIDT - 0x0f01)
+ that x86emu does not support. This results in the emulator dying horribly,
+halfway through the emulation (which will be logged at the end of your trace)
+
+Should this apply to you, the following patch will ignore interrupts calling
+to the system bios, and should avoid this problem
+
+diff --git a/ops.c b/ops.c
+index 37ae2c9..17eb7a4 100644
+--- a/ops.c
++++ b/ops.c
+@@ -8856,8 +8856,9 @@ static void x86emuOp_int_IMM(u8 X86EMU_UNUSED(op1))
+ START_OF_INSTR();
+ DECODE_PRINTF("INT\t");
+ intnum = fetch_byte_imm();
+- DECODE_PRINTF2("%x\n", intnum);
++ DECODE_PRINTF2("%x (ignored)\n", intnum);
+ TRACE_AND_STEP();
++#if 0
+ if (_X86EMU_intrTab[intnum]) {
+ (*_X86EMU_intrTab[intnum])(intnum);
+ } else {
+@@ -8869,6 +8870,7 @@ static void x86emuOp_int_IMM(u8 X86EMU_UNUSED(op1))
+ push_word(M.x86.R_IP);
+ M.x86.R_IP = mem_access_word(intnum * 4);
+ }
++#endif
+ DECODE_CLEAR_SEGOVR();
+ END_OF_INSTR();
+ }
diff --git a/QUICKSTART b/QUICKSTART
index a66b94e..4778189 100644
--- a/QUICKSTART
+++ b/QUICKSTART
@@ -2,6 +2,7 @@ Some typical uses:
A. Capturing a POST trace
B. IO logging a mode set
+C. Dumping the card's BIOS to a file
A. Capturing a POST trace
=========================
@@ -25,6 +26,10 @@ A. Capturing a POST trace
and a reasonably large logfile, proceed to step 4, otherwise complain to
whoever told you to do this in the first place
+3c. If your tracing dies horribly (on a laptop), leaving you with an
+ undersized logfile, and/or a broken console, read KNOWN_ISSUES and try
+ the patch therein
+
4. Run "./deloopify logfile". Another file "logfile-deloopd", somewhat
smaller than the original log, will be produced
@@ -32,6 +37,8 @@ A. Capturing a POST trace
6. Introduce "logfile-deloopd.gz" to whoever wants it
+7. Submit your card's rom image with the trace (see use case C)
+
B. IO logging a mode set
========================
@@ -48,3 +55,14 @@ B. IO logging a mode set
5. Compress logfile with your favourite utility, and acquaint the person
requesting the log with it
+
+6. Submit your card's rom image with the trace (see use case C)
+
+C. Dumping the card's BIOS to a file
+====================================
+
+1. Run 'make' in the vbtracetool directory, if you haven't already
+
+2. Run "./vbtracetool -w 2> myvga.rom"
+
+3. Send to someone who wants it
diff --git a/README b/README
index a3098d5..fa35e15 100644
--- a/README
+++ b/README
@@ -36,6 +36,9 @@ try either of these in x and lose.
Bonus trace processor:
"./deloopify TRACENAME" will compact loops in your trace
+Known issues:
+see KNOWN_ISSUES file
+
Killing:
do not interrupt, once started -- you will likely earn yourself a hung machine
if you really really don't like what's happening, turn the power off