V850E_IMMEDIATE.
	* gas/v850/basic.exp: Allow for variations in reloc names.
	* gas/v850/split-lo16.d: Likewise.
	* gas/v850/v850e1.s: Add more tests of the PREPARE insn.
	* gas/v850/v850e1.d: Update expected disassembly.
	* v850-dis.c (get_operand_value): Sign extend V850E_IMMEDIATE
	values.
	* v850-opc.c (IMM16LO): Add V850_OPERAND_SIGNED attribute.
+2013-01-15  Nick Clifton  <nickc@redhat.com>
+
+       * config/tc-v850.c (md_assemble): Allow signed values for
+       V850E_IMMEDIATE.
+
 2013-01-11  Sean Keys  <skeys@ipdatasys.com>
 
        * config/tc-xgate.c (md_begin): Fix mistake made when going from
 
                    }
                  if (operand->flags & V850E_IMMEDIATE16)
                    {
-                     if (ex.X_add_number & 0xffff0000)
+                     if ((ex.X_add_number & 0xffff0000)
+                         && ((ex.X_add_number & 0xffff0000) != 0xffff0000))
                        {
                          errmsg = _("constant too big to fit into instruction");
                          goto error;
 
+2013-01-15  Nick Clifton  <nickc@redhat.com>
+
+       * gas/v850/basic.exp: Allow for variations in reloc names.
+       * gas/v850/split-lo16.d: Likewise.
+
+       * gas/v850/v850e1.s: Add more tests of the PREPARE insn.
+       * gas/v850/v850e1.d: Update expected disassembly.
+
 2013-01-14  Alan Modra  <amodra@gmail.com>
 
        * gas/v850/basic.exp (reloc part 1): Pass -mgcc-abi to gas.
 
 
        while 1 {
            expect {
-               -re "^00000002\[^\n\]*R_V850_LO16\[^\n\]*\n"
+               -re "^00000002\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
                        { set x [expr $x+1] }
-               -re "^00000006\[^\n\]*R_V850_HI16_S\[^\n\]*\n"
+               -re "^00000006\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
                        { set x [expr $x+1] }
-               -re "^0000000a\[^\n\]*R_V850_HI16\[^\n\]*\n"
+               -re "^0000000a\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
                        { set x [expr $x+1] }
-               -re "^0000000e\[^\n\]*R_V850_ZDA_16_16_OFFSET\[^\n\]*\n"
+               -re "^0000000e\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
                        { set x [expr $x+1] }
-               -re "^00000012\[^\n\]*R_V850_TDA_16_16_OFFSET\[^\n\]*\n"
+               -re "^00000012\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
                        { set x [expr $x+1] }
-               -re "^00000016\[^\n\]*R_V850_SDA_16_16_OFFSET\[^\n\]*\n"
+               -re "^00000016\[^\n\]*R_V8\[A-Z0-9_\]+\[^\n\]*\n"
                        { set x [expr $x+1] }
                -re "\[^\n\]*\n"                                { }
                timeout                 { perror "timeout\n"; break }
 
 #...
 00000000 <.*>:
    0:  40 0e 00 00     movhi   0, r0, r1
-                       2: R_V850_HI16_S        foo
+                       2: R_V8.*       foo
    4:  01 16 00 00     addi    0, r1, r2
-                       6: R_V850_LO16  foo
+                       6: R_V8.*       foo
    8:  01 17 00 00     ld\.b   0\[r1\], r2
-                       a: R_V850_LO16  foo
+                       a: R_V8.*       foo
    c:  81 17 01 00     ld\.bu  0\[r1\], r2
-                       c: R_V850_LO16_SPLIT_OFFSET     foo
+                       c: R_V8.*       foo
   10:  a1 17 45 23     ld\.bu  9029\[r1\], r2
   14:  81 17 57 34     ld\.bu  13398\[r1\], r2
   18:  20 57 01 00     ld.w    0\[r0\], r10
 
 0x0+7a 83 00  [        ]*zxb   sp
 0x0+7c c4 00  [        ]*zxh   gp
 0x0+7e 63 ff 9d 00[    ]*st.w  lp, 156\[sp\]
+0x0+82 80 07 0b e8 f6 ff[      ]*prepare       {r20, r24 - r26}, 0, -10
 
        zxb     r3
        zxh     r4
        st.w    lp, 156[sp]
+       prepare {r20,r24,r25,r26},0,-10
 
+2013-01-15  Nick Clifton  <nickc@redhat.com>
+
+       * v850-dis.c (get_operand_value): Sign extend V850E_IMMEDIATE
+       values.
+       * v850-opc.c (IMM16LO): Add V850_OPERAND_SIGNED attribute.
+
 2013-01-14  Will Newton <will.newton@imgtec.com>
 
        * metag-dis.c (REG_WIDTH): Increase to 64.
 
 
          if (operand->flags & V850E_IMMEDIATE16HI)
            value <<= 16;
+         else if (value & 0x8000)
+           value |= (-1L << 16);
 
          return value;
        }
 
 #define IMM16  (I16 + 1)
   { 16, 32, NULL, NULL, V850E_IMMEDIATE16, BFD_RELOC_16 },
 
-/* The 16 bit immediate following a 32 bit instruction.  */
+/* The signed 16 bit immediate following a prepare instruction.  */
 #define IMM16LO        (IMM16 + 1)
-  { 16, 32, NULL, NULL, V850E_IMMEDIATE16, BFD_RELOC_LO16 },
+  { 16, 32, NULL, NULL, V850E_IMMEDIATE16 | V850_OPERAND_SIGNED, BFD_RELOC_LO16 },
 
 /* The hi 16 bit immediate following a 32 bit instruction.  */
 #define IMM16HI        (IMM16LO + 1)