Update to SPARC Version 9 Draft 1.0.4.

This commit is contained in:
Jim Wilson 1992-08-31 17:14:50 +00:00
parent 93fd00fbbf
commit 71703b0735
3 changed files with 817 additions and 766 deletions

View File

@ -1,3 +1,7 @@
Mon Aug 31 10:11:37 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
* sparc-opc.c: Rigorously updated to match architecture manual.
Mon Aug 31 08:07:58 1992 Steve Chamberlain (sac@thepub.cygnus.com)
* aoutx.h (aout<n>swap_ext_reloc_out), bout.c

File diff suppressed because it is too large Load Diff

View File

@ -709,6 +709,10 @@ char *str;
the_insn.reloc = RELOC_11;
goto immediate;
case 'j':
the_insn.reloc = RELOC_10;
goto immediate;
case 'k':
the_insn.reloc = RELOC_WDISP2_14;
the_insn.pcrel = 1;
@ -733,13 +737,6 @@ char *str;
}
break;
case 'Y':
if (strncmp(s, "%amr", 4) == 0) {
s += 4;
continue;
}
break;
case 'z':
if (*s == ' ') {
++s;
@ -807,13 +804,6 @@ char *str;
}
break;
case 'E':
if (strncmp(s, "%modes", 6) == 0) {
s += 6;
continue;
}
break;
case 'W':
if (strncmp(s, "%tick", 5) == 0) {
s += 5;
@ -987,13 +977,6 @@ char *str;
}
break;
/* start-sanitize-v9 */
#ifndef NO_V9
case 'j':
case 'u':
case 'U':
#endif /* NO_V9 */
/* end-sanitize-v9 */
case 'e': /* next operand is a floating point register */
case 'v':
case 'V':
@ -1029,16 +1012,14 @@ char *str;
mask = 10 * mask + (*s - '0');
} /* read the number */
if ((*args == 'u'
|| *args == 'v'
if ((*args == 'v'
|| *args == 'B'
|| *args == 'H')
&& (mask & 1)) {
break;
} /* register must be even numbered */
if ((*args == 'U'
|| *args == 'V'
if ((*args == 'V'
|| *args == 'R'
|| *args == 'J')
&& (mask & 3)) {
@ -1085,15 +1066,6 @@ char *str;
} /* on error */
switch (*args) {
/* start-sanitize-v9 */
#ifndef NO_V9
case 'j':
case 'u':
case 'U':
opcode |= (mask & 0x1f) << 9;
continue;
#endif /* NO_V9 */
/* end-sanitize-v9 */
case 'v':
case 'V':
@ -1271,17 +1243,23 @@ char *str;
/* start-sanitize-v9 */
#ifndef NO_V9
case 's':
if (strncmp (s, "%usr", 4) != 0)
break;
s += 4;
continue;
case 'o':
if (strncmp (s, "%asi", 4) != 0)
break;
s += 4;
continue;
case 's':
if (strncmp (s, "%fprs", 5) != 0)
break;
s+= 5;
continue;
case 'E':
if (strncmp (s, "%ccr", 4) != 0)
break;
s+= 4;
continue;
#endif /* NO_V9 */
/* end-sanitize-v9 */
@ -1540,6 +1518,16 @@ long val;
buf[3] = val & 0xff;
break;
case RELOC_10:
if (((val > 0) && (val & ~0x3ff))
|| ((val < 0) && (~(val - 1) & ~0x3ff))) {
as_bad("relocation overflow.");
} /* on overflow */
buf[2] = (val >> 8) & 0x3;
buf[3] = val & 0xff;
break;
case RELOC_WDISP2_14:
if (((val > 0) && (val & ~0x3fffc))
|| ((val < 0) && (~(val - 1) & ~0x3fffc))) {