17
17
#define PTE_INDX_SHIFT 10
18
18
#define _PGDIR_SHIFT 22
19
19
20
+ .macro zero_fp
21
+ #ifdef CONFIG_STACKTRACE
22
+ movi r8 , 0
23
+ #endif
24
+ .endm
25
+
20
26
.macro tlbop_begin name , val0 , val1 , val2
21
27
ENTRY(csky_\name)
22
28
mtcr a3 , ss2
@@ -96,6 +102,7 @@ ENTRY(csky_\name)
96
102
SAVE_ALL 0
97
103
.endm
98
104
.macro tlbop_end is_write
105
+ zero_fp
99
106
RD_MEH a2
100
107
psrset ee , ie
101
108
mov a0 , sp
@@ -120,6 +127,7 @@ tlbop_end 1
120
127
121
128
ENTRY(csky_systemcall)
122
129
SAVE_ALL TRAP0_SIZE
130
+ zero_fp
123
131
124
132
psrset ee , ie
125
133
@@ -136,9 +144,9 @@ ENTRY(csky_systemcall)
136
144
mov r9 , sp
137
145
bmaski r10 , THREAD_SHIFT
138
146
andn r9 , r10
139
- ldw r8 , ( r9 , TINFO_FLAGS)
140
- ANDI_R3 r8 , (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT)
141
- cmpnei r8 , 0
147
+ ldw r12 , ( r9 , TINFO_FLAGS)
148
+ ANDI_R3 r12 , (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT)
149
+ cmpnei r12 , 0
142
150
bt csky_syscall_trace
143
151
#if defined(__CSKYABIV2__)
144
152
subi sp , 8
@@ -180,7 +188,7 @@ csky_syscall_trace:
180
188
181
189
ENTRY(ret_from_kernel_thread)
182
190
jbsr schedule_tail
183
- mov a0 , r8
191
+ mov a0 , r10
184
192
jsr r9
185
193
jbsr ret_from_exception
186
194
@@ -189,9 +197,9 @@ ENTRY(ret_from_fork)
189
197
mov r9 , sp
190
198
bmaski r10 , THREAD_SHIFT
191
199
andn r9 , r10
192
- ldw r8 , ( r9 , TINFO_FLAGS)
193
- ANDI_R3 r8 , (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT)
194
- cmpnei r8 , 0
200
+ ldw r12 , ( r9 , TINFO_FLAGS)
201
+ ANDI_R3 r12 , (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT)
202
+ cmpnei r12 , 0
195
203
bf ret_from_exception
196
204
mov a0 , sp / * sp = pt_regs pointer * /
197
205
jbsr syscall_trace_exit
@@ -209,9 +217,9 @@ ret_from_exception:
209
217
bmaski r10 , THREAD_SHIFT
210
218
andn r9 , r10
211
219
212
- ldw r8 , ( r9 , TINFO_FLAGS)
213
- andi r8 , (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED)
214
- cmpnei r8 , 0
220
+ ldw r12 , ( r9 , TINFO_FLAGS)
221
+ andi r12 , (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED)
222
+ cmpnei r12 , 0
215
223
bt exit_work
216
224
1 :
217
225
RESTORE_ALL
@@ -220,18 +228,19 @@ exit_work:
220
228
lrw syscallid , ret_from_exception
221
229
mov lr , syscallid
222
230
223
- btsti r8 , TIF_NEED_RESCHED
231
+ btsti r12 , TIF_NEED_RESCHED
224
232
bt work_resched
225
233
226
234
mov a0 , sp
227
- mov a1 , r8
235
+ mov a1 , r12
228
236
jmpi do_notify_resume
229
237
230
238
work_resched:
231
239
jmpi schedule
232
240
233
241
ENTRY(csky_trap)
234
242
SAVE_ALL 0
243
+ zero_fp
235
244
psrset ee
236
245
mov a0 , sp / * Push Stack pointer arg * /
237
246
jbsr trap_c / * Call C - level trap handler * /
@@ -265,6 +274,7 @@ ENTRY(csky_get_tls)
265
274
266
275
ENTRY(csky_irq)
267
276
SAVE_ALL 0
277
+ zero_fp
268
278
psrset ee
269
279
270
280
#ifdef CONFIG_PREEMPT
@@ -276,21 +286,21 @@ ENTRY(csky_irq)
276
286
* Get task_struct - >stack.preempt_count for current ,
277
287
* and increase 1 .
278
288
* /
279
- ldw r8 , ( r9 , TINFO_PREEMPT)
280
- addi r8 , 1
281
- stw r8 , ( r9 , TINFO_PREEMPT)
289
+ ldw r12 , ( r9 , TINFO_PREEMPT)
290
+ addi r12 , 1
291
+ stw r12 , ( r9 , TINFO_PREEMPT)
282
292
#endif
283
293
284
294
mov a0 , sp
285
295
jbsr csky_do_IRQ
286
296
287
297
#ifdef CONFIG_PREEMPT
288
- subi r8 , 1
289
- stw r8 , ( r9 , TINFO_PREEMPT)
290
- cmpnei r8 , 0
298
+ subi r12 , 1
299
+ stw r12 , ( r9 , TINFO_PREEMPT)
300
+ cmpnei r12 , 0
291
301
bt 2f
292
- ldw r8 , ( r9 , TINFO_FLAGS)
293
- btsti r8 , TIF_NEED_RESCHED
302
+ ldw r12 , ( r9 , TINFO_FLAGS)
303
+ btsti r12 , TIF_NEED_RESCHED
294
304
bf 2f
295
305
1 :
296
306
jbsr preempt_schedule_irq / * irq en/disable is done inside * /
0 commit comments