3 EXTENSION class Tb_entry
12 /** logged kernel event plus register content. */
13 class Tb_entry_ke_reg : public Tb_entry
19 char _msg[16]; ///< debug message
22 char const* _const_msg;
25 Mword _r3, _r4, _r5; ///< registers
30 class Tb_entry_trap : public Tb_entry
41 // --------------------------------------------------------------------
42 IMPLEMENTATION [sparc]:
51 Tb_entry_ke_reg::msg() const
53 return payload<Payload>()->_dsc[0] == 0 && payload<Payload>()->_dsc[1] == 1
54 ? payload<Payload>()->_const_msg : payload<Payload>()->_msg;
59 Tb_entry_ke_reg::val1() const
60 { return payload<Payload>()->_r3; }
64 Tb_entry_ke_reg::val2() const
65 { return payload<Payload>()->_r4; }
69 Tb_entry_ke_reg::val3() const
70 { return payload<Payload>()->_r5; }
74 Tb_entry_ke_reg::set(Context const *ctx, Mword eip, Mword v1, Mword v2, Mword v3)
76 set_global(Tbuf_ke_reg, ctx, eip);
77 payload<Payload>()->_r3 = v1;
78 payload<Payload>()->_r4 = v2;
79 payload<Payload>()->_r5 = v3;
84 Tb_entry_ke_reg::set_const(Context const *ctx, Mword eip, const char * const msg,
85 Mword v1, Mword v2, Mword v3)
87 set(ctx, eip, v1, v2, v3);
88 payload<Payload>()->_dsc[0] = 0; payload<Payload>()->_dsc[1] = 1;
89 payload<Payload>()->_const_msg = msg;
94 Tb_entry_ke_reg::set_buf(unsigned i, char c)
96 if (i < sizeof(payload<Payload>()->_msg) - 1)
97 payload<Payload>()->_msg[i] = c >= ' ' ? c : '.';
102 Tb_entry_ke_reg::term_buf(unsigned i)
103 {payload<Payload>()->_msg[i < sizeof(payload<Payload>()->_msg)-1 ? i
104 : sizeof(payload<Payload>()->_msg)-1] = '\0';}
106 // ------------------
109 Tb_entry_trap::cs() const
114 Tb_entry_trap::trapno() const
115 { return payload<Payload>()->_trapno; }
119 Tb_entry_trap::error() const
120 { return payload<Payload>()->_error; }
124 Tb_entry_trap::sp() const
125 { return payload<Payload>()->_sp; }
129 Tb_entry_trap::cr2() const
134 Tb_entry_trap::eax() const
137 PUBLIC inline NEEDS ["trap_state.h"]
139 Tb_entry_trap::set(Context const *ctx, Mword pc, Trap_state *)
141 set_global(Tbuf_trap, ctx, pc);
145 PUBLIC inline NEEDS ["trap_state.h"]
147 Tb_entry_trap::set(Context const *ctx, Mword pc, Mword )
149 set_global(Tbuf_trap, ctx, pc);