diff options
Diffstat (limited to 'arch/arc/include/asm/entry-arcv2.h')
| -rw-r--r-- | arch/arc/include/asm/entry-arcv2.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/arch/arc/include/asm/entry-arcv2.h b/arch/arc/include/asm/entry-arcv2.h index 309f4e6721b3..225e7df2d8ed 100644 --- a/arch/arc/include/asm/entry-arcv2.h +++ b/arch/arc/include/asm/entry-arcv2.h | |||
| @@ -17,6 +17,33 @@ | |||
| 17 | ; | 17 | ; |
| 18 | ; Now manually save: r12, sp, fp, gp, r25 | 18 | ; Now manually save: r12, sp, fp, gp, r25 |
| 19 | 19 | ||
| 20 | #ifdef CONFIG_ARC_IRQ_NO_AUTOSAVE | ||
| 21 | .ifnc \called_from, exception | ||
| 22 | st.as r9, [sp, -10] ; save r9 in it's final stack slot | ||
| 23 | sub sp, sp, 12 ; skip JLI, LDI, EI | ||
| 24 | |||
| 25 | PUSH lp_count | ||
| 26 | PUSHAX lp_start | ||
| 27 | PUSHAX lp_end | ||
| 28 | PUSH blink | ||
| 29 | |||
| 30 | PUSH r11 | ||
| 31 | PUSH r10 | ||
| 32 | |||
| 33 | sub sp, sp, 4 ; skip r9 | ||
| 34 | |||
| 35 | PUSH r8 | ||
| 36 | PUSH r7 | ||
| 37 | PUSH r6 | ||
| 38 | PUSH r5 | ||
| 39 | PUSH r4 | ||
| 40 | PUSH r3 | ||
| 41 | PUSH r2 | ||
| 42 | PUSH r1 | ||
| 43 | PUSH r0 | ||
| 44 | .endif | ||
| 45 | #endif | ||
| 46 | |||
| 20 | #ifdef CONFIG_ARC_HAS_ACCL_REGS | 47 | #ifdef CONFIG_ARC_HAS_ACCL_REGS |
| 21 | PUSH r59 | 48 | PUSH r59 |
| 22 | PUSH r58 | 49 | PUSH r58 |
| @@ -86,6 +113,33 @@ | |||
| 86 | POP r59 | 113 | POP r59 |
| 87 | #endif | 114 | #endif |
| 88 | 115 | ||
| 116 | #ifdef CONFIG_ARC_IRQ_NO_AUTOSAVE | ||
| 117 | .ifnc \called_from, exception | ||
| 118 | POP r0 | ||
| 119 | POP r1 | ||
| 120 | POP r2 | ||
| 121 | POP r3 | ||
| 122 | POP r4 | ||
| 123 | POP r5 | ||
| 124 | POP r6 | ||
| 125 | POP r7 | ||
| 126 | POP r8 | ||
| 127 | POP r9 | ||
| 128 | POP r10 | ||
| 129 | POP r11 | ||
| 130 | |||
| 131 | POP blink | ||
| 132 | POPAX lp_end | ||
| 133 | POPAX lp_start | ||
| 134 | |||
| 135 | POP r9 | ||
| 136 | mov lp_count, r9 | ||
| 137 | |||
| 138 | add sp, sp, 12 ; skip JLI, LDI, EI | ||
| 139 | ld.as r9, [sp, -10] ; reload r9 which got clobbered | ||
| 140 | .endif | ||
| 141 | #endif | ||
| 142 | |||
| 89 | .endm | 143 | .endm |
| 90 | 144 | ||
| 91 | /*------------------------------------------------------------------------*/ | 145 | /*------------------------------------------------------------------------*/ |
