aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorK. Richard Pixley <rich@cygnus>1991-07-10 02:45:05 +0000
committerK. Richard Pixley <rich@cygnus>1991-07-10 02:45:05 +0000
commit9b856b4f9cff2def4d203ae1f1bd6bca222740b0 (patch)
tree629565b6f081321bdc558103b55bb5bcf9ead890 /gas
parentc7236eee8062d73b88453119bed619ca5ee1f95b (diff)
downloadgdb-9b856b4f9cff2def4d203ae1f1bd6bca222740b0.zip
gdb-9b856b4f9cff2def4d203ae1f1bd6bca222740b0.tar.gz
gdb-9b856b4f9cff2def4d203ae1f1bd6bca222740b0.tar.bz2
more v9 fixes. This time %hhi() and %hlo().
Diffstat (limited to 'gas')
-rw-r--r--gas/config/tc-sparc.c46
1 files changed, 38 insertions, 8 deletions
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 18eea27..88165e2 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -862,18 +862,35 @@ char *str;
} else if (c == 'l' && s[2] == 'o') {
the_insn.reloc = RELOC_LO10;
s+=3;
+ /* start-sanitize-v9 */
+#ifndef NO_V9
+ } else if (c == 'h'
+ && s[2] == 'h'
+ && s[3] == 'i') {
+ the_insn.reloc = RELOC_HHI22;
+ s += 4;
+
+ } else if (c == 'h'
+ && s[2] == 'l'
+ && s[3] == 'o') {
+ the_insn.reloc = RELOC_HLO10;
+ s += 4;
+#endif /* NO_V9 */
+ /* end-sanitize-v9 */
} else
break;
}
- /* Note that if the getExpression() fails, we will still have
- created U entries in the symbol table for the 'symbols'
- in the input string. Try not to create U symbols for
- registers, etc. */
+ /* Note that if the getExpression() fails, we
+ will still have created U entries in the
+ symbol table for the 'symbols' in the input
+ string. Try not to create U symbols for
+ registers, etc. */
{
- /* This stuff checks to see if the expression ends
- in +%reg If it does, it removes the register from
- the expression, and re-sets 's' to point to the
- right place */
+ /* This stuff checks to see if the
+ expression ends in +%reg If it does,
+ it removes the register from the
+ expression, and re-sets 's' to point
+ to the right place */
char *s1;
@@ -1220,6 +1237,10 @@ long val;
buf[2] = (val >> 8) & 0xff;
buf[3] = val & 0xff;
break;
+
+ case RELOC_HHI22:
+ val >> 32;
+ /* intentional fallthrough */
#endif /* NO_V9 */
/* end-sanitize-v9 */
@@ -1237,6 +1258,15 @@ long val;
case RELOC_22:
case RELOC_13:
#endif
+
+ /* start-sanitize-v9 */
+#ifndef NO_V9
+ case RELOC_HLO10:
+ val >>= 32;
+ /* intentional fallthrough */
+#endif /* NO_V9 */
+ /* end-sanitize-v9 */
+
case RELOC_LO10:
if(!fixP->fx_addsy) {
buf[2] |= (val >> 8) & 0x03;