2006-11-15  Nathan Sidwell  <nathan@codesourcery.com>

	gas/testsuite/
	* gas/m68k/all.exp: Add mcf-trap.
	* gas/m68k/mcf-trap.[sd]: New.

	opcodes/
	* m68k-opc.c (m68k_opcodes): Place trap instructions before set
	conditionals.  Add tpf coldfire instruction as alias for trapf.

Index: gas/testsuite/gas/m68k/all.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/m68k/all.exp,v
retrieving revision 1.8
diff -c -3 -p -r1.8 all.exp
*** gas/testsuite/gas/m68k/all.exp	7 Feb 2006 19:01:10 -0000	1.8
--- gas/testsuite/gas/m68k/all.exp	15 Nov 2006 17:35:15 -0000
*************** if [istarget m68*-*-*] then {
*** 39,44 ****
--- 39,45 ----
      run_dump_test mcf-mac
      run_dump_test mcf-emac
      run_dump_test mcf-fpu
+     run_dump_test mcf-trap
      run_dump_test arch-cpu-1
  
      set testname "68000 operands"
Index: gas/testsuite/gas/m68k/mcf-trap.d
===================================================================
RCS file: gas/testsuite/gas/m68k/mcf-trap.d
diff -N gas/testsuite/gas/m68k/mcf-trap.d
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- gas/testsuite/gas/m68k/mcf-trap.d	15 Nov 2006 17:35:15 -0000
***************
*** 0 ****
--- 1,15 ----
+ #name: mcf-trap
+ #objdump: -d
+ #as: -m5208
+ 
+ .*:     file format .*
+ 
+ Disassembly of section .text:
+ 
+ 0+ <.text>:
+ [ 0-9a-f]+:	51fc           	tpf
+ [ 0-9a-f]+:	51fa 1234      	tpfw #4660
+ [ 0-9a-f]+:	51fb 1234 5678 	tpfl #305419896
+ [ 0-9a-f]+:	51fc           	tpf
+ [ 0-9a-f]+:	51fa 1234      	tpfw #4660
+ [ 0-9a-f]+:	51fb 1234 5678 	tpfl #305419896
Index: gas/testsuite/gas/m68k/mcf-trap.s
===================================================================
RCS file: gas/testsuite/gas/m68k/mcf-trap.s
diff -N gas/testsuite/gas/m68k/mcf-trap.s
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- gas/testsuite/gas/m68k/mcf-trap.s	15 Nov 2006 17:35:15 -0000
***************
*** 0 ****
--- 1,9 ----
+ 	#  the m68k compatible names
+ 	trapf
+ 	trapf.w #0x1234
+ 	trapf.l #0x12345678
+ 
+ 	# the coldfire specific names
+ 	tpf
+ 	tpf.w #0x1234
+ 	tpf.l #0x12345678
Index: opcodes/m68k-opc.c
===================================================================
RCS file: /cvs/src/src/opcodes/m68k-opc.c,v
retrieving revision 1.19
diff -c -3 -p -r1.19 m68k-opc.c
*** opcodes/m68k-opc.c	29 Jul 2006 08:55:38 -0000	1.19
--- opcodes/m68k-opc.c	15 Nov 2006 17:35:20 -0000
*************** const struct m68k_opcode m68k_opcodes[] 
*** 1998,2003 ****
--- 1998,2061 ----
  {"sbcd", 2,	one(0100400),		one(0170770), "DsDd", m68000up },
  {"sbcd", 2,	one(0100410),		one(0170770), "-s-d", m68000up },
  
+   /* Traps have to come before conditional sets, as they have a more
+      specific opcode.  */
+ {"trapcc", 2,	one(0052374),	one(0177777), "", m68020up | cpu32 },
+ {"trapcs", 2,	one(0052774),	one(0177777), "", m68020up | cpu32 },
+ {"trapeq", 2,	one(0053774),	one(0177777), "", m68020up | cpu32 },
+ {"tpf", 2,	one(0050774),	one(0177777), "", mcfisa_a },
+ {"trapf", 2,	one(0050774),	one(0177777), "", m68020up | cpu32 | mcfisa_a },
+ {"trapge", 2,	one(0056374),	one(0177777), "", m68020up | cpu32 },
+ {"trapgt", 2,	one(0057374),	one(0177777), "", m68020up | cpu32 },
+ {"traphi", 2,	one(0051374),	one(0177777), "", m68020up | cpu32 },
+ {"traple", 2,	one(0057774),	one(0177777), "", m68020up | cpu32 },
+ {"trapls", 2,	one(0051774),	one(0177777), "", m68020up | cpu32 },
+ {"traplt", 2,	one(0056774),	one(0177777), "", m68020up | cpu32 },
+ {"trapmi", 2,	one(0055774),	one(0177777), "", m68020up | cpu32 },
+ {"trapne", 2,	one(0053374),	one(0177777), "", m68020up | cpu32 },
+ {"trappl", 2,	one(0055374),	one(0177777), "", m68020up | cpu32 },
+ {"trapt", 2,	one(0050374),	one(0177777), "", m68020up | cpu32 },
+ {"trapvc", 2,	one(0054374),	one(0177777), "", m68020up | cpu32 },
+ {"trapvs", 2,	one(0054774),	one(0177777), "", m68020up | cpu32 },
+ 
+ {"trapccw", 4,	one(0052372),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapcsw", 4,	one(0052772),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapeqw", 4,	one(0053772),	one(0177777), "#w", m68020up|cpu32 },
+ {"tpfw", 4,	one(0050772),	one(0177777), "#w", mcfisa_a},
+ {"trapfw", 4,	one(0050772),	one(0177777), "#w", m68020up|cpu32|mcfisa_a},
+ {"trapgew", 4,	one(0056372),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapgtw", 4,	one(0057372),	one(0177777), "#w", m68020up|cpu32 },
+ {"traphiw", 4,	one(0051372),	one(0177777), "#w", m68020up|cpu32 },
+ {"traplew", 4,	one(0057772),	one(0177777), "#w", m68020up|cpu32 },
+ {"traplsw", 4,	one(0051772),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapltw", 4,	one(0056772),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapmiw", 4,	one(0055772),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapnew", 4,	one(0053372),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapplw", 4,	one(0055372),	one(0177777), "#w", m68020up|cpu32 },
+ {"traptw", 4,	one(0050372),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapvcw", 4,	one(0054372),	one(0177777), "#w", m68020up|cpu32 },
+ {"trapvsw", 4,	one(0054772),	one(0177777), "#w", m68020up|cpu32 },
+ 
+ {"trapccl", 6,	one(0052373),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapcsl", 6,	one(0052773),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapeql", 6,	one(0053773),	one(0177777), "#l", m68020up|cpu32 },
+ {"tpfl", 6,	one(0050773),	one(0177777), "#l", mcfisa_a},
+ {"trapfl", 6,	one(0050773),	one(0177777), "#l", m68020up|cpu32|mcfisa_a},
+ {"trapgel", 6,	one(0056373),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapgtl", 6,	one(0057373),	one(0177777), "#l", m68020up|cpu32 },
+ {"traphil", 6,	one(0051373),	one(0177777), "#l", m68020up|cpu32 },
+ {"traplel", 6,	one(0057773),	one(0177777), "#l", m68020up|cpu32 },
+ {"traplsl", 6,	one(0051773),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapltl", 6,	one(0056773),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapmil", 6,	one(0055773),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapnel", 6,	one(0053373),	one(0177777), "#l", m68020up|cpu32 },
+ {"trappll", 6,	one(0055373),	one(0177777), "#l", m68020up|cpu32 },
+ {"traptl", 6,	one(0050373),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapvcl", 6,	one(0054373),	one(0177777), "#l", m68020up|cpu32 },
+ {"trapvsl", 6,	one(0054773),	one(0177777), "#l", m68020up|cpu32 },
+ 
+ {"trapv", 2,	one(0047166),	one(0177777), "", m68000up },
+ 
  {"scc", 2,	one(0052300),	one(0177700), "$s", m68000up },
  {"scc", 2,	one(0052300),	one(0177700), "Ds", mcfisa_a },
  {"scs", 2,	one(0052700),	one(0177700), "$s", m68000up },
*************** const struct m68k_opcode m68k_opcodes[] 
*** 2021,2035 ****
  {"smi", 2,	one(0055700),	one(0177700), "$s", m68000up },
  {"smi", 2,	one(0055700),	one(0177700), "Ds", mcfisa_a },
  {"sne", 2,	one(0053300),	one(0177700), "$s", m68000up },
! {"sne", 2,	one(0053300),	one(0177700), "Ds", mcfisa_a },
  {"spl", 2,	one(0055300),	one(0177700), "$s", m68000up },
! {"spl", 2,	one(0055300),	one(0177700), "Ds", mcfisa_a },
  {"st", 2,	one(0050300),	one(0177700), "$s", m68000up },
! {"st", 2,	one(0050300),	one(0177700), "Ds", mcfisa_a },
  {"svc", 2,	one(0054300),	one(0177700), "$s", m68000up },
! {"svc", 2,	one(0054300),	one(0177700), "Ds", mcfisa_a },
  {"svs", 2,	one(0054700),	one(0177700), "$s", m68000up },
! {"svs", 2,	one(0054700),	one(0177700), "Ds", mcfisa_a },
  
  {"stop", 4,	one(0047162),	one(0177777), "#w", m68000up | mcfisa_a },
  
--- 2079,2093 ----
  {"smi", 2,	one(0055700),	one(0177700), "$s", m68000up },
  {"smi", 2,	one(0055700),	one(0177700), "Ds", mcfisa_a },
  {"sne", 2,	one(0053300),	one(0177700), "$s", m68000up },
! {"sne", 2,	one(0053300),	one(0177770), "Ds", mcfisa_a },
  {"spl", 2,	one(0055300),	one(0177700), "$s", m68000up },
! {"spl", 2,	one(0055300),	one(0177770), "Ds", mcfisa_a },
  {"st", 2,	one(0050300),	one(0177700), "$s", m68000up },
! {"st", 2,	one(0050300),	one(0177770), "Ds", mcfisa_a },
  {"svc", 2,	one(0054300),	one(0177700), "$s", m68000up },
! {"svc", 2,	one(0054300),	one(0177770), "Ds", mcfisa_a },
  {"svs", 2,	one(0054700),	one(0177700), "$s", m68000up },
! {"svs", 2,	one(0054700),	one(0177770), "Ds", mcfisa_a },
  
  {"stop", 4,	one(0047162),	one(0177777), "#w", m68000up | mcfisa_a },
  
*************** TBL("tblunb", "tblunw", "tblunl", 0, 0),
*** 2098,2156 ****
  
  {"trap", 2,	one(0047100),	one(0177760), "Ts", m68000up | mcfisa_a },
  
- {"trapcc", 2,	one(0052374),	one(0177777), "", m68020up | cpu32 },
- {"trapcs", 2,	one(0052774),	one(0177777), "", m68020up | cpu32 },
- {"trapeq", 2,	one(0053774),	one(0177777), "", m68020up | cpu32 },
- {"trapf", 2,	one(0050774),	one(0177777), "", m68020up | cpu32 | mcfisa_a },
- {"trapge", 2,	one(0056374),	one(0177777), "", m68020up | cpu32 },
- {"trapgt", 2,	one(0057374),	one(0177777), "", m68020up | cpu32 },
- {"traphi", 2,	one(0051374),	one(0177777), "", m68020up | cpu32 },
- {"traple", 2,	one(0057774),	one(0177777), "", m68020up | cpu32 },
- {"trapls", 2,	one(0051774),	one(0177777), "", m68020up | cpu32 },
- {"traplt", 2,	one(0056774),	one(0177777), "", m68020up | cpu32 },
- {"trapmi", 2,	one(0055774),	one(0177777), "", m68020up | cpu32 },
- {"trapne", 2,	one(0053374),	one(0177777), "", m68020up | cpu32 },
- {"trappl", 2,	one(0055374),	one(0177777), "", m68020up | cpu32 },
- {"trapt", 2,	one(0050374),	one(0177777), "", m68020up | cpu32 },
- {"trapvc", 2,	one(0054374),	one(0177777), "", m68020up | cpu32 },
- {"trapvs", 2,	one(0054774),	one(0177777), "", m68020up | cpu32 },
- 
- {"trapccw", 4,	one(0052372),	one(0177777), "#w", m68020up|cpu32 },
- {"trapcsw", 4,	one(0052772),	one(0177777), "#w", m68020up|cpu32 },
- {"trapeqw", 4,	one(0053772),	one(0177777), "#w", m68020up|cpu32 },
- {"trapfw", 4,	one(0050772),	one(0177777), "#w", m68020up|cpu32|mcfisa_a},
- {"trapgew", 4,	one(0056372),	one(0177777), "#w", m68020up|cpu32 },
- {"trapgtw", 4,	one(0057372),	one(0177777), "#w", m68020up|cpu32 },
- {"traphiw", 4,	one(0051372),	one(0177777), "#w", m68020up|cpu32 },
- {"traplew", 4,	one(0057772),	one(0177777), "#w", m68020up|cpu32 },
- {"traplsw", 4,	one(0051772),	one(0177777), "#w", m68020up|cpu32 },
- {"trapltw", 4,	one(0056772),	one(0177777), "#w", m68020up|cpu32 },
- {"trapmiw", 4,	one(0055772),	one(0177777), "#w", m68020up|cpu32 },
- {"trapnew", 4,	one(0053372),	one(0177777), "#w", m68020up|cpu32 },
- {"trapplw", 4,	one(0055372),	one(0177777), "#w", m68020up|cpu32 },
- {"traptw", 4,	one(0050372),	one(0177777), "#w", m68020up|cpu32 },
- {"trapvcw", 4,	one(0054372),	one(0177777), "#w", m68020up|cpu32 },
- {"trapvsw", 4,	one(0054772),	one(0177777), "#w", m68020up|cpu32 },
- 
- {"trapccl", 6,	one(0052373),	one(0177777), "#l", m68020up|cpu32 },
- {"trapcsl", 6,	one(0052773),	one(0177777), "#l", m68020up|cpu32 },
- {"trapeql", 6,	one(0053773),	one(0177777), "#l", m68020up|cpu32 },
- {"trapfl", 6,	one(0050773),	one(0177777), "#l", m68020up|cpu32|mcfisa_a},
- {"trapgel", 6,	one(0056373),	one(0177777), "#l", m68020up|cpu32 },
- {"trapgtl", 6,	one(0057373),	one(0177777), "#l", m68020up|cpu32 },
- {"traphil", 6,	one(0051373),	one(0177777), "#l", m68020up|cpu32 },
- {"traplel", 6,	one(0057773),	one(0177777), "#l", m68020up|cpu32 },
- {"traplsl", 6,	one(0051773),	one(0177777), "#l", m68020up|cpu32 },
- {"trapltl", 6,	one(0056773),	one(0177777), "#l", m68020up|cpu32 },
- {"trapmil", 6,	one(0055773),	one(0177777), "#l", m68020up|cpu32 },
- {"trapnel", 6,	one(0053373),	one(0177777), "#l", m68020up|cpu32 },
- {"trappll", 6,	one(0055373),	one(0177777), "#l", m68020up|cpu32 },
- {"traptl", 6,	one(0050373),	one(0177777), "#l", m68020up|cpu32 },
- {"trapvcl", 6,	one(0054373),	one(0177777), "#l", m68020up|cpu32 },
- {"trapvsl", 6,	one(0054773),	one(0177777), "#l", m68020up|cpu32 },
- 
- {"trapv", 2,	one(0047166),	one(0177777), "", m68000up },
- 
  {"tstb", 2,	one(0045000),	one(0177700), ";b", m68020up|cpu32|mcfisa_a },
  {"tstb", 2,	one(0045000),	one(0177700), "$b", m68000up },
  {"tstw", 2,	one(0045100),	one(0177700), "*w", m68020up|cpu32|mcfisa_a },
--- 2156,2161 ----
