summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Medhurst2011-07-07 15:03:08 +0200
committerTixy2011-07-13 19:32:48 +0200
commit7be7ee2d295f6a069e1e92db95bf92eea2a173cf (patch)
tree510fae54b9554bbef9a8e8d1443c11b1985dadba
parentARM: kprobes: Add alu_write_pc() (diff)
downloadkernel-qcow2-linux-7be7ee2d295f6a069e1e92db95bf92eea2a173cf.tar.gz
kernel-qcow2-linux-7be7ee2d295f6a069e1e92db95bf92eea2a173cf.tar.xz
kernel-qcow2-linux-7be7ee2d295f6a069e1e92db95bf92eea2a173cf.zip
ARM: kprobes: Add BLX macro
This is for use by inline assembler which will be added to kprobes-arm.c It saves memory when used on newer ARM architectures and also provides correct interworking should ARM probes be required on Thumb kernels in the future. Signed-off-by: Jon Medhurst <tixy@yxit.co.uk> Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
-rw-r--r--arch/arm/kernel/kprobes-arm.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/kernel/kprobes-arm.c b/arch/arm/kernel/kprobes-arm.c
index ea96214ef341..80a941100f8c 100644
--- a/arch/arm/kernel/kprobes-arm.c
+++ b/arch/arm/kernel/kprobes-arm.c
@@ -67,6 +67,13 @@
#define branch_displacement(insn) sign_extend(((insn) & 0xffffff) << 2, 25)
+#if __LINUX_ARM_ARCH__ >= 6
+#define BLX(reg) "blx "reg" \n\t"
+#else
+#define BLX(reg) "mov lr, pc \n\t" \
+ "mov pc, "reg" \n\t"
+#endif
+
#define is_r15(insn, bitpos) (((insn) & (0xf << bitpos)) == (0xf << bitpos))
#define PSR_fs (PSR_f|PSR_s)