On 03/07/2017 22:19, Richard Henderson wrote:
> On 07/03/2017 09:34 AM, Paolo Bonzini wrote:
>> @@ -215,10 +215,12 @@ void breakpoint_handler(CPUState *cs)
>>       if (cs->watchpoint_hit) {
>>           if (cs->watchpoint_hit->flags & BP_CPU) {
>>               cs->watchpoint_hit = NULL;
>> -            if (check_hw_breakpoints(env, false)) {
>> -                raise_exception(env, EXCP01_DB);
>> -            } else {
>> -                cpu_loop_exit_noexc(cs);
>> +            if (tcg_enabled()) {
>> +                if (check_hw_breakpoints(env, false)) {
>> +                    raise_exception(env, EXCP01_DB);
>> +                } else {
>> +                    cpu_loop_exit_noexc(cs);
>> +                }
> 
> This seems like an odd place for the tcg_enabled check.  It seems like
> it should be much higher in the if/call chain.
> 
> Why are we doing all these bp checks only to disable the final raising
> of an exception?
> 
> Indeed, what in bpt_helper.c needs to be compiled in when !tcg_enabled?

Only cpu_x86_update_dr7, but it's not used by KVM (I was worried about
guest debug aka gdbstub mode).  So that's my own brain fart; I'll wrap
the cpu_x86_update_dr7 with tcg_enabled and drop the file altogether.

Paolo

Reply via email to