source: bootcd/isolinux/syslinux-6.03/gpxe/src/arch/i386/include/gdbmach.h

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
15typedef unsigned long gdbreg_t;
16
17/* The register snapshot, this must be in sync with interrupt handler and the
18 * GDB protocol. */
19enum {
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 */
41enum {
42        GDBMACH_BPMEM,
43        GDBMACH_BPHW,
44        GDBMACH_WATCH,
45        GDBMACH_RWATCH,
46        GDBMACH_AWATCH,
47};
48
49static inline void gdbmach_set_pc ( gdbreg_t *regs, gdbreg_t pc ) {
50        regs [ GDBMACH_EIP ] = pc;
51}
52
53static 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
58static inline void gdbmach_breakpoint ( void ) {
59        __asm__ __volatile__ ( "int $3\n" );
60}
61
62extern 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.