Annotation of Gnu-Mach/i386/util/trap_dump.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1994 The University of Utah and
                      3:  * the Center for Software Science (CSS).  All rights reserved.
                      4:  *
                      5:  * Permission to use, copy, modify and distribute this software and its
                      6:  * documentation is hereby granted, provided that both the copyright
                      7:  * notice and this permission notice appear in all copies of the
                      8:  * software, derivative works or modified versions, and any portions
                      9:  * thereof, and that both notices appear in supporting documentation.
                     10:  *
                     11:  * THE UNIVERSITY OF UTAH AND CSS ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
                     12:  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSS DISCLAIM ANY LIABILITY OF
                     13:  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     14:  *
                     15:  * CSS requests users of this software to return to [email protected] any
                     16:  * improvements that they make and grant CSS redistribution rights.
                     17:  *
                     18:  *      Author: Bryan Ford, University of Utah CSS
                     19:  */
                     20: 
                     21: #include <mach/machine/eflags.h>
                     22: #include <mach/machine/proc_reg.h>
                     23: 
                     24: #include "vm_param.h"
                     25: #include "trap.h"
                     26: 
                     27: void trap_dump(struct trap_state *st)
                     28: {
                     29:        short flags;
                     30:        int from_user = (st->cs & 3) || (st->eflags & EFL_VM);
                     31:        unsigned *dump_sp = 0;
                     32:        int i;
                     33: 
                     34:        printf("Dump of trap_state at %08x:\n", st);
                     35:        printf("EAX %08x EBX %08x ECX %08x EDX %08x\n",
                     36:                st->eax, st->ebx, st->ecx, st->edx);
                     37:        printf("ESI %08x EDI %08x EBP %08x ESP %08x\n",
                     38:                st->esi, st->edi, st->ebp,
                     39:                from_user ? st->esp : (unsigned)&st->esp);
                     40:        printf("EIP %08x EFLAGS %08x\n", st->eip, st->eflags);
                     41:        printf("CS %04x SS %04x DS %04x ES %04x FS %04x GS %04x\n",
                     42:                st->cs & 0xffff, from_user ? st->ss & 0xffff : get_ss(),
                     43:                st->ds & 0xffff, st->es & 0xffff,
                     44:                st->fs & 0xffff, st->gs & 0xffff);
                     45:        printf("v86:            DS %04x ES %04x FS %04x GS %04x\n",
                     46:                st->v86_ds & 0xffff, st->v86_es & 0xffff,
                     47:                st->v86_gs & 0xffff, st->v86_gs & 0xffff);
                     48:        printf("trapno %d, error %08x, from %s mode\n",
                     49:                st->trapno, st->err, from_user ? "user" : "kernel");
                     50:        if (st->trapno == T_PAGE_FAULT)
                     51:                printf("page fault linear address %08x\n", st->cr2);
                     52: 
                     53:        /* Dump the top of the stack too.  */
                     54:        if (!from_user)
                     55:        {
                     56:                for (i = 0; i < 32; i++)
                     57:                {
                     58:                        printf("%08x%c", (&st->esp)[i],
                     59:                                ((i & 7) == 7) ? '\n' : ' ');
                     60:                }
                     61:        }
                     62: }
                     63: 

unix.superglobalmegacorp.com

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