Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.15.
  1#ifndef _ASM_MIPS_KVM_PARA_H
  2#define _ASM_MIPS_KVM_PARA_H
  3
  4#include <uapi/asm/kvm_para.h>
  5
  6#define KVM_HYPERCALL ".word 0x42000028"
  7
  8/*
  9 * Hypercalls for KVM.
 10 *
 11 * Hypercall number is passed in v0.
 12 * Return value will be placed in v0.
 13 * Up to 3 arguments are passed in a0, a1, and a2.
 14 */
 15static inline unsigned long kvm_hypercall0(unsigned long num)
 16{
 17	register unsigned long n asm("v0");
 18	register unsigned long r asm("v0");
 19
 20	n = num;
 21	__asm__ __volatile__(
 22		KVM_HYPERCALL
 23		: "=r" (r) : "r" (n) : "memory"
 24		);
 25
 26	return r;
 27}
 28
 29static inline unsigned long kvm_hypercall1(unsigned long num,
 30					unsigned long arg0)
 31{
 32	register unsigned long n asm("v0");
 33	register unsigned long r asm("v0");
 34	register unsigned long a0 asm("a0");
 35
 36	n = num;
 37	a0 = arg0;
 38	__asm__ __volatile__(
 39		KVM_HYPERCALL
 40		: "=r" (r) : "r" (n), "r" (a0) : "memory"
 41		);
 42
 43	return r;
 44}
 45
 46static inline unsigned long kvm_hypercall2(unsigned long num,
 47					unsigned long arg0, unsigned long arg1)
 48{
 49	register unsigned long n asm("v0");
 50	register unsigned long r asm("v0");
 51	register unsigned long a0 asm("a0");
 52	register unsigned long a1 asm("a1");
 53
 54	n = num;
 55	a0 = arg0;
 56	a1 = arg1;
 57	__asm__ __volatile__(
 58		KVM_HYPERCALL
 59		: "=r" (r) : "r" (n), "r" (a0), "r" (a1) : "memory"
 60		);
 61
 62	return r;
 63}
 64
 65static inline unsigned long kvm_hypercall3(unsigned long num,
 66	unsigned long arg0, unsigned long arg1, unsigned long arg2)
 67{
 68	register unsigned long n asm("v0");
 69	register unsigned long r asm("v0");
 70	register unsigned long a0 asm("a0");
 71	register unsigned long a1 asm("a1");
 72	register unsigned long a2 asm("a2");
 73
 74	n = num;
 75	a0 = arg0;
 76	a1 = arg1;
 77	a2 = arg2;
 78	__asm__ __volatile__(
 79		KVM_HYPERCALL
 80		: "=r" (r) : "r" (n), "r" (a0), "r" (a1), "r" (a2) : "memory"
 81		);
 82
 83	return r;
 84}
 85
 86static inline bool kvm_check_and_clear_guest_paused(void)
 87{
 88	return false;
 89}
 90
 91static inline unsigned int kvm_arch_para_features(void)
 92{
 93	return 0;
 94}
 95
 96#ifdef CONFIG_MIPS_PARAVIRT
 97static inline bool kvm_para_available(void)
 98{
 99	return true;
100}
101#else
102static inline bool kvm_para_available(void)
103{
104	return false;
105}
106#endif
107
108
109#endif /* _ASM_MIPS_KVM_PARA_H */