version 1.43, 2017/10/21 07:24:26 |
version 1.44, 2019/03/24 15:58:32 |
Line 287 linux32_setregs(struct lwp *l, struct ex |
|
Line 287 linux32_setregs(struct lwp *l, struct ex |
|
|
|
fpu_save_area_clear(l, __Linux_NPXCW__); |
fpu_save_area_clear(l, __Linux_NPXCW__); |
|
|
l->l_md.md_flags = MDL_COMPAT32; /* Forces iret not sysret */ |
kpreempt_disable(); |
pcb->pcb_flags = PCB_COMPAT32; |
pcb->pcb_flags = PCB_COMPAT32; |
|
|
p->p_flag |= PK_32; |
p->p_flag |= PK_32; |
|
l->l_md.md_flags = MDL_COMPAT32; /* force iret not sysret */ |
|
cpu_segregs32_zero(l); |
|
cpu_fsgs_reload(l, GSEL(GUDATA32_SEL, SEL_UPL), |
|
GSEL(GUDATA32_SEL, SEL_UPL)); |
|
kpreempt_enable(); |
|
|
tf = l->l_md.md_regs; |
tf = l->l_md.md_regs; |
tf->tf_rax = 0; |
tf->tf_rax = 0; |
Line 315 linux32_setregs(struct lwp *l, struct ex |
|
Line 319 linux32_setregs(struct lwp *l, struct ex |
|
tf->tf_ss = GSEL(GUDATA32_SEL, SEL_UPL); |
tf->tf_ss = GSEL(GUDATA32_SEL, SEL_UPL); |
tf->tf_ds = GSEL(GUDATA32_SEL, SEL_UPL); |
tf->tf_ds = GSEL(GUDATA32_SEL, SEL_UPL); |
tf->tf_es = GSEL(GUDATA32_SEL, SEL_UPL); |
tf->tf_es = GSEL(GUDATA32_SEL, SEL_UPL); |
cpu_segregs32_zero(l); |
|
cpu_fsgs_reload(l, GSEL(GUDATA32_SEL, SEL_UPL), GSEL(GUDATA32_SEL, SEL_UPL)); |
|
} |
} |
|
|
static void |
static void |