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