1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright (C) 2019 Western Digital Corporation or its affiliates. 4 */ 5 6#ifndef _ASM_RISCV_FIXMAP_H 7#define _ASM_RISCV_FIXMAP_H 8 9#include <linux/kernel.h> 10#include <linux/sizes.h> 11#include <linux/pgtable.h> 12#include <asm/page.h> 13 14#ifdef CONFIG_MMU 15/* 16 * Here we define all the compile-time 'special' virtual addresses. 17 * The point is to have a constant address at compile time, but to 18 * set the physical address only in the boot process. 19 * 20 * These 'compile-time allocated' memory buffers are page-sized. Use 21 * set_fixmap(idx,phys) to associate physical memory with fixmap indices. 22 */ 23enum fixed_addresses { 24 FIX_HOLE, 25 /* 26 * The fdt fixmap mapping must be PMD aligned and will be mapped 27 * using PMD entries in fixmap_pmd in 64-bit and a PGD entry in 32-bit. 28 */ 29 FIX_FDT_END, 30 FIX_FDT = FIX_FDT_END + FIX_FDT_SIZE / PAGE_SIZE - 1, 31 32 /* Below fixmaps will be mapped using fixmap_pte */ 33 FIX_PTE, 34 FIX_PMD, 35 FIX_PUD, 36 FIX_P4D, 37 FIX_TEXT_POKE1, 38 FIX_TEXT_POKE0, 39 FIX_EARLYCON_MEM_BASE, 40 41 __end_of_permanent_fixed_addresses, 42 /* 43 * Temporary boot-time mappings, used by early_ioremap(), 44 * before ioremap() is functional. 45 */ 46#define NR_FIX_BTMAPS (SZ_256K / PAGE_SIZE) 47#define FIX_BTMAPS_SLOTS 7 48#define TOTAL_FIX_BTMAPS (NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS) 49 50 FIX_BTMAP_END = __end_of_permanent_fixed_addresses, 51 FIX_BTMAP_BEGIN = FIX_BTMAP_END + TOTAL_FIX_BTMAPS - 1, 52 53 __end_of_fixed_addresses 54}; 55 56#define __early_set_fixmap __set_fixmap 57 58#define __late_set_fixmap __set_fixmap 59#define __late_clear_fixmap(idx) __set_fixmap((idx), 0, FIXMAP_PAGE_CLEAR) 60 61extern void __set_fixmap(enum fixed_addresses idx, 62 phys_addr_t phys, pgprot_t prot); 63 64#include <asm-generic/fixmap.h> 65 66#endif /* CONFIG_MMU */ 67#endif /* _ASM_RISCV_FIXMAP_H */ 68