xtensa: userspace: Fixes in xtensa_userspace_enter
- spill windows in the current context (before switching task) since it will be erased. - Remove unnucessary load/mov Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
This commit is contained in:
parent
f3360265e6
commit
dbbe9d07b5
1 changed files with 4 additions and 7 deletions
|
@ -276,13 +276,12 @@ xtensa_userspace_enter:
|
||||||
*/
|
*/
|
||||||
entry a1, 16
|
entry a1, 16
|
||||||
|
|
||||||
|
SPILL_ALL_WINDOWS
|
||||||
|
|
||||||
/* We have to switch to kernel stack before spill kernel data and
|
/* We have to switch to kernel stack before spill kernel data and
|
||||||
* erase user stack to avoid leak from previous context.
|
* erase user stack to avoid leak from previous context.
|
||||||
*/
|
*/
|
||||||
mov a1, a7 /* stack start (low address) */
|
mov a1, a7 /* stack start (low address) */
|
||||||
addi a1, a1, -16
|
|
||||||
|
|
||||||
SPILL_ALL_WINDOWS
|
|
||||||
|
|
||||||
rsr a0, ZSR_CPU
|
rsr a0, ZSR_CPU
|
||||||
l32i a0, a0, ___cpu_t_current_OFFSET
|
l32i a0, a0, ___cpu_t_current_OFFSET
|
||||||
|
@ -329,11 +328,8 @@ xtensa_userspace_enter:
|
||||||
l32i a8, a1, 12
|
l32i a8, a1, 12
|
||||||
l32i a9, a1, 8
|
l32i a9, a1, 8
|
||||||
|
|
||||||
/* stash user stack */
|
|
||||||
l32i a0, a1, 4
|
|
||||||
|
|
||||||
/* Go back to user stack */
|
/* Go back to user stack */
|
||||||
mov a1, a0
|
l32i a1, a1, 4
|
||||||
|
|
||||||
movi a0, z_thread_entry
|
movi a0, z_thread_entry
|
||||||
wsr.epc2 a0
|
wsr.epc2 a0
|
||||||
|
@ -352,6 +348,7 @@ xtensa_userspace_enter:
|
||||||
|
|
||||||
wsr a0, EPS2
|
wsr a0, EPS2
|
||||||
|
|
||||||
|
/* Wipe out a0 (thre is no return from this function */
|
||||||
movi a0, 0
|
movi a0, 0
|
||||||
|
|
||||||
rfi 2
|
rfi 2
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue