linux-headers/arch/e2k/include/asm/paravirt/cacheflush.h

89 lines
2.0 KiB
C

#ifndef __ASM_PARAVIRT_CACHEFLUSH_H
#define __ASM_PARAVIRT_CACHEFLUSH_H
#include <linux/types.h>
#include <asm/paravirt/pv_ops.h>
#ifdef CONFIG_SMP
static inline void
pv_smp_flush_icache_range(e2k_addr_t start, e2k_addr_t end)
{
pv_cpu_ops.smp_flush_icache_range(start, end);
}
static inline void
pv_smp_flush_icache_range_array(void *icache_range_arr)
{
pv_cpu_ops.smp_flush_icache_range_array(icache_range_arr);
}
static inline void
pv_smp_flush_icache_page(struct vm_area_struct *vma, struct page *page)
{
pv_cpu_ops.smp_flush_icache_page(vma, page);
}
static inline void
pv_smp_flush_icache_all(void)
{
pv_cpu_ops.smp_flush_icache_all();
}
static inline void
pv_smp_flush_icache_kernel_line(e2k_addr_t addr)
{
pv_cpu_ops.smp_flush_icache_kernel_line(addr);
}
#endif /* CONFIG_SMP */
static inline void
pv_flush_DCACHE_range(void *addr, size_t len)
{
pv_mmu_ops.flush_dcache_range(addr, len);
}
static inline void
pv_clear_DCACHE_L1_range(void *virt_addr, size_t len)
{
pv_mmu_ops.clear_dcache_l1_range(virt_addr, len);
}
#ifdef CONFIG_PARAVIRT_GUEST
/* it is paravirtualized host and guest kernel */
#ifdef CONFIG_SMP
static inline void
smp_flush_icache_range(e2k_addr_t start, e2k_addr_t end)
{
pv_smp_flush_icache_range(start, end);
}
static inline void
smp_flush_icache_range_array(struct icache_range_array *icache_range_arr)
{
pv_smp_flush_icache_range_array(icache_range_arr);
}
static inline void
smp_flush_icache_page(struct vm_area_struct *vma, struct page *page)
{
pv_smp_flush_icache_page(vma, page);
}
static inline void
smp_flush_icache_all(void)
{
pv_smp_flush_icache_all();
}
static inline void
smp_flush_icache_kernel_line(e2k_addr_t addr)
{
pv_smp_flush_icache_kernel_line(addr);
}
#endif /* CONFIG_SMP */
static inline void
flush_DCACHE_range(void *addr, size_t len)
{
pv_flush_DCACHE_range(addr, len);
}
static inline void
clear_DCACHE_L1_range(void *virt_addr, size_t len)
{
pv_clear_DCACHE_L1_range(virt_addr, len);
}
#endif /* CONFIG_KVM_GUEST_KERNEL */
#endif /* __ASM_PARAVIRT_CACHEFLUSH_H */