cache.h revision 26ef5c09576496dfd08d2b36ec1d08a6f917a0eb
126ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#ifndef _ASM_POWERPC_CACHE_H
226ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define _ASM_POWERPC_CACHE_H
326ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#ifdef __KERNEL__
526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#include <linux/config.h>
726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson/* bytes per L1 cache line */
926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
1026ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define L1_CACHE_SHIFT		4
1126ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define MAX_COPY_PREFETCH	1
1226ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#elif defined(CONFIG_PPC32)
1326ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define L1_CACHE_SHIFT		5
1426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define MAX_COPY_PREFETCH	4
1526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#else /* CONFIG_PPC64 */
1626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define L1_CACHE_SHIFT		7
1726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif
1826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
1926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define	L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT)
2026ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
2126ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define	SMP_CACHE_BYTES		L1_CACHE_BYTES
2226ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define L1_CACHE_SHIFT_MAX	7 /* largest L1 which this arch supports */
2326ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
2426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#if defined(__powerpc64__) && !defined(__ASSEMBLY__)
2526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibsonstruct ppc64_caches {
2626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	dsize;			/* L1 d-cache size */
2726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	dline_size;		/* L1 d-cache line size	*/
2826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	log_dline_size;
2926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	dlines_per_page;
3026ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	isize;			/* L1 i-cache size */
3126ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	iline_size;		/* L1 i-cache line size	*/
3226ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	log_iline_size;
3326ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	ilines_per_page;
3426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson};
3526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
3626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibsonextern struct ppc64_caches ppc64_caches;
3726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif /* __powerpc64__ && ! __ASSEMBLY__ */
3826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
3926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif /* __KERNEL__ */
4026ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif /* _ASM_POWERPC_CACHE_H */
41