diff options
author | Jens Wiklander <jens.wiklander@linaro.org> | 2017-06-26 16:45:13 +0200 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2017-08-29 15:17:00 +0200 |
commit | d1b0ee84e5c09340fa095d68db2d1eef9225e977 (patch) | |
tree | 35145bff8ff6ad24ea1bf309823e48c8a0922361 /core/arch/arm/mm/core_mmu_v7.c | |
parent | 2e928cd9f3386fc3aab8a3ad96f0f842a75ce6fb (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.c | 10 |
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; |