PERFORCE change 28509 for review
Peter Wemm
peter at FreeBSD.org
Tue Apr 8 01:56:57 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=28509
Change 28509 by peter at peter_daintree on 2003/04/08 01:56:28
dont save/restore truncated segment registers
Affected files ...
.. //depot/projects/hammer/sys/x86_64/x86_64/exception.s#16 edit
.. //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#49 edit
Differences ...
==== //depot/projects/hammer/sys/x86_64/x86_64/exception.s#16 (text+ko) ====
@@ -145,15 +145,7 @@
pushq %r13
pushq %r14
pushq %r15
- pushq %ds
- pushq %es
- pushq %fs
alltraps_with_regs_pushed:
- mov $KDSEL,%ax
- mov %ax,%ds
- mov %ax,%es
-#XXX mov $KPSEL,%ax
- mov %ax,%fs
FAKE_MCOUNT(13*4(%rsp))
calltrap:
FAKE_MCOUNT(btrap) /* init "from" btrap -> calltrap */
@@ -198,14 +190,6 @@
pushq %r13
pushq %r14
pushq %r15
- pushq %ds
- pushq %es
- pushq %fs
- mov $KDSEL,%ax /* switch to kernel segments */
- mov %ax,%ds
- mov %ax,%es
-#XXX mov $KPSEL,%ax
- mov %ax,%fs
FAKE_MCOUNT(13*4(%rsp))
call syscall
MEXITCOUNT
@@ -280,16 +264,6 @@
doreti_exit:
MEXITCOUNT
- .globl doreti_popl_fs
-doreti_popl_fs:
-# popq %fs
- addq $8, %rsp
- .globl doreti_popl_es
-doreti_popl_es:
- popq %es
- .globl doreti_popl_ds
-doreti_popl_ds:
- popq %ds
popq %r15
popq %r14
popq %r13
@@ -336,15 +310,6 @@
pushq %r13
pushq %r14
pushq %r15
- pushq %ds
- .globl doreti_popl_ds_fault
-doreti_popl_ds_fault:
- pushq %es
- .globl doreti_popl_es_fault
-doreti_popl_es_fault:
- pushq %fs
- .globl doreti_popl_fs_fault
-doreti_popl_fs_fault:
movq $0,TF_ERR(%rsp) /* XXX should be the error code */
movq $T_PROTFLT,TF_TRAPNO(%rsp)
jmp alltraps_with_regs_pushed
==== //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#49 (text+ko) ====
@@ -309,10 +309,6 @@
regs->tf_rip = PS_STRINGS - *(p->p_sysent->sv_szsigcode);
regs->tf_rflags &= ~PSL_T;
regs->tf_cs = _ucodesel;
- regs->tf_ds = _udatasel;
- regs->tf_es = _udatasel;
- regs->tf_fs = _udatasel;
- regs->tf_ss = _udatasel;
PROC_LOCK(p);
}
@@ -484,10 +480,6 @@
regs->tf_rsp = stack;
regs->tf_rflags = PSL_USER | (regs->tf_rflags & PSL_T);
regs->tf_ss = _udatasel;
- regs->tf_ds = _udatasel;
- regs->tf_es = _udatasel;
- regs->tf_fs = _udatasel;
- regs->tf_cs = _ucodesel;
/*
* Arrange to trap the next npx or `fwait' instruction (see npx.c
@@ -1355,9 +1347,6 @@
struct trapframe *tp;
tp = td->td_frame;
- regs->r_fs = tp->tf_fs;
- regs->r_es = tp->tf_es;
- regs->r_ds = tp->tf_ds;
regs->r_rdi = tp->tf_rdi;
regs->r_rsi = tp->tf_rsi;
regs->r_rbp = tp->tf_rbp;
@@ -1385,9 +1374,6 @@
if (!EFL_SECURE(regs->r_rflags, tp->tf_rflags) ||
!CS_SECURE(regs->r_cs))
return (EINVAL);
- tp->tf_fs = regs->r_fs;
- tp->tf_es = regs->r_es;
- tp->tf_ds = regs->r_ds;
tp->tf_rdi = regs->r_rdi;
tp->tf_rsi = regs->r_rsi;
tp->tf_rbp = regs->r_rbp;
@@ -1487,9 +1473,6 @@
mcp->mc_onstack = sigonstack(tp->tf_rsp);
mcp->mc_gs = td->td_pcb->pcb_gs;
- mcp->mc_fs = tp->tf_fs;
- mcp->mc_es = tp->tf_es;
- mcp->mc_ds = tp->tf_ds;
mcp->mc_rdi = tp->tf_rdi;
mcp->mc_rsi = tp->tf_rsi;
mcp->mc_rbp = tp->tf_rbp;
@@ -1526,9 +1509,6 @@
rflags = (mcp->mc_rflags & PSL_USERCHANGE) |
(tp->tf_rflags & ~PSL_USERCHANGE);
if ((ret = set_fpcontext(td, mcp)) == 0) {
- tp->tf_fs = mcp->mc_fs;
- tp->tf_es = mcp->mc_es;
- tp->tf_ds = mcp->mc_ds;
tp->tf_rdi = mcp->mc_rdi;
tp->tf_rsi = mcp->mc_rsi;
tp->tf_rbp = mcp->mc_rbp;
More information about the p4-projects
mailing list