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};
15
16#ifdef USE_DEBUGGER
17
18struct DebugBreakpoint {
19 struct DebugBreakpoint* next;
20 int32_t address;
21};
22
23struct DebugMemoryShim {
24 struct ARMMemory d;
25 struct ARMMemory* original;
26
27 struct ARMDebugger* p;
28 struct DebugBreakpoint* watchpoints;
29};
30
31struct ARMDebugger {
32 enum DebuggerState state;
33 struct ARMCore* cpu;
34
35 EditLine* elstate;
36 History* histate;
37
38 struct DebugBreakpoint* breakpoints;
39 struct DebugMemoryShim memoryShim;
40};
41
42void ARMDebuggerInit(struct ARMDebugger*, struct ARMCore*);
43void ARMDebuggerDeinit(struct ARMDebugger*);
44void ARMDebuggerRun(struct ARMDebugger*);
45void ARMDebuggerEnter(struct ARMDebugger*);
46
47#else
48
49struct ARMDebugger {
50 enum DebuggerState state;
51};
52
53#endif
54
55#endif