summaryrefslogtreecommitdiff
path: root/utils/libmach/kdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/libmach/kdb.c')
-rw-r--r--utils/libmach/kdb.c340
1 files changed, 174 insertions, 166 deletions
diff --git a/utils/libmach/kdb.c b/utils/libmach/kdb.c
index 5536532a..80a4110b 100644
--- a/utils/libmach/kdb.c
+++ b/utils/libmach/kdb.c
@@ -150,130 +150,138 @@ static void loadcsr(Instr*, char*);
static void trap(Instr*, char*);
static struct opcode sparcop0[8] = {
- [0] "UNIMP", unimp, 0, /* page 137 */
- [2] "B", bra, 0, /* page 119 */
- [4] "SETHI", sethi, 0, /* page 104 */
- [6] "FB", fbra, 0, /* page 121 */
- [7] "CB", cbra, 0, /* page 123 */
+ "UNIMP", unimp, 0, /* page 137 */ /* 0 */
+ "", 0, 0, /* 1 */
+ "B", bra, 0, /* page 119 */ /* 2 */
+ "", 0, 0, /* 3 */
+ "SETHI", sethi, 0, /* page 104 */ /* 4 */
+ "", 0, 0, /* 5 */
+ "FB", fbra, 0, /* page 121 */ /* 6 */
+ "CB", cbra, 0, /* page 123 */ /* 7 */
};
static struct opcode sparcop2[64] = {
- [0x00] "ADD", add, 0, /* page 108 */
- [0x10] "ADDCC", add, 0,
- [0x08] "ADDX", add, 0,
- [0x18] "ADDXCC", add, 0,
-
- [0x20] "TADD", add, 0, /* page 109 */
- [0x22] "TADDCCTV", add, 0,
-
- [0x04] "SUB", add, 0, /* page 110 */
- [0x14] "SUBCC", cmp, 0,
- [0x0C] "SUBX", add, 0,
- [0x1C] "SUBXCC", add, 0,
-
- [0x21] "TSUB", add, 0, /* page 111 */
- [0x23] "TSUBCCTV", add, 0,
-
- [0x24] "MULSCC", add, 0, /* page 112 */
-
- [0x0A] "UMUL", add, 0, /* page 113 */
- [0x0B] "SMUL", add, 0,
- [0x1A] "UMULCC", add, 0,
- [0x1B] "SMULCC", add, 0,
-
- [0x0E] "UDIV", add, 0, /* page 115 */
- [0x0F] "SDIV", add, 0,
- [0x1E] "UDIVCC", add, 0,
- [0x1F] "SDIVCC", add, 0,
-
- [0x01] "AND", add, 0, /* page 106 */
- [0x11] "ANDCC", add, 0,
- [0x05] "ANDN", add, 0,
- [0x15] "ANDNCC", add, 0,
- [0x02] "OR", add, 0,
- [0x12] "ORCC", add, 0,
- [0x06] "ORN", add, 0,
- [0x16] "ORNCC", add, 0,
- [0x03] "XOR", add, 0,
- [0x13] "XORCC", add, 0,
- [0x07] "XORN", add, 0,
- [0x17] "XORNCC", add, 0,
-
- [0x25] "SLL", shift, 0, /* page 107 */
- [0x26] "SRL", shift, 0,
- [0x27] "SRA", shift, 0,
-
- [0x3C] "SAVE", add, 0, /* page 117 */
- [0x3D] "RESTORE", add, 0,
-
- [0x38] "JMPL", jmpl, 0, /* page 126 */
-
- [0x39] "RETT", add, 0, /* page 127 */
-
- [0x3A] "T", trap, 0, /* page 129 */
-
- [0x28] "rdy", rd, 0, /* page 131 */
- [0x29] "rdpsr", rd, 0,
- [0x2A] "rdwim", rd, 0,
- [0x2B] "rdtbr", rd, 0,
-
- [0x30] "wry", wr, 0, /* page 133 */
- [0x31] "wrpsr", wr, 0,
- [0x32] "wrwim", wr, 0,
- [0x33] "wrtbr", wr, 0,
-
- [0x3B] "flush", add, 0, /* page 138 */
-
- [0x34] "FPOP", fpop, 0, /* page 140 */
- [0x35] "FPOP", fpop, 0,
+ "ADD", add, 0, /* page 108 */ /* 0x00 */
+ "AND", add, 0, /* page 106 */ /* 0x01 */
+ "OR", add, 0, /* 0x02 */
+ "XOR", add, 0, /* 0x03 */
+ "SUB", add, 0, /* page 110 */ /* 0x04 */
+ "ANDN", add, 0, /* 0x05 */
+ "ORN", add, 0, /* 0x06 */
+ "XORN", add, 0, /* 0x07 */
+ "ADDX", add, 0, /* 0x08 */
+ "", 0, 0, /* 0x09 */
+ "UMUL", add, 0, /* page 113 */ /* 0x0a */
+ "SMUL", add, 0, /* 0x0b */
+ "SUBX", add, 0, /* 0x0c */
+ "", 0, 0, /* 0x0d */
+ "UDIV", add, 0, /* page 115 */ /* 0x0e */
+ "SDIV", add, 0, /* 0x0f */
+ "ADDCC", add, 0, /* 0x10 */
+ "ANDCC", add, 0, /* 0x11 */
+ "ORCC", add, 0, /* 0x12 */
+ "XORCC", add, 0, /* 0x13 */
+ "SUBCC", cmp, 0, /* 0x14 */
+ "ANDNCC", add, 0, /* 0x15 */
+ "ORNCC", add, 0, /* 0x16 */
+ "XORNCC", add, 0, /* 0x17 */
+ "ADDXCC", add, 0, /* 0x18 */
+ "", 0, 0, /* 0x19 */
+ "UMULCC", add, 0, /* 0x1a */
+ "SMULCC", add, 0, /* 0x1b */
+ "SUBXCC", add, 0, /* 0x1c */
+ "", 0, 0, /* 0x1d */
+ "UDIVCC", add, 0, /* 0x1e */
+ "SDIVCC", add, 0, /* 0x1f */
+ "TADD", add, 0, /* page 109 */ /* 0x20 */
+ "TSUB", add, 0, /* page 111 */ /* 0x21 */
+ "TADDCCTV", add, 0, /* 0x22 */
+ "TSUBCCTV", add, 0, /* 0x23 */
+ "MULSCC", add, 0, /* page 112 */ /* 0x24 */
+ "SLL", shift, 0, /* page 107 */ /* 0x25 */
+ "SRL", shift, 0, /* 0x26 */
+ "SRA", shift, 0, /* 0x27 */
+ "rdy", rd, 0, /* page 131 */ /* 0x28 */
+ "rdpsr", rd, 0, /* 0x29 */
+ "rdwim", rd, 0, /* 0x2a */
+ "rdtbr", rd, 0, /* 0x2b */
+ "", 0, 0, /* 0x2c */
+ "", 0, 0, /* 0x2d */
+ "", 0, 0, /* 0x2e */
+ "", 0, 0, /* 0x2f */
+ "wry", wr, 0, /* page 133 */ /* 0x30 */
+ "wrpsr", wr, 0, /* 0x31 */
+ "wrwim", wr, 0, /* 0x32 */
+ "wrtbr", wr, 0, /* 0x33 */
+ "FPOP", fpop, 0, /* page 140 */ /* 0x34 */
+ "FPOP", fpop, 0, /* 0x35 */
+ "", 0, 0, /* 0x36 */
+ "", 0, 0, /* 0x37 */
+ "JMPL", jmpl, 0, /* page 126 */ /* 0x38 */
+ "RETT", add, 0, /* page 127 */ /* 0x39 */
+ "T", trap, 0, /* page 129 */ /* 0x3a */
+ "flush", add, 0, /* page 138 */ /* 0x3b */
+ "SAVE", add, 0, /* page 117 */ /* 0x3c */
+ "RESTORE", add, 0, /* 0x3d */
};
static struct opcode sparcop3[64]={
- [0x09] "ldsb", load, 0, /* page 90 */
- [0x19] "ldsba", loada, 0,
- [0x0A] "ldsh", load, 0,
- [0x1A] "ldsha", loada, 0,
- [0x01] "ldub", load, 0,
- [0x11] "lduba", loada, 0,
- [0x02] "lduh", load, 0,
- [0x12] "lduha", loada, 0,
- [0x00] "ld", load, 0,
- [0x10] "lda", loada, 0,
- [0x03] "ldd", load, 0,
- [0x13] "ldda", loada, 0,
-
- [0x20] "ldf", loadf, 0, /* page 92 */
- [0x23] "lddf", loadf, 0,
- [0x21] "ldfsr", loadf,0,
-
- [0x30] "ldc", loadc, 0, /* page 94 */
- [0x33] "lddc", loadc, 0,
- [0x31] "ldcsr", loadcsr,0,
-
- [0x05] "stb", store, 0, /* page 95 */
- [0x15] "stba", storea, 0,
- [0x06] "sth", store, 0,
- [0x16] "stha", storea, 0,
- [0x04] "st", store, 0,
- [0x14] "sta", storea, 0,
- [0x07] "std", store, 0,
- [0x17] "stda", storea, 0,
-
- [0x24] "stf", storef, 0, /* page 97 */
- [0x27] "stdf", storef, 0,
- [0x25] "stfsr", storef,0,
- [0x26] "stdfq", storef,0,
-
- [0x34] "stc", loadc, 0, /* page 99 */
- [0x37] "stdc", loadc, 0,
- [0x35] "stcsr", loadcsr,0,
- [0x36] "stdcq", loadcsr,0,
-
- [0x0D] "ldstub", store, 0, /* page 101 */
- [0x1D] "ldstuba", storea, 0,
-
- [0x0F] "swap", load, 0, /* page 102 */
- [0x1F] "swapa", loada, 0,
+ "ld", load, 0, /* 0x00 */
+ "ldub", load, 0, /* 0x01 */
+ "lduh", load, 0, /* 0x02 */
+ "ldd", load, 0, /* 0x03 */
+ "st", store, 0, /* 0x04 */
+ "stb", store, 0, /* page 95 */ /* 0x05 */
+ "sth", store, 0, /* 0x06 */
+ "std", store, 0, /* 0x07 */
+ "", 0, 0, /* 0x08 */
+ "ldsb", load, 0, /* page 90 */ /* 0x09 */
+ "ldsh", load, 0, /* 0x0a */
+ "", 0, 0, /* 0x0b */
+ "", 0, 0, /* 0x0c */
+ "ldstub", store, 0, /* page 101 */ /* 0x0d */
+ "", 0, 0, /* 0x0e */
+ "swap", load, 0, /* page 102 */ /* 0x0f */
+ "lda", loada, 0, /* 0x10 */
+ "lduba", loada, 0, /* 0x11 */
+ "lduha", loada, 0, /* 0x12 */
+ "ldda", loada, 0, /* 0x13 */
+ "sta", storea, 0, /* 0x14 */
+ "stba", storea, 0, /* 0x15 */
+ "stha", storea, 0, /* 0x16 */
+ "stda", storea, 0, /* 0x17 */
+ "", 0, 0, /* 0x18 */
+ "ldsba", loada, 0, /* 0x19 */
+ "ldsha", loada, 0, /* 0x1a */
+ "", 0, 0, /* 0x1b */
+ "", 0, 0, /* 0x1c */
+ "ldstuba", storea, 0, /* 0x1d */
+ "", 0, 0, /* 0x1e */
+ "swapa", loada, 0, /* 0x1f */
+ "ldf", loadf, 0, /* page 92 */ /* 0x20 */
+ "ldfsr", loadf,0, /* 0x21 */
+ "", 0, 0, /* 0x22 */
+ "lddf", loadf, 0, /* 0x23 */
+ "stf", storef, 0, /* page 97 */ /* 0x24 */
+ "stfsr", storef,0, /* 0x25 */
+ "stdfq", storef,0, /* 0x26 */
+ "stdf", storef, 0, /* 0x27 */
+ "", 0, 0, /* 0x28 */
+ "", 0, 0, /* 0x29 */
+ "", 0, 0, /* 0x2a */
+ "", 0, 0, /* 0x2b */
+ "", 0, 0, /* 0x2c */
+ "", 0, 0, /* 0x2d */
+ "", 0, 0, /* 0x2e */
+ "", 0, 0, /* 0x2f */
+ "ldc", loadc, 0, /* page 94 */ /* 0x30 */
+ "ldcsr", loadcsr,0, /* 0x31 */
+ "", 0, 0, /* 0x32 */
+ "lddc", loadc, 0, /* 0x33 */
+ "stc", loadc, 0, /* page 99 */ /* 0x34 */
+ "stcsr", loadcsr,0, /* 0x35 */
+ "stdcq", loadcsr,0, /* 0x36 */
+ "stdc", loadc, 0, /* 0x37 */
};
#pragma varargck argpos bprint 2
@@ -534,60 +542,60 @@ unimp(Instr *i, char *m)
}
static char *bratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X9] "NE",
- [0X1] "E",
- [0XA] "G",
- [0X2] "LE",
- [0XB] "GE",
- [0X3] "L",
- [0XC] "GU",
- [0X4] "LEU",
- [0XD] "CC",
- [0X5] "CS",
- [0XE] "POS",
- [0X6] "NEG",
- [0XF] "VC",
- [0X7] "VS",
+ "N", /* 0x0 */
+ "E", /* 0x1 */
+ "LE", /* 0x2 */
+ "L", /* 0x3 */
+ "LEU", /* 0x4 */
+ "CS", /* 0x5 */
+ "NEG", /* 0x6 */
+ "VS", /* 0x7 */
+ "A", /* 0x8 */
+ "NE", /* 0x9 */
+ "G", /* 0xa */
+ "GE", /* 0xb */
+ "GU", /* 0xc */
+ "CC", /* 0xd */
+ "POS", /* 0xe */
+ "VC", /* 0xf */
};
static char *fbratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X7] "U",
- [0X6] "G",
- [0X5] "UG",
- [0X4] "L",
- [0X3] "UL",
- [0X2] "LG",
- [0X1] "NE",
- [0X9] "E",
- [0XA] "UE",
- [0XB] "GE",
- [0XC] "UGE",
- [0XD] "LE",
- [0XE] "ULE",
- [0XF] "O",
+ "N", /* 0x0 */
+ "NE", /* 0x1 */
+ "LG", /* 0x2 */
+ "UL", /* 0x3 */
+ "L", /* 0x4 */
+ "UG", /* 0x5 */
+ "G", /* 0x6 */
+ "U", /* 0x7 */
+ "A", /* 0x8 */
+ "E", /* 0x9 */
+ "UE", /* 0xa */
+ "GE", /* 0xb */
+ "UGE", /* 0xc */
+ "LE", /* 0xd */
+ "ULE", /* 0xe */
+ "O", /* 0xf */
};
static char *cbratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X7] "3",
- [0X6] "2",
- [0X5] "23",
- [0X4] "1",
- [0X3] "13",
- [0X2] "12",
- [0X1] "123",
- [0X9] "0",
- [0XA] "03",
- [0XB] "02",
- [0XC] "023",
- [0XD] "01",
- [0XE] "013",
- [0XF] "012",
+ "N", /* 0x0 */
+ "123", /* 0x1 */
+ "12", /* 0x2 */
+ "13", /* 0x3 */
+ "1", /* 0x4 */
+ "23", /* 0x5 */
+ "2", /* 0x6 */
+ "3", /* 0x7 */
+ "A", /* 0x8 */
+ "0", /* 0x9 */
+ "03", /* 0xa */
+ "02", /* 0xb */
+ "023", /* 0xc */
+ "01", /* 0xd */
+ "013", /* 0xe */
+ "012", /* 0xf */
};
static void