mirror of https://gitee.com/openkylin/linux.git
A RISC-V Fix for 5.9
I collected a single fix during the merge window: we managed to break the early trap setup on !MMU, this patch fixes it. The power keeps going on here so I haven't have a chance to give this the testing I usually would, but I don't have a Kendryte anyway so I doubt I'd pick up anything subtle even if I was to test. The patch seems pretty safe and it's still early, so I don't see any reason to let it sit around. It's fairly late so if it misses the merge window that's not a big deal. I'll definately have stuff for next week, so I'll just start from whenever this lands. -----BEGIN PGP SIGNATURE----- iQJHBAABCgAxFiEEKzw3R0RoQ7JKlDp6LhMZ81+7GIkFAl84Y58THHBhbG1lckBk YWJiZWx0LmNvbQAKCRAuExnzX7sYiVs8D/9blga759Z5w71l3wQ7htZnYuw2bJPw 9vp+TgRBsdBFpVvVR/81E3deLnEk0WaYt+kg3b1SJRcYCeXpfOGofrLx/u1/pFM4 Tpl2CTQOTumPBYEQLzUEIBxTNbusHDR4s0H3FVzJ6mwhGQk8YAaeD0Vs7CjxASoq ZI4JrHBo042vFV85gLqVV9q2oGjRC/kqqep2Utq7HRL2hov/A9IU1A5V7FylPn9+ CysVEicue3IalHX3ZuTNctzHGnrnyO33gnbihrxh1c7MvVQdeI4BAFpwPR/hTMwa cg3DFnQQ5TYT8BkYssNrikgkzGuPzuYMpntP9CrR4zpWu8hEZJv4h0c+hu3OcLoJ zDwAuQu9m/iZ98LPev1IMXrComlUb5jUJgRR9HAazUQhsVlj1jXPmFiyHtKsFJ3m zfGyrUklTAm2XRhfbM3kiW9c+qrnc/L9qZaLp4JxgPLj8wBYJBOH/XpaasLbR+Tz 8XNtJ8yfCOHY8srQI752v1vFcF7V4mFKPUu8XJZuZbs/IX+8dH0b5ki6vdPZ5oiS sOlDnjTLY3s7uM8Lh2KE/DKMKyJ160F80pzr6QfD45h5qINOZp+9TntA+KE2hvZ8 1yJd0R27Pc6HOwgv95q9W93St2pA/oC24kKr5OLHjjf5I3Q4vZiLet3sIw1SFViF u/+W+oKP1Lo6qQ== =+8KT -----END PGP SIGNATURE----- Merge tag 'riscv-for-linus-5.9-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux Pull RISC-V fix from Palmer Dabbelt: "I collected a single fix during the merge window: we managed to break the early trap setup on !MMU, this fixes it" * tag 'riscv-for-linus-5.9-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: riscv: Setup exception vector for nommu platform
This commit is contained in:
commit
d84835b118
|
@ -77,16 +77,10 @@ relocate:
|
|||
csrw CSR_SATP, a0
|
||||
.align 2
|
||||
1:
|
||||
/* Set trap vector to exception handler */
|
||||
la a0, handle_exception
|
||||
/* Set trap vector to spin forever to help debug */
|
||||
la a0, .Lsecondary_park
|
||||
csrw CSR_TVEC, a0
|
||||
|
||||
/*
|
||||
* Set sup0 scratch register to 0, indicating to exception vector that
|
||||
* we are presently executing in kernel.
|
||||
*/
|
||||
csrw CSR_SCRATCH, zero
|
||||
|
||||
/* Reload the global pointer */
|
||||
.option push
|
||||
.option norelax
|
||||
|
@ -144,9 +138,23 @@ secondary_start_common:
|
|||
la a0, swapper_pg_dir
|
||||
call relocate
|
||||
#endif
|
||||
call setup_trap_vector
|
||||
tail smp_callin
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
.align 2
|
||||
setup_trap_vector:
|
||||
/* Set trap vector to exception handler */
|
||||
la a0, handle_exception
|
||||
csrw CSR_TVEC, a0
|
||||
|
||||
/*
|
||||
* Set sup0 scratch register to 0, indicating to exception vector that
|
||||
* we are presently executing in kernel.
|
||||
*/
|
||||
csrw CSR_SCRATCH, zero
|
||||
ret
|
||||
|
||||
.Lsecondary_park:
|
||||
/* We lack SMP support or have too many harts, so park this hart */
|
||||
wfi
|
||||
|
@ -240,6 +248,7 @@ clear_bss_done:
|
|||
call relocate
|
||||
#endif /* CONFIG_MMU */
|
||||
|
||||
call setup_trap_vector
|
||||
/* Restore C environment */
|
||||
la tp, init_task
|
||||
sw zero, TASK_TI_CPU(tp)
|
||||
|
|
Loading…
Reference in New Issue