Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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