From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27416 invoked by alias); 1 Apr 2008 20:49:13 -0000 Received: (qmail 27390 invoked by uid 9514); 1 Apr 2008 20:49:12 -0000 Date: Tue, 01 Apr 2008 20:49:00 -0000 Message-ID: <20080401204912.27374.qmail@sourceware.org> From: pmuldoon@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Implement hasWatchpointTriggered in abstract, and sub-classes. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: b927d6c13dcc27d155895895fcb958b4c32fb595 X-Git-Newrev: a0fc4305e0afa24959ac5cd073f65c6bb50eb8b0 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q2/txt/msg00012.txt.bz2 The branch, master has been updated via a0fc4305e0afa24959ac5cd073f65c6bb50eb8b0 (commit) from b927d6c13dcc27d155895895fcb958b4c32fb595 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit a0fc4305e0afa24959ac5cd073f65c6bb50eb8b0 Author: Phil Muldoon Date: Tue Apr 1 21:48:19 2008 +0100 Implement hasWatchpointTriggered in abstract, and sub-classes. 2008-04-01 Phil Muldoon * Watchpoint.java (hasWatchpointTriggered): Define. * IA32Watchpoint.java (hasWatchpointTriggered): Implement. * X8664Watchpoint.java (hasWatchpointTriggered): Ditto. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/isa/watchpoints/ChangeLog | 6 ++++++ .../frysk/isa/watchpoints/IA32Watchpoint.java | 13 ++++++++++++- frysk-core/frysk/isa/watchpoints/Watchpoint.java | 10 ++++++++++ .../frysk/isa/watchpoints/X8664Watchpoint.java | 12 ++++++++++++ 4 files changed, 40 insertions(+), 1 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/isa/watchpoints/ChangeLog b/frysk-core/frysk/isa/watchpoints/ChangeLog index 0e4f56f..f53652b 100644 --- a/frysk-core/frysk/isa/watchpoints/ChangeLog +++ b/frysk-core/frysk/isa/watchpoints/ChangeLog @@ -1,3 +1,9 @@ +2008-04-01 Phil Muldoon + + * Watchpoint.java (hasWatchpointTriggered): Define. + * IA32Watchpoint.java (hasWatchpointTriggered): Implement. + * X8664Watchpoint.java (hasWatchpointTriggered): Ditto. + 2008-03-28 Phil Muldoon * Watchpoint.java: New. Initial Implementation. diff --git a/frysk-core/frysk/isa/watchpoints/IA32Watchpoint.java b/frysk-core/frysk/isa/watchpoints/IA32Watchpoint.java index 3627d03..5f97636 100644 --- a/frysk-core/frysk/isa/watchpoints/IA32Watchpoint.java +++ b/frysk-core/frysk/isa/watchpoints/IA32Watchpoint.java @@ -197,7 +197,18 @@ class IA32Watchpoint extends Watchpoint { task.setRegister(IA32Registers.DEBUG_CONTROL, debugControl); } - + /** + * Reads the Debug Status Register and checks if + * the breakpoint specified has fired. + * + * @param task - task to read the debug control + * register from. + */ + public boolean hasWatchpointTriggered(Task task, int index) { + long debugStatus = task.getRegister(IA32Registers.DEBUG_STATUS); + return (debugStatus & (1L << index)) != 0; + } + /** * Reads the Debug control register. diff --git a/frysk-core/frysk/isa/watchpoints/Watchpoint.java b/frysk-core/frysk/isa/watchpoints/Watchpoint.java index fc8c234..a0ef202 100644 --- a/frysk-core/frysk/isa/watchpoints/Watchpoint.java +++ b/frysk-core/frysk/isa/watchpoints/Watchpoint.java @@ -94,6 +94,16 @@ public abstract class Watchpoint { */ public abstract long readControlRegister(Task task); + + /** + * Reads the Debug Status Register and checks if + * the breakpoint specified has fired. + * + * @param task - task to read the debug control + * register from. + */ + public abstract boolean hasWatchpointTriggered(Task task, int index); + /** * Returns number of watchpoints for this architecture * diff --git a/frysk-core/frysk/isa/watchpoints/X8664Watchpoint.java b/frysk-core/frysk/isa/watchpoints/X8664Watchpoint.java index c581f92..1df98a5 100644 --- a/frysk-core/frysk/isa/watchpoints/X8664Watchpoint.java +++ b/frysk-core/frysk/isa/watchpoints/X8664Watchpoint.java @@ -205,5 +205,17 @@ class X8664Watchpoint extends Watchpoint { return task.getRegister(X8664Registers.DEBUG_CONTROL); } + /** + * Reads the Debug Status Register and checks if + * the breakpoint specified has fired. + * + * @param task - task to read the debug control + * register from. + */ + public boolean hasWatchpointTriggered(Task task, int index) { + long debugStatus = task.getRegister(X8664Registers.DEBUG_STATUS); + return (debugStatus & (1L << index)) != 0; + } + } hooks/post-receive -- frysk system monitor/debugger