diff options
Diffstat (limited to 'arch/riscv/include/asm/page.h')
| -rw-r--r-- | arch/riscv/include/asm/page.h | 30 | 
1 files changed, 22 insertions, 8 deletions
| diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h index 7fed7c431928..b55ba20903ec 100644 --- a/arch/riscv/include/asm/page.h +++ b/arch/riscv/include/asm/page.h @@ -16,11 +16,6 @@  #define PAGE_SIZE	(_AC(1, UL) << PAGE_SHIFT)  #define PAGE_MASK	(~(PAGE_SIZE - 1)) -#ifdef CONFIG_64BIT -#define HUGE_MAX_HSTATE		2 -#else -#define HUGE_MAX_HSTATE		1 -#endif  #define HPAGE_SHIFT		PMD_SHIFT  #define HPAGE_SIZE		(_AC(1, UL) << HPAGE_SHIFT)  #define HPAGE_MASK              (~(HPAGE_SIZE - 1)) @@ -49,10 +44,14 @@  #ifndef __ASSEMBLY__ +#ifdef CONFIG_RISCV_ISA_ZICBOZ +void clear_page(void *page); +#else  #define clear_page(pgaddr)			memset((pgaddr), 0, PAGE_SIZE) +#endif  #define copy_page(to, from)			memcpy((to), (from), PAGE_SIZE) -#define clear_user_page(pgaddr, vaddr, page)	memset((pgaddr), 0, PAGE_SIZE) +#define clear_user_page(pgaddr, vaddr, page)	clear_page(pgaddr)  #define copy_user_page(vto, vfrom, vaddr, topg) \  			memcpy((vto), (vfrom), PAGE_SIZE) @@ -90,9 +89,16 @@ typedef struct page *pgtable_t;  #define PTE_FMT "%08lx"  #endif +#ifdef CONFIG_64BIT +/* + * We override this value as its generic definition uses __pa too early in + * the boot process (before kernel_map.va_pa_offset is set). + */ +#define MIN_MEMBLOCK_ADDR      0 +#endif +  #ifdef CONFIG_MMU -extern unsigned long riscv_pfn_base; -#define ARCH_PFN_OFFSET		(riscv_pfn_base) +#define ARCH_PFN_OFFSET		(PFN_DOWN((unsigned long)phys_ram_base))  #else  #define ARCH_PFN_OFFSET		(PAGE_OFFSET >> PAGE_SHIFT)  #endif /* CONFIG_MMU */ @@ -122,7 +128,11 @@ extern phys_addr_t phys_ram_base;  #define is_linear_mapping(x)	\  	((x) >= PAGE_OFFSET && (!IS_ENABLED(CONFIG_64BIT) || (x) < PAGE_OFFSET + KERN_VIRT_SIZE)) +#ifndef CONFIG_DEBUG_VIRTUAL  #define linear_mapping_pa_to_va(x)	((void *)((unsigned long)(x) + kernel_map.va_pa_offset)) +#else +void *linear_mapping_pa_to_va(unsigned long x); +#endif  #define kernel_mapping_pa_to_va(y)	({					\  	unsigned long _y = (unsigned long)(y);					\  	(IS_ENABLED(CONFIG_XIP_KERNEL) && _y < phys_ram_base) ?			\ @@ -131,7 +141,11 @@ extern phys_addr_t phys_ram_base;  	})  #define __pa_to_va_nodebug(x)		linear_mapping_pa_to_va(x) +#ifndef CONFIG_DEBUG_VIRTUAL  #define linear_mapping_va_to_pa(x)	((unsigned long)(x) - kernel_map.va_pa_offset) +#else +phys_addr_t linear_mapping_va_to_pa(unsigned long x); +#endif  #define kernel_mapping_va_to_pa(y) ({						\  	unsigned long _y = (unsigned long)(y);					\  	(IS_ENABLED(CONFIG_XIP_KERNEL) && _y < kernel_map.virt_addr + XIP_OFFSET) ? \ | 
