import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / aee / mrdump / mrdump_private.h
CommitLineData
6fa3eb70
S
1#if !defined(__MRDUMP_PRIVATE_H__)
2
3static inline void mrdump_save_current_backtrace(struct pt_regs *regs)
4{
5#if defined(__arm__)
6 asm volatile("stmia %1, {r0 - r15}\n\t"
7 "mrs %0, cpsr\n"
8 : "=r"(regs->uregs[16])
9 : "r" (regs)
10 : "memory");
11#elif defined(__aarch64__)
12 /* FIXME: 64b */
13 asm volatile("stp x0, x1, [%0] \n\t"
14 "stp x2, x3, [%0, #16] \n\t"
15 "stp x4, x5, [%0, #32] \n\t"
16 "stp x6, x7, [%0, #48] \n\t"
17 "stp x8, x9, [%0, #64] \n\t"
18 "stp x10, x11, [%0, #80] \n\t"
19 "stp x12, x13, [%0, #96] \n\t"
20 "stp x14, x15, [%0, #112] \n\t"
21 "stp x16, x17, [%0, #128] \n\t"
22 "stp x18, x19, [%0, #144] \n\t"
23 "stp x20, x21, [%0, #160] \n\t"
24 "stp x22, x23, [%0, #176] \n\t"
25 "stp x24, x25, [%0, #192] \n\t"
26 "stp x26, x27, [%0, #208] \n\t"
27 "stp x28, x29, [%0, #224] \n\t"
28 "str x30, [%0, #240] \n\t"
29 :
30 :"r" (&regs->user_regs)
31 : "memory");
32 asm volatile("mov x8, sp \n\t"
33 "str x8, [%0] \n\t"
34 "1: \n\t"
35 "adr x8, 1b \n\t"
36 "str x8, [%1] \n\t"
37 :
38 :"r" (&regs->user_regs.sp), "r" (&regs->user_regs.pc)
39 : "x8", "memory");
40#else
41#error "Unsupport archtecture"
42#endif
43}
44
45#endif