summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2018-06-07 06:01:02 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2018-06-08 08:36:41 +0200
commitd25da206752e9f7a4a10b1ba23269f4a0c5e7e00 (patch)
treea7b6ff498ac9659aee1348cd05f1dcb676afcd7c /arch/arm/cpu
parent9c977e85423c006c1845eab7bf1e2fcf47125b62 (diff)
downloadbarebox-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.c11
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();