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@xxxxxxxxxx> --- 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