This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Add Toshiba TX49 support


Eric Christopher wrote:

-march=tx49 would be appreciated :)
Here's an updated patch, it uses tx49 inpreference to r4900. I added the deret
instruction, that Eric pointed out I'd missed (ta).

nathan

--
Dr Nathan Sidwell   ::   http://www.codesourcery.com   ::   CodeSourcery LLC
         'But that's a lie.' - 'Yes it is. What's your point?'
nathan@codesourcery.com : http://www.cs.bris.ac.uk/~nathan/ : nathan@acm.org

bfd/ChangeLog
2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>

	* aoutx.h (aout_@var{size}_machine_type): Add bfd_mach_mips_tx49.
	* archures.c (bfd_mach_mips_tx49): New #define.
	* bfd-in2.h: Regenerated.
	* cpu-mips.h (I_mips_tx49): New enum value.
	(arch_info_struct): Add tx49
	* elfxx-mips.c (elf_mips_mach): Add E_MIPS_MACH_TX49.
	(_bfd_mips_elf_final_write_processing): Add bfd_mach_mips_tx49.

binutils/ChangeLog
2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>

	* readelf.c (get_machine_flags): Add E_MIPS_MACH_TX49.

gas/ChangeLog
2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>

	* config/tc-mips.c (mips_cpu_info_table): Add tx49.
	* doc/c-mips.texi (-arch=tx49): Document.

gas/testsuite/ChangeLog
2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>

	* gas/mips/mips.exp: Add tx49 test.
	* gas/mips/tx49.[sd]: Test tx49 instructions.

include/ChangeLog
2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>

 	* elf/mips.h (E_MIPS_MACH_TX49): New machine variant.
	* opcode/mips.h (INSN_TX49): New variant mask.
	(CPU_TX49): New cpu number.
	(OPCODE_IS_MEMBER): Adjust.

opcodes/ChangeLog
2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>

	* mips-dis.c (mips_isa_type): Add bfd_mach_mips_tx49.
	* mips-opc.c (T4): New shorthand mask.
	(mips_builtin_opcodes): Enable tx49 specific variants.

Index: bfd/ChangeLog
===================================================================
RCS file: /cvs/src/src/bfd/ChangeLog,v
retrieving revision 1.1809
diff -c -3 -p -r1.1809 ChangeLog
*** bfd/ChangeLog	11 Nov 2002 05:05:22 -0000	1.1809
--- bfd/ChangeLog	19 Nov 2002 14:12:13 -0000
***************
*** 1,3 ****
--- 1,13 ----
+ 2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>
+ 
+ 	* aoutx.h (aout_@var{size}_machine_type): Add bfd_mach_mips_tx49.
+ 	* archures.c (bfd_mach_mips_tx49): New #define.
+ 	* bfd-in2.h: Regenerated.
+ 	* cpu-mips.h (I_mips_tx49): New enum value.
+ 	(arch_info_struct): Add tx49
+ 	* elfxx-mips.c (elf_mips_mach): Add E_MIPS_MACH_TX49.
+ 	(_bfd_mips_elf_final_write_processing): Add bfd_mach_mips_tx49.
+ 
  2002-11-11  Kazu Hirata  <kazu@cs.umass.edu>
  
  	* coff-h8300.c: Fix formatting.
