This is the mail archive of the binutils@sourceware.cygnus.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]

Accept multiple _flags for ARM's [CS]PSR


I'm checking this in, approved by Nick Clifton:

Index: opcodes/ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* arm-dis.c (print_insn_arm): Output combinations of PSR flags.

Index: opcodes/arm-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/arm-dis.c,v
retrieving revision 1.17
diff -u -r1.17 arm-dis.c
--- opcodes/arm-dis.c	2000/06/26 16:50:29	1.17
+++ opcodes/arm-dis.c	2000/07/04 05:41:23
@@ -422,27 +422,15 @@
 		      break;
 
 		    case 'C':
-		      switch (given & 0x000f0000)
-			{
-			default:
-			  func (stream, "_???");
-			  break;
-			case 0x90000:
-			  func (stream, "_all");
-			  break;
-			case 0x10000:
-			  func (stream, "_c");
-			  break;
-			case 0x20000:
-			  func (stream, "_x");
-			  break;
-			case 0x40000:
-			  func (stream, "_s");
-			  break;
-			case 0x80000:
-			  func (stream, "_f");
-			  break;
-			}
+		      func (stream, "_");
+		      if (given & 0x80000)
+			func (stream, "f");
+		      if (given & 0x40000)
+			func (stream, "s");
+		      if (given & 0x20000)
+			func (stream, "x");
+		      if (given & 0x10000)
+			func (stream, "c");
 		      break;
 
 		    case 'F':
Index: gas/ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-arm.c (psrs): Accept combinations of flags.

Index: gas/config/tc-arm.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-arm.c,v
retrieving revision 1.48
diff -u -r1.48 tc-arm.c
--- gas/config/tc-arm.c	2000/06/25 17:59:21	1.48
+++ gas/config/tc-arm.c	2000/07/04 05:42:39
@@ -407,6 +407,127 @@
   {"CPSR_s",    true,  PSR_s},
   {"SPSR_x",    false, PSR_x},
   {"SPSR_s",    false, PSR_s},
+  /* Combinations of flags.  */
+  {"CPSR_fs",	true, PSR_f | PSR_s},
+  {"CPSR_fx",	true, PSR_f | PSR_x},
+  {"CPSR_fc",	true, PSR_f | PSR_c},
+  {"CPSR_sf",	true, PSR_s | PSR_f},
+  {"CPSR_sx",	true, PSR_s | PSR_x},
+  {"CPSR_sc",	true, PSR_s | PSR_c},
+  {"CPSR_xf",	true, PSR_x | PSR_f},
+  {"CPSR_xs",	true, PSR_x | PSR_s},
+  {"CPSR_xc",	true, PSR_x | PSR_c},
+  {"CPSR_cf",	true, PSR_c | PSR_f},
+  {"CPSR_cs",	true, PSR_c | PSR_s},
+  {"CPSR_cx",	true, PSR_c | PSR_x},
+  {"CPSR_fsx",	true, PSR_f | PSR_s | PSR_x},
+  {"CPSR_fsc",	true, PSR_f | PSR_s | PSR_c},
+  {"CPSR_fxs",	true, PSR_f | PSR_x | PSR_s},
+  {"CPSR_fxc",	true, PSR_f | PSR_x | PSR_c},
+  {"CPSR_fcs",	true, PSR_f | PSR_c | PSR_s},
+  {"CPSR_fcx",	true, PSR_f | PSR_c | PSR_x},
+  {"CPSR_sfx",	true, PSR_s | PSR_f | PSR_x},
+  {"CPSR_sfc",	true, PSR_s | PSR_f | PSR_c},
+  {"CPSR_sxf",	true, PSR_s | PSR_x | PSR_f},
+  {"CPSR_sxc",	true, PSR_s | PSR_x | PSR_c},
+  {"CPSR_scf",	true, PSR_s | PSR_c | PSR_f},
+  {"CPSR_scx",	true, PSR_s | PSR_c | PSR_x},
+  {"CPSR_xfs",	true, PSR_x | PSR_f | PSR_s},
+  {"CPSR_xfc",	true, PSR_x | PSR_f | PSR_c},
+  {"CPSR_xsf",	true, PSR_x | PSR_s | PSR_f},
+  {"CPSR_xsc",	true, PSR_x | PSR_s | PSR_c},
+  {"CPSR_xcf",	true, PSR_x | PSR_c | PSR_f},
+  {"CPSR_xcs",	true, PSR_x | PSR_c | PSR_s},
+  {"CPSR_cfs",	true, PSR_c | PSR_f | PSR_s},
+  {"CPSR_cfx",	true, PSR_c | PSR_f | PSR_x},
+  {"CPSR_csf",	true, PSR_c | PSR_s | PSR_f},
+  {"CPSR_csx",	true, PSR_c | PSR_s | PSR_x},
+  {"CPSR_cxf",	true, PSR_c | PSR_x | PSR_f},
+  {"CPSR_cxs",	true, PSR_c | PSR_x | PSR_s},
+  {"CPSR_fsxc",	true, PSR_f | PSR_s | PSR_x | PSR_c},
+  {"CPSR_fscx",	true, PSR_f | PSR_s | PSR_c | PSR_x},
+  {"CPSR_fxsc",	true, PSR_f | PSR_x | PSR_s | PSR_c},
+  {"CPSR_fxcs",	true, PSR_f | PSR_x | PSR_c | PSR_s},
+  {"CPSR_fcsx",	true, PSR_f | PSR_c | PSR_s | PSR_x},
+  {"CPSR_fcxs",	true, PSR_f | PSR_c | PSR_x | PSR_s},
+  {"CPSR_sfxc",	true, PSR_s | PSR_f | PSR_x | PSR_c},
+  {"CPSR_sfcx",	true, PSR_s | PSR_f | PSR_c | PSR_x},
+  {"CPSR_sxfc",	true, PSR_s | PSR_x | PSR_f | PSR_c},
+  {"CPSR_sxcf",	true, PSR_s | PSR_x | PSR_c | PSR_f},
+  {"CPSR_scfx",	true, PSR_s | PSR_c | PSR_f | PSR_x},
+  {"CPSR_scxf",	true, PSR_s | PSR_c | PSR_x | PSR_f},
+  {"CPSR_xfsc",	true, PSR_x | PSR_f | PSR_s | PSR_c},
+  {"CPSR_xfcs",	true, PSR_x | PSR_f | PSR_c | PSR_s},
+  {"CPSR_xsfc",	true, PSR_x | PSR_s | PSR_f | PSR_c},
+  {"CPSR_xscf",	true, PSR_x | PSR_s | PSR_c | PSR_f},
+  {"CPSR_xcfs",	true, PSR_x | PSR_c | PSR_f | PSR_s},
+  {"CPSR_xcsf",	true, PSR_x | PSR_c | PSR_s | PSR_f},
+  {"CPSR_cfsx",	true, PSR_c | PSR_f | PSR_s | PSR_x},
+  {"CPSR_cfxs",	true, PSR_c | PSR_f | PSR_x | PSR_s},
+  {"CPSR_csfx",	true, PSR_c | PSR_s | PSR_f | PSR_x},
+  {"CPSR_csxf",	true, PSR_c | PSR_s | PSR_x | PSR_f},
+  {"CPSR_cxfs",	true, PSR_c | PSR_x | PSR_f | PSR_s},
+  {"CPSR_cxsf",	true, PSR_c | PSR_x | PSR_s | PSR_f},
+  {"SPSR_fs",	false, PSR_f | PSR_s},
+  {"SPSR_fx",	false, PSR_f | PSR_x},
+  {"SPSR_fc",	false, PSR_f | PSR_c},
+  {"SPSR_sf",	false, PSR_s | PSR_f},
+  {"SPSR_sx",	false, PSR_s | PSR_x},
+  {"SPSR_sc",	false, PSR_s | PSR_c},
+  {"SPSR_xf",	false, PSR_x | PSR_f},
+  {"SPSR_xs",	false, PSR_x | PSR_s},
+  {"SPSR_xc",	false, PSR_x | PSR_c},
+  {"SPSR_cf",	false, PSR_c | PSR_f},
+  {"SPSR_cs",	false, PSR_c | PSR_s},
+  {"SPSR_cx",	false, PSR_c | PSR_x},
+  {"SPSR_fsx",	false, PSR_f | PSR_s | PSR_x},
+  {"SPSR_fsc",	false, PSR_f | PSR_s | PSR_c},
+  {"SPSR_fxs",	false, PSR_f | PSR_x | PSR_s},
+  {"SPSR_fxc",	false, PSR_f | PSR_x | PSR_c},
+  {"SPSR_fcs",	false, PSR_f | PSR_c | PSR_s},
+  {"SPSR_fcx",	false, PSR_f | PSR_c | PSR_x},
+  {"SPSR_sfx",	false, PSR_s | PSR_f | PSR_x},
+  {"SPSR_sfc",	false, PSR_s | PSR_f | PSR_c},
+  {"SPSR_sxf",	false, PSR_s | PSR_x | PSR_f},
+  {"SPSR_sxc",	false, PSR_s | PSR_x | PSR_c},
+  {"SPSR_scf",	false, PSR_s | PSR_c | PSR_f},
+  {"SPSR_scx",	false, PSR_s | PSR_c | PSR_x},
+  {"SPSR_xfs",	false, PSR_x | PSR_f | PSR_s},
+  {"SPSR_xfc",	false, PSR_x | PSR_f | PSR_c},
+  {"SPSR_xsf",	false, PSR_x | PSR_s | PSR_f},
+  {"SPSR_xsc",	false, PSR_x | PSR_s | PSR_c},
+  {"SPSR_xcf",	false, PSR_x | PSR_c | PSR_f},
+  {"SPSR_xcs",	false, PSR_x | PSR_c | PSR_s},
+  {"SPSR_cfs",	false, PSR_c | PSR_f | PSR_s},
+  {"SPSR_cfx",	false, PSR_c | PSR_f | PSR_x},
+  {"SPSR_csf",	false, PSR_c | PSR_s | PSR_f},
+  {"SPSR_csx",	false, PSR_c | PSR_s | PSR_x},
+  {"SPSR_cxf",	false, PSR_c | PSR_x | PSR_f},
+  {"SPSR_cxs",	false, PSR_c | PSR_x | PSR_s},
+  {"SPSR_fsxc",	false, PSR_f | PSR_s | PSR_x | PSR_c},
+  {"SPSR_fscx",	false, PSR_f | PSR_s | PSR_c | PSR_x},
+  {"SPSR_fxsc",	false, PSR_f | PSR_x | PSR_s | PSR_c},
+  {"SPSR_fxcs",	false, PSR_f | PSR_x | PSR_c | PSR_s},
+  {"SPSR_fcsx",	false, PSR_f | PSR_c | PSR_s | PSR_x},
+  {"SPSR_fcxs",	false, PSR_f | PSR_c | PSR_x | PSR_s},
+  {"SPSR_sfxc",	false, PSR_s | PSR_f | PSR_x | PSR_c},
+  {"SPSR_sfcx",	false, PSR_s | PSR_f | PSR_c | PSR_x},
+  {"SPSR_sxfc",	false, PSR_s | PSR_x | PSR_f | PSR_c},
+  {"SPSR_sxcf",	false, PSR_s | PSR_x | PSR_c | PSR_f},
+  {"SPSR_scfx",	false, PSR_s | PSR_c | PSR_f | PSR_x},
+  {"SPSR_scxf",	false, PSR_s | PSR_c | PSR_x | PSR_f},
+  {"SPSR_xfsc",	false, PSR_x | PSR_f | PSR_s | PSR_c},
+  {"SPSR_xfcs",	false, PSR_x | PSR_f | PSR_c | PSR_s},
+  {"SPSR_xsfc",	false, PSR_x | PSR_s | PSR_f | PSR_c},
+  {"SPSR_xscf",	false, PSR_x | PSR_s | PSR_c | PSR_f},
+  {"SPSR_xcfs",	false, PSR_x | PSR_c | PSR_f | PSR_s},
+  {"SPSR_xcsf",	false, PSR_x | PSR_c | PSR_s | PSR_f},
+  {"SPSR_cfsx",	false, PSR_c | PSR_f | PSR_s | PSR_x},
+  {"SPSR_cfxs",	false, PSR_c | PSR_f | PSR_x | PSR_s},
+  {"SPSR_csfx",	false, PSR_c | PSR_s | PSR_f | PSR_x},
+  {"SPSR_csxf",	false, PSR_c | PSR_s | PSR_x | PSR_f},
+  {"SPSR_cxfs",	false, PSR_c | PSR_x | PSR_f | PSR_s},
+  {"SPSR_cxsf",	false, PSR_c | PSR_x | PSR_s | PSR_f},
   /* For backwards compatability with older toolchain we also
      support lower case versions of some of these flags.  */
   {"cpsr",	true,  PSR_c | PSR_f},

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me

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