aboutsummaryrefslogtreecommitdiff
path: root/core/arch/arm/mm/core_mmu_v7.c
diff options
context:
space:
mode:
authorJens Wiklander <jens.wiklander@linaro.org>2017-06-26 16:45:13 +0200
committerJérôme Forissier <jerome.forissier@linaro.org>2017-08-29 15:17:00 +0200
commitd1b0ee84e5c09340fa095d68db2d1eef9225e977 (patch)
tree35145bff8ff6ad24ea1bf309823e48c8a0922361 /core/arch/arm/mm/core_mmu_v7.c
parent2e928cd9f3386fc3aab8a3ad96f0f842a75ce6fb (diff)
core: add MEM_AREA_PAGER_VASPACE
Adds MEM_AREA_PAGER_VASPACE which is used to create empty translation tables as needed for the pager. Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'core/arch/arm/mm/core_mmu_v7.c')
-rw-r--r--core/arch/arm/mm/core_mmu_v7.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c
index 57b73116..c57f4105 100644
--- a/core/arch/arm/mm/core_mmu_v7.c
+++ b/core/arch/arm/mm/core_mmu_v7.c
@@ -724,10 +724,8 @@ static void map_page_memarea_in_pgdirs(const struct tee_mmap_region *mm,
print_mmap_area(mm, "4k page map");
- if (mm->attr & TEE_MATTR_VALID_BLOCK) {
- attr = mattr_to_desc(1, mm->attr | TEE_MATTR_TABLE);
- pa = map_page_memarea(mm, ttb[idx]);
- }
+ attr = mattr_to_desc(1, mm->attr | TEE_MATTR_TABLE);
+ pa = map_page_memarea(mm, ttb[idx]);
n = ROUNDUP(mm->size, SECTION_SIZE) >> SECTION_SHIFT;
while (n--) {
@@ -785,11 +783,11 @@ static void map_memarea(const struct tee_mmap_region *mm, uint32_t *ttb)
if (mm->va < (NUM_UL1_ENTRIES * SECTION_SIZE))
panic("va conflicts with user ta address");
- if (!((mm->va | mm->pa | mm->size) & SECTION_MASK)) {
+ if (!((mm->va | mm->pa | mm->size | mm->region_size) & SECTION_MASK)) {
map_memarea_sections(mm, ttb);
return;
}
- if ((mm->va | mm->pa | mm->size) & SMALL_PAGE_MASK)
+ if ((mm->va | mm->pa | mm->size | mm->region_size) & SMALL_PAGE_MASK)
panic("memarea can't be mapped");
mm2 = *mm;