Annotation of Gnu-Mach/i386/util/idt_inittab.S, revision 1.1

1.1     ! root        1: /* 
        !             2:  * Mach Operating System
        !             3:  * Copyright (c) 1993,1992,1991,1990 Carnegie Mellon University
        !             4:  * Copyright (c) 1991 IBM Corporation 
        !             5:  * All Rights Reserved.
        !             6:  * 
        !             7:  * Permission to use, copy, modify and distribute this software and its
        !             8:  * documentation is hereby granted, provided that both the copyright
        !             9:  * notice and this permission notice appear in all copies of the
        !            10:  * software, derivative works or modified versions, and any portions
        !            11:  * thereof, and that both notices appear in supporting documentation,
        !            12:  * and that the nema IBM not be used in advertising or publicity 
        !            13:  * pertaining to distribution of the software without specific, written
        !            14:  * prior permission.
        !            15:  * 
        !            16:  * CARNEGIE MELLON AND IBM ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            17:  * CONDITION.  CARNEGIE MELLON AND IBM DISCLAIM ANY LIABILITY OF ANY KIND FOR
        !            18:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            19:  * 
        !            20:  * Carnegie Mellon requests users of this software to return to
        !            21:  * 
        !            22:  *  Software Distribution Coordinator  or  [email protected]
        !            23:  *  School of Computer Science
        !            24:  *  Carnegie Mellon University
        !            25:  *  Pittsburgh PA 15213-3890
        !            26:  * 
        !            27:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            28:  * the rights to redistribute these changes.
        !            29:  */
        !            30: 
        !            31: #include <mach/machine/asm.h>
        !            32: #include <mach/machine/eflags.h>
        !            33: #include <mach/machine/trap.h>
        !            34: #include <mach/machine/seg.h>
        !            35: 
        !            36: #include "trap.h"
        !            37: #include "idt_inittab.h"
        !            38: #include "debug.h"
        !            39: 
        !            40: /*
        !            41:  * This is a default idt_inittab
        !            42:  * that simply invokes panic_trap on any trap.
        !            43:  * All gates are interrupt gates,
        !            44:  * so that interrupts will be immediately turned off.
        !            45:  */
        !            46: 
        !            47: 
        !            48: /*
        !            49:  * No error code.  Clear error code and push trap number.
        !            50:  */
        !            51: #define        EXCEPTION(n,name) \
        !            52:        IDT_ENTRY(n,EXT(name),ACC_PL_K|ACC_INTR_GATE);\
        !            53: ENTRY(name)                            ;\
        !            54:        pushl   $(0)                    ;\
        !            55:        pushl   $(n)                    ;\
        !            56:        jmp     alltraps
        !            57: 
        !            58: /*
        !            59:  * User-accessible exception.  Otherwise, same as above.
        !            60:  */
        !            61: #define        EXCEP_USR(n,name) \
        !            62:        IDT_ENTRY(n,EXT(name),ACC_PL_U|ACC_INTR_GATE);\
        !            63: ENTRY(name)                            ;\
        !            64:        pushl   $(0)                    ;\
        !            65:        pushl   $(n)                    ;\
        !            66:        jmp     alltraps
        !            67: 
        !            68: /*
        !            69:  * Error code has been pushed.  Just push trap number.
        !            70:  */
        !            71: #define        EXCEP_ERR(n,name) \
        !            72:        IDT_ENTRY(n,EXT(name),ACC_PL_K|ACC_INTR_GATE);\
        !            73: ENTRY(name)                            ;\
        !            74:        pushl   $(n)                    ;\
        !            75:        jmp     alltraps
        !            76: 
        !            77: /*
        !            78:  * Special interrupt code: dispatches to a unique entrypoint,
        !            79:  * not defined automatically here.
        !            80:  */
        !            81: #define        EXCEP_SPC(n,name)  \
        !            82:        IDT_ENTRY(n,EXT(name),ACC_PL_K|ACC_INTR_GATE)
        !            83: 
        !            84: 
        !            85: IDT_INITTAB_BEGIN
        !            86: 
        !            87: EXCEPTION(0x00,t_zero_div)
        !            88: EXCEPTION(0x01,t_debug)
        !            89: EXCEP_USR(0x03,t_int3)
        !            90: EXCEP_USR(0x04,t_into)
        !            91: EXCEP_USR(0x05,t_bounds)
        !            92: EXCEPTION(0x06,t_invop)
        !            93: EXCEPTION(0x07,t_nofpu)
        !            94: EXCEPTION(0x08,a_dbl_fault)
        !            95: EXCEPTION(0x09,a_fpu_over)
        !            96: EXCEP_ERR(0x0a,a_inv_tss)
        !            97: EXCEP_ERR(0x0b,t_segnp)
        !            98: EXCEP_ERR(0x0c,t_stack_fault)
        !            99: EXCEP_ERR(0x0d,t_gen_prot)
        !           100: EXCEP_ERR(0x0e,t_page_fault)
        !           101: EXCEPTION(0x0f,t_trap_0f)
        !           102: EXCEPTION(0x10,t_fpu_err)
        !           103: EXCEPTION(0x11,t_trap_11)
        !           104: EXCEPTION(0x12,t_trap_12)
        !           105: EXCEPTION(0x13,t_trap_13)
        !           106: EXCEPTION(0x14,t_trap_14)
        !           107: EXCEPTION(0x15,t_trap_15)
        !           108: EXCEPTION(0x16,t_trap_16)
        !           109: EXCEPTION(0x17,t_trap_17)
        !           110: EXCEPTION(0x18,t_trap_18)
        !           111: EXCEPTION(0x19,t_trap_19)
        !           112: EXCEPTION(0x1a,t_trap_1a)
        !           113: EXCEPTION(0x1b,t_trap_1b)
        !           114: EXCEPTION(0x1c,t_trap_1c)
        !           115: EXCEPTION(0x1d,t_trap_1d)
        !           116: EXCEPTION(0x1e,t_trap_1e)
        !           117: EXCEPTION(0x1f,t_trap_1f)
        !           118: 
        !           119: IDT_INITTAB_END
        !           120: 
        !           121: alltraps:
        !           122:        pusha
        !           123:        pushl   %ds
        !           124:        pushl   %es
        !           125:        pushl   %fs
        !           126:        pushl   %gs
        !           127:        jmp     EXT(trap_handler)
        !           128: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.