On 6 December 2012 09:16, li guang <lig.f...@cn.fujitsu.com> wrote: > 在 2012-12-06四的 08:54 +0000,Peter Maydell写道: >> On 6 December 2012 03:03, liguang <lig.f...@cn.fujitsu.com> wrote: >> > Signed-off-by: liguang <lig.f...@cn.fujitsu.com> >> > --- a/target-i386/seg_helper.c >> > +++ b/target-i386/seg_helper.c >> > @@ -465,9 +465,9 @@ static void switch_tss(CPUX86State *env, int >> > tss_selector, >> > >> > #ifndef CONFIG_USER_ONLY >> > /* reset local breakpoints */ >> > - if (env->dr[7] & 0x55) { >> > - for (i = 0; i < 4; i++) { >> > - if (hw_breakpoint_enabled(env->dr[7], i) == 0x1) { >> > + if (env->dr[7] & DR7_LOCAL_BP_MASK) { >> > + for (i = 0; i < DR7_MAX_BP; i++) { >> > + if (hw_breakpoint_enabled(env->dr[7], i)) { >> > hw_breakpoint_remove(env, i); >> > } >> > } >> >> This is still wrong. > > do you mean the use of 'hw_breakpoint_enabled'? or others? > maybe a mistake, I change it to 'hw_local_breakpoint_enabled'. > if it is I'll re-send a corrected patch.
I mean that in the comments on the previous version of this patchseet we explained that this check is specifically checking for whether the breakpoint is enabled locally, and that your change to just returning bool broke this. And in this version of the patch there is still exactly the same problem. -- PMM