 diff -ur bochs/cpu/cpu.cc bochs-trace-cache/cpu/cpu.cc
---- bochs/cpu/cpu.cc	2007-11-23 18:25:48.671875000 +0200
-+++ bochs-trace-cache/cpu/cpu.cc	2007-11-23 18:17:34.031250000 +0200
+--- bochs/cpu/cpu.cc	2007-11-24 16:22:32.000000000 +0200
++++ bochs-trace-cache/cpu/cpu.cc	2007-11-24 16:29:57.078125000 +0200
 @@ -62,16 +62,19 @@
  #if InstrumentICACHE
  static unsigned iCacheLookups=0;

-      bx_dbg_disassemble_current(BX_CPU_ID, 1); // only one cpu, print time stamp
+        bx_dbg_disassemble_current(BX_CPU_ID, 1); // only one cpu, print time stamp
 #else
-      debug_disasm_instruction(BX_CPU_THIS_PTR prev_eip);
+        debug_disasm_instruction(BX_CPU_THIS_PTR prev_eip);
 #endif
-    }
+      }

   /* 80 /dm */ { BxGroup1 | BxImmediate_Ib, NULL, BxOpcodeInfoG1EbIbM },
   /* 81 /dm */ { BxGroup1 | BxImmediate_Iv,    NULL, BxOpcodeInfoG1EdM },
   /* 82 /dm */ { 0, &BX_CPU_C::BxError },
@@ -2437,7 +2437,7 @@
   /* 8B /dm */ { 0, &BX_CPU_C::MOV_GdEdM },
   /* 8C /dm */ { 0, &BX_CPU_C::MOV_EwSw },
   /* 8D /dm */ { 0, &BX_CPU_C::LEA_GdM },
-  /* 8E /dm */ { 0, &BX_CPU_C::MOV_SwEw },
+  /* 8E /dm */ { BxTraceEnd, &BX_CPU_C::MOV_SwEw }, // async_event = 1
   /* 8F /dm */ { 0, &BX_CPU_C::POP_EqM },
   /* 90 /dm */ { 0, &BX_CPU_C::XCHG_ERXEAX }, // handles XCHG R8d, EAX
   /* 91 /dm */ { 0, &BX_CPU_C::XCHG_ERXEAX },
@@ -2489,20 +2489,20 @@
   /* BF /dm */ { BxImmediate_Iv, &BX_CPU_C::MOV_ERXId },
   /* C0 /dm */ { BxGroup2 | BxImmediate_Ib, NULL, BxOpcodeInfoG2Eb },
