diff options
author | Jens Wiklander <jens.wiklander@linaro.org> | 2017-12-13 12:30:48 +0100 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2018-01-10 14:34:51 +0100 |
commit | 55705e76f990c931485db87406801c4a7b2b9569 (patch) | |
tree | 9b3a52510b9efccf21fc17837743e212d455a449 /core/arch/arm/mm/core_mmu_v7.c | |
parent | 33b3d81d60329dc63c3d6c8f27c9d3f58e1e7035 (diff) |
core: refactor ASID management
Refactors Address Space Identifier management. The field in struct
user_ta_ctx is moved into struct tee_mmu_info and renamed to asid.
Allocation refactored internally with asid_alloc() and asid_free()
functions, based on bitstring.h macros.
ASIDs starts at 2, and is always an even number.
ASIDs with the lowest bit set is reserved for as the second ASID when
using ASIDs in pairs.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Andrew Davis <andrew.davis@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 | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c index 1d5dd887..aa55cdeb 100644 --- a/core/arch/arm/mm/core_mmu_v7.c +++ b/core/arch/arm/mm/core_mmu_v7.c @@ -485,7 +485,7 @@ void core_mmu_create_user_map(struct user_ta_ctx *utc, memset(dir_info.table, 0, dir_info.num_entries * sizeof(uint32_t)); core_mmu_populate_user_map(&dir_info, utc); map->ttbr0 = core_mmu_get_ul1_ttb_pa() | TEE_MMU_DEFAULT_ATTRS; - map->ctxid = utc->context & 0xff; + map->ctxid = utc->mmu->asid; } bool core_mmu_find_table(vaddr_t va, unsigned max_level, |