]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
riscv: rename sptbr to satp
authorChristoph Hellwig <hch@lst.de>
Tue, 9 Jan 2018 14:00:32 +0000 (15:00 +0100)
committerPalmer Dabbelt <palmer@dabbelt.com>
Wed, 31 Jan 2018 03:16:12 +0000 (19:16 -0800)
satp is the name used by the current privileged spec 1.10, use it
instead of the old name.  The most recent release binutils release
(2.29) doesn't know about the satp name yet, so stick to the name from
the previous privileged ISA release and comment on the fact.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
arch/riscv/include/asm/csr.h
arch/riscv/include/asm/mmu_context.h
arch/riscv/kernel/head.S
arch/riscv/mm/fault.c

index 3c7a2c97e377a5af2923c8e7d96cf04e57e66892..421fa35857988e2c203c086e2dfb5aaab628491b 100644 (file)
 #define SR_SD   _AC(0x8000000000000000, UL) /* FS/XS dirty */
 #endif
 
-/* SPTBR flags */
+/* SATP flags */
 #if __riscv_xlen == 32
-#define SPTBR_PPN     _AC(0x003FFFFF, UL)
-#define SPTBR_MODE_32 _AC(0x80000000, UL)
-#define SPTBR_MODE    SPTBR_MODE_32
+#define SATP_PPN     _AC(0x003FFFFF, UL)
+#define SATP_MODE_32 _AC(0x80000000, UL)
+#define SATP_MODE    SATP_MODE_32
 #else
-#define SPTBR_PPN     _AC(0x00000FFFFFFFFFFF, UL)
-#define SPTBR_MODE_39 _AC(0x8000000000000000, UL)
-#define SPTBR_MODE    SPTBR_MODE_39
+#define SATP_PPN     _AC(0x00000FFFFFFFFFFF, UL)
+#define SATP_MODE_39 _AC(0x8000000000000000, UL)
+#define SATP_MODE    SATP_MODE_39
 #endif
 
 /* Interrupt Enable and Interrupt Pending flags */
index 082ef8652ac7cbd288020a0f619dbd0814e930aa..d30f0c54b8b2a9529d60033633a620bf89240091 100644 (file)
@@ -41,7 +41,12 @@ static inline void destroy_context(struct mm_struct *mm)
 
 static inline void set_pgdir(pgd_t *pgd)
 {
-       csr_write(sptbr, virt_to_pfn(pgd) | SPTBR_MODE);
+       /*
+        * 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);
 }
 
 /*
index 78f670d701339055c11c8cbeef409f9edf08ba3a..226eeb190f908daef2a714944599e69c35271a4d 100644 (file)
@@ -74,15 +74,15 @@ relocate:
        sub a1, a1, a0
        add ra, ra, a1
 
-       /* Point stvec to virtual address of intruction after sptbr write */
+       /* Point stvec to virtual address of intruction after satp write */
        la a0, 1f
        add a0, a0, a1
        csrw stvec, a0
 
-       /* Compute sptbr for kernel page tables, but don't load it yet */
+       /* Compute satp for kernel page tables, but don't load it yet */
        la a2, swapper_pg_dir
        srl a2, a2, PAGE_SHIFT
-       li a1, SPTBR_MODE
+       li a1, SATP_MODE
        or a2, a2, a1
 
        /*
index 0713f3c67ab4242a2e54430331044724bf57f289..06c5621970ae08e0ba7c1ba175119b0f93a2f2e5 100644 (file)
@@ -239,6 +239,10 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
                 * Do _not_ use "tsk->active_mm->pgd" here.
                 * We might be inside an interrupt in the middle
                 * of a task switch.
+                *
+                * Note: 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.
                 */
                index = pgd_index(addr);
                pgd = (pgd_t *)pfn_to_virt(csr_read(sptbr)) + index;