diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2018-06-07 06:01:02 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-06-08 08:36:41 +0200 |
commit | d25da206752e9f7a4a10b1ba23269f4a0c5e7e00 (patch) | |
tree | a7b6ff498ac9659aee1348cd05f1dcb676afcd7c /arch/arm/cpu | |
parent | 9c977e85423c006c1845eab7bf1e2fcf47125b62 (diff) | |
download | barebox-d25da206752e9f7a4a10b1ba23269f4a0c5e7e00.tar.gz barebox-d25da206752e9f7a4a10b1ba23269f4a0c5e7e00.tar.xz |
ARM: mmu64: Convert flags in arch_remap_range()
Flags passed to arch_remap_range() are architecture independent, so it
can't be passed as is to map_region(). Add code to do the proper
conversion to avoid subtle bugs that this confusion brings.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/cpu')
-rw-r--r-- | arch/arm/cpu/mmu_64.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm/cpu/mmu_64.c b/arch/arm/cpu/mmu_64.c index 820d8cf75e..b6287aec89 100644 --- a/arch/arm/cpu/mmu_64.c +++ b/arch/arm/cpu/mmu_64.c @@ -171,6 +171,17 @@ static void create_sections(uint64_t virt, uint64_t phys, uint64_t size, uint64_ int arch_remap_range(void *_start, size_t size, unsigned flags) { + switch (flags) { + case MAP_CACHED: + flags = CACHED_MEM; + break; + case MAP_UNCACHED: + flags = UNCACHED_MEM; + break; + default: + return -EINVAL; + } + map_region((uint64_t)_start, (uint64_t)_start, (uint64_t)size, flags); tlb_invalidate(); |