7 #ifndef XTF_X86_DBG_REG_H 8 #define XTF_X86_DBG_REG_H 15 #define X86_DR6_B0 (1u << 0) 16 #define X86_DR6_B1 (1u << 1) 17 #define X86_DR6_B2 (1u << 2) 18 #define X86_DR6_B3 (1u << 3) 19 #define X86_DR6_BD (1u << 13) 20 #define X86_DR6_BS (1u << 14) 21 #define X86_DR6_BT (1u << 15) 22 #define X86_DR6_RTM (1u << 16) 24 #define X86_DR6_DEFAULT 0xffff0ff0 29 #define X86_DR7_LE (1u << 8) 30 #define X86_DR7_GE (1u << 9) 31 #define X86_DR7_RTM (1u << 11) 32 #define X86_DR7_GD (1u << 13) 34 #define X86_DR7_DEFAULT 0x00000400 39 #define X86_DR7_0_L (1u << 0) 40 #define X86_DR7_1_L (1u << 2) 41 #define X86_DR7_2_L (1u << 4) 42 #define X86_DR7_3_L (1u << 6) 44 #define X86_DR7_0_G (1u << 1) 45 #define X86_DR7_1_G (1u << 3) 46 #define X86_DR7_2_G (1u << 5) 47 #define X86_DR7_3_G (1u << 7) 49 #define X86_DR7_0_X (0u << 16) 50 #define X86_DR7_0_W (1u << 16) 51 #define X86_DR7_0_IO (2u << 16) 52 #define X86_DR7_0_RW (3u << 16) 54 #define X86_DR7_0_8 (0u << 18) 55 #define X86_DR7_0_16 (1u << 18) 56 #define X86_DR7_0_64 (2u << 18) 57 #define X86_DR7_0_32 (3u << 18) 59 #define X86_DR7_1_X (0u << 20) 60 #define X86_DR7_1_W (1u << 20) 61 #define X86_DR7_1_IO (2u << 20) 62 #define X86_DR7_1_RW (3u << 20) 64 #define X86_DR7_1_8 (0u << 22) 65 #define X86_DR7_1_16 (1u << 22) 66 #define X86_DR7_1_64 (2u << 22) 67 #define X86_DR7_1_32 (3u << 22) 69 #define X86_DR7_2_X (0u << 24) 70 #define X86_DR7_2_W (1u << 24) 71 #define X86_DR7_2_IO (2u << 24) 72 #define X86_DR7_2_RW (3u << 24) 74 #define X86_DR7_2_8 (0u << 26) 75 #define X86_DR7_2_16 (1u << 26) 76 #define X86_DR7_2_64 (2u << 26) 77 #define X86_DR7_2_32 (3u << 26) 79 #define X86_DR7_3_X (0u << 28) 80 #define X86_DR7_3_W (1u << 28) 81 #define X86_DR7_3_IO (2u << 28) 82 #define X86_DR7_3_RW (3u << 28) 84 #define X86_DR7_3_8 (0u << 30) 85 #define X86_DR7_3_16 (1u << 30) 86 #define X86_DR7_3_64 (2u << 30) 87 #define X86_DR7_3_32 (3u << 30) 100 #define DR7_SYM(bp, ...) TOK_OR(X86_DR7_ ## bp ## _, ##__VA_ARGS__) 106 asm volatile (
"mov %%dr0, %0" :
"=r" (val));
113 asm volatile (
"mov %0, %%dr0" ::
"r" (linear));
120 asm volatile (
"mov %%dr1, %0" :
"=r" (val));
127 asm volatile (
"mov %0, %%dr1" ::
"r" (linear));
134 asm volatile (
"mov %%dr2, %0" :
"=r" (val));
141 asm volatile (
"mov %0, %%dr2" ::
"r" (linear));
148 asm volatile (
"mov %%dr3, %0" :
"=r" (val));
155 asm volatile (
"mov %0, %%dr3" ::
"r" (linear));
162 asm volatile (
"mov %%dr6, %0" :
"=r" (val));
169 asm volatile (
"mov %0, %%dr6" ::
"r" (val));
176 asm volatile (
"mov %%dr7, %0" :
"=r" (val));
183 asm volatile (
"mov %0, %%dr7" ::
"r" (val));
static void write_dr3(unsigned long linear)
Varadic macro helpers - Here be many dragons.
static unsigned long read_dr2(void)
static unsigned long read_dr1(void)
static void write_dr6(unsigned long val)
static void write_dr2(unsigned long linear)
static unsigned long read_dr3(void)
static void write_dr7(unsigned long val)
static unsigned long read_dr7(void)
static unsigned long read_dr0(void)
static unsigned long read_dr6(void)
static void write_dr0(unsigned long linear)
static void write_dr1(unsigned long linear)