xtensa: use register window specific opcodes only when present
authorMax Filippov <jcmvbkbc@gmail.com>
Mon, 26 Jul 2021 14:25:28 +0000 (07:25 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Tue, 19 Oct 2021 05:19:35 +0000 (22:19 -0700)
xtensa core may be configured without register windows support, don't
use register window specific opcodes in that case. Use window register
specific opcodes to initialize hardware or reset core to a known state
regardless of the chosen ABI.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/boot/boot-elf/bootstrap.S
arch/xtensa/boot/boot-redboot/bootstrap.S
arch/xtensa/kernel/align.S
arch/xtensa/kernel/entry.S
arch/xtensa/kernel/head.S

index 99e98c9bae419a84774aa488d4d30a75017eba11..2dd28931d6990a1d1874e7b03e9de2776ae33f8c 100644 (file)
@@ -42,12 +42,14 @@ _bootparam:
 
        .align  4
 _SetupMMU:
+#if XCHAL_HAVE_WINDOWED
        movi    a0, 0
        wsr     a0, windowbase
        rsync
        movi    a0, 1
        wsr     a0, windowstart
        rsync
+#endif
        movi    a0, 0x1F
        wsr     a0, ps
        rsync
index 51e8f3b88e82a0d79426691dd30b84f9a05a723c..3ed94ad3500076c52bcdd8b65806782da81bf013 100644 (file)
@@ -56,13 +56,13 @@ _start:
        movi    a4, 1
        wsr     a4, ps
        rsync
-
+#if XCHAL_HAVE_WINDOWED
        rsr     a5, windowbase
        ssl     a5
        sll     a4, a4
        wsr     a4, windowstart
        rsync
-
+#endif
        movi    a4, KERNEL_PS_WOE_MASK
        wsr     a4, ps
        rsync
index 9301452e521ed7c9752d0a29e0276a90fe8135a0..d062c732ef1864c9eab5730a86682c62a9bb1b3a 100644 (file)
@@ -58,7 +58,9 @@
  *  BE  shift left / mask 0 0 X X
  */
 
+#if XCHAL_HAVE_WINDOWED
 #define UNALIGNED_USER_EXCEPTION
+#endif
 
 #if XCHAL_HAVE_BE
 
index a144b467c3fdcec0f46c1c85f300cfaf6a7f65b7..8029ce24af925eb666b7bc7070ef39b213bbfc9b 100644 (file)
@@ -940,12 +940,14 @@ unrecoverable_text:
 
 ENTRY(unrecoverable_exception)
 
+#if XCHAL_HAVE_WINDOWED
        movi    a0, 1
        movi    a1, 0
 
        wsr     a0, windowstart
        wsr     a1, windowbase
        rsync
+#endif
 
        movi    a1, KERNEL_PS_WOE_MASK | LOCKLEVEL
        wsr     a1, ps
index 8972d64e0b861d16c43ee6f38f42860ea883006a..8484294bc623f03c8a427aa290402927a8d5517a 100644 (file)
@@ -67,11 +67,13 @@ _SetupOCD:
         * xt-gdb to single step via DEBUG exceptions received directly
         * by ocd.
         */
+#if XCHAL_HAVE_WINDOWED
        movi    a1, 1
        movi    a0, 0
        wsr     a1, windowstart
        wsr     a0, windowbase
        rsync
+#endif
 
        movi    a1, LOCKLEVEL
        wsr     a1, ps