Author: kib
Date: Sun Jul 19 17:47:55 2020
New Revision: 363329
URL: https://svnweb.freebsd.org/changeset/base/363329

Log:
  Simplify non-pti syscall entry on amd64.
  
  Limit manipulations to use %rax as scratch to the pti portion of the
  syscall entry code.
  
  Submitted by: alc
  Reviewed by:  markj
  MFC after:    1 week
  Differential revision:        https://reviews.freebsd.org/D25722

Modified:
  head/sys/amd64/amd64/exception.S

Modified: head/sys/amd64/amd64/exception.S
==============================================================================
--- head/sys/amd64/amd64/exception.S    Sun Jul 19 17:27:48 2020        
(r363328)
+++ head/sys/amd64/amd64/exception.S    Sun Jul 19 17:47:55 2020        
(r363329)
@@ -526,17 +526,17 @@ prot_addrf:
 IDTVEC(fast_syscall_pti)
        swapgs
        lfence
-       movq    %rax,PCPU(SCRATCH_RAX)
        cmpq    $~0,PCPU(UCR3)
        je      fast_syscall_common
+       movq    %rax,PCPU(SCRATCH_RAX)
        movq    PCPU(KCR3),%rax
        movq    %rax,%cr3
+       movq    PCPU(SCRATCH_RAX),%rax
        jmp     fast_syscall_common
        SUPERALIGN_TEXT
 IDTVEC(fast_syscall)
        swapgs
        lfence
-       movq    %rax,PCPU(SCRATCH_RAX)
 fast_syscall_common:
        movq    %rsp,PCPU(SCRATCH_RSP)
        movq    PCPU(RSP0),%rsp
@@ -547,7 +547,6 @@ fast_syscall_common:
        movq    %rcx,TF_RIP(%rsp)       /* %rcx original value is in %r10 */
        movq    PCPU(SCRATCH_RSP),%r11  /* %r11 already saved */
        movq    %r11,TF_RSP(%rsp)       /* user stack pointer */
-       movq    PCPU(SCRATCH_RAX),%rax
        /*
         * Save a few arg registers early to free them for use in
         * handle_ibrs_entry().  %r10 is especially tricky.  It is not an
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to