diff options
author | Stuart Bennett <sb476@cam.ac.uk> | 2007-12-10 03:00:36 +0000 |
---|---|---|
committer | Stuart Bennett <sb476@cam.ac.uk> | 2007-12-10 03:10:10 +0000 |
commit | f5488a7da6e04a14a2046c2886f3478fe1fca246 (patch) | |
tree | c1ac95b9edff7c00cc1f7bed84a3d1e0cbcadcd1 | |
parent | a678a649a0b7353e0f160ea10dc9461c49bc067e (diff) |
More docs and workaround for nvidia laptop issue
-rw-r--r-- | KNOWN_ISSUES | 30 | ||||
-rw-r--r-- | QUICKSTART | 18 | ||||
-rw-r--r-- | README | 3 |
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(); + } @@ -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 @@ -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 |