CRIS: Simple insn reschedule to avoid interlocks.
Brings down the CPI from ~1.5 to ~1.1. Signed-off-by: Edgar Iglesias <Edgar.Iglesias@axis.com> Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
This commit is contained in:
parent
a80a635f3d
commit
43f6cdd769
|
@ -348,40 +348,40 @@ _syscall_trace_entry:
|
|||
|
||||
.type resume,@function
|
||||
resume:
|
||||
subq 4, $sp
|
||||
move $srp, [$sp] ; Keep old/new PC on the stack.
|
||||
subq 4, $sp ; Make space for srp.
|
||||
|
||||
add.d $r12, $r10 ; R10 = current tasks tss.
|
||||
addoq +THREAD_ccs, $r10, $acr
|
||||
move $srp, [$sp] ; Keep old/new PC on the stack.
|
||||
move $ccs, [$acr] ; Save IRQ enable state.
|
||||
di
|
||||
|
||||
addoq +THREAD_usp, $r10, $acr
|
||||
subq 10*4, $sp ; Make room for R9.
|
||||
move $usp, [$acr] ; Save user-mode stackpointer.
|
||||
|
||||
;; See copy_thread for the reason why register R9 is saved.
|
||||
subq 10*4, $sp
|
||||
movem $r9, [$sp] ; Save non-scratch registers and R9.
|
||||
|
||||
addoq +THREAD_ksp, $r10, $acr
|
||||
move.d $sp, $r10 ; Return last running task in R10.
|
||||
move.d $sp, [$acr] ; Save kernel SP for old task.
|
||||
|
||||
move.d $sp, $r10 ; Return last running task in R10.
|
||||
and.d -8192, $r10 ; Get thread_info from stackpointer.
|
||||
addoq +TI_task, $r10, $acr
|
||||
move.d [$acr], $r10 ; Get task.
|
||||
add.d $r12, $r11 ; Find the new tasks tss.
|
||||
move.d [$acr], $r10 ; Get task.
|
||||
addoq +THREAD_ksp, $r11, $acr
|
||||
move.d [$acr], $sp ; Switch to new stackframe.
|
||||
addoq +THREAD_usp, $r11, $acr
|
||||
movem [$sp+], $r9 ; Restore non-scratch registers and R9.
|
||||
|
||||
addoq +THREAD_usp, $r11, $acr
|
||||
move [$acr], $usp ; Restore user-mode stackpointer.
|
||||
|
||||
addoq +THREAD_ccs, $r11, $acr
|
||||
move.d [$sp+], $r11
|
||||
jump $r11 ; Restore PC.
|
||||
move [$acr], $ccs ; Restore IRQ enable status.
|
||||
move.d [$sp+], $acr
|
||||
jump $acr ; Restore PC.
|
||||
nop
|
||||
.size resume, . - resume
|
||||
|
||||
nmi_interrupt:
|
||||
|
|
Loading…
Reference in New Issue