Retire write-only PCB_GS32BIT pcb flag on amd64.
This commit is contained in:
parent
6c7d832824
commit
d127f15308
@ -167,7 +167,6 @@ ASSYM(PCB_FPUSUSPEND, offsetof(struct pcb, pcb_fpususpend));
|
||||
ASSYM(PCB_SIZE, sizeof(struct pcb));
|
||||
ASSYM(PCB_FULL_IRET, PCB_FULL_IRET);
|
||||
ASSYM(PCB_DBREGS, PCB_DBREGS);
|
||||
ASSYM(PCB_GS32BIT, PCB_GS32BIT);
|
||||
ASSYM(PCB_32BIT, PCB_32BIT);
|
||||
|
||||
ASSYM(COMMON_TSS_RSP0, offsetof(struct amd64tss, tss_rsp0));
|
||||
|
@ -964,7 +964,7 @@ exec_setregs(struct thread *td, struct image_params *imgp, u_long stack)
|
||||
|
||||
pcb->pcb_fsbase = 0;
|
||||
pcb->pcb_gsbase = 0;
|
||||
clear_pcb_flags(pcb, PCB_32BIT | PCB_GS32BIT);
|
||||
clear_pcb_flags(pcb, PCB_32BIT);
|
||||
pcb->pcb_initial_fpucw = __INITIAL_FPUCW__;
|
||||
set_pcb_flags(pcb, PCB_FULL_IRET);
|
||||
|
||||
|
@ -1001,6 +1001,5 @@ ia32_setregs(struct thread *td, struct image_params *imgp, u_long stack)
|
||||
|
||||
/* Return via doreti so that we can change to a different %cs */
|
||||
set_pcb_flags(pcb, PCB_32BIT | PCB_FULL_IRET);
|
||||
clear_pcb_flags(pcb, PCB_GS32BIT);
|
||||
td->td_retval[1] = 0;
|
||||
}
|
||||
|
@ -77,7 +77,6 @@ struct pcb {
|
||||
#define PCB_KERNFPU 0x04 /* kernel uses fpu */
|
||||
#define PCB_FPUINITDONE 0x08 /* fpu state is initialized */
|
||||
#define PCB_USERFPUINITDONE 0x10 /* fpu user state is initialized */
|
||||
#define PCB_GS32BIT 0x20 /* linux gs switch */
|
||||
#define PCB_32BIT 0x40 /* process has 32 bit context (segs etc) */
|
||||
|
||||
uint16_t pcb_initial_fpucw;
|
||||
|
@ -447,7 +447,7 @@ linux_set_cloned_tls(struct thread *td, void *desc)
|
||||
pcb->pcb_gsbase = (register_t)info.base_addr;
|
||||
/* XXXKIB pcb->pcb_gs32sd = sd; */
|
||||
td->td_frame->tf_gs = GSEL(GUGS32_SEL, SEL_UPL);
|
||||
set_pcb_flags(pcb, PCB_GS32BIT | PCB_32BIT);
|
||||
set_pcb_flags(pcb, PCB_32BIT);
|
||||
}
|
||||
|
||||
return (error);
|
||||
@ -1026,7 +1026,7 @@ linux_set_thread_area(struct thread *td,
|
||||
|
||||
pcb = td->td_pcb;
|
||||
pcb->pcb_gsbase = (register_t)info.base_addr;
|
||||
set_pcb_flags(pcb, PCB_32BIT | PCB_GS32BIT);
|
||||
set_pcb_flags(pcb, PCB_32BIT);
|
||||
update_gdt_gsbase(td, info.base_addr);
|
||||
|
||||
return (0);
|
||||
|
@ -868,7 +868,6 @@ exec_linux_setregs(struct thread *td, struct image_params *imgp, u_long stack)
|
||||
|
||||
/* Do full restore on return so that we can change to a different %cs */
|
||||
set_pcb_flags(pcb, PCB_32BIT | PCB_FULL_IRET);
|
||||
clear_pcb_flags(pcb, PCB_GS32BIT);
|
||||
td->td_retval[1] = 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user