extern LttvCPUMode
LTTV_CPU_UNKNOWN,
LTTV_CPU_IDLE,
- LTTV_CPU_BUSY;
+ LTTV_CPU_BUSY,
+ LTTV_CPU_IRQ,
+ LTTV_CPU_TRAP;
+
+typedef GQuark LttvIRQMode;
+extern LttvIRQMode
+ LTTV_IRQ_UNKNOWN,
+ LTTV_IRQ_IDLE,
+ LTTV_IRQ_BUSY;
typedef struct _LttvExecutionState {
LttvExecutionMode t;
#define LTTV_TRACE_STATE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), LTTV_TRACE_STATE_TYPE, LttvTraceStateClass))
typedef struct _LttvCPUState {
- LttvCPUMode previous_state;
- LttvCPUMode present_state;
+ GArray *mode_stack;
+ guint last_irq;
} LttvCPUState;
+typedef struct _LttvIRQState {
+ GArray *mode_stack;
+} LttvIRQState;
+
struct _LttvTraceState {
LttvTraceContext parent;
LttvProcessState **running_process;
gboolean has_precomputed_states;
LttvCPUState *cpu_states; /* state of each cpu */
+ LttvIRQState *irq_states; /* state of each irq handler */
};
struct _LttvTraceStateClass {