Module Name: src Committed By: yamt Date: Thu Oct 21 11:43:23 UTC 2010
Modified Files: src/sys/arch/amd64/amd64: locore.S Log Message: Xosyscall: sync with Xsyscall. To generate a diff of this commit: cvs rdiff -u -r1.61 -r1.62 src/sys/arch/amd64/amd64/locore.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amd64/amd64/locore.S diff -u src/sys/arch/amd64/amd64/locore.S:1.61 src/sys/arch/amd64/amd64/locore.S:1.62 --- src/sys/arch/amd64/amd64/locore.S:1.61 Thu Oct 21 11:42:26 2010 +++ src/sys/arch/amd64/amd64/locore.S Thu Oct 21 11:43:22 2010 @@ -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,37 +1258,41 @@ .Losyscall_checkast: /* Check for ASTs on exit to user mode. */ CLI(si) - CHECK_ASTPENDING(%r14) - je 1f - /* Always returning to user mode here. */ - 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 + movl L_MD_ASTPENDING(%r14), %eax + orl CPUVAR(WANT_PMAPLOAD), %eax jnz 9f iret_return: -#ifndef DIAGNOSTIC - INTRFASTEXIT -#else /* DIAGNOSTIC */ +#ifdef DIAGNOSTIC cmpl $IPL_NONE,CPUVAR(ILEVEL) jne 3f +#endif INTRFASTEXIT -3: - STI(si) - movabsq $4f, %rdi +#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 EXIT\n" -#endif /* DIAGNOSTIC */ -9: STI(si) +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 /* re-check ASTs */ /* * void sse2_idlezero_page(void *pg)