amd64: Use 'doreti' to return from syscalls.
authorJordan Gordeev <jgordeev@dir.bg>
Wed, 3 Jun 2009 15:52:45 +0000 (18:52 +0300)
committerJordan Gordeev <jgordeev@dir.bg>
Fri, 5 Jun 2009 18:56:31 +0000 (21:56 +0300)
This is what old DragonFly and new FreeBSD/amd64 code does.

sys/platform/pc64/amd64/exception.S

index f1a262b..0dea2ba 100644 (file)
@@ -299,25 +299,6 @@ IDTVEC(fast_syscall)
        FAKE_MCOUNT(TF_RIP(%rsp))
        movq    %rsp, %rdi
        call    syscall2
-       /* JGXXX handle AST's? */
-       /* restore preserved registers */
-       MEXITCOUNT
-       movq    TF_RDI(%rsp),%rdi       /* bonus; preserve arg 1 */
-       movq    TF_RSI(%rsp),%rsi       /* bonus: preserve arg 2 */
-       movq    TF_RDX(%rsp),%rdx       /* return value 2 */
-       movq    TF_RAX(%rsp),%rax       /* return value 1 */
-       movq    TF_RBX(%rsp),%rbx       /* C preserved */
-       movq    TF_RBP(%rsp),%rbp       /* C preserved */
-       movq    TF_R12(%rsp),%r12       /* C preserved */
-       movq    TF_R13(%rsp),%r13       /* C preserved */
-       movq    TF_R14(%rsp),%r14       /* C preserved */
-       movq    TF_R15(%rsp),%r15       /* C preserved */
-       movq    TF_RFLAGS(%rsp),%r11    /* original %rflags */
-       movq    TF_RIP(%rsp),%rcx       /* original %rip */
-       movq    TF_RSP(%rsp),%r9        /* user stack pointer */
-       movq    %r9,%rsp                /* original %rsp */
-       swapgs
-       sysretq
        MEXITCOUNT
        jmp     doreti