Change-Id: I73f6a1c9d11471d3ca13e7889eace5069bababd0
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
void __naked kretprobe_trampoline(void);
+static unsigned long swap_get_karg(struct pt_regs *regs, unsigned long n)
+{
+ switch (n) {
+ case 0:
+ return regs->ARM_r0;
+ case 1:
+ return regs->ARM_r1;
+ case 2:
+ return regs->ARM_r2;
+ case 3:
+ return regs->ARM_r3;
+ }
+
+ return *((unsigned long *)regs->ARM_sp + n - 4);
+}
+
int arch_init_kprobes(void);
void arch_exit_kprobes(void);
return 0;
}
+static unsigned long swap_get_karg(struct pt_regs *regs, unsigned long n)
+{
+ switch (n) {
+ case 0:
+ return regs->ax;
+ case 1:
+ return regs->dx;
+ case 2:
+ return regs->cx;
+ }
+
+ /*
+ * 2 = 3 - 1
+ * 3 - arguments from registers
+ * 1 - return address saved on top of the stack
+ */
+ return *((unsigned long *)kernel_stack_pointer(regs) + n - 2);
+}
+
int arch_init_kprobes(void);
void arch_exit_kprobes(void);