OSDN Git Service

xtensa: clean up excsave1 initialization
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 15 Apr 2022 09:59:33 +0000 (02:59 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Mon, 2 May 2022 02:51:22 +0000 (19:51 -0700)
Use xtensa_set_sr instead of inline assembly.
Rename local variable exc_table in early_trap_init to avoid conflict
with per-CPU variable of the same name.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/include/asm/traps.h
arch/xtensa/kernel/traps.c

index bfdb0af..514376e 100644 (file)
@@ -57,11 +57,11 @@ void do_unhandled(struct pt_regs *regs);
 /* Initialize minimal exc_table structure sufficient for basic paging */
 static inline void __init early_trap_init(void)
 {
-       static struct exc_table exc_table __initdata = {
+       static struct exc_table init_exc_table __initdata = {
                .fast_kernel_handler[EXCCAUSE_DTLB_MISS] =
                        fast_second_level_miss,
        };
-       __asm__ __volatile__("wsr  %0, excsave1\n" : : "a" (&exc_table));
+       xtensa_set_sr(&init_exc_table, excsave1);
 }
 
 void secondary_trap_init(void);
index d6b1a0c..95903f2 100644 (file)
@@ -372,8 +372,7 @@ __init trap_set_handler(int cause, xtensa_exception_handler *handler)
 
 static void trap_init_excsave(void)
 {
-       unsigned long excsave1 = (unsigned long)this_cpu_ptr(&exc_table);
-       __asm__ __volatile__("wsr  %0, excsave1\n" : : "a" (excsave1));
+       xtensa_set_sr(this_cpu_ptr(&exc_table), excsave1);
 }
 
 static void trap_init_debug(void)