* [PATCH] Unify watch.S and remove arch/mips/lib-{32,64}
@ 2007-06-04 15:02 Atsushi Nemoto
2007-06-04 15:10 ` Ralf Baechle
0 siblings, 1 reply; 7+ messages in thread
From: Atsushi Nemoto @ 2007-06-04 15:02 UTC (permalink / raw)
To: linux-mips; +Cc: ralf
Unify lib-{32,64}/watch.S into lib/watch.S and remove lib-{32,64}
completely.
The old 64-bit __watch_set() expected an physical address and the old
32-bit __watch_set() expected a KSEG0 virtual address. The new
unified __watch_set() is based on the 64-bit one. Since there is no
real user of the __watch_set(), this incompatibility would not cause
any problem.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
---
This patch can be applied after "[PATCH] Unify dump_tlb".
arch/mips/Makefile | 2 -
arch/mips/lib-32/Makefile | 5 ---
arch/mips/lib-32/watch.S | 60 -------------------------------------
arch/mips/lib-64/Makefile | 5 ---
arch/mips/lib/Makefile | 2 +-
arch/mips/{lib-64 => lib}/watch.S | 16 +++++-----
6 files changed, 9 insertions(+), 81 deletions(-)
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 2b19605..fdade85 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -633,8 +633,6 @@ CPPFLAGS_vmlinux.lds := \
head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o
libs-y += arch/mips/lib/
-libs-$(CONFIG_32BIT) += arch/mips/lib-32/
-libs-$(CONFIG_64BIT) += arch/mips/lib-64/
core-y += arch/mips/kernel/ arch/mips/mm/ arch/mips/math-emu/
diff --git a/arch/mips/lib-32/Makefile b/arch/mips/lib-32/Makefile
deleted file mode 100644
index 7bae849..0000000
--- a/arch/mips/lib-32/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for MIPS-specific library files..
-#
-
-lib-y += watch.o
diff --git a/arch/mips/lib-32/watch.S b/arch/mips/lib-32/watch.S
deleted file mode 100644
index 808b3af..0000000
--- a/arch/mips/lib-32/watch.S
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Kernel debug stuff to use the Watch registers.
- * Useful to find stack overflows, dangling pointers etc.
- *
- * Copyright (C) 1995, 1996, 1999 by Ralf Baechle
- */
-#include <asm/asm.h>
-#include <asm/mipsregs.h>
-#include <asm/regdef.h>
-
- .set noreorder
-/*
- * Parameter: a0 - logic address to watch
- * Currently only KSEG0 addresses are allowed!
- * a1 - set bit #1 to trap on load references
- * bit #0 to trap on store references
- * Results : none
- */
- LEAF(__watch_set)
- li t0, 0x80000000
- subu a0, t0
- ori a0, 7
- xori a0, 7
- or a0, a1
- mtc0 a0, CP0_WATCHLO
- sw a0, watch_savelo
-
- jr ra
- mtc0 zero, CP0_WATCHHI
- END(__watch_set)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_clear)
- jr ra
- mtc0 zero, CP0_WATCHLO
- END(__watch_clear)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_reenable)
- lw t0, watch_savelo
- jr ra
- mtc0 t0, CP0_WATCHLO
- END(__watch_reenable)
-
-/*
- * Saved value of the c0_watchlo register for watch_reenable()
- */
- .data
-watch_savelo: .word 0
- .text
diff --git a/arch/mips/lib-64/Makefile b/arch/mips/lib-64/Makefile
deleted file mode 100644
index 7bae849..0000000
--- a/arch/mips/lib-64/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for MIPS-specific library files..
-#
-
-lib-y += watch.o
diff --git a/arch/mips/lib-64/watch.S b/arch/mips/lib-64/watch.S
deleted file mode 100644
index f914340..0000000
--- a/arch/mips/lib-64/watch.S
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Kernel debug stuff to use the Watch registers.
- * Useful to find stack overflows, dangling pointers etc.
- *
- * Copyright (C) 1995, 1996, 1999, 2001 by Ralf Baechle
- */
-#include <asm/asm.h>
-#include <asm/mipsregs.h>
-#include <asm/regdef.h>
-
- .set noreorder
-/*
- * Parameter: a0 - physical address to watch
- * a1 - set bit #1 to trap on load references
- * bit #0 to trap on store references
- * Results : none
- */
- LEAF(__watch_set)
- ori a0, 7
- xori a0, 7
- or a0, a1
- mtc0 a0, CP0_WATCHLO
- sd a0, watch_savelo
- dsrl32 a0, a0, 0
-
- jr ra
- mtc0 zero, CP0_WATCHHI
- END(__watch_set)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_clear)
- jr ra
- mtc0 zero, CP0_WATCHLO
- END(__watch_clear)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_reenable)
- ld t0, watch_savelo
- jr ra
- mtc0 t0, CP0_WATCHLO
- END(__watch_reenable)
-
-/*
- * Saved value of the c0_watchlo register for watch_reenable()
- */
- .local watch_savelo
- .comm watch_savelo, 8, 8
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index b27a326..ccf0f2e 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -3,7 +3,7 @@
#
lib-y += csum_partial.o memcpy.o memcpy-inatomic.o memset.o strlen_user.o \
- strncpy_user.o strnlen_user.o uncached.o
+ strncpy_user.o strnlen_user.o uncached.o watch.o
obj-y += iomap.o
obj-$(CONFIG_PCI) += iomap-pci.o
diff --git a/arch/mips/lib/watch.S b/arch/mips/lib/watch.S
new file mode 100644
index 0000000..591a73f
--- /dev/null
+++ b/arch/mips/lib/watch.S
@@ -0,0 +1,57 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Kernel debug stuff to use the Watch registers.
+ * Useful to find stack overflows, dangling pointers etc.
+ *
+ * Copyright (C) 1995, 1996, 1999, 2001 by Ralf Baechle
+ */
+#include <asm/asm.h>
+#include <asm/mipsregs.h>
+#include <asm/regdef.h>
+
+ .set noreorder
+/*
+ * Parameter: a0 - physical address to watch
+ * a1 - set bit #1 to trap on load references
+ * bit #0 to trap on store references
+ * Results : none
+ */
+ LEAF(__watch_set)
+ ori a0, 7
+ xori a0, 7
+ or a0, a1
+ MTC0 a0, CP0_WATCHLO
+ LONG_S a0, watch_savelo
+
+ jr ra
+ mtc0 zero, CP0_WATCHHI
+ END(__watch_set)
+
+/*
+ * Parameter: none
+ * Results : none
+ */
+ LEAF(__watch_clear)
+ jr ra
+ MTC0 zero, CP0_WATCHLO
+ END(__watch_clear)
+
+/*
+ * Parameter: none
+ * Results : none
+ */
+ LEAF(__watch_reenable)
+ LONG_L t0, watch_savelo
+ jr ra
+ MTC0 t0, CP0_WATCHLO
+ END(__watch_reenable)
+
+/*
+ * Saved value of the c0_watchlo register for watch_reenable()
+ */
+ .data
+watch_savelo: LONG 0
+ .text
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH] Unify watch.S and remove arch/mips/lib-{32,64}
2007-06-04 15:02 [PATCH] Unify watch.S and remove arch/mips/lib-{32,64} Atsushi Nemoto
@ 2007-06-04 15:10 ` Ralf Baechle
2007-06-04 15:15 ` Sergei Shtylyov
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Ralf Baechle @ 2007-06-04 15:10 UTC (permalink / raw)
To: Atsushi Nemoto; +Cc: linux-mips
On Tue, Jun 05, 2007 at 12:02:39AM +0900, Atsushi Nemoto wrote:
> Unify lib-{32,64}/watch.S into lib/watch.S and remove lib-{32,64}
> completely.
>
> The old 64-bit __watch_set() expected an physical address and the old
> 32-bit __watch_set() expected a KSEG0 virtual address. The new
> unified __watch_set() is based on the 64-bit one. Since there is no
> real user of the __watch_set(), this incompatibility would not cause
> any problem.
I think we can simply drop the entire watchpoint support. This was
only ever working on R4000/R4400 and even there only somewhat useful
for kernel debugging. So if we ever use watchpoint support I think
something needs to be developed from scratch.
Ralf
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] Unify watch.S and remove arch/mips/lib-{32,64}
2007-06-04 15:10 ` Ralf Baechle
@ 2007-06-04 15:15 ` Sergei Shtylyov
2007-06-04 15:23 ` Maciej W. Rozycki
2007-06-04 16:28 ` Atsushi Nemoto
2 siblings, 0 replies; 7+ messages in thread
From: Sergei Shtylyov @ 2007-06-04 15:15 UTC (permalink / raw)
To: Ralf Baechle; +Cc: Atsushi Nemoto, linux-mips
Hello.
Ralf Baechle wrote:
>>Unify lib-{32,64}/watch.S into lib/watch.S and remove lib-{32,64}
>>completely.
>>The old 64-bit __watch_set() expected an physical address and the old
>>32-bit __watch_set() expected a KSEG0 virtual address. The new
>>unified __watch_set() is based on the 64-bit one. Since there is no
>>real user of the __watch_set(), this incompatibility would not cause
>>any problem.
> I think we can simply drop the entire watchpoint support. This was
> only ever working on R4000/R4400 and even there only somewhat useful
> for kernel debugging. So if we ever use watchpoint support I think
> something needs to be developed from scratch.
Watchpoints *could* be supported as part of KGDB, BTW.
> Ralf
WBR, Sergei
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] Unify watch.S and remove arch/mips/lib-{32,64}
2007-06-04 15:10 ` Ralf Baechle
2007-06-04 15:15 ` Sergei Shtylyov
@ 2007-06-04 15:23 ` Maciej W. Rozycki
2007-06-04 15:41 ` Ralf Baechle
2007-06-04 16:28 ` Atsushi Nemoto
2 siblings, 1 reply; 7+ messages in thread
From: Maciej W. Rozycki @ 2007-06-04 15:23 UTC (permalink / raw)
To: Ralf Baechle; +Cc: Atsushi Nemoto, linux-mips
On Mon, 4 Jun 2007, Ralf Baechle wrote:
> I think we can simply drop the entire watchpoint support. This was
> only ever working on R4000/R4400 and even there only somewhat useful
> for kernel debugging. So if we ever use watchpoint support I think
> something needs to be developed from scratch.
A long-term plan is to make them available to userland through ptrace()
in a uniform way covering MIPS32/64 watchpoints as well for gdb and
suchlike.
Maciej
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] Unify watch.S and remove arch/mips/lib-{32,64}
2007-06-04 15:23 ` Maciej W. Rozycki
@ 2007-06-04 15:41 ` Ralf Baechle
0 siblings, 0 replies; 7+ messages in thread
From: Ralf Baechle @ 2007-06-04 15:41 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: Atsushi Nemoto, linux-mips
On Mon, Jun 04, 2007 at 04:23:29PM +0100, Maciej W. Rozycki wrote:
> > I think we can simply drop the entire watchpoint support. This was
> > only ever working on R4000/R4400 and even there only somewhat useful
> > for kernel debugging. So if we ever use watchpoint support I think
> > something needs to be developed from scratch.
>
> A long-term plan is to make them available to userland through ptrace()
> in a uniform way covering MIPS32/64 watchpoints as well for gdb and
> suchlike.
Sure, one of infinitly many things on the to do list. However the code
we currently havee isn't very useful for that purpose. For maintenance
sake it should rather be rewritten in C and it needs to learn about
processors of the post R4400 era.
Ralf
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Unify watch.S and remove arch/mips/lib-{32,64}
2007-06-04 15:10 ` Ralf Baechle
2007-06-04 15:15 ` Sergei Shtylyov
2007-06-04 15:23 ` Maciej W. Rozycki
@ 2007-06-04 16:28 ` Atsushi Nemoto
2007-06-07 17:39 ` Ralf Baechle
2 siblings, 1 reply; 7+ messages in thread
From: Atsushi Nemoto @ 2007-06-04 16:28 UTC (permalink / raw)
To: ralf; +Cc: linux-mips
On Mon, 4 Jun 2007 16:10:48 +0100, Ralf Baechle <ralf@linux-mips.org> wrote:
> I think we can simply drop the entire watchpoint support. This was
> only ever working on R4000/R4400 and even there only somewhat useful
> for kernel debugging. So if we ever use watchpoint support I think
> something needs to be developed from scratch.
OK, then this is an alternative patch to drop them.
Subject: [PATCH] Remove unused watchpoint support and arch/mips/lib-{32,64}
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
---
This patch can be applied after "[PATCH] Unify dump_tlb".
arch/mips/Makefile | 2 -
arch/mips/kernel/proc.c | 1 -
arch/mips/kernel/traps.c | 1 -
arch/mips/lib-32/Makefile | 5 ---
arch/mips/lib-32/watch.S | 60 ---------------------------------------------
arch/mips/lib-64/Makefile | 5 ---
arch/mips/lib-64/watch.S | 57 ------------------------------------------
include/asm-mips/watch.h | 35 --------------------------
8 files changed, 0 insertions(+), 166 deletions(-)
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 2b19605..fdade85 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -633,8 +633,6 @@ CPPFLAGS_vmlinux.lds := \
head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o
libs-y += arch/mips/lib/
-libs-$(CONFIG_32BIT) += arch/mips/lib-32/
-libs-$(CONFIG_64BIT) += arch/mips/lib-64/
core-y += arch/mips/kernel/ arch/mips/mm/ arch/mips/math-emu/
diff --git a/arch/mips/kernel/proc.c b/arch/mips/kernel/proc.c
index 5ddc2e9..eb7730d 100644
--- a/arch/mips/kernel/proc.c
+++ b/arch/mips/kernel/proc.c
@@ -14,7 +14,6 @@
#include <asm/cpu-features.h>
#include <asm/mipsregs.h>
#include <asm/processor.h>
-#include <asm/watch.h>
unsigned int vced_count, vcei_count;
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index a7a17eb..5de0734 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -39,7 +39,6 @@
#include <asm/traps.h>
#include <asm/uaccess.h>
#include <asm/mmu_context.h>
-#include <asm/watch.h>
#include <asm/types.h>
#include <asm/stacktrace.h>
diff --git a/arch/mips/lib-32/Makefile b/arch/mips/lib-32/Makefile
deleted file mode 100644
index 7bae849..0000000
--- a/arch/mips/lib-32/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for MIPS-specific library files..
-#
-
-lib-y += watch.o
diff --git a/arch/mips/lib-32/watch.S b/arch/mips/lib-32/watch.S
deleted file mode 100644
index 808b3af..0000000
--- a/arch/mips/lib-32/watch.S
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Kernel debug stuff to use the Watch registers.
- * Useful to find stack overflows, dangling pointers etc.
- *
- * Copyright (C) 1995, 1996, 1999 by Ralf Baechle
- */
-#include <asm/asm.h>
-#include <asm/mipsregs.h>
-#include <asm/regdef.h>
-
- .set noreorder
-/*
- * Parameter: a0 - logic address to watch
- * Currently only KSEG0 addresses are allowed!
- * a1 - set bit #1 to trap on load references
- * bit #0 to trap on store references
- * Results : none
- */
- LEAF(__watch_set)
- li t0, 0x80000000
- subu a0, t0
- ori a0, 7
- xori a0, 7
- or a0, a1
- mtc0 a0, CP0_WATCHLO
- sw a0, watch_savelo
-
- jr ra
- mtc0 zero, CP0_WATCHHI
- END(__watch_set)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_clear)
- jr ra
- mtc0 zero, CP0_WATCHLO
- END(__watch_clear)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_reenable)
- lw t0, watch_savelo
- jr ra
- mtc0 t0, CP0_WATCHLO
- END(__watch_reenable)
-
-/*
- * Saved value of the c0_watchlo register for watch_reenable()
- */
- .data
-watch_savelo: .word 0
- .text
diff --git a/arch/mips/lib-64/Makefile b/arch/mips/lib-64/Makefile
deleted file mode 100644
index 7bae849..0000000
--- a/arch/mips/lib-64/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for MIPS-specific library files..
-#
-
-lib-y += watch.o
diff --git a/arch/mips/lib-64/watch.S b/arch/mips/lib-64/watch.S
deleted file mode 100644
index f914340..0000000
--- a/arch/mips/lib-64/watch.S
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Kernel debug stuff to use the Watch registers.
- * Useful to find stack overflows, dangling pointers etc.
- *
- * Copyright (C) 1995, 1996, 1999, 2001 by Ralf Baechle
- */
-#include <asm/asm.h>
-#include <asm/mipsregs.h>
-#include <asm/regdef.h>
-
- .set noreorder
-/*
- * Parameter: a0 - physical address to watch
- * a1 - set bit #1 to trap on load references
- * bit #0 to trap on store references
- * Results : none
- */
- LEAF(__watch_set)
- ori a0, 7
- xori a0, 7
- or a0, a1
- mtc0 a0, CP0_WATCHLO
- sd a0, watch_savelo
- dsrl32 a0, a0, 0
-
- jr ra
- mtc0 zero, CP0_WATCHHI
- END(__watch_set)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_clear)
- jr ra
- mtc0 zero, CP0_WATCHLO
- END(__watch_clear)
-
-/*
- * Parameter: none
- * Results : none
- */
- LEAF(__watch_reenable)
- ld t0, watch_savelo
- jr ra
- mtc0 t0, CP0_WATCHLO
- END(__watch_reenable)
-
-/*
- * Saved value of the c0_watchlo register for watch_reenable()
- */
- .local watch_savelo
- .comm watch_savelo, 8, 8
diff --git a/include/asm-mips/watch.h b/include/asm-mips/watch.h
deleted file mode 100644
index 6aa90ca..0000000
--- a/include/asm-mips/watch.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1996, 1997, 1998, 2000, 2001 by Ralf Baechle
- */
-#ifndef _ASM_WATCH_H
-#define _ASM_WATCH_H
-
-#include <linux/linkage.h>
-
-/*
- * Types of reference for watch_set()
- */
-enum wref_type {
- wr_save = 1,
- wr_load = 2
-};
-
-extern asmlinkage void __watch_set(unsigned long addr, enum wref_type ref);
-extern asmlinkage void __watch_clear(void);
-extern asmlinkage void __watch_reenable(void);
-
-#define watch_set(addr, ref) \
- if (cpu_has_watch) \
- __watch_set(addr, ref)
-#define watch_clear() \
- if (cpu_has_watch) \
- __watch_clear()
-#define watch_reenable() \
- if (cpu_has_watch) \
- __watch_reenable()
-
-#endif /* _ASM_WATCH_H */
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2007-06-07 17:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-04 15:02 [PATCH] Unify watch.S and remove arch/mips/lib-{32,64} Atsushi Nemoto
2007-06-04 15:10 ` Ralf Baechle
2007-06-04 15:15 ` Sergei Shtylyov
2007-06-04 15:23 ` Maciej W. Rozycki
2007-06-04 15:41 ` Ralf Baechle
2007-06-04 16:28 ` Atsushi Nemoto
2007-06-07 17:39 ` Ralf Baechle
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox