Decoupling Architectural-specific Code (#35)
[lunaix-os.git] / lunaix-os / arch / i386 / trace.c
1 #include <lunaix/trace.h>
2
3 void
4 trace_print_transistion_short(struct hart_state* hstate)
5 {
6     trace_log("  trigger: iv=%d, ecause=%p",
7                 hart_vector_stamp(hstate),
8                 hart_ecause(hstate));
9 }
10
11 void
12 trace_print_transition_full(struct hart_state* hstate)
13 {
14     trace_log("hart state transition");
15     trace_log("  vector=%d, ecause=0x%x", 
16                 hart_vector_stamp(hstate),
17                 hart_ecause(hstate));
18     trace_log("  eflags=0x%x", hstate->execp->eflags);
19     trace_log("  sp=%p, [seg_sel=0x%04x]", 
20                 hstate->execp->esp, 
21                 hstate->execp->esp);
22     trace_log("  ip=%p, seg_sel=0x%04x",
23                 hstate->execp->eip,
24                 hstate->execp->cs);
25 }
26
27 void
28 trace_dump_state(struct hart_state* hstate)
29 {
30     struct regcontext* rh = &hstate->registers;
31     struct exec_param* ep = hstate->execp;
32     trace_log("hart state dump (depth=%d)", hstate->depth);
33     trace_log("  eax=0x%08x, ebx=0x%08x, ecx=0x%08x",
34                 rh->eax, rh->ebx, rh->ecx);
35     trace_log("  edx=0x%08x, ebp=0x%08x",
36                 rh->edx, rh->ebp);
37     trace_log("   ds=0x%04x, edi=0x%08x",
38                 rh->ds, rh->edi);
39     trace_log("   es=0x%04x, esi=0x%08x",
40                 rh->es, rh->esi);
41     trace_log("   fs=0x%04x, gs=0x%x",
42                 rh->fs, rh->gs);
43     trace_log("   cs=0x%04x, ip=0x%08x",
44                 ep->cs, ep->eip);
45     trace_log("  [ss=0x%04x],sp=0x%08x",
46                 ep->ss, ep->eip);
47     trace_log("  eflags=0x%08x",
48                 ep->eflags);
49 }