Annotation of qemu/roms/ipxe/src/arch/i386/include/gdbmach.h, revision 1.1.1.1

1.1       root        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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.