Commit 1098efd2 authored by Jiaxun Yang's avatar Jiaxun Yang Committed by Huacai Chen

LoongArch: Override higher address bits in JUMP_VIRT_ADDR

In JUMP_VIRT_ADDR we are performing an or calculation on address value
directly from pcaddi.

This will only work if we are currently running from direct 1:1 mapping
addresses or firmware's DMW is configured exactly same as kernel. Still,
we should not rely on such assumption.

Fix by overriding higher bits in address comes from pcaddi, so we can
get rid of or operator.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarJiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
parent beb28000
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
.macro JUMP_VIRT_ADDR temp1 temp2 .macro JUMP_VIRT_ADDR temp1 temp2
li.d \temp1, CACHE_BASE li.d \temp1, CACHE_BASE
pcaddi \temp2, 0 pcaddi \temp2, 0
or \temp1, \temp1, \temp2 bstrins.d \temp1, \temp2, (DMW_PABITS - 1), 0
jirl zero, \temp1, 0xc jirl zero, \temp1, 0xc
.endm .endm
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment