#include "subsegs.h"
#include "opcode/v850.h"
+/* sign-extend a 16-bit number */
+#define SEXT16(x) ((((x) & 0xffff) ^ (~ 0x7fff)) + 0x8000)
+
/* Temporarily holds the reloc in a cons expression. */
static bfd_reloc_code_real_type hold_cons_reloc;
\f
const char comment_chars[] = "#";
/* Characters which start a comment at the beginning of a line. */
-const char line_comment_chars[] = ";#-";
+const char line_comment_chars[] = ";#";
/* Characters which may be used to separate multiple commands on a
single line. */
char * ptr;
for (ptr = input_line_pointer; * ptr != '\n' && * ptr != 0; ptr ++)
- if (* ptr == ',')
+ if (* ptr == ',' && ptr[1] == '.')
break;
saved_c = * ptr;
case BFD_RELOC_LO16:
{
/* Truncate, then sign extend the value. */
- int temp = ex.X_add_number & 0xffff;
-
- /* XXX Assumes 32bit ints! */
- temp = (temp << 16) >> 16;
- ex.X_add_number = temp;
+ ex.X_add_number = SEXT16 (ex.X_add_number);
break;
}
case BFD_RELOC_HI16:
{
/* Truncate, then sign extend the value. */
- int temp = (ex.X_add_number >> 16) & 0xffff;
-
- /* XXX Assumes 32bit ints! */
- temp = (temp << 16) >> 16;
- ex.X_add_number = temp;
+ ex.X_add_number = SEXT16 (ex.X_add_number >> 16);
break;
}
temp += (ex.X_add_number >> 15) & 1;
- /* XXX Assumes 32bit ints! */
- temp = (temp << 16) >> 16;
- ex.X_add_number = temp;
+ ex.X_add_number = SEXT16 (temp);
break;
}