linux-mips
[Top] [All Lists]

[Patch 5/6] Scheduler support for HARDWARE_WATCHPOINTS.

To: linux-mips@linux-mips.org
Subject: [Patch 5/6] Scheduler support for HARDWARE_WATCHPOINTS.
From: David Daney <ddaney@avtrex.com>
Date: Mon, 21 Apr 2008 17:33:04 -0700
Cc: linux-kernel@vger.kernel.org
In-reply-to: <480D2151.2020701@avtrex.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <480D2151.2020701@avtrex.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0.0.12 (X11/20080226)
This is the meat of the patch.  Here we install the watch register values when 
we
schedule a new thread.

The implemtation of __restore_watch() is in asm/watch.h.  In the case where 
there
are no watch registers to install (the normal case) the overhead is 5 machine
instructions with gcc-3.4.3.

Signed-off-by: David Daney <ddaney@avtrex.com>
---
include/asm-mips/system.h |    2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/include/asm-mips/system.h b/include/asm-mips/system.h
index a944eda..cd30f83 100644
--- a/include/asm-mips/system.h
+++ b/include/asm-mips/system.h
@@ -20,6 +20,7 @@
#include <asm/cmpxchg.h>
#include <asm/cpu-features.h>
#include <asm/dsp.h>
+#include <asm/watch.h>
#include <asm/war.h>


@@ -76,6 +77,7 @@ do {                                                          
        \
                __restore_dsp(current);                                 \
        if (cpu_has_userlocal)                                          \
                write_c0_userlocal(current_thread_info()->tp_value); \
+       __restore_watch();                                              \
} while (0)

static inline unsigned long __xchg_u32(volatile int * m, unsigned int val)
--
1.5.5


<Prev in Thread] Current Thread [Next in Thread>