diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/cpu/mmu.c | 30 | ||||
-rw-r--r-- | arch/arm/include/asm/mmu.h | 23 | ||||
-rw-r--r-- | arch/blackfin/include/asm/mmu.h | 14 | ||||
-rw-r--r-- | arch/mips/include/asm/mmu.h | 14 | ||||
-rw-r--r-- | arch/nios2/include/asm/mmu.h | 14 | ||||
-rw-r--r-- | arch/openrisc/include/asm/mmu.h | 14 | ||||
-rw-r--r-- | arch/ppc/cpu-85xx/mmu.c | 26 | ||||
-rw-r--r-- | arch/ppc/include/asm/mmu.h | 24 | ||||
-rw-r--r-- | arch/sandbox/include/asm/mmu.h | 14 | ||||
-rw-r--r-- | arch/x86/include/asm/mmu.h | 14 |
10 files changed, 48 insertions, 139 deletions
diff --git a/arch/arm/cpu/mmu.c b/arch/arm/cpu/mmu.c index 470b448957..81c23947b7 100644 --- a/arch/arm/cpu/mmu.c +++ b/arch/arm/cpu/mmu.c @@ -20,7 +20,7 @@ #include <common.h> #include <dma-dir.h> #include <init.h> -#include <asm/mmu.h> +#include <mmu.h> #include <errno.h> #include <linux/sizes.h> #include <asm/memory.h> @@ -81,16 +81,6 @@ static uint32_t pte_flags_uncached; #define PTE_MASK ((1 << 12) - 1) -uint32_t mmu_get_pte_cached_flags() -{ - return pte_flags_cached; -} - -uint32_t mmu_get_pte_uncached_flags() -{ - return pte_flags_uncached; -} - static void arm_mmu_not_initialized_error(void) { /* @@ -173,24 +163,38 @@ static void dma_inv_range(unsigned long start, unsigned long end) __dma_inv_range(start, end); } -void remap_range(void *_start, size_t size, uint32_t flags) +int arch_remap_range(void *_start, size_t size, unsigned flags) { unsigned long start = (unsigned long)_start; u32 *p; int numentries, i; + u32 pte_flags; + + switch (flags) { + case MAP_CACHED: + pte_flags = pte_flags_cached; + break; + case MAP_UNCACHED: + pte_flags = pte_flags_uncached; + break; + default: + return -EINVAL; + } numentries = size >> PAGE_SHIFT; p = find_pte(start); for (i = 0; i < numentries; i++) { p[i] &= ~PTE_MASK; - p[i] |= flags | PTE_TYPE_SMALL; + p[i] |= pte_flags | PTE_TYPE_SMALL; } dma_flush_range((unsigned long)p, (unsigned long)p + numentries * sizeof(u32)); tlb_invalidate(); + + return 0; } void *map_io_sections(unsigned long phys, void *_start, size_t size) 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 diff --git a/arch/blackfin/include/asm/mmu.h b/arch/blackfin/include/asm/mmu.h index bf654206ac..95af871420 100644 --- a/arch/blackfin/include/asm/mmu.h +++ b/arch/blackfin/include/asm/mmu.h @@ -1,18 +1,6 @@ #ifndef __ASM_MMU_H #define __ASM_MMU_H -static inline void remap_range(void *_start, size_t size, uint32_t flags) -{ -} - -static inline uint32_t mmu_get_pte_cached_flags(void) -{ - return 0; -} - -static inline uint32_t mmu_get_pte_uncached_flags(void) -{ - return 0; -} +#define MAP_ARCH_DEFAULT MAP_UNCACHED #endif /* __ASM_MMU_H */ diff --git a/arch/mips/include/asm/mmu.h b/arch/mips/include/asm/mmu.h index bf654206ac..95af871420 100644 --- a/arch/mips/include/asm/mmu.h +++ b/arch/mips/include/asm/mmu.h @@ -1,18 +1,6 @@ #ifndef __ASM_MMU_H #define __ASM_MMU_H -static inline void remap_range(void *_start, size_t size, uint32_t flags) -{ -} - -static inline uint32_t mmu_get_pte_cached_flags(void) -{ - return 0; -} - -static inline uint32_t mmu_get_pte_uncached_flags(void) -{ - return 0; -} +#define MAP_ARCH_DEFAULT MAP_UNCACHED #endif /* __ASM_MMU_H */ diff --git a/arch/nios2/include/asm/mmu.h b/arch/nios2/include/asm/mmu.h index bf654206ac..95af871420 100644 --- a/arch/nios2/include/asm/mmu.h +++ b/arch/nios2/include/asm/mmu.h @@ -1,18 +1,6 @@ #ifndef __ASM_MMU_H #define __ASM_MMU_H -static inline void remap_range(void *_start, size_t size, uint32_t flags) -{ -} - -static inline uint32_t mmu_get_pte_cached_flags(void) -{ - return 0; -} - -static inline uint32_t mmu_get_pte_uncached_flags(void) -{ - return 0; -} +#define MAP_ARCH_DEFAULT MAP_UNCACHED #endif /* __ASM_MMU_H */ diff --git a/arch/openrisc/include/asm/mmu.h b/arch/openrisc/include/asm/mmu.h index bf654206ac..95af871420 100644 --- a/arch/openrisc/include/asm/mmu.h +++ b/arch/openrisc/include/asm/mmu.h @@ -1,18 +1,6 @@ #ifndef __ASM_MMU_H #define __ASM_MMU_H -static inline void remap_range(void *_start, size_t size, uint32_t flags) -{ -} - -static inline uint32_t mmu_get_pte_cached_flags(void) -{ - return 0; -} - -static inline uint32_t mmu_get_pte_uncached_flags(void) -{ - return 0; -} +#define MAP_ARCH_DEFAULT MAP_UNCACHED #endif /* __ASM_MMU_H */ diff --git a/arch/ppc/cpu-85xx/mmu.c b/arch/ppc/cpu-85xx/mmu.c index 7e86e6b2b6..6b93c3e8db 100644 --- a/arch/ppc/cpu-85xx/mmu.c +++ b/arch/ppc/cpu-85xx/mmu.c @@ -14,17 +14,29 @@ #include <common.h> #include <asm/cache.h> +#include <mmu.h> #include <mach/mmu.h> -void remap_range(void *_start, size_t size, uint32_t flags) +int arch_remap_range(void *_start, size_t size, unsigned flags) { - uint32_t ptr, start, tsize, valid, wimge; + uint32_t ptr, start, tsize, valid, wimge, pte_flags; unsigned long epn; phys_addr_t rpn = 0; int esel = 0; + switch (flags) { + case MAP_UNCACHED: + pte_flags = MAS2_I; + break; + case MAP_CACHED: + pte_flags = 0; + break; + default: + return -EINVAL; + } + ptr = start = (uint32_t)_start; - wimge = flags | MAS2_M; + wimge = pte_flags | MAS2_M; while (ptr < (start + size)) { esel = e500_find_tlb_idx((void *)ptr, 1); @@ -41,14 +53,6 @@ void remap_range(void *_start, size_t size, uint32_t flags) /* convert tsize to bytes to increment address. */ ptr += (1ULL << ((tsize) + 10)); } -} -uint32_t mmu_get_pte_cached_flags(void) -{ return 0; } - -uint32_t mmu_get_pte_uncached_flags(void) -{ - return MAS2_I; -} diff --git a/arch/ppc/include/asm/mmu.h b/arch/ppc/include/asm/mmu.h index 6e15975545..c691de1c77 100644 --- a/arch/ppc/include/asm/mmu.h +++ b/arch/ppc/include/asm/mmu.h @@ -557,25 +557,13 @@ extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower); #ifndef __ASSEMBLY__ +#define MAP_ARCH_DEFAULT MAP_CACHED + #ifdef CONFIG_MMU -void remap_range(void *_start, size_t size, uint32_t flags); -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) -{ -} - -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 /* CONFIG_MMU */ +#define ARCH_HAS_REMAP +int arch_remap_range(void *_start, size_t size, unsigned flags); +#endif + #endif #endif /* _PPC_MMU_H_ */ diff --git a/arch/sandbox/include/asm/mmu.h b/arch/sandbox/include/asm/mmu.h index bf654206ac..95af871420 100644 --- a/arch/sandbox/include/asm/mmu.h +++ b/arch/sandbox/include/asm/mmu.h @@ -1,18 +1,6 @@ #ifndef __ASM_MMU_H #define __ASM_MMU_H -static inline void remap_range(void *_start, size_t size, uint32_t flags) -{ -} - -static inline uint32_t mmu_get_pte_cached_flags(void) -{ - return 0; -} - -static inline uint32_t mmu_get_pte_uncached_flags(void) -{ - return 0; -} +#define MAP_ARCH_DEFAULT MAP_UNCACHED #endif /* __ASM_MMU_H */ diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h index bf654206ac..95af871420 100644 --- a/arch/x86/include/asm/mmu.h +++ b/arch/x86/include/asm/mmu.h @@ -1,18 +1,6 @@ #ifndef __ASM_MMU_H #define __ASM_MMU_H -static inline void remap_range(void *_start, size_t size, uint32_t flags) -{ -} - -static inline uint32_t mmu_get_pte_cached_flags(void) -{ - return 0; -} - -static inline uint32_t mmu_get_pte_uncached_flags(void) -{ - return 0; -} +#define MAP_ARCH_DEFAULT MAP_UNCACHED #endif /* __ASM_MMU_H */ |