1 /* $Id: cache.h,v 1.6 2004/03/11 18:08:05 lethal Exp $ 2 * 3 * include/asm-sh/cache.h 4 * 5 * Copyright 1999 (C) Niibe Yutaka 6 * Copyright 2002, 2003 (C) Paul Mundt 7 */ 8 #ifndef __ASM_SH_CACHE_H 9 #define __ASM_SH_CACHE_H 10 #ifdef __KERNEL__ 11 12 #include <linux/init.h> 13 #include <cpu/cache.h> 14 15 #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) 16 17 #define __read_mostly __attribute__((__section__(".data.read_mostly"))) 18 19 #ifndef __ASSEMBLY__ 20 struct cache_info { 21 unsigned int ways; /* Number of cache ways */ 22 unsigned int sets; /* Number of cache sets */ 23 unsigned int linesz; /* Cache line size (bytes) */ 24 25 unsigned int way_size; /* sets * line size */ 26 27 /* 28 * way_incr is the address offset for accessing the next way 29 * in memory mapped cache array ops. 30 */ 31 unsigned int way_incr; 32 unsigned int entry_shift; 33 unsigned int entry_mask; 34 35 /* 36 * Compute a mask which selects the address bits which overlap between 37 * 1. those used to select the cache set during indexing 38 * 2. those in the physical page number. 39 */ 40 unsigned int alias_mask; 41 42 unsigned int n_aliases; /* Number of aliases */ 43 44 unsigned long flags; 45 }; 46 47 int __init detect_cpu_and_cache_system(void); 48 49 #endif /* __ASSEMBLY__ */ 50 #endif /* __KERNEL__ */ 51 #endif /* __ASM_SH_CACHE_H */ 52