Small fixes for d30v assembler

Nick Clifton nickc@cygnus.com
Mon Mar 27 12:18:00 GMT 2000


Hi Guys,

  I have checked in the patch below to fix a couple of bugs in the
  D30V assembler that were thrown up by the D30V simulator test suite.

Cheers
	Nick


2000-03-27  Nick Clifton  <nickc@cygnus.com>

	* d30v.h (SHORT_A1): Fix value.
	(SHORT_AR): Renumber so that it is at the end of the list of short
	instructions, not the end of the list of long instructions.

Index: include/opcode/d30v.h
===================================================================
RCS file: /cvs/src//src/include/opcode/d30v.h,v
retrieving revision 1.4
diff -p -r1.4 d30v.h
*** d30v.h	2000/03/02 23:01:40	1.4
--- d30v.h	2000/03/27 20:14:22
*************** struct d30v_opcode
*** 101,107 ****
  #define SHORT_A5      36      /* SHORT_A with a 5-bit immediate instead of 6 */
  #define SHORT_CMP     38      /* special form for CMPcc */
  #define SHORT_CMPU    40      /* special form for CMPUcc */
! #define SHORT_A1      48      /* special form of SHORT_A for MACa opcodes where a=1 */
  #define SHORT_AA      44      /* SHORT_A with the first register an accumulator */
  #define SHORT_RA      46      /* SHORT_A with the second register an accumulator */
  #define SHORT_MODINC  48      
--- 101,107 ----
  #define SHORT_A5      36      /* SHORT_A with a 5-bit immediate instead of 6 */
  #define SHORT_CMP     38      /* special form for CMPcc */
  #define SHORT_CMPU    40      /* special form for CMPUcc */
! #define SHORT_A1      42      /* special form of SHORT_A for MACa opcodes where a=1 */
  #define SHORT_AA      44      /* SHORT_A with the first register an accumulator */
  #define SHORT_RA      46      /* SHORT_A with the second register an accumulator */
  #define SHORT_MODINC  48      
*************** struct d30v_opcode
*** 111,130 ****
  #define SHORT_UF      52
  #define SHORT_A2      53
  #define SHORT_NONE    55      /* no operands */
! #define LONG          56
! #define LONG_U        57      /* unary LONG */
! #define LONG_Ur       58      /* LONG pc-relative */
! #define LONG_CMP      59      /* special form for CMPcc and CMPUcc */
! #define LONG_M        60      /* Memory long for ldb, stb */
! #define LONG_M2       61      /* Memory long for ld2w, st2w */
! #define LONG_2        62      /* LONG with 2 operands; jmptnz */
! #define LONG_2r       63      /* LONG with 2 operands; bratnz */
! #define LONG_2b       64      /* LONG_2 with modifier of 3 */
! #define LONG_2br      65      /* LONG_2r with modifier of 3 */
! #define LONG_D        66      /* for DJMPI*/
! #define LONG_Dr       67      /* for DBRAI*/
! #define LONG_Dbr      68      /* for repeati*/
! #define SHORT_AR	69	/* like SHORT_AA but only accept register as third parameter  */
  
    /* the execution unit(s) used */
    int unit;
--- 111,130 ----
  #define SHORT_UF      52
  #define SHORT_A2      53
  #define SHORT_NONE    55      /* no operands */
! #define SHORT_AR      56      /* like SHORT_AA but only accept register as third parameter  */
! #define LONG          57
! #define LONG_U        58      /* unary LONG */
! #define LONG_Ur       59      /* LONG pc-relative */
! #define LONG_CMP      60      /* special form for CMPcc and CMPUcc */
! #define LONG_M        61      /* Memory long for ldb, stb */
! #define LONG_M2       62      /* Memory long for ld2w, st2w */
! #define LONG_2        63      /* LONG with 2 operands; jmptnz */
! #define LONG_2r       64      /* LONG with 2 operands; bratnz */
! #define LONG_2b       65      /* LONG_2 with modifier of 3 */
! #define LONG_2br      66      /* LONG_2r with modifier of 3 */
! #define LONG_D        67      /* for DJMPI */
! #define LONG_Dr       68      /* for DBRAI */
! #define LONG_Dbr      69      /* for repeati */
  
    /* the execution unit(s) used */
    int unit;


2000-03-27  Nick Clifton  <nickc@cygnus.com>

	* d30v-opc.c (d30v_format_table): Move SHORT_AR to end of list of
	short instructions, from end of list of long instructions.

Index: opcodes/d30v-opc.c
===================================================================
RCS file: /cvs/src//src/opcodes/d30v-opc.c,v
retrieving revision 1.4
diff -p -r1.4 d30v-opc.c
*** d30v-opc.c	2000/03/02 23:01:40	1.4
--- d30v-opc.c	2000/03/27 20:14:55
*************** const struct d30v_format d30v_format_tab
*** 468,473 ****
--- 468,474 ----
    { SHORT_A2, 0, { Ra2, Rb, Rc } },		/* Ra2,Rb,Rc */
    { SHORT_A2, 2, { Ra2, Rb, IMM6 } },		/* Ra2,Rb,imm6 */
    { SHORT_NONE, 0, { 0 } },			/* no operands (nop, reit) */
+   { SHORT_AR, 0, { Aa, Rb, Rc } },		/* Aa,Rb,Rc */
    { LONG, 2, { Ra, Rb, IMM32 } },		/* Ra,Rb,imm32 */
    { LONG_U, 2, { IMM32 } },			/* imm32 */
    { LONG_Ur, 2, { REL32 } },			/* rel32 */
*************** const struct d30v_format d30v_format_tab
*** 481,487 ****
    { LONG_D, 2, { REL6S3, IMM32 } },		/* rel6s3,imm32 */
    { LONG_Dr, 2, { REL6S3, REL32 } },		/* rel6s3,rel32 */
    { LONG_Dbr, 2, { IMM6U, REL32 } },		/* imm6,rel32 */
-   { SHORT_AR, 0, { Aa, Rb, Rc } },		/* Aa,Rb,Rc */
    { 0, 0, { 0 } },
  };
  
--- 482,487 ----


More information about the Binutils mailing list