summaryrefslogtreecommitdiff
path: root/arch/sh/kernel/io_trapped.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2010-01-27 12:56:57 (GMT)
committerPaul Mundt <lethal@linux-sh.org>2010-01-27 12:56:57 (GMT)
commit08b36c4a02b5a9db609fc6d93b9c41d7fa75713c (patch)
tree3399d6e0ae71eecbf3cc348324becf536f0f1b99 /arch/sh/kernel/io_trapped.c
parent485773f3e401fca31c112c1ff24797e42ff87afd (diff)
downloadlinux-fsl-qoriq-08b36c4a02b5a9db609fc6d93b9c41d7fa75713c.tar.xz
sh: Optimize runtime disabling of trapped I/O.
Presently trapped I/O is only registered if it's not explicitly disabled for the platforms that select it openly. From the fault path this runs through an address lookup before figuring out that nothing matches and falls back through the error path, but we can forego the lookup completely by testing if it's been explicitly disabled. This provides a measurable speedup for things like qemu that rely on runtime disabling. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/io_trapped.c')
-rw-r--r--arch/sh/kernel/io_trapped.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c
index 16b83cc..4a8bb4e 100644
--- a/arch/sh/kernel/io_trapped.c
+++ b/arch/sh/kernel/io_trapped.c
@@ -271,6 +271,8 @@ int handle_trapped_io(struct pt_regs *regs, unsigned long address)
insn_size_t instruction;
int tmp;
+ if (trapped_io_disable)
+ return 0;
if (!lookup_tiop(address))
return 0;