Annotation of Gnu-Mach/i386/util/trap.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Mach Operating System
        !             3:  * Copyright (c) 1991,1990,1989 Carnegie Mellon University.
        !             4:  * Copyright (c) 1994 The University of Utah and
        !             5:  * the Center for Software Science (CSS).
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * Permission to use, copy, modify and distribute this software and its
        !             9:  * documentation is hereby granted, provided that both the copyright
        !            10:  * notice and this permission notice appear in all copies of the
        !            11:  * software, derivative works or modified versions, and any portions
        !            12:  * thereof, and that both notices appear in supporting documentation.
        !            13:  *
        !            14:  * CARNEGIE MELLON, THE UNIVERSITY OF UTAH AND CSS ALLOW FREE USE OF
        !            15:  * THIS SOFTWARE IN ITS "AS IS" CONDITION, AND DISCLAIM ANY LIABILITY
        !            16:  * OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
        !            17:  * THIS SOFTWARE.
        !            18:  *
        !            19:  * Carnegie Mellon requests users of this software to return to
        !            20:  *
        !            21:  *  Software Distribution Coordinator  or  [email protected]
        !            22:  *  School of Computer Science
        !            23:  *  Carnegie Mellon University
        !            24:  *  Pittsburgh PA 15213-3890
        !            25:  *
        !            26:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            27:  * the rights to redistribute these changes.
        !            28:  */
        !            29: #ifndef _I386_MOSS_TRAP_H_
        !            30: #define _I386_MOSS_TRAP_H_
        !            31: 
        !            32: #ifndef ASSEMBLER
        !            33: 
        !            34: 
        !            35: /* This structure corresponds to the state of user registers
        !            36:    as saved upon kernel trap/interrupt entry.
        !            37:    As always, it is only a default implementation;
        !            38:    a well-optimized microkernel will probably want to override it
        !            39:    with something that allows better optimization.  */
        !            40: 
        !            41: struct trap_state {
        !            42: 
        !            43:        /* Saved segment registers */
        !            44:        unsigned int    gs;
        !            45:        unsigned int    fs;
        !            46:        unsigned int    es;
        !            47:        unsigned int    ds;
        !            48: 
        !            49:        /* PUSHA register state frame */
        !            50:        unsigned int    edi;
        !            51:        unsigned int    esi;
        !            52:        unsigned int    ebp;
        !            53:        unsigned int    cr2;    /* we save cr2 over esp for page faults */
        !            54:        unsigned int    ebx;
        !            55:        unsigned int    edx;
        !            56:        unsigned int    ecx;
        !            57:        unsigned int    eax;
        !            58: 
        !            59:        unsigned int    trapno;
        !            60:        unsigned int    err;
        !            61: 
        !            62:        /* Processor state frame */
        !            63:        unsigned int    eip;
        !            64:        unsigned int    cs;
        !            65:        unsigned int    eflags;
        !            66:        unsigned int    esp;
        !            67:        unsigned int    ss;
        !            68: 
        !            69:        /* Virtual 8086 segment registers */
        !            70:        unsigned int    v86_es;
        !            71:        unsigned int    v86_ds;
        !            72:        unsigned int    v86_fs;
        !            73:        unsigned int    v86_gs;
        !            74: };
        !            75: 
        !            76: /* The actual trap_state frame pushed by the processor
        !            77:    varies in size depending on where the trap came from.  */
        !            78: #define TR_KSIZE       ((int)&((struct trap_state*)0)->esp)
        !            79: #define TR_USIZE       ((int)&((struct trap_state*)0)->v86_es)
        !            80: #define TR_V86SIZE     sizeof(struct trap_state)
        !            81: 
        !            82: 
        !            83: #else ASSEMBLER
        !            84: 
        !            85: #include <mach/machine/asm.h>
        !            86: 
        !            87: #define UNEXPECTED_TRAP                                \
        !            88:        movw    %ss,%ax                         ;\
        !            89:        movw    %ax,%ds                         ;\
        !            90:        movw    %ax,%es                         ;\
        !            91:        movl    %esp,%eax                       ;\
        !            92:        pushl   %eax                            ;\
        !            93:        call    EXT(trap_dump_die)              ;\
        !            94: 
        !            95: 
        !            96: #endif ASSEMBLER
        !            97: 
        !            98: #include <mach/machine/trap.h>
        !            99: 
        !           100: #endif _I386_MOSS_TRAP_H_

unix.superglobalmegacorp.com

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