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

89 lines
2.5 KiB
C

#ifndef _ASM_E2K_PARAVIRT_STRING_H
#define _ASM_E2K_PARAVIRT_STRING_H
#include <linux/types.h>
#include <asm/paravirt/pv_ops.h>
#ifndef CONFIG_BOOT_E2K
static inline unsigned long
pv_fast_tagged_memory_copy(void *dst, const void *src, size_t len,
unsigned long strd_opcode, unsigned long ldrd_opcode,
int prefetch)
{
return pv_cpu_ops.fast_tagged_memory_copy(dst, src, len,
strd_opcode, ldrd_opcode, prefetch);
}
static inline unsigned long
boot_pv_fast_tagged_memory_copy(void *dst, const void *src, size_t len,
unsigned long strd_opcode, unsigned long ldrd_opcode,
int prefetch)
{
return BOOT_PARAVIRT_GET_CPU_FUNC(fast_tagged_memory_copy)(dst, src,
len, strd_opcode, ldrd_opcode, prefetch);
}
static inline unsigned long
pv_fast_tagged_memory_set(void *addr, u64 val, u64 tag,
size_t len, u64 strd_opcode)
{
return pv_cpu_ops.fast_tagged_memory_set(addr, val,
tag, len, strd_opcode);
}
static inline void
boot_pv_fast_tagged_memory_set(void *addr, u64 val, u64 tag,
size_t len, u64 strd_opcode)
{
BOOT_PARAVIRT_GET_CPU_FUNC(fast_tagged_memory_set)(addr, val, tag, len,
strd_opcode);
}
#endif /* ! CONFIG_BOOT_E2K */
static inline unsigned long
pv_extract_tags_32(u16 *dst, const void *src)
{
return pv_cpu_ops.extract_tags_32(dst, src);
}
#ifdef CONFIG_PARAVIRT_GUEST
/* it is native guest kernel (not paravirtualized based on pv_ops) */
#ifndef CONFIG_BOOT_E2K
static inline unsigned long
fast_tagged_memory_copy(void *dst, const void *src, size_t len,
unsigned long strd_opcode, unsigned long ldrd_opcode,
int prefetch)
{
return pv_fast_tagged_memory_copy(dst, src, len,
strd_opcode, ldrd_opcode, prefetch);
}
static inline unsigned long
boot_fast_tagged_memory_copy(void *dst, const void *src, size_t len,
unsigned long strd_opcode, unsigned long ldrd_opcode,
int prefetch)
{
return boot_pv_fast_tagged_memory_copy(dst, src,
len, strd_opcode, ldrd_opcode, prefetch);
}
static inline unsigned long
fast_tagged_memory_set(void *addr, u64 val, u64 tag,
size_t len, u64 strd_opcode)
{
return pv_fast_tagged_memory_set(addr, val, tag, len, strd_opcode);
}
static inline void
boot_fast_tagged_memory_set(void *addr, u64 val, u64 tag,
size_t len, u64 strd_opcode)
{
boot_pv_fast_tagged_memory_set(addr, val, tag, len, strd_opcode);
}
#endif /* CONFIG_BOOT_E2K */
static inline unsigned long
extract_tags_32(u16 *dst, const void *src)
{
return pv_extract_tags_32(dst, src);
}
#endif /* ! CONFIG_PARAVIRT_GUEST */
#endif /* _ASM_E2K_PARAVIRT_STRING_H */