/root/src/xen/xen/include/asm/x86_64/regs.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef _X86_64_REGS_H |
2 | | #define _X86_64_REGS_H |
3 | | |
4 | | #include <xen/types.h> |
5 | | #include <public/xen.h> |
6 | | |
7 | 0 | #define ring_0(r) (((r)->cs & 3) == 0) |
8 | 0 | #define ring_1(r) (((r)->cs & 3) == 1) |
9 | | #define ring_2(r) (((r)->cs & 3) == 2) |
10 | 0 | #define ring_3(r) (((r)->cs & 3) == 3) |
11 | | |
12 | | #define guest_kernel_mode(v, r) \ |
13 | 0 | (!is_pv_32bit_vcpu(v) ? \ |
14 | 0 | (ring_3(r) && ((v)->arch.flags & TF_kernel_mode)) : \ |
15 | 0 | (ring_1(r))) |
16 | | |
17 | | #define permit_softint(dpl, v, r) \ |
18 | 0 | ((dpl) >= (guest_kernel_mode(v, r) ? 1 : 3)) |
19 | | |
20 | | /* Check for null trap callback handler: Is the EIP null? */ |
21 | | #define null_trap_bounce(v, tb) \ |
22 | 0 | (!is_pv_32bit_vcpu(v) ? ((tb)->eip == 0) : (((tb)->cs & ~3) == 0)) |
23 | | |
24 | | /* Number of bytes of on-stack execution state to be context-switched. */ |
25 | | /* NB. Segment registers and bases are not saved/restored on x86/64 stack. */ |
26 | | #define CTXT_SWITCH_STACK_BYTES (offsetof(struct cpu_user_regs, es)) |
27 | | |
28 | | #endif |