| 2265 | } |
| 2266 | |
| 2267 | static enum task_switch_reason |
| 2268 | vmx_task_switch_reason(uint64_t qual) |
| 2269 | { |
| 2270 | int reason; |
| 2271 | |
| 2272 | reason = (qual >> 30) & 0x3; |
| 2273 | switch (reason) { |
| 2274 | case 0: |
| 2275 | return (TSR_CALL); |
| 2276 | case 1: |
| 2277 | return (TSR_IRET); |
| 2278 | case 2: |
| 2279 | return (TSR_JMP); |
| 2280 | case 3: |
| 2281 | return (TSR_IDT_GATE); |
| 2282 | default: |
| 2283 | panic("%s: invalid reason %d", __func__, reason); |
| 2284 | } |
| 2285 | } |
| 2286 | |
| 2287 | static int |
| 2288 | emulate_wrmsr(struct vmx *vmx, int vcpuid, u_int num, uint64_t val, bool *retu) |
no test coverage detected