From ab440ba091b4901f633701e578f38ba6e3ef8e15 Mon Sep 17 00:00:00 2001 From: Vasiliy Ulyanov Date: Thu, 5 Jun 2014 13:31:38 +0400 Subject: [PATCH] [IMPROVE] Add arch-specific routines for setting SP Change-Id: I8ba26e9ddffbc39f13aca3bada7149104cebcbf6 Signed-off-by: Vasiliy Ulyanov --- kprobe/arch/arm/swap-asm/swap_kprobes.h | 12 ++++++++++++ kprobe/arch/x86/swap-asm/swap_kprobes.h | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/kprobe/arch/arm/swap-asm/swap_kprobes.h b/kprobe/arch/arm/swap-asm/swap_kprobes.h index fb23151..f7c53ca 100644 --- a/kprobe/arch/arm/swap-asm/swap_kprobes.h +++ b/kprobe/arch/arm/swap-asm/swap_kprobes.h @@ -142,6 +142,18 @@ static inline unsigned long swap_get_stack_ptr(struct pt_regs *regs) } /** + * @brief Sets stack pointer. + * + * @param regs Pointer to CPU registers data. + * @param sp New stack pointer value. + * @return Void + */ +static inline void swap_set_stack_ptr(struct pt_regs *regs, unsigned long sp) +{ + regs->ARM_sp = sp; +} + +/** * @brief Gets instruction pointer. * * @param regs Pointer to CPU registers data. diff --git a/kprobe/arch/x86/swap-asm/swap_kprobes.h b/kprobe/arch/x86/swap-asm/swap_kprobes.h index ce6e7a1..58b6493 100644 --- a/kprobe/arch/x86/swap-asm/swap_kprobes.h +++ b/kprobe/arch/x86/swap-asm/swap_kprobes.h @@ -101,6 +101,11 @@ static inline unsigned long swap_get_stack_ptr(struct pt_regs *regs) return regs->EREG(sp); } +static inline void swap_set_stack_ptr(struct pt_regs *regs, unsigned long sp) +{ + regs->EREG(sp) = sp; +} + static inline unsigned long swap_get_instr_ptr(struct pt_regs *regs) { return regs->EREG(ip); -- 2.7.4