riscv: Move cast inside kernel_mapping_[pv]a_to_[vp]a
authorSamuel Holland <samuel@sholland.org>
Sat, 26 Nov 2022 06:09:20 +0000 (00:09 -0600)
committerPalmer Dabbelt <palmer@rivosinc.com>
Fri, 9 Dec 2022 01:22:54 +0000 (17:22 -0800)
Before commit 44c922572952 ("RISC-V: enable XIP"), these macros cast
their argument to unsigned long. That commit moved the cast after an
assignment to an unsigned long variable, rendering it ineffectual.
Move the cast back, so we can remove the cast at each call site.

Reviewed-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Samuel Holland <samuel@sholland.org>
Link: https://lore.kernel.org/r/20221126060920.65009-2-samuel@sholland.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/page.h
arch/riscv/mm/init.c

index ac70b0fd9a9a35c49a2513840e5d9306e41dced6..9f432c1b528990e8492b35ef5dda19c482a0037d 100644 (file)
@@ -123,20 +123,20 @@ extern phys_addr_t phys_ram_base;
        ((x) >= PAGE_OFFSET && (!IS_ENABLED(CONFIG_64BIT) || (x) < PAGE_OFFSET + KERN_VIRT_SIZE))
 
 #define linear_mapping_pa_to_va(x)     ((void *)((unsigned long)(x) + kernel_map.va_pa_offset))
-#define kernel_mapping_pa_to_va(y)     ({                                              \
-       unsigned long _y = y;                                                           \
-       (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < phys_ram_base) ?                                 \
-               (void *)((unsigned long)(_y) + kernel_map.va_kernel_xip_pa_offset) :            \
-               (void *)((unsigned long)(_y) + kernel_map.va_kernel_pa_offset + XIP_OFFSET);    \
+#define kernel_mapping_pa_to_va(y)     ({                                      \
+       unsigned long _y = (unsigned long)(y);                                  \
+       (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < phys_ram_base) ?                 \
+               (void *)(_y + kernel_map.va_kernel_xip_pa_offset) :             \
+               (void *)(_y + kernel_map.va_kernel_pa_offset + XIP_OFFSET);     \
        })
 #define __pa_to_va_nodebug(x)          linear_mapping_pa_to_va(x)
 
 #define linear_mapping_va_to_pa(x)     ((unsigned long)(x) - kernel_map.va_pa_offset)
 #define kernel_mapping_va_to_pa(y) ({                                          \
-       unsigned long _y = y;                                                   \
-       (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < kernel_map.virt_addr + XIP_OFFSET) ?     \
-               ((unsigned long)(_y) - kernel_map.va_kernel_xip_pa_offset) :            \
-               ((unsigned long)(_y) - kernel_map.va_kernel_pa_offset - XIP_OFFSET);    \
+       unsigned long _y = (unsigned long)(y);                                  \
+       (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < kernel_map.virt_addr + XIP_OFFSET) ? \
+               (_y - kernel_map.va_kernel_xip_pa_offset) :                     \
+               (_y - kernel_map.va_kernel_pa_offset - XIP_OFFSET);             \
        })
 
 #define __va_to_pa_nodebug(x)  ({                                              \
index b56a0a75533fe3993a25fc10b833b2c1b7df523a..7d59516ce6b395334f83dd8635282575e2eba733 100644 (file)
@@ -927,15 +927,15 @@ static void __init pt_ops_set_early(void)
  */
 static void __init pt_ops_set_fixmap(void)
 {
-       pt_ops.alloc_pte = kernel_mapping_pa_to_va((uintptr_t)alloc_pte_fixmap);
-       pt_ops.get_pte_virt = kernel_mapping_pa_to_va((uintptr_t)get_pte_virt_fixmap);
+       pt_ops.alloc_pte = kernel_mapping_pa_to_va(alloc_pte_fixmap);
+       pt_ops.get_pte_virt = kernel_mapping_pa_to_va(get_pte_virt_fixmap);
 #ifndef __PAGETABLE_PMD_FOLDED
-       pt_ops.alloc_pmd = kernel_mapping_pa_to_va((uintptr_t)alloc_pmd_fixmap);
-       pt_ops.get_pmd_virt = kernel_mapping_pa_to_va((uintptr_t)get_pmd_virt_fixmap);
-       pt_ops.alloc_pud = kernel_mapping_pa_to_va((uintptr_t)alloc_pud_fixmap);
-       pt_ops.get_pud_virt = kernel_mapping_pa_to_va((uintptr_t)get_pud_virt_fixmap);
-       pt_ops.alloc_p4d = kernel_mapping_pa_to_va((uintptr_t)alloc_p4d_fixmap);
-       pt_ops.get_p4d_virt = kernel_mapping_pa_to_va((uintptr_t)get_p4d_virt_fixmap);
+       pt_ops.alloc_pmd = kernel_mapping_pa_to_va(alloc_pmd_fixmap);
+       pt_ops.get_pmd_virt = kernel_mapping_pa_to_va(get_pmd_virt_fixmap);
+       pt_ops.alloc_pud = kernel_mapping_pa_to_va(alloc_pud_fixmap);
+       pt_ops.get_pud_virt = kernel_mapping_pa_to_va(get_pud_virt_fixmap);
+       pt_ops.alloc_p4d = kernel_mapping_pa_to_va(alloc_p4d_fixmap);
+       pt_ops.get_p4d_virt = kernel_mapping_pa_to_va(get_p4d_virt_fixmap);
 #endif
 }