ARM: kprobes: Infrastructure for table driven decoding of CPU instructions
authorJon Medhurst <tixy@yxit.co.uk>
Tue, 26 Apr 2011 14:15:56 +0000 (15:15 +0100)
committerTixy <tixy@medhuaa1.miniserver.com>
Wed, 13 Jul 2011 17:32:43 +0000 (17:32 +0000)
commit0d1a095aa1e6e2a233bfb1729e15233e77f69d54
treeeb4d2415cf599c42bd425edf7557611abbd0bd4e
parente2960317d4581689bf80dbad4d75e7a59f11a3f7
ARM: kprobes: Infrastructure for table driven decoding of CPU instructions

The existing ARM instruction decoding functions are a mass of if/else
code. Rather than follow this pattern for Thumb instruction decoding
this patch implements an infrastructure for a new table driven scheme.

This has several advantages:

- Reduces the kernel size by approx 2kB. (The ARM instruction decoding
  will eventually have -3.1kB code, +1.3kB data; with similar or better
  estimated savings for Thumb decoding.)

- Allows programmatic checking of decoding consistency and test case
  coverage.

- Provides more uniform source code and is therefore, arguably, clearer.

For a detailed explanation of how decoding tables work see the in-source
documentation in kprobes.h, and also for kprobe_decode_insn().

Signed-off-by: Jon Medhurst <tixy@yxit.co.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
arch/arm/kernel/kprobes-common.c
arch/arm/kernel/kprobes.h