cache.h revision 6b3087c64a92a36ae20d33479b4df6d7afc910d4
11394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
21394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * include/asm-blackfin/cache.h
31394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
41394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifndef __ARCH_BLACKFIN_CACHE_H
51394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define __ARCH_BLACKFIN_CACHE_H
61394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
71394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
81394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Bytes per L1 cache line
91394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Blackfin loads 32 bytes for cache
101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define L1_CACHE_SHIFT	5
121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define L1_CACHE_BYTES	(1 << L1_CACHE_SHIFT)
131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define SMP_CACHE_BYTES	L1_CACHE_BYTES
141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
156b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#ifdef CONFIG_SMP
166b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#define __cacheline_aligned
176b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#else
186b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#define ____cacheline_aligned
196b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang
201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Put cacheline_aliged data to L1 data memory
221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifdef CONFIG_CACHELINE_ALIGNED_L1
241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define __cacheline_aligned				\
251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	  __attribute__((__aligned__(L1_CACHE_BYTES),	\
261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		__section__(".data_l1.cacheline_aligned")))
271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
296b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#endif
306b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang
311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * largest L1 which this arch supports
331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define L1_CACHE_SHIFT_MAX	5
351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
366b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#if defined(CONFIG_SMP) && \
376b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang    !defined(CONFIG_BFIN_CACHE_COHERENT) && \
386b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang    defined(CONFIG_BFIN_DCACHE)
396b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#define __ARCH_SYNC_CORE_DCACHE
406b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#ifndef __ASSEMBLY__
416b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yangasmlinkage void __raw_smp_mark_barrier_asm(void);
426b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yangasmlinkage void __raw_smp_check_barrier_asm(void);
436b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang
446b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yangstatic inline void smp_mark_barrier(void)
456b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang{
466b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang	__raw_smp_mark_barrier_asm();
476b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang}
486b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yangstatic inline void smp_check_barrier(void)
496b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang{
506b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang	__raw_smp_check_barrier_asm();
516b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang}
526b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang
536b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yangvoid resync_core_dcache(void);
546b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#endif
556b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang#endif
566b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang
576b3087c64a92a36ae20d33479b4df6d7afc910d4Graf Yang
581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
59