summaryrefslogtreecommitdiff
path: root/gpxe/src/arch/i386/include/bochs.h
blob: 9d090fc120df110c7d610c23a5c1ec7cbe734bdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef BOCHS_H
#define BOCHS_H

/** @file
 *
 * bochs breakpoints
 *
 * This file defines @c bochsbp, the magic breakpoint instruction that
 * is incredibly useful when debugging under bochs.  This file should
 * never be included in production code.
 *
 * Use the pseudo-instruction @c bochsbp in assembly code, or the
 * bochsbp() function in C code.
 *
 */

#ifdef ASSEMBLY

/* Breakpoint for when debugging under bochs */
#define bochsbp xchgw %bx, %bx
#define BOCHSBP bochsbp

#else /* ASSEMBLY */

/** Breakpoint for when debugging under bochs */
static inline void bochsbp ( void ) {
	__asm__ __volatile__ ( "xchgw %bx, %bx" );
}

#endif /* ASSEMBLY */

#warning "bochs.h should not be included into production code"

#endif /* BOCHS_H */