-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
RISC-V: Implement compile-time fixed mappings
This patch implements compile-time virtual to physical mappings. These compile-time fixed mappings can be used by earlycon, ACPI, and early ioremap for creating fixed mappings when FIX_EARLYCON_MEM=y. To start with, we have enabled compile-time fixed mappings for earlycon. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Palmer Dabbelt <palmer@sifive.com>
- Loading branch information
Anup Patel
authored and
Anup Patel
committed
Feb 21, 2019
1 parent
6f1e9e9
commit f2c17aa
Showing
3 changed files
with
81 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
/* | ||
* Copyright (C) 2019 Western Digital Corporation or its affiliates. | ||
*/ | ||
|
||
#ifndef _ASM_RISCV_FIXMAP_H | ||
#define _ASM_RISCV_FIXMAP_H | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/sizes.h> | ||
#include <asm/page.h> | ||
#include <asm/pgtable.h> | ||
|
||
/* | ||
* Here we define all the compile-time 'special' virtual addresses. | ||
* The point is to have a constant address at compile time, but to | ||
* set the physical address only in the boot process. | ||
* | ||
* These 'compile-time allocated' memory buffers are page-sized. Use | ||
* set_fixmap(idx,phys) to associate physical memory with fixmap indices. | ||
*/ | ||
enum fixed_addresses { | ||
FIX_HOLE, | ||
FIX_EARLYCON_MEM_BASE, | ||
__end_of_fixed_addresses | ||
}; | ||
|
||
#define FIXADDR_SIZE (__end_of_fixed_addresses * PAGE_SIZE) | ||
#define FIXADDR_TOP (PAGE_OFFSET) | ||
#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) | ||
|
||
#define FIXMAP_PAGE_IO PAGE_KERNEL | ||
|
||
#define __early_set_fixmap __set_fixmap | ||
|
||
#define __late_set_fixmap __set_fixmap | ||
#define __late_clear_fixmap(idx) __set_fixmap((idx), 0, FIXMAP_PAGE_CLEAR) | ||
|
||
extern void __set_fixmap(enum fixed_addresses idx, | ||
phys_addr_t phys, pgprot_t prot); | ||
|
||
#include <asm-generic/fixmap.h> | ||
|
||
#endif /* _ASM_RISCV_FIXMAP_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters