Lines Matching refs:tss

30 #include "tss.h"
3090 struct tss_segment_16 *tss)
3092 tss->ip = ctxt->_eip;
3093 tss->flag = ctxt->eflags;
3094 tss->ax = reg_read(ctxt, VCPU_REGS_RAX);
3095 tss->cx = reg_read(ctxt, VCPU_REGS_RCX);
3096 tss->dx = reg_read(ctxt, VCPU_REGS_RDX);
3097 tss->bx = reg_read(ctxt, VCPU_REGS_RBX);
3098 tss->sp = reg_read(ctxt, VCPU_REGS_RSP);
3099 tss->bp = reg_read(ctxt, VCPU_REGS_RBP);
3100 tss->si = reg_read(ctxt, VCPU_REGS_RSI);
3101 tss->di = reg_read(ctxt, VCPU_REGS_RDI);
3103 tss->es = get_segment_selector(ctxt, VCPU_SREG_ES);
3104 tss->cs = get_segment_selector(ctxt, VCPU_SREG_CS);
3105 tss->ss = get_segment_selector(ctxt, VCPU_SREG_SS);
3106 tss->ds = get_segment_selector(ctxt, VCPU_SREG_DS);
3107 tss->ldt = get_segment_selector(ctxt, VCPU_SREG_LDTR);
3111 struct tss_segment_16 *tss)
3116 ctxt->_eip = tss->ip;
3117 ctxt->eflags = tss->flag | 2;
3118 *reg_write(ctxt, VCPU_REGS_RAX) = tss->ax;
3119 *reg_write(ctxt, VCPU_REGS_RCX) = tss->cx;
3120 *reg_write(ctxt, VCPU_REGS_RDX) = tss->dx;
3121 *reg_write(ctxt, VCPU_REGS_RBX) = tss->bx;
3122 *reg_write(ctxt, VCPU_REGS_RSP) = tss->sp;
3123 *reg_write(ctxt, VCPU_REGS_RBP) = tss->bp;
3124 *reg_write(ctxt, VCPU_REGS_RSI) = tss->si;
3125 *reg_write(ctxt, VCPU_REGS_RDI) = tss->di;
3131 set_segment_selector(ctxt, tss->ldt, VCPU_SREG_LDTR);
3132 set_segment_selector(ctxt, tss->es, VCPU_SREG_ES);
3133 set_segment_selector(ctxt, tss->cs, VCPU_SREG_CS);
3134 set_segment_selector(ctxt, tss->ss, VCPU_SREG_SS);
3135 set_segment_selector(ctxt, tss->ds, VCPU_SREG_DS);
3137 cpl = tss->cs & 3;
3143 ret = __load_segment_descriptor(ctxt, tss->ldt, VCPU_SREG_LDTR, cpl,
3147 ret = __load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES, cpl,
3151 ret = __load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS, cpl,
3155 ret = __load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS, cpl,
3159 ret = __load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS, cpl,
3203 struct tss_segment_32 *tss)
3206 tss->eip = ctxt->_eip;
3207 tss->eflags = ctxt->eflags;
3208 tss->eax = reg_read(ctxt, VCPU_REGS_RAX);
3209 tss->ecx = reg_read(ctxt, VCPU_REGS_RCX);
3210 tss->edx = reg_read(ctxt, VCPU_REGS_RDX);
3211 tss->ebx = reg_read(ctxt, VCPU_REGS_RBX);
3212 tss->esp = reg_read(ctxt, VCPU_REGS_RSP);
3213 tss->ebp = reg_read(ctxt, VCPU_REGS_RBP);
3214 tss->esi = reg_read(ctxt, VCPU_REGS_RSI);
3215 tss->edi = reg_read(ctxt, VCPU_REGS_RDI);
3217 tss->es = get_segment_selector(ctxt, VCPU_SREG_ES);
3218 tss->cs = get_segment_selector(ctxt, VCPU_SREG_CS);
3219 tss->ss = get_segment_selector(ctxt, VCPU_SREG_SS);
3220 tss->ds = get_segment_selector(ctxt, VCPU_SREG_DS);
3221 tss->fs = get_segment_selector(ctxt, VCPU_SREG_FS);
3222 tss->gs = get_segment_selector(ctxt, VCPU_SREG_GS);
3226 struct tss_segment_32 *tss)
3231 if (ctxt->ops->set_cr(ctxt, 3, tss->cr3))
3233 ctxt->_eip = tss->eip;
3234 ctxt->eflags = tss->eflags | 2;
3237 *reg_write(ctxt, VCPU_REGS_RAX) = tss->eax;
3238 *reg_write(ctxt, VCPU_REGS_RCX) = tss->ecx;
3239 *reg_write(ctxt, VCPU_REGS_RDX) = tss->edx;
3240 *reg_write(ctxt, VCPU_REGS_RBX) = tss->ebx;
3241 *reg_write(ctxt, VCPU_REGS_RSP) = tss->esp;
3242 *reg_write(ctxt, VCPU_REGS_RBP) = tss->ebp;
3243 *reg_write(ctxt, VCPU_REGS_RSI) = tss->esi;
3244 *reg_write(ctxt, VCPU_REGS_RDI) = tss->edi;
3251 set_segment_selector(ctxt, tss->ldt_selector, VCPU_SREG_LDTR);
3252 set_segment_selector(ctxt, tss->es, VCPU_SREG_ES);
3253 set_segment_selector(ctxt, tss->cs, VCPU_SREG_CS);
3254 set_segment_selector(ctxt, tss->ss, VCPU_SREG_SS);
3255 set_segment_selector(ctxt, tss->ds, VCPU_SREG_DS);
3256 set_segment_selector(ctxt, tss->fs, VCPU_SREG_FS);
3257 set_segment_selector(ctxt, tss->gs, VCPU_SREG_GS);
3269 cpl = tss->cs & 3;
3276 ret = __load_segment_descriptor(ctxt, tss->ldt_selector, VCPU_SREG_LDTR,
3280 ret = __load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES, cpl,
3284 ret = __load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS, cpl,
3288 ret = __load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS, cpl,
3292 ret = __load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS, cpl,
3296 ret = __load_segment_descriptor(ctxt, tss->fs, VCPU_SREG_FS, cpl,
3300 ret = __load_segment_descriptor(ctxt, tss->gs, VCPU_SREG_GS, cpl,
3367 /* FIXME: check that next_tss_desc is tss */