Mark Salter | bf4b558 | 2014-04-07 15:39:52 -0700 | [diff] [blame] | 1 | /* |
| 2 | * fixmap.h: compile-time virtual memory allocation |
| 3 | * |
| 4 | * This file is subject to the terms and conditions of the GNU General Public |
| 5 | * License. See the file "COPYING" in the main directory of this archive |
| 6 | * for more details. |
| 7 | * |
| 8 | * Copyright (C) 1998 Ingo Molnar |
| 9 | * Copyright (C) 2013 Mark Salter <msalter@redhat.com> |
| 10 | * |
| 11 | * Adapted from arch/x86_64 version. |
| 12 | * |
| 13 | */ |
| 14 | |
| 15 | #ifndef _ASM_ARM64_FIXMAP_H |
| 16 | #define _ASM_ARM64_FIXMAP_H |
| 17 | |
| 18 | #ifndef __ASSEMBLY__ |
| 19 | #include <linux/kernel.h> |
| 20 | #include <asm/page.h> |
| 21 | |
| 22 | /* |
| 23 | * Here we define all the compile-time 'special' virtual |
| 24 | * addresses. The point is to have a constant address at |
| 25 | * compile time, but to set the physical address only |
| 26 | * in the boot process. |
| 27 | * |
| 28 | * These 'compile-time allocated' memory buffers are |
| 29 | * page-sized. Use set_fixmap(idx,phys) to associate |
| 30 | * physical memory with fixmap indices. |
| 31 | * |
| 32 | */ |
| 33 | enum fixed_addresses { |
Laura Abbott | dab78b6 | 2014-11-26 00:14:16 +0000 | [diff] [blame] | 34 | FIX_HOLE, |
Mark Salter | bf4b558 | 2014-04-07 15:39:52 -0700 | [diff] [blame] | 35 | FIX_EARLYCON_MEM_BASE, |
Mark Rutland | 19fc577 | 2015-03-04 13:27:34 +0000 | [diff] [blame] | 36 | FIX_TEXT_POKE0, |
Mark Salter | bf4b558 | 2014-04-07 15:39:52 -0700 | [diff] [blame] | 37 | __end_of_permanent_fixed_addresses, |
| 38 | |
| 39 | /* |
| 40 | * Temporary boot-time mappings, used by early_ioremap(), |
| 41 | * before ioremap() is functional. |
| 42 | */ |
| 43 | #ifdef CONFIG_ARM64_64K_PAGES |
| 44 | #define NR_FIX_BTMAPS 4 |
| 45 | #else |
| 46 | #define NR_FIX_BTMAPS 64 |
| 47 | #endif |
| 48 | #define FIX_BTMAPS_SLOTS 7 |
| 49 | #define TOTAL_FIX_BTMAPS (NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS) |
| 50 | |
| 51 | FIX_BTMAP_END = __end_of_permanent_fixed_addresses, |
| 52 | FIX_BTMAP_BEGIN = FIX_BTMAP_END + TOTAL_FIX_BTMAPS - 1, |
| 53 | __end_of_fixed_addresses |
| 54 | }; |
| 55 | |
| 56 | #define FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT) |
| 57 | #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) |
| 58 | |
| 59 | #define FIXMAP_PAGE_IO __pgprot(PROT_DEVICE_nGnRE) |
| 60 | |
Laura Abbott | af86e59 | 2014-11-21 21:50:42 +0000 | [diff] [blame] | 61 | void __init early_fixmap_init(void); |
Mark Salter | bf4b558 | 2014-04-07 15:39:52 -0700 | [diff] [blame] | 62 | |
Laura Abbott | af86e59 | 2014-11-21 21:50:42 +0000 | [diff] [blame] | 63 | #define __early_set_fixmap __set_fixmap |
| 64 | |
Mark Salter | b2cedba | 2015-03-24 14:02:36 +0000 | [diff] [blame] | 65 | #define __late_set_fixmap __set_fixmap |
| 66 | #define __late_clear_fixmap(idx) __set_fixmap((idx), 0, FIXMAP_PAGE_CLEAR) |
| 67 | |
Laura Abbott | af86e59 | 2014-11-21 21:50:42 +0000 | [diff] [blame] | 68 | extern void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot); |
Mark Salter | bf4b558 | 2014-04-07 15:39:52 -0700 | [diff] [blame] | 69 | |
| 70 | #include <asm-generic/fixmap.h> |
| 71 | |
| 72 | #endif /* !__ASSEMBLY__ */ |
| 73 | #endif /* _ASM_ARM64_FIXMAP_H */ |