Last change
on this file was
e16e8f2,
checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago
|
bootstuff
|
-
Property mode set to
100644
|
File size:
1.2 KB
|
Line | |
---|
1 | #ifndef GDBMACH_H |
---|
2 | #define GDBMACH_H |
---|
3 | |
---|
4 | /** @file |
---|
5 | * |
---|
6 | * GDB architecture specifics |
---|
7 | * |
---|
8 | * This file declares functions for manipulating the machine state and |
---|
9 | * debugging context. |
---|
10 | * |
---|
11 | */ |
---|
12 | |
---|
13 | #include <stdint.h> |
---|
14 | |
---|
15 | typedef unsigned long gdbreg_t; |
---|
16 | |
---|
17 | /* The register snapshot, this must be in sync with interrupt handler and the |
---|
18 | * GDB protocol. */ |
---|
19 | enum { |
---|
20 | GDBMACH_EAX, |
---|
21 | GDBMACH_ECX, |
---|
22 | GDBMACH_EDX, |
---|
23 | GDBMACH_EBX, |
---|
24 | GDBMACH_ESP, |
---|
25 | GDBMACH_EBP, |
---|
26 | GDBMACH_ESI, |
---|
27 | GDBMACH_EDI, |
---|
28 | GDBMACH_EIP, |
---|
29 | GDBMACH_EFLAGS, |
---|
30 | GDBMACH_CS, |
---|
31 | GDBMACH_SS, |
---|
32 | GDBMACH_DS, |
---|
33 | GDBMACH_ES, |
---|
34 | GDBMACH_FS, |
---|
35 | GDBMACH_GS, |
---|
36 | GDBMACH_NREGS, |
---|
37 | GDBMACH_SIZEOF_REGS = GDBMACH_NREGS * sizeof ( gdbreg_t ) |
---|
38 | }; |
---|
39 | |
---|
40 | /* Breakpoint types */ |
---|
41 | enum { |
---|
42 | GDBMACH_BPMEM, |
---|
43 | GDBMACH_BPHW, |
---|
44 | GDBMACH_WATCH, |
---|
45 | GDBMACH_RWATCH, |
---|
46 | GDBMACH_AWATCH, |
---|
47 | }; |
---|
48 | |
---|
49 | static inline void gdbmach_set_pc ( gdbreg_t *regs, gdbreg_t pc ) { |
---|
50 | regs [ GDBMACH_EIP ] = pc; |
---|
51 | } |
---|
52 | |
---|
53 | static inline void gdbmach_set_single_step ( gdbreg_t *regs, int step ) { |
---|
54 | regs [ GDBMACH_EFLAGS ] &= ~( 1 << 8 ); /* Trace Flag (TF) */ |
---|
55 | regs [ GDBMACH_EFLAGS ] |= ( step << 8 ); |
---|
56 | } |
---|
57 | |
---|
58 | static inline void gdbmach_breakpoint ( void ) { |
---|
59 | __asm__ __volatile__ ( "int $3\n" ); |
---|
60 | } |
---|
61 | |
---|
62 | extern int gdbmach_set_breakpoint ( int type, unsigned long addr, size_t len, int enable ); |
---|
63 | |
---|
64 | #endif /* GDBMACH_H */ |
---|
Note: See
TracBrowser
for help on using the repository browser.