18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef _SPARC_CACHETLB_H
38c2ecf20Sopenharmony_ci#define _SPARC_CACHETLB_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_cistruct mm_struct;
68c2ecf20Sopenharmony_cistruct vm_area_struct;
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cistruct sparc32_cachetlb_ops {
98c2ecf20Sopenharmony_ci	void (*cache_all)(void);
108c2ecf20Sopenharmony_ci	void (*cache_mm)(struct mm_struct *);
118c2ecf20Sopenharmony_ci	void (*cache_range)(struct vm_area_struct *, unsigned long,
128c2ecf20Sopenharmony_ci			    unsigned long);
138c2ecf20Sopenharmony_ci	void (*cache_page)(struct vm_area_struct *, unsigned long);
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci	void (*tlb_all)(void);
168c2ecf20Sopenharmony_ci	void (*tlb_mm)(struct mm_struct *);
178c2ecf20Sopenharmony_ci	void (*tlb_range)(struct vm_area_struct *, unsigned long,
188c2ecf20Sopenharmony_ci			  unsigned long);
198c2ecf20Sopenharmony_ci	void (*tlb_page)(struct vm_area_struct *, unsigned long);
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	void (*page_to_ram)(unsigned long);
228c2ecf20Sopenharmony_ci	void (*sig_insns)(struct mm_struct *, unsigned long);
238c2ecf20Sopenharmony_ci	void (*page_for_dma)(unsigned long);
248c2ecf20Sopenharmony_ci};
258c2ecf20Sopenharmony_ciextern const struct sparc32_cachetlb_ops *sparc32_cachetlb_ops;
268c2ecf20Sopenharmony_ci#ifdef CONFIG_SMP
278c2ecf20Sopenharmony_ciextern const struct sparc32_cachetlb_ops *local_ops;
288c2ecf20Sopenharmony_ci#endif
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci#endif /* SPARC_CACHETLB_H */
31