From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13160 invoked by alias); 2 Jul 2013 21:02:42 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 13150 invoked by uid 89); 2 Jul 2013 21:02:42 -0000 X-Spam-SWARE-Status: No, score=-4.3 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RP_MATCHES_RCVD autolearn=ham version=3.3.1 Received: from e24smtp02.br.ibm.com (HELO e24smtp02.br.ibm.com) (32.104.18.86) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 02 Jul 2013 21:02:41 +0000 Received: from /spool/local by e24smtp02.br.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 2 Jul 2013 18:02:38 -0300 Received: from d24dlp01.br.ibm.com (9.18.248.204) by e24smtp02.br.ibm.com (10.172.0.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 2 Jul 2013 18:02:37 -0300 Received: from d24relay02.br.ibm.com (d24relay02.br.ibm.com [9.13.184.26]) by d24dlp01.br.ibm.com (Postfix) with ESMTP id 637E4352005F for ; Tue, 2 Jul 2013 17:02:36 -0400 (EDT) Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.8.31.91]) by d24relay02.br.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r62L1CY232702632 for ; Tue, 2 Jul 2013 18:01:12 -0300 Received: from d24av01.br.ibm.com (localhost [127.0.0.1]) by d24av01.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id r62L2ZQl015631 for ; Tue, 2 Jul 2013 18:02:36 -0300 Received: from grandaddy.ibm.com ([9.8.14.238]) by d24av01.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id r62L2Zgm015621; Tue, 2 Jul 2013 18:02:35 -0300 From: Edjunior Barbosa Machado To: gdb-patches@sourceware.org Cc: Edjunior Barbosa Machado , Ulrich.Weigand@de.ibm.com, eliz@gnu.org, lgustavo@codesourcery.com Subject: Re: [PATCH] Enable hw watchpoint with longer ranges using DAWR on Power Date: Tue, 02 Jul 2013 21:02:00 -0000 Message-Id: <1372798938-3549-1-git-send-email-emachado@linux.vnet.ibm.com> In-reply-to: <83ip0sbuh7.fsf@gnu.org> X-TM-AS-MML: No X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13070221-2194-0000-0000-000005DBC566 X-SW-Source: 2013-07/txt/msg00098.txt.bz2 On 07/02/2013 05:03 PM, Eli Zaretskii wrote: > Is only one watchpoint of this kind possible at any given time? If > more than one such watchpoint can be used at the same time, I don't > see why we should expose the 512-byte limitation to users. Just use > more than one such watchpoint to cover the range of addresses > requested by the user command. Yes, currently there is only one hw watchpoint available on Power servers. The new feature just allows to watch longer ranges using this hw watchpoint, up to 512 bytes, instead of previous 8 bytes limit. I'm resending the patch fixing the comment as Luis suggested. And I also hope we can get the 'booke' renaming upstream soon :) Thanks for the feedback. -- Edjunior gdb/ChangeLog 2013-07-02 Edjunior Barbosa Machado * ppc-linux-nat.c (PPC_DEBUG_FEATURE_DATA_BP_DAWR): New define. (ppc_linux_region_ok_for_hw_watchpoint): Add checking to use the new DAWR interface for longer ranges hardware watchpoint (up to 512 bytes). --- gdb/ppc-linux-nat.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c index 65d4f4a..ce437dd 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -177,7 +177,11 @@ struct ppc_hw_breakpoint (1<<((n)+PPC_BREAKPOINT_CONDITION_BE_SHIFT)) #endif /* PPC_PTRACE_GETHWDBGINFO */ - +/* Feature defined on Linux kernel v3.9: DAWR interface, that enables wider + watchpoint (up to 512 bytes). */ +#ifndef PPC_DEBUG_FEATURE_DATA_BP_DAWR +#define PPC_DEBUG_FEATURE_DATA_BP_DAWR 0x10 +#endif /* PPC_DEBUG_FEATURE_DATA_BP_DAWR */ /* Similarly for the general-purpose (gp0 -- gp31) and floating-point registers (fp0 -- fp31). */ @@ -1502,6 +1506,7 @@ ppc_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) to determine the hardcoded watchable region for watchpoints. */ if (have_ptrace_booke_interface ()) { + int region_size; /* Embedded DAC-based processors, like the PowerPC 440 have ranged watchpoints and can watch any access within an arbitrary memory region. This is useful to watch arrays and structs, for instance. It @@ -1510,11 +1515,17 @@ ppc_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) && booke_debug_info.features & PPC_DEBUG_FEATURE_DATA_BP_RANGE && ppc_linux_get_hwcap () & PPC_FEATURE_BOOKE) return 2; + /* Check if the processor provides DAWR interface. */ + if (booke_debug_info.features & PPC_DEBUG_FEATURE_DATA_BP_DAWR) + /* DAWR interface allows to watch up to 512 byte wide ranges which + can't cross a 512 byte boundary. */ + region_size = 512; + else + region_size = booke_debug_info.data_bp_alignment; /* Server processors provide one hardware watchpoint and addr+len should fall in the watchable region provided by the ptrace interface. */ - if (booke_debug_info.data_bp_alignment - && (addr + len > (addr & ~(booke_debug_info.data_bp_alignment - 1)) - + booke_debug_info.data_bp_alignment)) + if (region_size + && (addr + len > (addr & ~(region_size - 1)) + region_size)) return 0; } /* addr+len must fall in the 8 byte watchable region for DABR-based -- 1.8.2.1