cache.h revision 3dfa8773674e16f95f70a0e631e80c69390d04d7
126ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#ifndef _ASM_POWERPC_CACHE_H
226ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define _ASM_POWERPC_CACHE_H
326ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#ifdef __KERNEL__
526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson/* bytes per L1 cache line */
826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define L1_CACHE_SHIFT		4
1026ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define MAX_COPY_PREFETCH	1
113dfa8773674e16f95f70a0e631e80c69390d04d7Kumar Gala#elif defined(CONFIG_PPC_E500MC)
123dfa8773674e16f95f70a0e631e80c69390d04d7Kumar Gala#define L1_CACHE_SHIFT		6
133dfa8773674e16f95f70a0e631e80c69390d04d7Kumar Gala#define MAX_COPY_PREFETCH	4
1426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#elif defined(CONFIG_PPC32)
1526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define L1_CACHE_SHIFT		5
1626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define MAX_COPY_PREFETCH	4
1726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#else /* CONFIG_PPC64 */
1826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define L1_CACHE_SHIFT		7
1926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif
2026ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
2126ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define	L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT)
2226ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
2326ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#define	SMP_CACHE_BYTES		L1_CACHE_BYTES
2426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
2526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#if defined(__powerpc64__) && !defined(__ASSEMBLY__)
2626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibsonstruct ppc64_caches {
2726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	dsize;			/* L1 d-cache size */
2826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	dline_size;		/* L1 d-cache line size	*/
2926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	log_dline_size;
3026ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	dlines_per_page;
3126ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	isize;			/* L1 i-cache size */
3226ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	iline_size;		/* L1 i-cache line size	*/
3326ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	log_iline_size;
3426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson	u32	ilines_per_page;
3526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson};
3626ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
3726ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibsonextern struct ppc64_caches ppc64_caches;
3826ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif /* __powerpc64__ && ! __ASSEMBLY__ */
3926ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson
40bd67fcf9ba8474e8eef649a79aba5b3479b01272Tony Breeds#if !defined(__ASSEMBLY__)
41bd67fcf9ba8474e8eef649a79aba5b3479b01272Tony Breeds#define __read_mostly __attribute__((__section__(".data.read_mostly")))
42bd67fcf9ba8474e8eef649a79aba5b3479b01272Tony Breeds#endif
43bd67fcf9ba8474e8eef649a79aba5b3479b01272Tony Breeds
4426ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif /* __KERNEL__ */
4526ef5c09576496dfd08d2b36ec1d08a6f917a0ebDavid Gibson#endif /* _ASM_POWERPC_CACHE_H */
46