diff options
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/idmap.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c index 296ad2eaddb0..cda5ea3157a7 100644 --- a/arch/arm/mm/idmap.c +++ b/arch/arm/mm/idmap.c | |||
@@ -1,8 +1,12 @@ | |||
1 | #include <linux/kernel.h> | 1 | #include <linux/kernel.h> |
2 | 2 | ||
3 | #include <asm/cputype.h> | 3 | #include <asm/cputype.h> |
4 | #include <asm/idmap.h> | ||
4 | #include <asm/pgalloc.h> | 5 | #include <asm/pgalloc.h> |
5 | #include <asm/pgtable.h> | 6 | #include <asm/pgtable.h> |
7 | #include <asm/sections.h> | ||
8 | |||
9 | pgd_t *idmap_pgd; | ||
6 | 10 | ||
7 | static void idmap_add_pmd(pud_t *pud, unsigned long addr, unsigned long end, | 11 | static void idmap_add_pmd(pud_t *pud, unsigned long addr, unsigned long end, |
8 | unsigned long prot) | 12 | unsigned long prot) |
@@ -73,6 +77,28 @@ void identity_mapping_del(pgd_t *pgd, unsigned long addr, unsigned long end) | |||
73 | } | 77 | } |
74 | #endif | 78 | #endif |
75 | 79 | ||
80 | extern char __idmap_text_start[], __idmap_text_end[]; | ||
81 | |||
82 | static int __init init_static_idmap(void) | ||
83 | { | ||
84 | phys_addr_t idmap_start, idmap_end; | ||
85 | |||
86 | idmap_pgd = pgd_alloc(&init_mm); | ||
87 | if (!idmap_pgd) | ||
88 | return -ENOMEM; | ||
89 | |||
90 | /* Add an identity mapping for the physical address of the section. */ | ||
91 | idmap_start = virt_to_phys((void *)__idmap_text_start); | ||
92 | idmap_end = virt_to_phys((void *)__idmap_text_end); | ||
93 | |||
94 | pr_info("Setting up static identity map for 0x%llx - 0x%llx\n", | ||
95 | (long long)idmap_start, (long long)idmap_end); | ||
96 | identity_mapping_add(idmap_pgd, idmap_start, idmap_end); | ||
97 | |||
98 | return 0; | ||
99 | } | ||
100 | arch_initcall(init_static_idmap); | ||
101 | |||
76 | /* | 102 | /* |
77 | * In order to soft-boot, we need to insert a 1:1 mapping in place of | 103 | * In order to soft-boot, we need to insert a 1:1 mapping in place of |
78 | * the user-mode pages. This will then ensure that we have predictable | 104 | * the user-mode pages. This will then ensure that we have predictable |