Module Name: src Committed By: cliff Date: Thu Apr 14 05:07:31 UTC 2011
Modified Files: src/sys/arch/mips/include: cpu.h Log Message: - MIPS CPU (COP0) watchpoint support moved from db_machdep.h to cpu.h - CPU watchpoints are per-cpu; add ci_cpuwatch_count, ci_watchpoint_tab[] to struct cpuinfo To generate a diff of this commit: cvs rdiff -u -r1.100 -r1.101 src/sys/arch/mips/include/cpu.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/mips/include/cpu.h diff -u src/sys/arch/mips/include/cpu.h:1.100 src/sys/arch/mips/include/cpu.h:1.101 --- src/sys/arch/mips/include/cpu.h:1.100 Wed Apr 6 05:42:21 2011 +++ src/sys/arch/mips/include/cpu.h Thu Apr 14 05:07:30 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.100 2011/04/06 05:42:21 matt Exp $ */ +/* $NetBSD: cpu.h,v 1.101 2011/04/14 05:07:30 cliff Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -56,6 +56,30 @@ #include <sys/device_if.h> #include <sys/evcnt.h> +typedef struct cpu_watchpoint { + register_t cw_addr; + register_t cw_mask; + uint32_t cw_asid; + uint32_t cw_mode; +} cpu_watchpoint_t; +/* (abstract) mode bits */ +#define CPUWATCH_WRITE __BIT(0) +#define CPUWATCH_READ __BIT(1) +#define CPUWATCH_EXEC __BIT(2) +#define CPUWATCH_MASK __BIT(3) +#define CPUWATCH_ASID __BIT(4) +#define CPUWATCH_RWX (CPUWATCH_EXEC|CPUWATCH_READ|CPUWATCH_WRITE) + +#define CPUWATCH_MAX 8 /* max possible number of watchpoints */ + +u_int cpuwatch_discover(void); +void cpuwatch_free(cpu_watchpoint_t *); +cpu_watchpoint_t *cpuwatch_alloc(void); +void cpuwatch_set_all(void); +void cpuwatch_clr_all(void); +void cpuwatch_set(cpu_watchpoint_t *); +void cpuwatch_clr(cpu_watchpoint_t *); + struct cpu_info { struct cpu_data ci_data; /* MI per-cpu data */ struct cpu_info *ci_next; /* Next CPU in list */ @@ -96,6 +120,8 @@ vaddr_t ci_pmap_dstbase; /* starting VA of ephemeral dst space */ #endif + u_int ci_cpuwatch_count; /* number of watchpoints on this CPU */ + cpu_watchpoint_t ci_cpuwatch_tab[CPUWATCH_MAX]; #ifdef MULTIPROCESSOR volatile u_long ci_flags;