Annotation of researchv9/cmd/adb/sun/mchpr.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * code to print the name of a signal
                      3:  * machine-dependent for less than obvious reasons
                      4:  * this for mc68000
                      5:  */
                      6: 
                      7: #include "defs.h"
                      8: #include "space.h"
                      9: #include <signal.h>
                     10: #include <sys/param.h>
                     11: #include <sys/dir.h>
                     12: #include <sys/user.h>
                     13: 
                     14: static char *signals[] = {
                     15:        "",
                     16:        "hangup",
                     17:        "interrupt",
                     18:        "quit",
                     19:        "illegal instruction",
                     20:        "trace/BPT",
                     21:        "IOT",
                     22:        "EMT",
                     23:        "floating exception",
                     24:        "killed",
                     25:        "bus error",
                     26:        "memory fault",
                     27:        "bad system call",
                     28:        "broken pipe",
                     29:        "alarm call",
                     30:        "terminated",
                     31:        "signal 16",
                     32:        "stopped",
                     33:        "stop (tty)",
                     34:        "continue (signal)",
                     35:        "child termination",
                     36:        "stop (tty input)",
                     37:        "stop (tty output)",
                     38:        "input available (signal)",
                     39:        "cpu timelimit",
                     40:        "file sizelimit",
                     41:        "signal 26",
                     42:        "signal 27",
                     43:        "signal 28",
                     44:        "signal 29",
                     45:        "signal 30",
                     46:        "signal 31",
                     47: };
                     48: 
                     49: struct faultcode {
                     50:        int fcode;
                     51:        char *fname;
                     52: };
                     53: 
                     54: static struct faultcode illinames[] = {
                     55:        { 0x10, "illegal instruction fault" },
                     56:        { 0x20, "privilege violation fault" },
                     57:        { 0x34, "coprocesser protocol error fault" },
                     58:        { 0x84, "trap #1 fault" },
                     59:        { 0x88, "trap #2 fault" },
                     60:        { 0x8c, "trap #3 fault" },
                     61:        { 0x90, "trap #4 fault" },
                     62:        { 0x94, "trap #5 fault" },
                     63:        { 0x98, "trap #6 fault" },
                     64:        { 0x9c, "trap #7 fault" },
                     65:        { 0xa0, "trap #8 fault" },
                     66:        { 0xa4, "trap #9 fault" },
                     67:        { 0xa8, "trap #10 fault" },
                     68:        { 0xac, "trap #11 fault" },
                     69:        { 0xb0, "trap #12 fault" },
                     70:        { 0xb4, "trap #13 fault" },
                     71:        { 0xb8, "trap #14 fault" },
                     72:        { 0 }
                     73: };
                     74: 
                     75: static struct faultcode emtnames[] = {
                     76:        { 0x28, "line 1010 emulator trap" },
                     77:        { 0x2c, "line 1111 emulator trap" },
                     78:        { 0 }
                     79: };
                     80: 
                     81: static struct faultcode fpenames[] = {
                     82:        { 0x14, "integer divide by zero" },
                     83:        { 0x18, "CHK CHK2 instruction" },
                     84:        { 0x1c, "TRAPV cpTRAPcc TRAPcc instr" },
                     85:        { 0xc0, "branch or set on unordered cond" },
                     86:        { 0xc4, "floating inexact result" },
                     87:        { 0xc8, "floating divide by zero" },
                     88:        { 0xcc, "floating underflow" },
                     89:        { 0xd0, "floating operand error" },
                     90:        { 0xd4, "floating overflow" },
                     91:        { 0xd8, "floating Not-A-Number" },
                     92:        { 0 }
                     93: };
                     94: 
                     95: sigprint()
                     96: {
                     97:        register struct faultcode *fp;
                     98: 
                     99:        if ((signo>=0) && (signo<sizeof signals/sizeof signals[0]))
                    100:                prints(signals[signo]);
                    101:        switch (signo) {
                    102: 
                    103:        case SIGFPE:
                    104:                for (fp = fpenames; fp->fcode; fp++)
                    105:                        if (sigcode == fp->fcode) {
                    106:                                printf(" (%s)", fp->fname);
                    107:                                return;
                    108:                        }
                    109:                break;
                    110: 
                    111:        case SIGEMT:
                    112:                for (fp = emtnames; fp->fcode; fp++)
                    113:                        if (sigcode == fp->fcode) {
                    114:                                printf(" (%s)", fp->fname);
                    115:                                return;
                    116:                        }
                    117:                break;
                    118: 
                    119:        case SIGILL:
                    120:                for (fp = illinames; fp->fcode; fp++)
                    121:                        if (sigcode == fp->fcode) {
                    122:                                printf(" (%s)", fp->fname);
                    123:                                return;
                    124:                        }
                    125:                break;
                    126: 
                    127:        }
                    128: }
                    129: 
                    130: printpc()
                    131: {
                    132: 
                    133:        dot = (ADDR)rtow(rget(PC));
                    134:        psymoff((WORD)dot, INSTSP, "?%16t");
                    135:        printins(SYMF|INSTSP);
                    136:        printc(EOR);
                    137: }

unix.superglobalmegacorp.com

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