SEL_UPL
((uint64_t)GSEL(GUDATA_SEL-1, SEL_UPL) << 48));
"sti" : : "a"(GSEL(GUDATA_SEL, SEL_UPL)));
tf->tf_cs = GSEL(GUCODE_SEL, SEL_UPL);
tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);
atop(VM_MAXUSER_ADDRESS) - 1, SDT_MEMRWA, SEL_UPL, 1, 0, 1);
atop(VM_MAXUSER_ADDRESS) - 1, SDT_MEMERA, SEL_UPL, 1, 0, 1);
(x == 3) ? SEL_UPL : SEL_KPL,
tf->tf_cs = GSEL(GUCODE_SEL, SEL_UPL);
tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);
regs->r_ds = GSEL(GUDATA_SEL, SEL_UPL);
regs->r_es = GSEL(GUDATA_SEL, SEL_UPL);
regs->r_fs = GSEL(GUDATA_SEL, SEL_UPL);
regs->r_gs = GSEL(GUDATA_SEL, SEL_UPL);
movq $(GSEL(GUDATA_SEL, SEL_UPL)),TF_SS(%rsp) ; \
movq $(GSEL(GUCODE_SEL, SEL_UPL)), TF_CS(%rsp) ; \
((s) == GSEL(GUCODE_SEL, SEL_UPL))
((s) == GSEL(GUDATA_SEL, SEL_UPL))
#define USERMODE(c, f) (ISPL(c) == SEL_UPL)
tf->tf_fs = GSEL(GUFS_SEL, SEL_UPL);
tf->tf_gs = GSEL(GUGS_SEL, SEL_UPL);
tf->tf_es = GSEL(GUDATA_SEL, SEL_UPL);
tf->tf_ds = GSEL(GUDATA_SEL, SEL_UPL);
tf->tf_cs = GSEL(GUCODE_SEL, SEL_UPL);
tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);
atop(VM_MAXUSER_ADDRESS) - 1, SDT_MEMRWA, SEL_UPL, 1, 1);
atop(VM_MAXUSER_ADDRESS) - 1, SDT_MEMRWA, SEL_UPL, 1, 1);
tf->tf_fs = GSEL(GUFS_SEL, SEL_UPL);
tf->tf_gs = GSEL(GUGS_SEL, SEL_UPL);
tf->tf_es = GSEL(GUDATA_SEL, SEL_UPL);
tf->tf_ds = GSEL(GUDATA_SEL, SEL_UPL);
tf->tf_cs = GSEL(GUCODE_SEL, SEL_UPL);
tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);
SDT_MEMERA, SEL_UPL, 1, 1);
SDT_MEMERA, SEL_UPL, 1, 1);
atop(I386_MAX_EXE_ADDR) - 1, SDT_MEMERA, SEL_UPL, 1, 1);
atop(VM_MAXUSER_ADDRESS) - 1, SDT_MEMRWA, SEL_UPL, 1, 1);
atop(VM_MAXUSER_ADDRESS) - 1, SDT_MEMRWA, SEL_UPL, 1, 1);
atop(VM_MAXUSER_ADDRESS) - 1, SDT_MEMRWA, SEL_UPL, 1, 1);
setgate(&idt[ 3], &IDTVEC(bpt), 0, SDT_SYS386IGT, SEL_UPL, GCODE_SEL);
setgate(&idt[ 4], &IDTVEC(ofl), 0, SDT_SYS386IGT, SEL_UPL, GCODE_SEL);
setgate(&idt[128], &IDTVEC(syscall), 0, SDT_SYS386IGT, SEL_UPL, GCODE_SEL);
SDT_MEMERA, SEL_UPL, 1, 1);
tf->tf_cs = GSEL(GUCODE_SEL, SEL_UPL);
setsegment(sdp, (void *)base, 0xfffff, SDT_MEMRWA, SEL_UPL, 1, 1);
#define USERMODE(c, f) (ISPL(c) == SEL_UPL)