Update to SPARC Version 9 Draft 1.0.4.
This commit is contained in:
parent
93fd00fbbf
commit
71703b0735
3 changed files with 817 additions and 766 deletions
|
@ -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
|
||||
|
|
1467
bfd/sparc-opc.c
1467
bfd/sparc-opc.c
File diff suppressed because it is too large
Load diff
|
@ -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))) {
|
||||
|
|
Loading…
Reference in a new issue