qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/3] target-i386:slightly refactor dr7 related f


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH 3/3] target-i386:slightly refactor dr7 related function
Date: Thu, 06 Dec 2012 10:36:06 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0

Am 06.12.2012 10:27, schrieb li guang:
> 在 2012-12-06四的 09:23 +0000,Peter Maydell写道:
>> On 6 December 2012 09:16, li guang <address@hidden> wrote:
>>> 在 2012-12-06四的 08:54 +0000,Peter Maydell写道:
>>>> On 6 December 2012 03:03, liguang <address@hidden> wrote:
>>>>> Signed-off-by: liguang <address@hidden>
>>>>> --- 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?

The code comment specifically says "reset local breakpoints". IIUC you
are also resetting global breakpoints, which you shouldn't.

Personally I'd be fine with a hw_local_breakpoint_enabled().

Regards,
Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

[Prev in Thread] Current Thread [Next in Thread]