From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:43099) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tv1sV-00013o-U4 for qemu-devel@nongnu.org; Tue, 15 Jan 2013 03:28:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tv1sU-0000Ak-Ho for qemu-devel@nongnu.org; Tue, 15 Jan 2013 03:28:15 -0500 Received: from cantor2.suse.de ([195.135.220.15]:38244 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tv1sU-0000Ae-8K for qemu-devel@nongnu.org; Tue, 15 Jan 2013 03:28:14 -0500 Message-ID: <50F51319.8080109@suse.de> Date: Tue, 15 Jan 2013 09:28:09 +0100 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1358228396-17552-1-git-send-email-lig.fnst@cn.fujitsu.com> <1358228396-17552-2-git-send-email-lig.fnst@cn.fujitsu.com> In-Reply-To: <1358228396-17552-2-git-send-email-lig.fnst@cn.fujitsu.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v5 1/2] target-i386: define dr7 bit field List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: liguang Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, imammedo@redhat.com Am 15.01.2013 06:39, schrieb liguang: > implictly use of dr7 bit field is a little hard > to understand, so try to define them and use the > defined name. >=20 > Signed-off-by: liguang > --- > target-i386/cpu.h | 6 ++++++ > target-i386/machine.c | 5 +++-- > target-i386/misc_helper.c | 4 ++-- > target-i386/seg_helper.c | 9 +++++---- > 4 files changed, 16 insertions(+), 8 deletions(-) >=20 > diff --git a/target-i386/cpu.h b/target-i386/cpu.h > index 1283537..64fd7a5 100644 > --- a/target-i386/cpu.h > +++ b/target-i386/cpu.h > @@ -231,6 +231,12 @@ > #define DR7_TYPE_SHIFT 16 > #define DR7_LEN_SHIFT 18 > #define DR7_FIXED_1 0x00000400 > +#define DR7_LOCAL_BP_MASK 0x55 > +#define DR7_MAX_BP 4 > +#define DR7_TYPE_BP_INST 0x0 > +#define DR7_TYPE_DATA_WR 0x1 > +#define DR7_TYPE_IO_RW 0x2 > +#define DR7_TYPE_DATA_RW 0x3 > =20 > #define PG_PRESENT_BIT 0 > #define PG_RW_BIT 1 > diff --git a/target-i386/machine.c b/target-i386/machine.c > index 8354572..8df6a6b 100644 > --- a/target-i386/machine.c > +++ b/target-i386/machine.c > @@ -265,10 +265,11 @@ static int cpu_post_load(void *opaque, int versio= n_id) > =20 > cpu_breakpoint_remove_all(env, BP_CPU); > cpu_watchpoint_remove_all(env, BP_CPU); > - for (i =3D 0; i < 4; i++) > + for (i =3D 0; i < DR7_MAX_BP; i++) { > hw_breakpoint_insert(env, i); > - > + } > tlb_flush(env, 1); > + > return 0; > } > =20 > diff --git a/target-i386/misc_helper.c b/target-i386/misc_helper.c > index db3126b..9b0f7b3 100644 > --- a/target-i386/misc_helper.c > +++ b/target-i386/misc_helper.c > @@ -197,11 +197,11 @@ void helper_movl_drN_T0(CPUX86State *env, int reg= , target_ulong t0) > env->dr[reg] =3D t0; > hw_breakpoint_insert(env, reg); > } else if (reg =3D=3D 7) { > - for (i =3D 0; i < 4; i++) { > + for (i =3D 0; i < DR7_MAX_BP; i++) { > hw_breakpoint_remove(env, i); > } > env->dr[7] =3D t0; > - for (i =3D 0; i < 4; i++) { > + for (i =3D 0; i < DR7_MAX_BP; i++) { > hw_breakpoint_insert(env, i); > } > } else { > diff --git a/target-i386/seg_helper.c b/target-i386/seg_helper.c > index c2a99ee..3247dee 100644 > --- a/target-i386/seg_helper.c > +++ b/target-i386/seg_helper.c > @@ -465,13 +465,14 @@ static void switch_tss(CPUX86State *env, int tss_= selector, > =20 > #ifndef CONFIG_USER_ONLY > /* reset local breakpoints */ > - if (env->dr[7] & 0x55) { > - for (i =3D 0; i < 4; i++) { > - if (hw_breakpoint_enabled(env->dr[7], i) =3D=3D 0x1) { > + if (env->dr[7] & DR7_LOCAL_BP_MASK) { > + for (i =3D 0; i < DR7_MAX_BP; i++) { > + if (hw_local_breakpoint_enabled(env->dr[7], i) && > + !hw_global_breakpoint_enabled(env->dr[7], i)) { Does not build. > hw_breakpoint_remove(env, i); > } > } > - env->dr[7] &=3D ~0x55; > + env->dr[7] &=3D ~DR7_LOCAL_BP_MASK; > } > #endif > } >=20 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg