summaryrefslogtreecommitdiffstats
path: root/arch/mn10300/kernel/kprobes.c
diff options
context:
space:
mode:
authorDavid Howells2010-10-27 18:28:46 +0200
committerDavid Howells2010-10-27 18:28:46 +0200
commitb478491f2628114b2eae76587f22ce3789b66012 (patch)
tree038580a05fa1a3c8c9cbee0fa8743af2bba650b9 /arch/mn10300/kernel/kprobes.c
parentMN10300: AM34: Add cacheflushing by using the AM34 purge registers (diff)
downloadkernel-qcow2-linux-b478491f2628114b2eae76587f22ce3789b66012.tar.gz
kernel-qcow2-linux-b478491f2628114b2eae76587f22ce3789b66012.tar.xz
kernel-qcow2-linux-b478491f2628114b2eae76587f22ce3789b66012.zip
MN10300: Allow some cacheflushes to be avoided if cache snooping is available
The AM34 core is able to do cache snooping, and so can skip some of the cache flushing. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'arch/mn10300/kernel/kprobes.c')
-rw-r--r--arch/mn10300/kernel/kprobes.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/mn10300/kernel/kprobes.c b/arch/mn10300/kernel/kprobes.c
index 67e6389d625a..0311a7fcea16 100644
--- a/arch/mn10300/kernel/kprobes.c
+++ b/arch/mn10300/kernel/kprobes.c
@@ -377,8 +377,10 @@ void __kprobes arch_arm_kprobe(struct kprobe *p)
void __kprobes arch_disarm_kprobe(struct kprobe *p)
{
+#ifndef CONFIG_MN10300_CACHE_SNOOP
mn10300_dcache_flush();
mn10300_icache_inv();
+#endif
}
void arch_remove_kprobe(struct kprobe *p)
@@ -390,8 +392,10 @@ void __kprobes disarm_kprobe(struct kprobe *p, struct pt_regs *regs)
{
*p->addr = p->opcode;
regs->pc = (unsigned long) p->addr;
+#ifndef CONFIG_MN10300_CACHE_SNOOP
mn10300_dcache_flush();
mn10300_icache_inv();
+#endif
}
static inline