src/debugger/debugger.h (view raw)
1#ifndef DEBUGGER_H
2#define DEBUGGER_H
3
4#ifdef USE_DEBUGGER
5#include <histedit.h>
6
7#include "arm.h"
8#endif
9
10enum DebuggerState {
11 DEBUGGER_PAUSED,
12 DEBUGGER_RUNNING,
13 DEBUGGER_EXITING,
14 DEBUGGER_SHUTDOWN
15};
16
17#ifdef USE_DEBUGGER
18
19struct DebugBreakpoint {
20 struct DebugBreakpoint* next;
21 int32_t address;
22};
23
24struct DebugMemoryShim {
25 struct ARMMemory d;
26 struct ARMMemory* original;
27
28 struct ARMDebugger* p;
29 struct DebugBreakpoint* watchpoints;
30};
31
32struct ARMDebugger {
33 enum DebuggerState state;
34 struct ARMCore* cpu;
35
36 EditLine* elstate;
37 History* histate;
38
39 struct DebugBreakpoint* breakpoints;
40 struct DebugMemoryShim memoryShim;
41};
42
43void ARMDebuggerInit(struct ARMDebugger*, struct ARMCore*);
44void ARMDebuggerDeinit(struct ARMDebugger*);
45void ARMDebuggerRun(struct ARMDebugger*);
46void ARMDebuggerEnter(struct ARMDebugger*);
47
48#else
49
50struct ARMDebugger {
51 enum DebuggerState state;
52};
53
54#endif
55
56#endif