Index: bfd/aoutx.h
===================================================================
RCS file: /cvs/src/src/bfd/aoutx.h,v
retrieving revision 1.36
diff -c -3 -p -r1.36 aoutx.h
*** bfd/aoutx.h	25 Oct 2002 02:45:53 -0000	1.36
--- bfd/aoutx.h	19 Nov 2002 14:12:25 -0000
*************** NAME(aout,machine_type) (arch, machine, 
*** 791,796 ****
--- 791,797 ----
  	case bfd_mach_mips4400:
  	case bfd_mach_mips4600:
  	case bfd_mach_mips4650:
+ 	case bfd_mach_mips_tx49:
  	case bfd_mach_mips8000:
  	case bfd_mach_mips10000:
  	case bfd_mach_mips12000:
Index: bfd/archures.c
===================================================================
RCS file: /cvs/src/src/bfd/archures.c,v
retrieving revision 1.58
diff -c -3 -p -r1.58 archures.c
*** bfd/archures.c	6 Nov 2002 13:26:26 -0000	1.58
--- bfd/archures.c	19 Nov 2002 14:12:27 -0000
*************** DESCRIPTION
*** 134,139 ****
--- 134,140 ----
  .#define bfd_mach_mips4400		4400
  .#define bfd_mach_mips4600		4600
  .#define bfd_mach_mips4650		4650
+ .#define bfd_mach_mips_tx4900		4900 {* Toshiba TX49 *}
  .#define bfd_mach_mips5000		5000
  .#define bfd_mach_mips5400		5400
  .#define bfd_mach_mips5500		5500
Index: bfd/bfd-in2.h
===================================================================
RCS file: /cvs/src/src/bfd/bfd-in2.h,v
retrieving revision 1.179
diff -c -3 -p -r1.179 bfd-in2.h
*** bfd/bfd-in2.h	6 Nov 2002 13:26:26 -0000	1.179
--- bfd/bfd-in2.h	19 Nov 2002 14:12:37 -0000
*************** enum bfd_architecture
*** 1525,1530 ****
--- 1525,1531 ----
  #define bfd_mach_mips4400              4400
  #define bfd_mach_mips4600              4600
  #define bfd_mach_mips4650              4650
+ #define bfd_mach_mips_tx49             4900 /* Toshiba TX49 */
  #define bfd_mach_mips5000              5000
  #define bfd_mach_mips5400              5400
  #define bfd_mach_mips5500              5500
Index: bfd/cpu-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/cpu-mips.c,v
retrieving revision 1.15
diff -c -3 -p -r1.15 cpu-mips.c
*** bfd/cpu-mips.c	30 Sep 2002 11:53:56 -0000	1.15
--- bfd/cpu-mips.c	19 Nov 2002 14:12:38 -0000
*************** enum
*** 72,77 ****
--- 72,78 ----
    I_mips4400,
    I_mips4600,
    I_mips4650,
+   I_mips_tx49,
    I_mips5000,
    I_mips5400,
    I_mips5500,
*************** static const bfd_arch_info_type arch_inf
*** 101,106 ****
--- 102,108 ----
    N (64, 64, bfd_mach_mips4400, "mips:4400",      false, NN(I_mips4400)),
    N (64, 64, bfd_mach_mips4600, "mips:4600",      false, NN(I_mips4600)),
    N (64, 64, bfd_mach_mips4650, "mips:4650",      false, NN(I_mips4650)),
+   N (64, 64, bfd_mach_mips_tx49, "mips:tx49",     false, NN(I_mips_tx49)),
    N (64, 64, bfd_mach_mips5000, "mips:5000",      false, NN(I_mips5000)),
    N (64, 64, bfd_mach_mips5400, "mips:5400",      false, NN(I_mips5400)),
    N (64, 64, bfd_mach_mips5500, "mips:5500",      false, NN(I_mips5500)),
Index: bfd/elfxx-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-mips.c,v
retrieving revision 1.29
diff -c -3 -p -r1.29 elfxx-mips.c
*** bfd/elfxx-mips.c	22 Oct 2002 22:17:11 -0000	1.29
--- bfd/elfxx-mips.c	19 Nov 2002 14:13:12 -0000
*************** _bfd_elf_mips_mach (flags)
*** 3092,3097 ****
--- 3092,3100 ----
      case E_MIPS_MACH_5500:
        return bfd_mach_mips5500;
  
+     case E_MIPS_MACH_TX49:
+       return bfd_mach_mips_tx49;
+       
      case E_MIPS_MACH_SB1:
        return bfd_mach_mips_sb1;
  
*************** _bfd_mips_elf_final_write_processing (ab
*** 5965,5970 ****
--- 5968,5977 ----
  
      case bfd_mach_mips5500:
        val = E_MIPS_ARCH_4 | E_MIPS_MACH_5500;
+       break;
+ 
+     case bfd_mach_mips_tx49:
+       val = E_MIPS_ARCH_3 | E_MIPS_MACH_TX49;
        break;
  
      case bfd_mach_mips5000:
Index: binutils/ChangeLog
===================================================================
RCS file: /cvs/src/src/binutils/ChangeLog,v
retrieving revision 1.562
diff -c -3 -p -r1.562 ChangeLog
*** binutils/ChangeLog	11 Nov 2002 16:53:18 -0000	1.562
--- binutils/ChangeLog	19 Nov 2002 14:13:20 -0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>
+ 
+ 	* readelf.c (get_machine_flags): Add E_MIPS_MACH_TX49.
+ 
  2002-11-11  Christopher Faylor  <cgf@redhat.com>
  
  	* MAINTAINERS: Reinstate DJ Delorie as COFF maintainer.  Drop COFF from
Index: binutils/readelf.c
===================================================================
RCS file: /cvs/src/src/binutils/readelf.c,v
retrieving revision 1.180
diff -c -3 -p -r1.180 readelf.c
*** binutils/readelf.c	7 Nov 2002 08:33:15 -0000	1.180
--- binutils/readelf.c	19 Nov 2002 14:13:42 -0000
*************** get_machine_flags (e_flags, e_machine)
*** 1852,1857 ****
--- 1852,1858 ----
  	    case E_MIPS_MACH_4111: strcat (buf, ", 4111"); break;
  	    case E_MIPS_MACH_4120: strcat (buf, ", 4120"); break;
  	    case E_MIPS_MACH_4650: strcat (buf, ", 4650"); break;
+ 	    case E_MIPS_MACH_TX49: strcat (buf, ", tx49"); break;
  	    case E_MIPS_MACH_5400: strcat (buf, ", 5400"); break;
  	    case E_MIPS_MACH_5500: strcat (buf, ", 5500"); break;
  	    case E_MIPS_MACH_SB1:  strcat (buf, ", sb1");  break;
Index: gas/ChangeLog
===================================================================
RCS file: /cvs/src/src/gas/ChangeLog,v
retrieving revision 1.1551
diff -c -3 -p -r1.1551 ChangeLog
*** gas/ChangeLog	11 Nov 2002 17:21:33 -0000	1.1551
--- gas/ChangeLog	19 Nov 2002 14:13:52 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>
+ 
+ 	* config/tc-mips.c (mips_cpu_info_table): Add tx49.
+ 	* doc/c-mips.texi (-arch=tx49): Document.
+ 
  2002-11-11  Christopher Faylor  <cgf@redhat.com>
  
  	* configure.in: Use .gdbinit under Cygwin.
Index: gas/config/tc-mips.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-mips.c,v
retrieving revision 1.177
diff -c -3 -p -r1.177 tc-mips.c
*** gas/config/tc-mips.c	7 Nov 2002 02:29:32 -0000	1.177
--- gas/config/tc-mips.c	19 Nov 2002 14:14:24 -0000
*************** static const struct mips_cpu_info mips_c
*** 14283,14288 ****
--- 14283,14289 ----
    { "r4600",          0,      ISA_MIPS3,      CPU_R4600 },
    { "orion",          0,      ISA_MIPS3,      CPU_R4600 },
    { "r4650",          0,      ISA_MIPS3,      CPU_R4650 },
+   { "tx49",           0,      ISA_MIPS3,      CPU_TX49 },
  
    /* MIPS IV */
    { "r8000",          0,      ISA_MIPS4,      CPU_R8000 },
Index: gas/doc/c-mips.texi
===================================================================
RCS file: /cvs/src/src/gas/doc/c-mips.texi,v
retrieving revision 1.24
diff -c -3 -p -r1.24 c-mips.texi
*** gas/doc/c-mips.texi	30 Sep 2002 12:04:31 -0000	1.24
--- gas/doc/c-mips.texi	19 Nov 2002 14:14:25 -0000
*************** vr4181,
*** 165,170 ****
--- 165,171 ----
  4400,
  4600,
  4650,
+ tx49,
  5000,
  rm5200,
  rm5230,
Index: gas/testsuite/ChangeLog
===================================================================
RCS file: /cvs/src/src/gas/testsuite/ChangeLog,v
retrieving revision 1.394
diff -c -3 -p -r1.394 ChangeLog
*** gas/testsuite/ChangeLog	7 Nov 2002 09:20:09 -0000	1.394
--- gas/testsuite/ChangeLog	19 Nov 2002 14:14:40 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>
+ 
+ 	* gas/mips/mips.exp: Add tx49 test.
+ 	* gas/mips/tx49.[sd]: Test tx49 instructions.
+ 
  2002-11-07  Nick Clifton  <nickc@redhat.com>
  
  	* gas/all/gas.exp: Only run fastcall test for x86 PE targets.
Index: gas/testsuite/gas/mips/mips.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/mips/mips.exp,v
retrieving revision 1.50
diff -c -3 -p -r1.50 mips.exp
*** gas/testsuite/gas/mips/mips.exp	21 Oct 2002 14:59:30 -0000	1.50
--- gas/testsuite/gas/mips/mips.exp	19 Nov 2002 14:14:44 -0000
*************** if { [istarget mips*-*-*] } then {
*** 153,158 ****
--- 153,159 ----
      run_dump_test "mips4010"
      run_dump_test "mips4650"
      run_dump_test "mips4100"
+     run_dump_test "tx49"
      run_dump_test "vr4111"
      run_dump_test "vr4120"
      run_dump_test "vr4122"
Index: include/ChangeLog
===================================================================
RCS file: /cvs/src/src/include/ChangeLog,v
retrieving revision 1.180
diff -c -3 -p -r1.180 ChangeLog
*** include/ChangeLog	11 Nov 2002 14:29:01 -0000	1.180
--- include/ChangeLog	19 Nov 2002 14:14:54 -0000
***************
*** 1,3 ****
--- 1,10 ----
+ 2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>
+ 
+  	* elf/mips.h (E_MIPS_MACH_TX49): New machine variant.
+ 	* opcode/mips.h (INSN_TX49): New variant mask.
+ 	(CPU_TX49): New cpu number.
+ 	(OPCODE_IS_MEMBER): Adjust.
+ 
  2002-11-11  Svein E. Seldal  <Svein.Seldal@solidas.com>
  
  	* opcode/tic4x.h: Added new opcodes and corrected some bugs.  Add
Index: include/elf/mips.h
===================================================================
RCS file: /cvs/src/src/include/elf/mips.h,v
retrieving revision 1.17
diff -c -3 -p -r1.17 mips.h
*** include/elf/mips.h	30 Sep 2002 11:53:55 -0000	1.17
--- include/elf/mips.h	19 Nov 2002 14:14:58 -0000
*************** END_RELOC_NUMBERS (R_MIPS_maxext)
*** 178,183 ****
--- 178,184 ----
  #define E_MIPS_MACH_4120	0x00870000
  #define E_MIPS_MACH_4111	0x00880000
  #define E_MIPS_MACH_SB1         0x008a0000
+ #define E_MIPS_MACH_TX49	0x008b0000
  #define E_MIPS_MACH_5400	0x00910000
  #define E_MIPS_MACH_5500	0x00980000
  
Index: include/opcode/mips.h
===================================================================
RCS file: /cvs/src/src/include/opcode/mips.h,v
retrieving revision 1.29
diff -c -3 -p -r1.29 mips.h
*** include/opcode/mips.h	30 Sep 2002 11:58:09 -0000	1.29
--- include/opcode/mips.h	19 Nov 2002 14:15:00 -0000
*************** struct mips_opcode
*** 380,385 ****
--- 380,387 ----
  #define INSN_5400		  0x01000000
  /* NEC VR5500 instruction.  */
  #define INSN_5500		  0x02000000
+ /* Toshiba TX49 instruction.  */
+ #define INSN_TX49		  0x04000000
  
  /* MIPS ISA defines, use instead of hardcoding ISA level.  */
  
*************** struct mips_opcode
*** 406,411 ****
--- 408,414 ----
  #define CPU_R4400	4400
  #define CPU_R4600	4600
  #define CPU_R4650	4650
+ #define CPU_TX49	4900
  #define CPU_R5000	5000
  #define CPU_VR5400	5400
  #define CPU_VR5500	5500
*************** struct mips_opcode
*** 430,435 ****
--- 433,439 ----
       || (cpu == CPU_R4010 && ((insn)->membership & INSN_4010) != 0)	\
       || (cpu == CPU_VR4100 && ((insn)->membership & INSN_4100) != 0)	\
       || (cpu == CPU_R3900 && ((insn)->membership & INSN_3900) != 0)	\
+      || (cpu == CPU_TX49 && ((insn)->membership & INSN_TX49) != 0)	\
       || ((cpu == CPU_R10000 || cpu == CPU_R12000)			\
  	 && ((insn)->membership & INSN_10000) != 0)			\
       || (cpu == CPU_SB1 && ((insn)->membership & INSN_SB1) != 0)	\
Index: opcodes/ChangeLog
===================================================================
RCS file: /cvs/src/src/opcodes/ChangeLog,v
retrieving revision 1.498
diff -c -3 -p -r1.498 ChangeLog
*** opcodes/ChangeLog	8 Nov 2002 00:46:21 -0000	1.498
--- opcodes/ChangeLog	19 Nov 2002 14:15:12 -0000
***************
*** 1,3 ****
--- 1,9 ----
+ 2002-11-19  Nathan Sidwell  <nathan@codesourcery.com>
+ 
+ 	* mips-dis.c (mips_isa_type): Add bfd_mach_mips_tx49.
+ 	* mips-opc.c (T4): New shorthand mask.
+ 	(mips_builtin_opcodes): Enable tx49 specific variants.
+ 
  2002-11-07  Aldy Hernandez  <aldyh@redhat.com>
  
  	* ppc-opc.c (EVUIMM_4): Change bit size to 32.
Index: opcodes/mips-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/mips-dis.c,v
retrieving revision 1.34
diff -c -3 -p -r1.34 mips-dis.c
*** opcodes/mips-dis.c	30 Sep 2002 11:58:10 -0000	1.34
--- opcodes/mips-dis.c	19 Nov 2002 14:15:15 -0000
*************** mips_isa_type (mach, isa, cputype)
*** 406,411 ****
--- 406,415 ----
        *cputype = CPU_R4650;
        *isa = ISA_MIPS3;
        break;
+     case bfd_mach_mips_tx49:
+       *cputype = CPU_TX49;
+       *isa = ISA_MIPS3;
+       break;
      case bfd_mach_mips5000:
        *cputype = CPU_R5000;
        *isa = ISA_MIPS4;
Index: opcodes/mips-opc.c
===================================================================
RCS file: /cvs/src/src/opcodes/mips-opc.c,v
retrieving revision 1.39
diff -c -3 -p -r1.39 mips-opc.c
*** opcodes/mips-opc.c	30 Sep 2002 11:58:10 -0000	1.39
--- opcodes/mips-opc.c	19 Nov 2002 14:15:20 -0000
*************** Software Foundation, 59 Temple Place - S
*** 99,104 ****
--- 99,105 ----
  #define L1	INSN_4010
  #define V1	(INSN_4100 | INSN_4111 | INSN_4120)
  #define T3      INSN_3900
+ #define T4      INSN_TX49
  #define M1	INSN_10000
  #define SB1     INSN_SB1
  #define N411	INSN_4111
*************** const struct mips_opcode mips_builtin_op
*** 135,141 ****
     them first.  The assemblers uses a hash table based on the
     instruction name anyhow.  */
  /* name,    args,	match,	    mask,	pinfo,          	membership */
! {"pref",    "k,o(b)",   0xcc000000, 0xfc000000, RD_b,           	I4|I32|G3	},
  {"prefx",   "h,t(b)",	0x4c00000f, 0xfc0007ff, RD_b|RD_t,		I4	},
  {"nop",     "",         0x00000000, 0xffffffff, 0,              	I1      },
  {"ssnop",   "",         0x00000040, 0xffffffff, 0,              	I32|N55	},
--- 136,142 ----
     them first.  The assemblers uses a hash table based on the
     instruction name anyhow.  */
  /* name,    args,	match,	    mask,	pinfo,          	membership */
! {"pref",    "k,o(b)",   0xcc000000, 0xfc000000, RD_b,           	I4|I32|G3|T4	},
  {"prefx",   "h,t(b)",	0x4c00000f, 0xfc0007ff, RD_b|RD_t,		I4	},
  {"nop",     "",         0x00000000, 0xffffffff, 0,              	I1      },
  {"ssnop",   "",         0x00000040, 0xffffffff, 0,              	I32|N55	},
*************** const struct mips_opcode mips_builtin_op
*** 477,483 ****
  /* dctr and dctw are used on the r5000.  */
  {"dctr",    "o(b)",	0xbc050000, 0xfc1f0000, RD_b,			I3	},
  {"dctw",    "o(b)",	0xbc090000, 0xfc1f0000, RD_b,			I3	},
! {"deret",   "",         0x4200001f, 0xffffffff, 0, 			I32|G2	},
  /* For ddiv, see the comments about div.  */
  {"ddiv",    "z,s,t",    0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO,      I3      },
  {"ddiv",    "d,v,t",	0,    (int) M_DDIV_3,	INSN_MACRO,		I3	},
--- 478,484 ----
  /* dctr and dctw are used on the r5000.  */
  {"dctr",    "o(b)",	0xbc050000, 0xfc1f0000, RD_b,			I3	},
  {"dctw",    "o(b)",	0xbc090000, 0xfc1f0000, RD_b,			I3	},
! {"deret",   "",         0x4200001f, 0xffffffff, 0, 			I32|G2|T4 },
  /* For ddiv, see the comments about div.  */
  {"ddiv",    "z,s,t",    0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO,      I3      },
  {"ddiv",    "d,v,t",	0,    (int) M_DDIV_3,	INSN_MACRO,		I3	},
*************** const struct mips_opcode mips_builtin_op
*** 538,544 ****
--- 539,547 ----
  {"dmulou",  "d,v,t",	0,    (int) M_DMULOU,	INSN_MACRO,		I3	},
  {"dmulou",  "d,v,I",	0,    (int) M_DMULOU_I,	INSN_MACRO,		I3	},
  {"dmult",   "s,t",      0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO,      I3	},
+ {"dmult",   "d,s,t",    0x0000001c, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, T4 },
  {"dmultu",  "s,t",      0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO,      I3	},
+ {"dmultu",  "d,s,t",    0x0000001d, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, T4 },
  {"dneg",    "d,w",	0x0000002e, 0xffe007ff,	WR_d|RD_t,		I3	}, /* dsub 0 */
  {"dnegu",   "d,w",	0x0000002f, 0xffe007ff,	WR_d|RD_t,		I3	}, /* dsubu 0*/
  {"drem",    "z,s,t",    0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO,      I3      },
*************** const struct mips_opcode mips_builtin_op
*** 689,700 ****
  {"madd.ps", "D,R,S,T",	0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D,    I5	},
  {"madd",    "s,t",      0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO,           L1 },
  {"madd",    "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO,          I32|N55},
! {"madd",    "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M,      G1 },
! {"madd",    "d,s,t",    0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1 },
  {"maddu",   "s,t",      0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO,           L1 },
  {"maddu",   "s,t",      0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO,          I32|N55},
! {"maddu",   "s,t",      0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M,      G1	},
! {"maddu",   "d,s,t",    0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1	},
  {"madd16",  "s,t",      0x00000028, 0xfc00ffff, RD_s|RD_t|MOD_HILO,	N411    },
  {"max.ob",  "X,Y,Q",	0x78000007, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	MX|SB1	},
  {"max.ob",  "D,S,T",	0x4ac00007, 0xffe0003f,	WR_D|RD_S|RD_T,		N54	},
--- 692,703 ----
  {"madd.ps", "D,R,S,T",	0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D,    I5	},
  {"madd",    "s,t",      0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO,           L1 },
  {"madd",    "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO,          I32|N55},
! {"madd",    "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M,      G1|T4 },
! {"madd",    "d,s,t",    0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1|T4 },
  {"maddu",   "s,t",      0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO,           L1 },
  {"maddu",   "s,t",      0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO,          I32|N55},
! {"maddu",   "s,t",      0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M,      G1|T4 },
! {"maddu",   "d,s,t",    0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1|T4 },
  {"madd16",  "s,t",      0x00000028, 0xfc00ffff, RD_s|RD_t|MOD_HILO,	N411    },
  {"max.ob",  "X,Y,Q",	0x78000007, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	MX|SB1	},
  {"max.ob",  "D,S,T",	0x4ac00007, 0xffe0003f,	WR_D|RD_S|RD_T,		N54	},
*************** const struct mips_opcode mips_builtin_op
*** 818,826 ****
  {"mulsl.ob", "S,k",	0x4bc00432, 0xffe007ff,	WR_CC|RD_S|RD_T,	N54	},
  {"mulsl.qh", "Y,Q",	0x78200432, 0xfc2007ff,	WR_MACC|RD_S|RD_T|FP_D,	MX	},
  {"mult",    "s,t",      0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, I1	},
! {"mult",    "d,s,t",    0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1	},
  {"multu",   "s,t",      0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, I1	},
! {"multu",   "d,s,t",    0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1	},
  {"mulu",    "d,s,t",	0x00000059, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	N5	},
  {"neg",     "d,w",	0x00000022, 0xffe007ff,	WR_d|RD_t,		I1	}, /* sub 0 */
  {"negu",    "d,w",	0x00000023, 0xffe007ff,	WR_d|RD_t,		I1	}, /* subu 0 */
--- 821,829 ----
  {"mulsl.ob", "S,k",	0x4bc00432, 0xffe007ff,	WR_CC|RD_S|RD_T,	N54	},
  {"mulsl.qh", "Y,Q",	0x78200432, 0xfc2007ff,	WR_MACC|RD_S|RD_T|FP_D,	MX	},
  {"mult",    "s,t",      0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, I1	},
! {"mult",    "d,s,t",    0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1|T4 },
  {"multu",   "s,t",      0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, I1	},
! {"multu",   "d,s,t",    0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1|T4 },
  {"mulu",    "d,s,t",	0x00000059, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	N5	},
  {"neg",     "d,w",	0x00000022, 0xffe007ff,	WR_d|RD_t,		I1	}, /* sub 0 */
  {"negu",    "d,w",	0x00000023, 0xffe007ff,	WR_d|RD_t,		I1	}, /* subu 0 */
*************** const struct mips_opcode mips_builtin_op
*** 932,940 ****
  {"sd",	    "t,o(b)",	0xfc000000, 0xfc000000,	SM|RD_t|RD_b,		I3	},
  {"sd",      "t,o(b)",	0,    (int) M_SD_OB,	INSN_MACRO,		I1	},
  {"sd",      "t,A(b)",	0,    (int) M_SD_AB,	INSN_MACRO,		I1	},
! {"sdbbp",   "",		0x0000000e, 0xffffffff,	TRAP,           	G2	},
! {"sdbbp",   "c",	0x0000000e, 0xfc00ffff,	TRAP,			G2	},
! {"sdbbp",   "c,q",	0x0000000e, 0xfc00003f,	TRAP,			G2	},
  {"sdbbp",   "",         0x7000003f, 0xffffffff, TRAP,           	I32     },
  {"sdbbp",   "B",        0x7000003f, 0xfc00003f, TRAP,           	I32     },
  {"sdc1",    "T,o(b)",	0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D,	I2	},
--- 935,943 ----
  {"sd",	    "t,o(b)",	0xfc000000, 0xfc000000,	SM|RD_t|RD_b,		I3	},
  {"sd",      "t,o(b)",	0,    (int) M_SD_OB,	INSN_MACRO,		I1	},
  {"sd",      "t,A(b)",	0,    (int) M_SD_AB,	INSN_MACRO,		I1	},
! {"sdbbp",   "",		0x0000000e, 0xffffffff,	TRAP,           	G2|T4	},
! {"sdbbp",   "c",	0x0000000e, 0xfc00ffff,	TRAP,			G2|T4	},
! {"sdbbp",   "c,q",	0x0000000e, 0xfc00003f,	TRAP,			G2|T4	},
  {"sdbbp",   "",         0x7000003f, 0xffffffff, TRAP,           	I32     },
  {"sdbbp",   "B",        0x7000003f, 0xfc00003f, TRAP,           	I32     },
  {"sdc1",    "T,o(b)",	0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D,	I2	},
# test TX4900 extensions
	.set noreorder
	.set noat
	.globl text_label .text
text_label:
	madd	$1,$2
	madd	$3,$4,$5

	maddu	$6,$7
	maddu	$8,$9,$10

	mult	$11,$12,$13
	multu	$14,$15,$16

	dmult	$17,$18,$19
	dmultu	$20,$21,$22
	
	pref	4, ($23)
	pref	4, 32767($24)

	ctc0	$25,$26
	cfc0	$27,$28

	wait

	sdbbp
	sdbbp 0x56
	
	deret
#objdump: -dr --prefix-addresses --show-raw-insn -mmips:tx49
#name: MIPS TX49 instructions
#as: -march=tx49

# Check MIPS4900 instruction assembly

.*: +file format .*mips.*

Disassembly of section .text:
0+0000 <[^>]*> 70220000 	madd	at,v0
0+0004 <[^>]*> 70851800 	madd	v1,a0,a1
0+0008 <[^>]*> 70c70001 	maddu	a2,a3
0+000c <[^>]*> 712a4001 	maddu	t0,t1,t2
0+0010 <[^>]*> 018d5818 	mult	t3,t4,t5
0+0014 <[^>]*> 01f07019 	multu	t6,t7,s0
0+0018 <[^>]*> 0253881c 	dmult	s1,s2,s3
0+001c <[^>]*> 02b6a01d 	dmultu	s4,s5,s6
0+0020 <[^>]*> cee40000 	pref	0x4,0\(s7\)
0+0024 <[^>]*> cf047fff 	pref	0x4,32767\(t8\)
0+0028 <[^>]*> 40d9d000 	ctc0	t9,\$26
0+002c <[^>]*> 405be000 	cfc0	k1,\$28
0+0030 <[^>]*> 42000020 	wait
0+0034 <[^>]*> 0000000e 	sdbbp
0+0038 <[^>]*> 0056000e 	sdbbp	0x56
0+003c <[^>]*> 4200001f 	deret

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]