xtensa: fix boot parameters address translation
The bootloader may pass physical address of the boot parameters structure to the MMUv3 kernel in the register a2. Code in the _SetupMMU block in the arch/xtensa/kernel/head.S is supposed to map that physical address to the virtual address in the configured virtual memory layout. This code haven't been updated when additional 256+256 and 512+512 memory layouts were introduced and it may produce wrong addresses when used with these layouts. Cc: stable@vger.kernel.org Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
0773495b1f
commit
40dc948f23
|
@ -88,9 +88,12 @@ _SetupMMU:
|
|||
initialize_mmu
|
||||
#if defined(CONFIG_MMU) && XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY
|
||||
rsr a2, excsave1
|
||||
movi a3, 0x08000000
|
||||
movi a3, XCHAL_KSEG_PADDR
|
||||
bltu a2, a3, 1f
|
||||
sub a2, a2, a3
|
||||
movi a3, XCHAL_KSEG_SIZE
|
||||
bgeu a2, a3, 1f
|
||||
movi a3, 0xd0000000
|
||||
movi a3, XCHAL_KSEG_CACHED_VADDR
|
||||
add a2, a2, a3
|
||||
wsr a2, excsave1
|
||||
1:
|
||||
|
|
Loading…
Reference in a new issue