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