diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-10-23 11:06:56 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-11-03 07:27:44 +0100 |
commit | b792124a7dd30f03b9ad0e06589b5b58ed930d3b (patch) | |
tree | 9811bbbc0b5bb5baade7d32309ced5b3c59046df /arch/arm/include/asm | |
parent | 6b127d4f189c03f4417f6185de1aeb55b1706f94 (diff) | |
download | barebox-b792124a7dd30f03b9ad0e06589b5b58ed930d3b.tar.gz barebox-b792124a7dd30f03b9ad0e06589b5b58ed930d3b.tar.xz |
rework remap_range
remap_range is for remapping regions with different cache attributes.
It is implemented for ARM and PowerPC only, the other architectures only
provide stubs.
Currently the new cache attributes are passed in an architecture specific
way and the attributes have to be retrieved by calls to
mmu_get_pte_cached_flags() and mmu_get_pte_uncached_flags().
Make this simpler by providing architecture independent flags which can
be directly passed to remap_range()
Also provide a MAP_ARCH_DEFAULT flag and a arch_can_remap() function.
The MAP_ARCH_DEFAULT defaults to whatever caching type the architecture
has as default. the arch_can_remap() function returns true if the
architecture can change the cache attributes, false otherwise. This
allows the memtest code to better find out what it has to do.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/include/asm')
-rw-r--r-- | arch/arm/include/asm/mmu.h | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h index 3b19e9ef3c..8de6544657 100644 --- a/arch/arm/include/asm/mmu.h +++ b/arch/arm/include/asm/mmu.h @@ -27,32 +27,17 @@ static inline void setup_dma_coherent(unsigned long offset) } #ifdef CONFIG_MMU -void remap_range(void *_start, size_t size, uint32_t flags); +#define ARCH_HAS_REMAP +#define MAP_ARCH_DEFAULT MAP_CACHED +int arch_remap_range(void *_start, size_t size, unsigned flags); void *map_io_sections(unsigned long physaddr, void *start, size_t size); -uint32_t mmu_get_pte_cached_flags(void); -uint32_t mmu_get_pte_uncached_flags(void); - #else - -static inline void remap_range(void *_start, size_t size, uint32_t flags) -{ -} - +#define MAP_ARCH_DEFAULT MAP_UNCACHED static inline void *map_io_sections(unsigned long phys, void *start, size_t size) { return (void *)phys; } -static inline uint32_t mmu_get_pte_cached_flags(void) -{ - return 0; -} - -static inline uint32_t mmu_get_pte_uncached_flags(void) -{ - return 0; -} - #endif #ifdef CONFIG_CACHE_L2X0 |