riscv: Using CSR numbers to access CSRs
authorBin Meng <bmeng.cn@gmail.com>
Wed, 7 Aug 2019 16:13:38 +0000 (09:13 -0700)
committerPaul Walmsley <paul.walmsley@sifive.com>
Fri, 30 Aug 2019 18:04:19 +0000 (11:04 -0700)
Since commit a3182c91ef4e ("RISC-V: Access CSRs using CSR numbers"),
we should prefer accessing CSRs using their CSR numbers, but there
are several leftovers like sstatus / sptbr we missed.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
arch/riscv/kernel/entry.S
arch/riscv/kernel/fpu.S
arch/riscv/kernel/head.S
arch/riscv/lib/uaccess.S
arch/riscv/mm/context.c
arch/riscv/mm/init.c

index bc7a56e..74ccfd4 100644 (file)
@@ -167,7 +167,7 @@ ENTRY(handle_exception)
        tail do_IRQ
 1:
        /* Exceptions run with interrupts enabled */
-       csrs sstatus, SR_SIE
+       csrs CSR_SSTATUS, SR_SIE
 
        /* Handle syscalls */
        li t0, EXC_SYSCALL
@@ -222,7 +222,7 @@ ret_from_syscall:
 
 ret_from_exception:
        REG_L s0, PT_SSTATUS(sp)
-       csrc sstatus, SR_SIE
+       csrc CSR_SSTATUS, SR_SIE
        andi s0, s0, SR_SPP
        bnez s0, resume_kernel
 
@@ -265,7 +265,7 @@ work_pending:
        bnez s1, work_resched
 work_notifysig:
        /* Handle pending signals and notify-resume requests */
-       csrs sstatus, SR_SIE /* Enable interrupts for do_notify_resume() */
+       csrs CSR_SSTATUS, SR_SIE /* Enable interrupts for do_notify_resume() */
        move a0, sp /* pt_regs */
        move a1, s0 /* current_thread_info->flags */
        tail do_notify_resume
index 1defb06..631d315 100644 (file)
@@ -23,7 +23,7 @@ ENTRY(__fstate_save)
        li  a2,  TASK_THREAD_F0
        add a0, a0, a2
        li t1, SR_FS
-       csrs sstatus, t1
+       csrs CSR_SSTATUS, t1
        frcsr t0
        fsd f0,  TASK_THREAD_F0_F0(a0)
        fsd f1,  TASK_THREAD_F1_F0(a0)
@@ -58,7 +58,7 @@ ENTRY(__fstate_save)
        fsd f30, TASK_THREAD_F30_F0(a0)
        fsd f31, TASK_THREAD_F31_F0(a0)
        sw t0, TASK_THREAD_FCSR_F0(a0)
-       csrc sstatus, t1
+       csrc CSR_SSTATUS, t1
        ret
 ENDPROC(__fstate_save)
 
@@ -67,7 +67,7 @@ ENTRY(__fstate_restore)
        add a0, a0, a2
        li t1, SR_FS
        lw t0, TASK_THREAD_FCSR_F0(a0)
-       csrs sstatus, t1
+       csrs CSR_SSTATUS, t1
        fld f0,  TASK_THREAD_F0_F0(a0)
        fld f1,  TASK_THREAD_F1_F0(a0)
        fld f2,  TASK_THREAD_F2_F0(a0)
@@ -101,6 +101,6 @@ ENTRY(__fstate_restore)
        fld f30, TASK_THREAD_F30_F0(a0)
        fld f31, TASK_THREAD_F31_F0(a0)
        fscsr t0
-       csrc sstatus, t1
+       csrc CSR_SSTATUS, t1
        ret
 ENDPROC(__fstate_restore)
index 0f1ba17..86049ae 100644 (file)
@@ -61,7 +61,7 @@ _start_kernel:
         * floating point in kernel space
         */
        li t0, SR_FS
-       csrc sstatus, t0
+       csrc CSR_SSTATUS, t0
 
        /* Pick one hart to run the main boot sequence */
        la a3, hart_lottery
index 399e6f0..ed2696c 100644 (file)
@@ -18,7 +18,7 @@ ENTRY(__asm_copy_from_user)
 
        /* Enable access to user memory */
        li t6, SR_SUM
-       csrs sstatus, t6
+       csrs CSR_SSTATUS, t6
 
        add a3, a1, a2
        /* Use word-oriented copy only if low-order bits match */
@@ -47,7 +47,7 @@ ENTRY(__asm_copy_from_user)
 
 3:
        /* Disable access to user memory */
-       csrc sstatus, t6
+       csrc CSR_SSTATUS, t6
        li a0, 0
        ret
 4: /* Edge case: unalignment */
@@ -72,7 +72,7 @@ ENTRY(__clear_user)
 
        /* Enable access to user memory */
        li t6, SR_SUM
-       csrs sstatus, t6
+       csrs CSR_SSTATUS, t6
 
        add a3, a0, a1
        addi t0, a0, SZREG-1
@@ -94,7 +94,7 @@ ENTRY(__clear_user)
 
 3:
        /* Disable access to user memory */
-       csrc sstatus, t6
+       csrc CSR_SSTATUS, t6
        li a0, 0
        ret
 4: /* Edge case: unalignment */
@@ -114,11 +114,11 @@ ENDPROC(__clear_user)
        /* Fixup code for __copy_user(10) and __clear_user(11) */
 10:
        /* Disable access to user memory */
-       csrs sstatus, t6
+       csrs CSR_SSTATUS, t6
        mv a0, a2
        ret
 11:
-       csrs sstatus, t6
+       csrs CSR_SSTATUS, t6
        mv a0, a1
        ret
        .previous
index 89ceb3c..beeb5d7 100644 (file)
@@ -57,12 +57,7 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next,
        cpumask_clear_cpu(cpu, mm_cpumask(prev));
        cpumask_set_cpu(cpu, mm_cpumask(next));
 
-       /*
-        * Use the old spbtr name instead of using the current satp
-        * name to support binutils 2.29 which doesn't know about the
-        * privileged ISA 1.10 yet.
-        */
-       csr_write(sptbr, virt_to_pfn(next->pgd) | SATP_MODE);
+       csr_write(CSR_SATP, virt_to_pfn(next->pgd) | SATP_MODE);
        local_flush_tlb_all();
 
        flush_icache_deferred(next);
index 42bf939..238fc41 100644 (file)
@@ -435,7 +435,7 @@ static void __init setup_vm_final(void)
        clear_fixmap(FIX_PMD);
 
        /* Move to swapper page table */
-       csr_write(sptbr, PFN_DOWN(__pa(swapper_pg_dir)) | SATP_MODE);
+       csr_write(CSR_SATP, PFN_DOWN(__pa(swapper_pg_dir)) | SATP_MODE);
        local_flush_tlb_all();
 }