| #ifndef __ASM_AVR32_CACHE_H | 
 | #define __ASM_AVR32_CACHE_H | 
 |  | 
 | #define L1_CACHE_SHIFT 5 | 
 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) | 
 |  | 
 | /* | 
 |  * Memory returned by kmalloc() may be used for DMA, so we must make | 
 |  * sure that all such allocations are cache aligned. Otherwise, | 
 |  * unrelated code may cause parts of the buffer to be read into the | 
 |  * cache before the transfer is done, causing old data to be seen by | 
 |  * the CPU. | 
 |  */ | 
 | #define ARCH_DMA_MINALIGN	L1_CACHE_BYTES | 
 |  | 
 | #ifndef __ASSEMBLER__ | 
 | struct cache_info { | 
 | 	unsigned int ways; | 
 | 	unsigned int sets; | 
 | 	unsigned int linesz; | 
 | }; | 
 | #endif /* __ASSEMBLER */ | 
 |  | 
 | /* Cache operation constants */ | 
 | #define ICACHE_FLUSH		0x00 | 
 | #define ICACHE_INVALIDATE	0x01 | 
 | #define ICACHE_LOCK		0x02 | 
 | #define ICACHE_UNLOCK		0x03 | 
 | #define ICACHE_PREFETCH		0x04 | 
 |  | 
 | #define DCACHE_FLUSH		0x08 | 
 | #define DCACHE_LOCK		0x09 | 
 | #define DCACHE_UNLOCK		0x0a | 
 | #define DCACHE_INVALIDATE	0x0b | 
 | #define DCACHE_CLEAN		0x0c | 
 | #define DCACHE_CLEAN_INVAL	0x0d | 
 |  | 
 | #endif /* __ASM_AVR32_CACHE_H */ |