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 99e98c9..2dd2893 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 51e8f3b..3ed94ad 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 9301452..d062c73 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 a144b46..8029ce2 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 8972d64..8484294 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