diff options
author | Julian Elischer <julian@FreeBSD.org> | 2002-07-10 21:07:47 +0000 |
---|---|---|
committer | Julian Elischer <julian@FreeBSD.org> | 2002-07-10 21:07:47 +0000 |
commit | d50fe601d442ad19717c9254823befa520f3abf3 (patch) | |
tree | 0b86a0e81ef052230432602113984f5c3b88696f /sys/i386/isa | |
parent | 5ad9e45f961c99b6fe592a65c0f534b46152a820 (diff) | |
download | src-d50fe601d442ad19717c9254823befa520f3abf3.tar.gz src-d50fe601d442ad19717c9254823befa520f3abf3.zip |
Notes
Diffstat (limited to 'sys/i386/isa')
-rw-r--r-- | sys/i386/isa/ipl.s | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/sys/i386/isa/ipl.s b/sys/i386/isa/ipl.s deleted file mode 100644 index 6fba56ffbd49..000000000000 --- a/sys/i386/isa/ipl.s +++ /dev/null @@ -1,145 +0,0 @@ -/*- - * Copyright (c) 1989, 1990 William F. Jolitz. - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * William Jolitz. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)ipl.s - * - * $FreeBSD$ - */ - - -/* - * AT/386 - * Vector interrupt control section - */ - - .text - -/* - * void doreti(struct trapframe) - * - * Handle return from interrupts, traps and syscalls. - */ - SUPERALIGN_TEXT - .type doreti,@function -doreti: - FAKE_MCOUNT(bintr) /* init "from" bintr -> doreti */ -doreti_next: - /* - * Check if ASTs can be handled now. PSL_VM must be checked first - * since segment registers only have an RPL in non-VM86 mode. - */ - testl $PSL_VM,TF_EFLAGS(%esp) /* are we in vm86 mode? */ - jz doreti_notvm86 - cmpl $1,in_vm86call /* are we in a vm86 call? */ - jne doreti_ast /* can handle ASTs now if not */ - jmp doreti_exit - -doreti_notvm86: - testb $SEL_RPL_MASK,TF_CS(%esp) /* are we in user mode? */ - jz doreti_exit /* can't handle ASTs now if not */ - -doreti_ast: - /* - * Check for ASTs atomically with returning. Disabling CPU - * interrupts provides sufficient locking evein the SMP case, - * since we will be informed of any new ASTs by an IPI. - */ - cli - movl PCPU(CURTHREAD),%eax - movl TD_KSE(%eax), %eax - testl $KEF_ASTPENDING | KEF_NEEDRESCHED,KE_FLAGS(%eax) - je doreti_exit - sti - pushl %esp /* pass a pointer to the trapframe */ - call ast - add $4,%esp - jmp doreti_ast - - /* - * doreti_exit: pop registers, iret. - * - * The segment register pop is a special case, since it may - * fault if (for example) a sigreturn specifies bad segment - * registers. The fault is handled in trap.c. - */ -doreti_exit: - MEXITCOUNT - - .globl doreti_popl_fs -doreti_popl_fs: - popl %fs - .globl doreti_popl_es -doreti_popl_es: - popl %es - .globl doreti_popl_ds -doreti_popl_ds: - popl %ds - popal - addl $8,%esp - .globl doreti_iret -doreti_iret: - iret - - /* - * doreti_iret_fault and friends. Alternative return code for - * the case where we get a fault in the doreti_exit code - * above. trap() (i386/i386/trap.c) catches this specific - * case, sends the process a signal and continues in the - * corresponding place in the code below. - */ - ALIGN_TEXT - .globl doreti_iret_fault -doreti_iret_fault: - subl $8,%esp - pushal - pushl %ds - .globl doreti_popl_ds_fault -doreti_popl_ds_fault: - pushl %es - .globl doreti_popl_es_fault -doreti_popl_es_fault: - pushl %fs - .globl doreti_popl_fs_fault -doreti_popl_fs_fault: - movl $0,TF_ERR(%esp) /* XXX should be the error code */ - movl $T_PROTFLT,TF_TRAPNO(%esp) - jmp alltraps_with_regs_pushed - -#ifdef APIC_IO -#include "i386/isa/apic_ipl.s" -#else -#include "i386/isa/icu_ipl.s" -#endif /* APIC_IO */ |