Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/amd64/amd64 Xosyscall: sync with Xsyscall.



details:   https://anonhg.NetBSD.org/src/rev/7c72f971813d
branches:  trunk
changeset: 758147:7c72f971813d
user:      yamt <yamt%NetBSD.org@localhost>
date:      Thu Oct 21 11:43:22 2010 +0000

description:
Xosyscall: sync with Xsyscall.

diffstat:

 sys/arch/amd64/amd64/locore.S |  56 +++++++++++++++++++++++-------------------
 1 files changed, 30 insertions(+), 26 deletions(-)

diffs (75 lines):

diff -r 2daf8706e4df -r 7c72f971813d sys/arch/amd64/amd64/locore.S
--- a/sys/arch/amd64/amd64/locore.S     Thu Oct 21 11:42:26 2010 +0000
+++ b/sys/arch/amd64/amd64/locore.S     Thu Oct 21 11:43:22 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: locore.S,v 1.61 2010/10/21 11:42:26 yamt Exp $ */
+/*     $NetBSD: locore.S,v 1.62 2010/10/21 11:43:22 yamt Exp $ */
 
 /*
  * Copyright-o-rama!
@@ -1258,36 +1258,40 @@
 .Losyscall_checkast:
        /* Check for ASTs on exit to user mode. */
        CLI(si)
-       CHECK_ASTPENDING(%r14)
-       je      1f
-       /* Always returning to user mode here. */
+       movl    L_MD_ASTPENDING(%r14), %eax
+       orl     CPUVAR(WANT_PMAPLOAD), %eax
+       jnz     9f
+iret_return:
+#ifdef DIAGNOSTIC
+       cmpl    $IPL_NONE,CPUVAR(ILEVEL)
+       jne     3f
+#endif
+       INTRFASTEXIT
+#ifdef DIAGNOSTIC
+3:     movabsq $4f, %rdi
+       movl    TF_RAX(%rsp),%esi
+       movl    TF_RDI(%rsp),%edx
+       movl    %ebx,%ecx
+       movl    CPUVAR(ILEVEL),%r8d
+       xorq    %rax,%rax
+       call    _C_LABEL(printf)
+       movl    $IPL_NONE,%edi
+       call    _C_LABEL(spllower)
+       jmp     .Losyscall_checkast
+4:     .asciz  "WARNING: SPL NOT LOWERED ON SYSCALL %d %d EXIT %x %x\n"
+#endif
+9:
+       cmpl    $0, CPUVAR(WANT_PMAPLOAD)
+       jz      10f
+       STI(si)
+       call    _C_LABEL(do_pmap_load)
+       jmp     .Losyscall_checkast     /* re-check ASTs */
+10:
        CLEAR_ASTPENDING(%r14)
        STI(si)
        /* Pushed T_ASTFLT into tf_trapno on entry. */
        movq    %rsp,%rdi
        call    _C_LABEL(trap)
-       jmp     .Losyscall_checkast
-1:     CHECK_DEFERRED_SWITCH
-       jnz     9f
-iret_return:
-#ifndef DIAGNOSTIC
-       INTRFASTEXIT
-#else /* DIAGNOSTIC */
-       cmpl    $IPL_NONE,CPUVAR(ILEVEL)
-       jne     3f
-       INTRFASTEXIT
-3:
-       STI(si)
-       movabsq $4f, %rdi
-       xorq    %rax,%rax
-       call    _C_LABEL(printf)
-       movl    $IPL_NONE,%edi
-       call    _C_LABEL(spllower)
-       jmp     .Losyscall_checkast
-4:     .asciz  "WARNING: SPL NOT LOWERED ON SYSCALL EXIT\n"
-#endif /* DIAGNOSTIC */
-9:     STI(si)
-       call    _C_LABEL(do_pmap_load)
        jmp     .Losyscall_checkast     /* re-check ASTs */
 
 /*



Home | Main Index | Thread Index | Old Index