This allows using addresses from XKPHYS segment. This is needed as we
access hardware registers through this segment in 64BIT configuration,
but this also lets us peek/poke bigger memory address space using
commands that work with memory on 64BIT.

With this commit, malta with 64-bit CPU finally boots into 64BIT barebox
in QEMU.

Signed-off-by: Denis Orlov <denorl2...@gmail.com>
---
 arch/mips/boot/start.S             |  2 ++
 arch/mips/include/asm/pbl_macros.h | 11 +++++++++++
 2 files changed, 13 insertions(+)

diff --git a/arch/mips/boot/start.S b/arch/mips/boot/start.S
index 5f134f9ae9..30828ad9ef 100644
--- a/arch/mips/boot/start.S
+++ b/arch/mips/boot/start.S
@@ -26,6 +26,8 @@ EXPORT(_start)
 
        mips_disable_interrupts
 
+       mips64_enable_64bit_addressing
+
        copy_to_link_location _start
 
        stack_setup
diff --git a/arch/mips/include/asm/pbl_macros.h 
b/arch/mips/include/asm/pbl_macros.h
index 1fba690c8c..ce169a1554 100644
--- a/arch/mips/include/asm/pbl_macros.h
+++ b/arch/mips/include/asm/pbl_macros.h
@@ -152,6 +152,17 @@
        .set    pop
        .endm
 
+       .macro  mips64_enable_64bit_addressing
+#ifdef CONFIG_64BIT
+       .set    push
+       .set    noreorder
+       mfc0    k0, CP0_STATUS
+       or      k0, ST0_KX
+       mtc0    k0, CP0_STATUS
+       .set    pop
+#endif
+       .endm
+
        .macro  mips_barebox_10h
        .set    push
        .set    noreorder
-- 
2.41.0


Reply via email to