在 2012-12-06四的 09:23 +0000,Peter Maydell写道: > 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.
why broke? this function just ask if breakpoint 'i' was enable, so we answer enabled or not? 2 simple cases, any problem? > > -- PMM -- regards! li guang