Thread View: gnu.gdb.bug
1 messages
1 total messages
Started by taylor
Sun, 04 Jun 1989 05:25
more gdb ns32k changes
Author: taylor
Date: Sun, 04 Jun 1989 05:25
Date: Sun, 04 Jun 1989 05:25
426 lines
14378 bytes
14378 bytes
Here are some additional changes for the ns32k versions of gdb.
The opcode table used by the disassembler has a number of errors. This
fixes a number of them.
And I got tired of seeing sCONDb, sCONDw, and sCONDd for the ``save
condition as boolean'' instructions rather than seeing the mnemonic for
the condition, so I decided to add them to the table. (It was just a
little cut and paste from ns32k-opcode.h in the gas directory...)
I also got tired of seeing numbers for the string options, the setcfg
options, the cinv options, and the restore/exit/save/enter options.
Thus, I put in the changes (modeled after the way the ns32k gas does it)
to print them symbolically in a format acceptable to gas.
There remain some instructions, such as lmr, smr, lpr{b,w,d}, and
spr{b,w,d} that should be modified to print the name of the register
rather than printing a number. It's very easily done using the same
mechanism as that used for the setcfg, cinv, restore... instructions.
But, I haven't done it yet. Maybe next weekend...
This message also includes the changes I sent earlier today about the
`movsu', `movus', and `or' instructions. Sorry.
RCS file: RCS/ns32k-opcode.h,v
retrieving revision 1.2
diff -c1 -r1.2 ns32k-opcode.h
*** /tmp/,RCSt1001037 Sun Jun 4 00:39:03 1989
--- ns32k-opcode.h Sun Jun 4 00:37:14 1989
***************
*** 75,77 ****
{ "addqd", 7,16, 0x0f, "2D1q" },
! { "addr", 6,16, 0x27, "1D2D" },
{ "adjspb", 11,16, 0x057c, "1B" },
--- 75,77 ----
{ "addqd", 7,16, 0x0f, "2D1q" },
! { "addr", 6,16, 0x27, "1A2D" },
{ "adjspb", 11,16, 0x057c, "1B" },
***************
*** 112,122 ****
{ "cased", 11,16, 0x77f, "1D" },
! { "cbitb", 14,24, 0x084e, "1B2D" },
! { "cbitw", 14,24, 0x094e, "1W2D" },
! { "cbitd", 14,24, 0x0b4e, "1D2D" },
! { "cbitib", 14,24, 0x0c4e, "1B2D" },
! { "cbitiw", 14,24, 0x0d4e, "1W2D" },
! { "cbitid", 14,24, 0x0f4e, "1D2D" },
{ "checkb", 11,24, 0x0ee, "2A3B1r" },
! { "checkw", 11,24, 0x1ee, "2A3B1r" },
{ "checkd", 11,24, 0x3ee, "2A3D1r" },
{ "cmpf", 14,24, 0x09be, "1F2F" },
--- 112,123 ----
{ "cased", 11,16, 0x77f, "1D" },
! { "cbitb", 14,24, 0x084e, "1B2A" },
! { "cbitw", 14,24, 0x094e, "1W2A" },
! { "cbitd", 14,24, 0x0b4e, "1D2A" },
! { "cbitib", 14,24, 0x0c4e, "1B2A" },
! { "cbitiw", 14,24, 0x0d4e, "1W2A" },
! { "cbitid", 14,24, 0x0f4e, "1D2A" },
{ "checkb", 11,24, 0x0ee, "2A3B1r" },
! { "checkw", 11,24, 0x1ee, "2A3W1r" },
{ "checkd", 11,24, 0x3ee, "2A3D1r" },
+ { "cinv", 15,24, 0x271e, "2D1C" },
{ "cmpf", 14,24, 0x09be, "1F2F" },
***************
*** 126,130 ****
{ "cmpd", 6,16, 0x07, "1D2D" },
! { "cmpmb", 14,24, 0x04ce, "1D2D3d" },
! { "cmpmw", 14,24, 0x05ce, "1D2D3d" },
! { "cmpmd", 14,24, 0x07ce, "1D2D3d" },
{ "cmpqb", 7,16, 0x1c, "2B1q" },
--- 127,131 ----
{ "cmpd", 6,16, 0x07, "1D2D" },
! { "cmpmb", 14,24, 0x04ce, "1A2A3d" },
! { "cmpmw", 14,24, 0x05ce, "1A2A3d" },
! { "cmpmd", 14,24, 0x07ce, "1A2A3d" },
{ "cmpqb", 7,16, 0x1c, "2B1q" },
***************
*** 132,137 ****
{ "cmpqd", 7,16, 0x1f, "2D1q" },
! { "cmpsb", 16,16, 0x040e, "1i" },
! { "cmpsw", 16,16, 0x050e, "1i" },
! { "cmpsd", 16,16, 0x070e, "1i" },
! { "cmpst", 16,16, 0x840e, "1i" },
{ "comb", 14,24, 0x344e, "1B2B" },
--- 133,138 ----
{ "cmpqd", 7,16, 0x1f, "2D1q" },
! { "cmpsb", 16,16, 0x040e, "1S" },
! { "cmpsw", 16,16, 0x050e, "1S" },
! { "cmpsd", 16,16, 0x070e, "1S" },
! { "cmpst", 16,16, 0x840e, "1S" },
{ "comb", 14,24, 0x344e, "1B2B" },
***************
*** 151,160 ****
{ "divd", 14,24, 0x3fce, "1D2D" },
! { "enter", 8,8, 0x82, "1i2d" },
! { "exit", 8,8, 0x92, "1i" },
! { "extb", 11,24, 0x02e, "2D3B1r4d" },
! { "extw", 11,24, 0x12e, "2D3W1r4d" },
! { "extd", 11,24, 0x32e, "2D3D1r4d" },
! { "extsb", 14,24, 0x0cce, "1D2B3i" },
! { "extsw", 14,24, 0x0dce, "1D2W3i" },
! { "extsd", 14,24, 0x0fce, "1D2D3i" },
{ "ffsb", 14,24, 0x046e, "1B2B" },
--- 152,161 ----
{ "divd", 14,24, 0x3fce, "1D2D" },
! { "enter", 8,8, 0x82, "1U2d" },
! { "exit", 8,8, 0x92, "1u" },
! { "extb", 11,24, 0x02e, "2A3B1r4d" },
! { "extw", 11,24, 0x12e, "2A3W1r4d" },
! { "extd", 11,24, 0x32e, "2A3D1r4d" },
! { "extsb", 14,24, 0x0cce, "1A2B3i" },
! { "extsw", 14,24, 0x0dce, "1A2W3i" },
! { "extsd", 14,24, 0x0fce, "1A2D3i" },
{ "ffsb", 14,24, 0x046e, "1B2B" },
***************
*** 178,182 ****
{ "insd", 11,24, 0x3ae, "2D3D1r4d" },
! { "inssb", 14,24, 0x08ce, "1B2D3i" },
! { "inssw", 14,24, 0x09ce, "1W2D3i" },
! { "inssd", 14,24, 0x0bce, "1D2D3i" },
{ "jsr", 11,16, 0x67f, "1A" },
--- 179,183 ----
{ "insd", 11,24, 0x3ae, "2D3D1r4d" },
! { "inssb", 14,24, 0x08ce, "1B2A3i" },
! { "inssw", 14,24, 0x09ce, "1W2A3i" },
! { "inssd", 14,24, 0x0bce, "1D2A3i" },
{ "jsr", 11,16, 0x67f, "1A" },
***************
*** 210,214 ****
{ "movlf", 14,24, 0x163e, "1L2F" },
! { "movmb", 14,24, 0x00ce, "1D2D3d" },
! { "movmw", 14,24, 0x00de, "1D2D3d" },
! { "movmd", 14,24, 0x00fe, "1D2D3d" },
{ "movqb", 7,16, 0x5c, "2B1q" },
--- 211,215 ----
{ "movlf", 14,24, 0x163e, "1L2F" },
! { "movmb", 14,24, 0x00ce, "1A2A3d" },
! { "movmw", 14,24, 0x01ce, "1A2A3d" },
! { "movmd", 14,24, 0x03ce, "1A2A3d" },
{ "movqb", 7,16, 0x5c, "2B1q" },
***************
*** 216,227 ****
{ "movqd", 7,16, 0x5f, "2B1q" },
! { "movsb", 16,16, 0x000e, "1i" },
! { "movsw", 16,16, 0x010e, "1i" },
! { "movsd", 16,16, 0x030e, "1i" },
! { "movst", 16,16, 0x800e, "1i" },
! { "movsub", 14,24, 0x0cae, "1A1A" },
! { "movsuw", 14,24, 0x0dae, "1A1A" },
! { "movsud", 14,24, 0x0fae, "1A1A" },
! { "movusb", 14,24, 0x1cae, "1A1A" },
! { "movusw", 14,24, 0x1dae, "1A1A" },
! { "movusd", 14,24, 0x1fae, "1A1A" },
{ "movxbd", 14,24, 0x1cce, "1B2D" },
--- 217,228 ----
{ "movqd", 7,16, 0x5f, "2B1q" },
! { "movsb", 16,16, 0x000e, "1S" },
! { "movsw", 16,16, 0x010e, "1S" },
! { "movsd", 16,16, 0x030e, "1S" },
! { "movst", 16,16, 0x800e, "1S" },
! { "movsub", 14,24, 0x0cae, "1A2A" },
! { "movsuw", 14,24, 0x0dae, "1A2A" },
! { "movsud", 14,24, 0x0fae, "1A2A" },
! { "movusb", 14,24, 0x1cae, "1A2A" },
! { "movusw", 14,24, 0x1dae, "1A2A" },
! { "movusd", 14,24, 0x1fae, "1A2A" },
{ "movxbd", 14,24, 0x1cce, "1B2D" },
***************
*** 246,250 ****
{ "notd", 14,24, 0x274e, "1D2D" },
! { "orb", 6,16, 0x18, "1B1B" },
! { "orw", 6,16, 0x19, "1W1W" },
! { "ord", 6,16, 0x1b, "1D1D" },
{ "quob", 14,24, 0x30ce, "1B2B" },
--- 247,251 ----
{ "notd", 14,24, 0x274e, "1D2D" },
! { "orb", 6,16, 0x18, "1B2B" },
! { "orw", 6,16, 0x19, "1W2W" },
! { "ord", 6,16, 0x1b, "1D2D" },
{ "quob", 14,24, 0x30ce, "1B2B" },
***************
*** 256,258 ****
{ "remd", 14,24, 0x37ce, "1D2D" },
! { "restore", 8,8, 0x72, "1i" },
{ "ret", 8,8, 0x12, "1d" },
--- 257,259 ----
{ "remd", 14,24, 0x37ce, "1D2D" },
! { "restore", 8,8, 0x72, "1u" },
{ "ret", 8,8, 0x12, "1d" },
***************
*** 259,261 ****
{ "reti", 8,8, 0x52, "" },
! { "rett", 8,8, 0x42, "" },
{ "rotb", 14,24, 0x004e, "1B2B" },
--- 260,262 ----
{ "reti", 8,8, 0x52, "" },
! { "rett", 8,8, 0x42, "1d" },
{ "rotb", 14,24, 0x004e, "1B2B" },
***************
*** 270,275 ****
{ "rxp", 8,8, 0x32, "1d" },
! { "sCONDb", 7,16, 0x3c, "2B1q" },
! { "sCONDw", 7,16, 0x3d, "2D1q" },
! { "sCONDd", 7,16, 0x3f, "2D1q" },
! { "save", 8,8, 0x62, "1i" },
{ "sbitb", 14,24, 0x184e, "1B2A" },
--- 271,321 ----
{ "rxp", 8,8, 0x32, "1d" },
! { "seqb", 11,16, 0x3c, "1B" },
! { "seqw", 11,16, 0x3d, "1W" },
! { "seqd", 11,16, 0x3f, "1D" },
! { "sneb", 11,16, 0xbc, "1B" },
! { "snew", 11,16, 0xbd, "1W" },
! { "sned", 11,16, 0xbf, "1D" },
! { "scsb", 11,16, 0x13c, "1B" },
! { "scsw", 11,16, 0x13d, "1W" },
! { "scsd", 11,16, 0x13f, "1D" },
! { "sccb", 11,16, 0x1bc, "1B" },
! { "sccw", 11,16, 0x1bd, "1W" },
! { "sccd", 11,16, 0x1bf, "1D" },
! { "shib", 11,16, 0x23c, "1B" },
! { "shiw", 11,16, 0x23d, "1W" },
! { "shid", 11,16, 0x23f, "1D" },
! { "slsb", 11,16, 0x2bc, "1B" },
! { "slsw", 11,16, 0x2bd, "1W" },
! { "slsd", 11,16, 0x2bf, "1D" },
! { "sgtb", 11,16, 0x33c, "1B" },
! { "sgtw", 11,16, 0x33d, "1W" },
! { "sgtd", 11,16, 0x33f, "1D" },
! { "sleb", 11,16, 0x3bc, "1B" },
! { "slew", 11,16, 0x3bd, "1W" },
! { "sled", 11,16, 0x3bf, "1D" },
! { "sfsb", 11,16, 0x43c, "1B" },
! { "sfsw", 11,16, 0x43d, "1W" },
! { "sfsd", 11,16, 0x43f, "1D" },
! { "sfcb", 11,16, 0x4bc, "1B" },
! { "sfcw", 11,16, 0x4bd, "1W" },
! { "sfcd", 11,16, 0x4bf, "1D" },
! { "slob", 11,16, 0x53c, "1B" },
! { "slow", 11,16, 0x53d, "1W" },
! { "slod", 11,16, 0x53f, "1D" },
! { "shsb", 11,16, 0x5bc, "1B" },
! { "shsw", 11,16, 0x5bd, "1W" },
! { "shsd", 11,16, 0x5bf, "1D" },
! { "sltb", 11,16, 0x63c, "1B" },
! { "sltw", 11,16, 0x63d, "1W" },
! { "sltd", 11,16, 0x63f, "1D" },
! { "sgeb", 11,16, 0x6bc, "1B" },
! { "sgew", 11,16, 0x6bd, "1W" },
! { "sged", 11,16, 0x6bf, "1D" },
! { "sutb", 11,16, 0x73c, "1B" },
! { "sutw", 11,16, 0x73d, "1W" },
! { "sutd", 11,16, 0x73f, "1D" },
! { "sufb", 11,16, 0x7bc, "1B" },
! { "sufw", 11,16, 0x7bd, "1W" },
! { "sufd", 11,16, 0x7bf, "1D" },
! { "save", 8,8, 0x62, "1U" },
{ "sbitb", 14,24, 0x184e, "1B2A" },
***************
*** 280,287 ****
{ "sbitid", 14,24, 0x1f4e, "1D2A" },
! { "setcfg", 15,24, 0x0b0e, "5D1q" },
! { "sfsr", 14,24, 0x673e, "5D1D" },
! { "skpsb", 16,16, 0x0c0e, "1i" },
! { "skpsw", 16,16, 0x0d0e, "1i" },
! { "skpsd", 16,16, 0x0f0e, "1i" },
! { "skpst", 16,16, 0x8c0e, "1i" },
{ "smr", 15,24, 0x0f1e, "2D1q" },
--- 326,333 ----
{ "sbitid", 14,24, 0x1f4e, "1D2A" },
! { "setcfg", 15,24, 0x0b0e, "5D1O" },
! { "sfsr", 14,24, 0x373e, "5D1D" },
! { "skpsb", 16,16, 0x0c0e, "1S" },
! { "skpsw", 16,16, 0x0d0e, "1S" },
! { "skpsd", 16,16, 0x0f0e, "1S" },
! { "skpst", 16,16, 0x8c0e, "1S" },
{ "smr", 15,24, 0x0f1e, "2D1q" },
***************
*** 320,321 ****
--- 366,378 ----
{ "xord", 6,16, 0x3b, "1D2D" },
+
+ #if defined(NS32381)
+ { "dotf", 14,24, 0x0dfe, "1F2F" },
+ { "dotl", 14,24, 0x0cfe, "1L2L" },
+ { "logbf", 14,24, 0x15fe, "1F2F" },
+ { "logbl", 14,24, 0x14fe, "1L2L" },
+ { "polyf", 14,24, 0x09fe, "1F2F" },
+ { "polyl", 14,24, 0x08fe, "1L2L" },
+ { "scalbf", 14,24, 0x11fe, "1F2F" },
+ { "scalbl", 14,24, 0x10fe, "1L2L" },
+ #endif
}; /* notstrs */
===================================================================
RCS file: RCS/ns32k-pinsn.c,v
retrieving revision 1.1
diff -c1 -r1.1 ns32k-pinsn.c
*** /tmp/,RCSt1001037 Sun Jun 4 00:39:05 1989
--- ns32k-pinsn.c Sun Jun 4 00:13:26 1989
***************
*** 36,38 ****
--- 36,128 ----
+
+ struct option {
+ char *pattern; /* the option itself */
+ unsigned long value; /* binary value of the option */
+ unsigned long match; /* these bits must match */
+ };
+
+
+ struct option opt1[]= /* restore, exit */
+ {
+ { "r0", 0x80, 0x80 },
+ { "r1", 0x40, 0x40 },
+ { "r2", 0x20, 0x20 },
+ { "r3", 0x10, 0x10 },
+ { "r4", 0x08, 0x08 },
+ { "r5", 0x04, 0x04 },
+ { "r6", 0x02, 0x02 },
+ { "r7", 0x01, 0x01 },
+ { 0 , 0x00, 0x00 }
+ };
+
+ struct option opt2[]= /* save, enter */
+ {
+ { "r0", 0x01, 0x01 },
+ { "r1", 0x02, 0x02 },
+ { "r2", 0x04, 0x04 },
+ { "r3", 0x08, 0x08 },
+ { "r4", 0x10, 0x10 },
+ { "r5", 0x20, 0x20 },
+ { "r6", 0x40, 0x40 },
+ { "r7", 0x80, 0x80 },
+ { 0 , 0x00, 0x00 }
+ };
+
+ struct option opt3[]= /* setcfg */
+ {
+ { "c", 0x8, 0x8 },
+ { "m", 0x4, 0x4 },
+ { "f", 0x2, 0x2 },
+ { "i", 0x1, 0x1 },
+ { 0 , 0x0, 0x0 }
+ };
+
+ struct option opt4[]= /* cinv */
+ {
+ { "a", 0x4, 0x4 },
+ { "i", 0x2, 0x2 },
+ { "d", 0x1, 0x1 },
+ { 0 , 0x0, 0x0 }
+ };
+
+ struct option opt5[]= /* string inst */
+ {
+ { "b", 0x1, 0x1 },
+ { "u", 0x6, 0x6 },
+ { "w", 0x2, 0x2 },
+ { 0 , 0x0, 0x0 }
+ };
+
/*
+ * figure out which options are present
+ */
+ void
+ optlist(options, optionP, result)
+ int options;
+ struct option *optionP;
+ char *result;
+ {
+ if (options == 0) {
+ sprintf(result, "[]");
+ return;
+ }
+ sprintf(result, "[");
+
+ for (; (options != 0) && optionP->pattern; optionP++) {
+ if ((options & optionP->match) == optionP->value) {
+ /* we found a match, update result and options */
+ strcat(result, optionP->pattern);
+ options &= ~optionP->value;
+ if (options != 0) /* more options to come */
+ strcat(result, ",");
+ }
+ }
+ if (options != 0)
+ strcat(result, "undefined");
+
+ strcat(result, "]");
+ }
+
+
+ /*
* extract "count" bits starting "offset" bits
***************
*** 367,368 ****
--- 457,483 ----
sprintf (result, "0x%x", Ivalue);
+ break;
+ case 'u':
+ Ivalue = bit_extract (buffer, *aoffsetp, 8);
+ optlist(Ivalue, opt1, result);
+ *aoffsetp += 8;
+ break;
+ case 'U':
+ Ivalue = bit_extract(buffer, *aoffsetp, 8);
+ optlist(Ivalue, opt2, result);
+ *aoffsetp += 8;
+ break;
+ case 'O':
+ Ivalue = bit_extract(buffer, ioffset-4, 4);
+ optlist(Ivalue, opt3, result);
+ ioffset -= 4;
+ break;
+ case 'C':
+ Ivalue = bit_extract(buffer, ioffset-4, 4);
+ optlist(Ivalue, opt4, result);
+ ioffset -= 4;
+ break;
+ case 'S':
+ Ivalue = bit_extract(buffer, *aoffsetp, 8);
+ optlist(Ivalue, opt5, result);
+ *aoffsetp += 8;
break;
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads