diff options
author | Jesper Nilsson <jesper.nilsson@axis.com> | 2010-08-02 12:13:45 -0400 |
---|---|---|
committer | Jesper Nilsson <jesper.nilsson@axis.com> | 2010-08-04 07:00:09 -0400 |
commit | cd4f20110cf46ab7ca35ea32d601576b31abd9bb (patch) | |
tree | 31cd14ab3ab1a4a1b2dedeaf8aba5f59d257d0f3 /arch/cris | |
parent | 43f6cdd7693ddddb4db17a1ab591d506cb1fc110 (diff) |
CRIS: Faster syscall entry for CRISv32.
Signed-off-by: Edgar Iglesias <Edgar.Iglesias@axis.com>
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Diffstat (limited to 'arch/cris')
-rw-r--r-- | arch/cris/arch-v32/kernel/entry.S | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/arch/cris/arch-v32/kernel/entry.S b/arch/cris/arch-v32/kernel/entry.S index ce121df3aaef..0ecb50b8f0d9 100644 --- a/arch/cris/arch-v32/kernel/entry.S +++ b/arch/cris/arch-v32/kernel/entry.S | |||
@@ -131,27 +131,24 @@ _resume_userspace: | |||
131 | system_call: | 131 | system_call: |
132 | ;; Stack-frame similar to the irq heads, which is reversed in | 132 | ;; Stack-frame similar to the irq heads, which is reversed in |
133 | ;; ret_from_sys_call. | 133 | ;; ret_from_sys_call. |
134 | subq 12, $sp ; Skip EXS, EDA. | ||
135 | move $erp, [$sp] | ||
136 | subq 4, $sp | ||
137 | move $srp, [$sp] | ||
138 | subq 4, $sp | ||
139 | move $ccs, [$sp] | ||
140 | subq 4, $sp | ||
141 | ei ; Allow IRQs while handling system call | ||
142 | move $spc, [$sp] | ||
143 | subq 4, $sp | ||
144 | move $mof, [$sp] | ||
145 | subq 4, $sp | ||
146 | move $srs, [$sp] | ||
147 | subq 4, $sp | ||
148 | move.d $acr, [$sp] | ||
149 | subq 14*4, $sp ; Make room for R0-R13. | ||
150 | movem $r13, [$sp] ; Push R0-R13 | ||
151 | subq 4, $sp | ||
152 | move.d $r10, [$sp] ; Push orig_r10. | ||
153 | 134 | ||
154 | ; Set S-bit when kernel debugging to keep hardware breakpoints active. | 135 | sub.d 92, $sp ; Skip EXS and EDA. |
136 | movem $r13, [$sp] | ||
137 | move.d $sp, $r8 | ||
138 | addq 14*4, $r8 | ||
139 | move.d $acr, $r0 | ||
140 | move $srs, $r1 | ||
141 | move $mof, $r2 | ||
142 | move $spc, $r3 | ||
143 | move $ccs, $r4 | ||
144 | move $srp, $r5 | ||
145 | move $erp, $r6 | ||
146 | subq 4, $sp | ||
147 | movem $r6, [$r8] | ||
148 | ei ; Enable interrupts while processing syscalls. | ||
149 | move.d $r10, [$sp] | ||
150 | |||
151 | ; Set S-bit when kernel debugging to keep hardware breakpoints active. | ||
155 | #ifdef CONFIG_ETRAX_KGDB | 152 | #ifdef CONFIG_ETRAX_KGDB |
156 | move $ccs, $r0 | 153 | move $ccs, $r0 |
157 | or.d (1<<9), $r0 | 154 | or.d (1<<9), $r0 |