csky: Use va_pa_offset instead of phys_offset
authorGuo Ren <ren_guo@c-sky.com>
Fri, 19 Apr 2019 09:10:52 +0000 (17:10 +0800)
committerGuo Ren <ren_guo@c-sky.com>
Mon, 22 Apr 2019 05:44:57 +0000 (13:44 +0800)
The name of phys_offset is so common for global export and it may
conflict with some local name. So change phys_offset to va_pa_offset
which also used by riscv.

Also use __pa() and __va() instead of using phys_offset directly.

Signed-off-by: Guo Ren <ren_guo@c-sky.com>
Cc: Arnd Bergmann <arnd@arndb.de>
arch/csky/abiv1/inc/abi/ckmmu.h
arch/csky/abiv2/inc/abi/ckmmu.h
arch/csky/include/asm/mmu_context.h
arch/csky/include/asm/page.h
arch/csky/kernel/entry.S
arch/csky/kernel/setup.c
arch/csky/mm/fault.c

index 85339bd224c4e96f269aec748585bc15362cb11d..81f37715c0d26d3d9ffa73e7f4ba4f970f37b601 100644 (file)
@@ -85,11 +85,11 @@ static inline void tlb_invalid_indexed(void)
 
 static inline void setup_pgd(unsigned long pgd, bool kernel)
 {
-       cpwcr("cpcr29", pgd);
+       cpwcr("cpcr29", pgd | BIT(0));
 }
 
 static inline unsigned long get_pgd(void)
 {
-       return cprcr("cpcr29");
+       return cprcr("cpcr29") & ~BIT(0);
 }
 #endif /* __ASM_CSKY_CKMMUV1_H */
index 31d75e1a724a752e7de4764d1f99347c70e81562..e4480e6bc3b3d3bf2d6902fcfcb4e0c7d04ca1b4 100644 (file)
@@ -90,18 +90,16 @@ static inline void tlb_invalid_indexed(void)
        mtcr("cr<8, 15>", 0x02000000);
 }
 
-/* setup hardrefil pgd */
-static inline unsigned long get_pgd(void)
-{
-       return mfcr("cr<29, 15>");
-}
-
 static inline void setup_pgd(unsigned long pgd, bool kernel)
 {
        if (kernel)
-               mtcr("cr<28, 15>", pgd);
+               mtcr("cr<28, 15>", pgd | BIT(0));
        else
-               mtcr("cr<29, 15>", pgd);
+               mtcr("cr<29, 15>", pgd | BIT(0));
 }
 
+static inline unsigned long get_pgd(void)
+{
+       return mfcr("cr<29, 15>") & ~BIT(0);
+}
 #endif /* __ASM_CSKY_CKMMUV2_H */
index c41f86b2246005fad8a82b687a73d363e15eec19..734db3a122e1e72012f206f2de764b010d5b727a 100644 (file)
 #include <linux/sched.h>
 #include <abi/ckmmu.h>
 
-static inline void tlbmiss_handler_setup_pgd(unsigned long pgd, bool kernel)
-{
-       pgd -= PAGE_OFFSET;
-       pgd += phys_offset;
-       pgd |= 1;
-       setup_pgd(pgd, kernel);
-}
-
 #define TLBMISS_HANDLER_SETUP_PGD(pgd) \
-       tlbmiss_handler_setup_pgd((unsigned long)pgd, 0)
+       setup_pgd(__pa(pgd), false)
 #define TLBMISS_HANDLER_SETUP_PGD_KERNEL(pgd) \
-       tlbmiss_handler_setup_pgd((unsigned long)pgd, 1)
-
-static inline unsigned long tlb_get_pgd(void)
-{
-       return ((get_pgd() - phys_offset) & ~1) + PAGE_OFFSET;
-}
+       setup_pgd(__pa(pgd), true)
 
 #define cpu_context(cpu, mm)   ((mm)->context.asid[cpu])
 #define cpu_asid(cpu, mm)      (cpu_context((cpu), (mm)) & ASID_MASK)
index 4ce3d5c28ffcb1b5b921b50c1c8367e24db8ec79..9738eacefdc7e4b940b7ca0fe4a9f3f2d146002d 100644 (file)
@@ -72,13 +72,13 @@ typedef struct page *pgtable_t;
 #define __pgd(x)       ((pgd_t) { (x) })
 #define __pgprot(x)    ((pgprot_t) { (x) })
 
-extern unsigned long phys_offset;
+extern unsigned long va_pa_offset;
 
-#define ARCH_PFN_OFFSET        PFN_DOWN(phys_offset + PHYS_OFFSET_OFFSET)
+#define ARCH_PFN_OFFSET        PFN_DOWN(va_pa_offset + PHYS_OFFSET_OFFSET)
+
+#define __pa(x)                 ((unsigned long)(x) - PAGE_OFFSET + va_pa_offset)
+#define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET - va_pa_offset))
 
-#define __pa(x)                ((unsigned long)(x) - PAGE_OFFSET + phys_offset)
-#define __va(x)                ((void *)((unsigned long)(x) + PAGE_OFFSET - \
-                                 phys_offset))
 #define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x), 0))
 
 #define MAP_NR(x)      PFN_DOWN((unsigned long)(x) - PAGE_OFFSET - \
index e5bbd8c184f335577c4fc7bc2a620b97256918c8..a7e84ccccbd8ee47ff0cdba63b4f5a6f4c647fed 100644 (file)
@@ -40,7 +40,7 @@ ENTRY(csky_\name)
        WR_MCIR a2
 #endif
        bclri   r6, 0
-       lrw     a2, phys_offset
+       lrw     a2, va_pa_offset
        ld.w    a2, (a2, 0)
        subu    r6, a2
        bseti   r6, 31
@@ -51,7 +51,7 @@ ENTRY(csky_\name)
        addu    r6, a2
        ldw     r6, (r6)
 
-       lrw     a2, phys_offset
+       lrw     a2, va_pa_offset
        ld.w    a2, (a2, 0)
        subu    r6, a2
        bseti   r6, 31
index 36fc04b9417df3cc6db65cac11a8465ab7e6f0c3..23ee604aafdb620fca5ba01f8c7474f261349258 100644 (file)
@@ -142,8 +142,8 @@ void __init setup_arch(char **cmdline_p)
 #endif
 }
 
-unsigned long phys_offset;
-EXPORT_SYMBOL(phys_offset);
+unsigned long va_pa_offset;
+EXPORT_SYMBOL(va_pa_offset);
 
 asmlinkage __visible void __init csky_start(unsigned int unused,
                                            void *dtb_start)
@@ -151,7 +151,7 @@ asmlinkage __visible void __init csky_start(unsigned int unused,
        /* Clean up bss section */
        memset(__bss_start, 0, __bss_stop - __bss_start);
 
-       phys_offset = read_mmu_msa0() & ~(SSEG_SIZE - 1);
+       va_pa_offset = read_mmu_msa0() & ~(SSEG_SIZE - 1);
 
        pre_trap_init();
        pre_mmu_init();
index e1725f8a06f921278352a5c00a881647180cb560..5beb25ca1c79804e4bd14402fa1b44a70feff476 100644 (file)
@@ -81,7 +81,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
 
                unsigned long pgd_base;
 
-               pgd_base = tlb_get_pgd();
+               pgd_base = __va(get_pgd());
                pgd = (pgd_t *)pgd_base + offset;
                pgd_k = init_mm.pgd + offset;