diff options
Diffstat (limited to 'arch/tile/include/asm/fixmap.h')
| -rw-r--r-- | arch/tile/include/asm/fixmap.h | 61 | 
1 files changed, 12 insertions, 49 deletions
diff --git a/arch/tile/include/asm/fixmap.h b/arch/tile/include/asm/fixmap.h index 51537ff9265..ffe2637aeb3 100644 --- a/arch/tile/include/asm/fixmap.h +++ b/arch/tile/include/asm/fixmap.h @@ -25,9 +25,6 @@  #include <asm/kmap_types.h>  #endif -#define __fix_to_virt(x)	(FIXADDR_TOP - ((x) << PAGE_SHIFT)) -#define __virt_to_fix(x)	((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT) -  /*   * Here we define all the compile-time 'special' virtual   * addresses. The point is to have a constant address at @@ -45,15 +42,23 @@   *   * TLB entries of such buffers will not be flushed across   * task switches. - * - * We don't bother with a FIX_HOLE since above the fixmaps - * is unmapped memory in any case.   */  enum fixed_addresses { +#ifdef __tilegx__ +	/* +	 * TILEPro has unmapped memory above so the hole isn't needed, +	 * and in any case the hole pushes us over a single 16MB pmd. +	 */ +	FIX_HOLE, +#endif  #ifdef CONFIG_HIGHMEM  	FIX_KMAP_BEGIN,	/* reserved pte's for temporary kernel mappings */  	FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,  #endif +#ifdef __tilegx__  /* see homecache.c */ +	FIX_HOMECACHE_BEGIN, +	FIX_HOMECACHE_END = FIX_HOMECACHE_BEGIN+(NR_CPUS)-1, +#endif  	__end_of_permanent_fixed_addresses,  	/* @@ -70,54 +75,12 @@ enum fixed_addresses {  #endif  }; -extern void __set_fixmap(enum fixed_addresses idx, -			 unsigned long phys, pgprot_t flags); - -#define set_fixmap(idx, phys) \ -		__set_fixmap(idx, phys, PAGE_KERNEL) -/* - * Some hardware wants to get fixmapped without caching. - */ -#define set_fixmap_nocache(idx, phys) \ -		__set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE) - -#define clear_fixmap(idx) \ -		__set_fixmap(idx, 0, __pgprot(0)) -  #define __FIXADDR_SIZE	(__end_of_permanent_fixed_addresses << PAGE_SHIFT)  #define __FIXADDR_BOOT_SIZE	(__end_of_fixed_addresses << PAGE_SHIFT)  #define FIXADDR_START		(FIXADDR_TOP + PAGE_SIZE - __FIXADDR_SIZE)  #define FIXADDR_BOOT_START	(FIXADDR_TOP + PAGE_SIZE - __FIXADDR_BOOT_SIZE) -extern void __this_fixmap_does_not_exist(void); - -/* - * 'index to address' translation. If anyone tries to use the idx - * directly without tranlation, we catch the bug with a NULL-deference - * kernel oops. Illegal ranges of incoming indices are caught too. - */ -static __always_inline unsigned long fix_to_virt(const unsigned int idx) -{ -	/* -	 * this branch gets completely eliminated after inlining, -	 * except when someone tries to use fixaddr indices in an -	 * illegal way. (such as mixing up address types or using -	 * out-of-range indices). -	 * -	 * If it doesn't get removed, the linker will complain -	 * loudly with a reasonably clear error message.. -	 */ -	if (idx >= __end_of_fixed_addresses) -		__this_fixmap_does_not_exist(); - -	return __fix_to_virt(idx); -} - -static inline unsigned long virt_to_fix(const unsigned long vaddr) -{ -	BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START); -	return __virt_to_fix(vaddr); -} +#include <asm-generic/fixmap.h>  #endif /* !__ASSEMBLY__ */  | 
