Commit 88fe8a41f2abbee28948626a4e6426d17f0498bf
1 parent
b3ceef24
DR6 single step exception status bit, by Juergen Keil.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3024 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
13 additions
and
1 deletions
target-i386/exec.h
... | ... | @@ -190,6 +190,7 @@ void helper_divq_EAX_T0(void); |
190 | 190 | void helper_idivq_EAX_T0(void); |
191 | 191 | void helper_bswapq_T0(void); |
192 | 192 | void helper_cmpxchg8b(void); |
193 | +void helper_single_step(void); | |
193 | 194 | void helper_cpuid(void); |
194 | 195 | void helper_enter_level(int level, int data32); |
195 | 196 | void helper_enter64_level(int level, int data64); | ... | ... |
target-i386/helper.c
... | ... | @@ -1622,6 +1622,12 @@ void helper_cmpxchg8b(void) |
1622 | 1622 | CC_SRC = eflags; |
1623 | 1623 | } |
1624 | 1624 | |
1625 | +void helper_single_step() | |
1626 | +{ | |
1627 | + env->dr[6] |= 0x4000; | |
1628 | + raise_exception(EXCP01_SSTP); | |
1629 | +} | |
1630 | + | |
1625 | 1631 | void helper_cpuid(void) |
1626 | 1632 | { |
1627 | 1633 | uint32_t index; | ... | ... |
target-i386/op.c
target-i386/translate.c
... | ... | @@ -2277,7 +2277,7 @@ static void gen_eob(DisasContext *s) |
2277 | 2277 | if (s->singlestep_enabled) { |
2278 | 2278 | gen_op_debug(); |
2279 | 2279 | } else if (s->tf) { |
2280 | - gen_op_raise_exception(EXCP01_SSTP); | |
2280 | + gen_op_single_step(); | |
2281 | 2281 | } else { |
2282 | 2282 | gen_op_movl_T0_0(); |
2283 | 2283 | gen_op_exit_tb(); | ... | ... |