diff options
Diffstat (limited to 'arch/powerpc/include/asm/cache.h')
| -rw-r--r-- | arch/powerpc/include/asm/cache.h | 55 | 
1 files changed, 36 insertions, 19 deletions
diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h index 45e3137ccd71..72b81015cebe 100644 --- a/arch/powerpc/include/asm/cache.h +++ b/arch/powerpc/include/asm/cache.h @@ -55,42 +55,48 @@ struct ppc64_caches {  extern struct ppc64_caches ppc64_caches; -static inline u32 l1_cache_shift(void) +static inline u32 l1_dcache_shift(void)  {  	return ppc64_caches.l1d.log_block_size;  } -static inline u32 l1_cache_bytes(void) +static inline u32 l1_dcache_bytes(void)  {  	return ppc64_caches.l1d.block_size;  } + +static inline u32 l1_icache_shift(void) +{ +	return ppc64_caches.l1i.log_block_size; +} + +static inline u32 l1_icache_bytes(void) +{ +	return ppc64_caches.l1i.block_size; +}  #else -static inline u32 l1_cache_shift(void) +static inline u32 l1_dcache_shift(void)  {  	return L1_CACHE_SHIFT;  } -static inline u32 l1_cache_bytes(void) +static inline u32 l1_dcache_bytes(void)  {  	return L1_CACHE_BYTES;  } + +static inline u32 l1_icache_shift(void) +{ +	return L1_CACHE_SHIFT; +} + +static inline u32 l1_icache_bytes(void) +{ +	return L1_CACHE_BYTES; +} +  #endif -#endif /* ! __ASSEMBLY__ */ - -#if defined(__ASSEMBLY__) -/* - * For a snooping icache, we still need a dummy icbi to purge all the - * prefetched instructions from the ifetch buffers. We also need a sync - * before the icbi to order the the actual stores to memory that might - * have modified instructions with the icbi. - */ -#define PURGE_PREFETCHED_INS	\ -	sync;			\ -	icbi	0,r3;		\ -	sync;			\ -	isync -#else  #define __read_mostly __attribute__((__section__(".data..read_mostly")))  #ifdef CONFIG_PPC_BOOK3S_32 @@ -124,6 +130,17 @@ static inline void dcbst(void *addr)  {  	__asm__ __volatile__ ("dcbst 0, %0" : : "r"(addr) : "memory");  } + +static inline void icbi(void *addr) +{ +	asm volatile ("icbi 0, %0" : : "r"(addr) : "memory"); +} + +static inline void iccci(void *addr) +{ +	asm volatile ("iccci 0, %0" : : "r"(addr) : "memory"); +} +  #endif /* !__ASSEMBLY__ */  #endif /* __KERNEL__ */  #endif /* _ASM_POWERPC_CACHE_H */  |