1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 #ifndef __LINUX_KVM_MIPS_H
  13 #define __LINUX_KVM_MIPS_H
  14 
  15 #include <linux/types.h>
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 #define __KVM_HAVE_READONLY_MEM
  24 
  25 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1
  26 
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 struct kvm_regs {
  35         
  36         __u64 gpr[32];
  37         __u64 hi;
  38         __u64 lo;
  39         __u64 pc;
  40 };
  41 
  42 
  43 
  44 
  45 struct kvm_fpu {
  46 };
  47 
  48 
  49 
  50 
  51 
  52 
  53 
  54 
  55 
  56 
  57 
  58 
  59 
  60 
  61 
  62 
  63 
  64 
  65 
  66 
  67 
  68 
  69 
  70 
  71 
  72 
  73 
  74 
  75 
  76 
  77 #define KVM_REG_MIPS_GP         (KVM_REG_MIPS | 0x0000000000000000ULL)
  78 #define KVM_REG_MIPS_CP0        (KVM_REG_MIPS | 0x0000000000010000ULL)
  79 #define KVM_REG_MIPS_KVM        (KVM_REG_MIPS | 0x0000000000020000ULL)
  80 #define KVM_REG_MIPS_FPU        (KVM_REG_MIPS | 0x0000000000030000ULL)
  81 
  82 
  83 
  84 
  85 
  86 
  87 #define KVM_REG_MIPS_R0         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  0)
  88 #define KVM_REG_MIPS_R1         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  1)
  89 #define KVM_REG_MIPS_R2         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  2)
  90 #define KVM_REG_MIPS_R3         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  3)
  91 #define KVM_REG_MIPS_R4         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  4)
  92 #define KVM_REG_MIPS_R5         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  5)
  93 #define KVM_REG_MIPS_R6         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  6)
  94 #define KVM_REG_MIPS_R7         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  7)
  95 #define KVM_REG_MIPS_R8         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  8)
  96 #define KVM_REG_MIPS_R9         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |  9)
  97 #define KVM_REG_MIPS_R10        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 10)
  98 #define KVM_REG_MIPS_R11        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 11)
  99 #define KVM_REG_MIPS_R12        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 12)
 100 #define KVM_REG_MIPS_R13        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 13)
 101 #define KVM_REG_MIPS_R14        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 14)
 102 #define KVM_REG_MIPS_R15        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 15)
 103 #define KVM_REG_MIPS_R16        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 16)
 104 #define KVM_REG_MIPS_R17        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 17)
 105 #define KVM_REG_MIPS_R18        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 18)
 106 #define KVM_REG_MIPS_R19        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 19)
 107 #define KVM_REG_MIPS_R20        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 20)
 108 #define KVM_REG_MIPS_R21        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 21)
 109 #define KVM_REG_MIPS_R22        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 22)
 110 #define KVM_REG_MIPS_R23        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 23)
 111 #define KVM_REG_MIPS_R24        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 24)
 112 #define KVM_REG_MIPS_R25        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 25)
 113 #define KVM_REG_MIPS_R26        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 26)
 114 #define KVM_REG_MIPS_R27        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 27)
 115 #define KVM_REG_MIPS_R28        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 28)
 116 #define KVM_REG_MIPS_R29        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 29)
 117 #define KVM_REG_MIPS_R30        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 30)
 118 #define KVM_REG_MIPS_R31        (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 31)
 119 
 120 #define KVM_REG_MIPS_HI         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 32)
 121 #define KVM_REG_MIPS_LO         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 33)
 122 #define KVM_REG_MIPS_PC         (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 34)
 123 
 124 
 125 
 126 
 127 
 128 
 129 #define KVM_REG_MIPS_MAAR       (KVM_REG_MIPS_CP0 | (1 << 8))
 130 #define KVM_REG_MIPS_CP0_MAAR(n)        (KVM_REG_MIPS_MAAR | \
 131                                          KVM_REG_SIZE_U64 | (n))
 132 
 133 
 134 
 135 
 136 
 137 
 138 
 139 
 140 
 141 
 142 
 143 
 144 
 145 
 146 
 147 
 148 #define KVM_REG_MIPS_COUNT_CTL      (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 0)
 149 #define KVM_REG_MIPS_COUNT_CTL_DC       0x00000001
 150 
 151 
 152 
 153 
 154 
 155 
 156 
 157 
 158 
 159 
 160 #define KVM_REG_MIPS_COUNT_RESUME   (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 1)
 161 
 162 
 163 
 164 
 165 
 166 #define KVM_REG_MIPS_COUNT_HZ       (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 2)
 167 
 168 
 169 
 170 
 171 
 172 
 173 
 174 
 175 
 176 
 177 #define KVM_REG_MIPS_FPR        (KVM_REG_MIPS_FPU | 0x0000000000000000ULL)
 178 #define KVM_REG_MIPS_FCR        (KVM_REG_MIPS_FPU | 0x0000000000000100ULL)
 179 #define KVM_REG_MIPS_MSACR      (KVM_REG_MIPS_FPU | 0x0000000000000200ULL)
 180 
 181 
 182 
 183 
 184 #define KVM_REG_MIPS_FPR_32(n)  (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U32  | (n))
 185 #define KVM_REG_MIPS_FPR_64(n)  (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U64  | (n))
 186 #define KVM_REG_MIPS_VEC_128(n) (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U128 | (n))
 187 
 188 
 189 
 190 
 191 #define KVM_REG_MIPS_FCR_IR     (KVM_REG_MIPS_FCR | KVM_REG_SIZE_U32 |  0)
 192 #define KVM_REG_MIPS_FCR_CSR    (KVM_REG_MIPS_FCR | KVM_REG_SIZE_U32 | 31)
 193 
 194 
 195 
 196 
 197 #define KVM_REG_MIPS_MSA_IR      (KVM_REG_MIPS_MSACR | KVM_REG_SIZE_U32 |  0)
 198 #define KVM_REG_MIPS_MSA_CSR     (KVM_REG_MIPS_MSACR | KVM_REG_SIZE_U32 |  1)
 199 
 200 
 201 
 202 
 203 
 204 
 205 struct kvm_debug_exit_arch {
 206         __u64 epc;
 207 };
 208 
 209 
 210 struct kvm_guest_debug_arch {
 211 };
 212 
 213 
 214 struct kvm_sync_regs {
 215 };
 216 
 217 
 218 struct kvm_sregs {
 219 };
 220 
 221 struct kvm_mips_interrupt {
 222         
 223         __u32 cpu;
 224         __u32 irq;
 225 };
 226 
 227 #endif