Lines Matching refs:tss

31 #include "tss.h"
2665 struct tss_segment_16 *tss)
2667 tss->ip = ctxt->_eip;
2668 tss->flag = ctxt->eflags;
2669 tss->ax = reg_read(ctxt, VCPU_REGS_RAX);
2670 tss->cx = reg_read(ctxt, VCPU_REGS_RCX);
2671 tss->dx = reg_read(ctxt, VCPU_REGS_RDX);
2672 tss->bx = reg_read(ctxt, VCPU_REGS_RBX);
2673 tss->sp = reg_read(ctxt, VCPU_REGS_RSP);
2674 tss->bp = reg_read(ctxt, VCPU_REGS_RBP);
2675 tss->si = reg_read(ctxt, VCPU_REGS_RSI);
2676 tss->di = reg_read(ctxt, VCPU_REGS_RDI);
2678 tss->es = get_segment_selector(ctxt, VCPU_SREG_ES);
2679 tss->cs = get_segment_selector(ctxt, VCPU_SREG_CS);
2680 tss->ss = get_segment_selector(ctxt, VCPU_SREG_SS);
2681 tss->ds = get_segment_selector(ctxt, VCPU_SREG_DS);
2682 tss->ldt = get_segment_selector(ctxt, VCPU_SREG_LDTR);
2686 struct tss_segment_16 *tss)
2691 ctxt->_eip = tss->ip;
2692 ctxt->eflags = tss->flag | 2;
2693 *reg_write(ctxt, VCPU_REGS_RAX) = tss->ax;
2694 *reg_write(ctxt, VCPU_REGS_RCX) = tss->cx;
2695 *reg_write(ctxt, VCPU_REGS_RDX) = tss->dx;
2696 *reg_write(ctxt, VCPU_REGS_RBX) = tss->bx;
2697 *reg_write(ctxt, VCPU_REGS_RSP) = tss->sp;
2698 *reg_write(ctxt, VCPU_REGS_RBP) = tss->bp;
2699 *reg_write(ctxt, VCPU_REGS_RSI) = tss->si;
2700 *reg_write(ctxt, VCPU_REGS_RDI) = tss->di;
2706 set_segment_selector(ctxt, tss->ldt, VCPU_SREG_LDTR);
2707 set_segment_selector(ctxt, tss->es, VCPU_SREG_ES);
2708 set_segment_selector(ctxt, tss->cs, VCPU_SREG_CS);
2709 set_segment_selector(ctxt, tss->ss, VCPU_SREG_SS);
2710 set_segment_selector(ctxt, tss->ds, VCPU_SREG_DS);
2712 cpl = tss->cs & 3;
2718 ret = __load_segment_descriptor(ctxt, tss->ldt, VCPU_SREG_LDTR, cpl,
2722 ret = __load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES, cpl,
2726 ret = __load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS, cpl,
2730 ret = __load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS, cpl,
2734 ret = __load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS, cpl,
2777 struct tss_segment_32 *tss)
2780 tss->eip = ctxt->_eip;
2781 tss->eflags = ctxt->eflags;
2782 tss->eax = reg_read(ctxt, VCPU_REGS_RAX);
2783 tss->ecx = reg_read(ctxt, VCPU_REGS_RCX);
2784 tss->edx = reg_read(ctxt, VCPU_REGS_RDX);
2785 tss->ebx = reg_read(ctxt, VCPU_REGS_RBX);
2786 tss->esp = reg_read(ctxt, VCPU_REGS_RSP);
2787 tss->ebp = reg_read(ctxt, VCPU_REGS_RBP);
2788 tss->esi = reg_read(ctxt, VCPU_REGS_RSI);
2789 tss->edi = reg_read(ctxt, VCPU_REGS_RDI);
2791 tss->es = get_segment_selector(ctxt, VCPU_SREG_ES);
2792 tss->cs = get_segment_selector(ctxt, VCPU_SREG_CS);
2793 tss->ss = get_segment_selector(ctxt, VCPU_SREG_SS);
2794 tss->ds = get_segment_selector(ctxt, VCPU_SREG_DS);
2795 tss->fs = get_segment_selector(ctxt, VCPU_SREG_FS);
2796 tss->gs = get_segment_selector(ctxt, VCPU_SREG_GS);
2800 struct tss_segment_32 *tss)
2805 if (ctxt->ops->set_cr(ctxt, 3, tss->cr3))
2807 ctxt->_eip = tss->eip;
2808 ctxt->eflags = tss->eflags | 2;
2811 *reg_write(ctxt, VCPU_REGS_RAX) = tss->eax;
2812 *reg_write(ctxt, VCPU_REGS_RCX) = tss->ecx;
2813 *reg_write(ctxt, VCPU_REGS_RDX) = tss->edx;
2814 *reg_write(ctxt, VCPU_REGS_RBX) = tss->ebx;
2815 *reg_write(ctxt, VCPU_REGS_RSP) = tss->esp;
2816 *reg_write(ctxt, VCPU_REGS_RBP) = tss->ebp;
2817 *reg_write(ctxt, VCPU_REGS_RSI) = tss->esi;
2818 *reg_write(ctxt, VCPU_REGS_RDI) = tss->edi;
2825 set_segment_selector(ctxt, tss->ldt_selector, VCPU_SREG_LDTR);
2826 set_segment_selector(ctxt, tss->es, VCPU_SREG_ES);
2827 set_segment_selector(ctxt, tss->cs, VCPU_SREG_CS);
2828 set_segment_selector(ctxt, tss->ss, VCPU_SREG_SS);
2829 set_segment_selector(ctxt, tss->ds, VCPU_SREG_DS);
2830 set_segment_selector(ctxt, tss->fs, VCPU_SREG_FS);
2831 set_segment_selector(ctxt, tss->gs, VCPU_SREG_GS);
2843 cpl = tss->cs & 3;
2850 ret = __load_segment_descriptor(ctxt, tss->ldt_selector, VCPU_SREG_LDTR,
2854 ret = __load_segment_descriptor(ctxt, tss->es, VCPU_SREG_ES, cpl,
2858 ret = __load_segment_descriptor(ctxt, tss->cs, VCPU_SREG_CS, cpl,
2862 ret = __load_segment_descriptor(ctxt, tss->ss, VCPU_SREG_SS, cpl,
2866 ret = __load_segment_descriptor(ctxt, tss->ds, VCPU_SREG_DS, cpl,
2870 ret = __load_segment_descriptor(ctxt, tss->fs, VCPU_SREG_FS, cpl,
2874 ret = __load_segment_descriptor(ctxt, tss->gs, VCPU_SREG_GS, cpl,
2940 /* FIXME: check that next_tss_desc is tss */