Annotation of Gnu-Mach/i386/util/trap.h, revision 1.1.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.