[patch] Arm FPA stfpls

Khem Raj kraj@mvista.com
Thu Sep 1 20:52:00 GMT 2005


Hi Paul,

There is a small typo in comment.  'Disabiguate' should be Disambiguate 
I think.

+	  /* Some mnemonics are ambiguous between infix and suffix
+	     conditions.  Disabiguate based on assembly syntax.  */


Thanks

Khem

Paul Brook wrote:

>The attached patch fixes a bug introduced with the Arm unified assembly syntax 
>changes.
>
>The "stfpls" instruction is not parsed correctly. This mnemonic matches both 
>an infixed and suffixed instructions (stfs pl and stfp ls respectively).
>
>The problem is that when a conditional suffix matches but is disallowed, the 
>parser returnes failure instead of trying an conditional infix.
>
>Tested with cross to arm-none-eabi.
>Ok?
>
>Paul
>
>2005-09-01  Paul Brook  <paul@codesourcery.com>
>
>gas/
>	* config/tc-arm.c (opcode_lookup): Look for infix opcode when
>	incorrect suffix matches.
>gas/testsuite/
>	* gas/arm/fpa-mem.d: Test "stfpls".
>	* gas/arm/fpa-mem.s: Ditto.
>  
>
>------------------------------------------------------------------------
>
>Index: gas/config/tc-arm.c
>===================================================================
>RCS file: /var/cvsroot/src-cvs/src/gas/config/tc-arm.c,v
>retrieving revision 1.220
>diff -u -p -r1.220 tc-arm.c
>--- gas/config/tc-arm.c	15 Aug 2005 19:19:54 -0000	1.220
>+++ gas/config/tc-arm.c	1 Sep 2005 18:50:17 -0000
>@@ -7676,8 +7676,10 @@ opcode_lookup (char **str)
> 	{
> 	case OT_cinfix3:
> 	case OT_odd_infix_unc:
>+	  /* Some mnemonics are ambiguous between infix and suffix
>+	     conditions.  Disabiguate based on assembly syntax.  */
> 	  if (!unified_syntax)
>-	    return 0;
>+	    break;
> 	  /* else fall through */
> 
> 	case OT_csuffix:
>Index: gas/testsuite/gas/arm/fpa-mem.d
>===================================================================
>RCS file: /var/cvsroot/src-cvs/src/gas/testsuite/gas/arm/fpa-mem.d,v
>retrieving revision 1.4
>diff -u -p -r1.4 fpa-mem.d
>--- gas/testsuite/gas/arm/fpa-mem.d	3 Nov 2003 14:47:37 -0000	1.4
>+++ gas/testsuite/gas/arm/fpa-mem.d	1 Sep 2005 18:57:39 -0000
>@@ -30,5 +30,5 @@ Disassembly of section .text:
> 0+4c <[^>]*> ed800200 ?	sfm	f0, 4, \[r0\]
> 0+50 <[^>]*> ed00020c ?	sfm	f0, 4, \[r0, #-48\]
> 0+54 <[^>]*> ed800200 ?	sfm	f0, 4, \[r0\]
>-0+58 <[^>]*> e1a00000 ?	nop[ 	]+\(mov r0,r0\)
>-0+5c <[^>]*> e1a00000 ?	nop[ 	]+\(mov r0,r0\)
>+0+58 <[^>]*> 5d800100 ?	stfpls	f0, \[r0\]
>+0+5c <[^>]*> 9dc08100 ?	stflsp	f0, \[r0\]
>Index: gas/testsuite/gas/arm/fpa-mem.s
>===================================================================
>RCS file: /var/cvsroot/src-cvs/src/gas/testsuite/gas/arm/fpa-mem.s,v
>retrieving revision 1.2
>diff -u -p -r1.2 fpa-mem.s
>--- gas/testsuite/gas/arm/fpa-mem.s	22 Aug 2002 16:10:04 -0000	1.2
>+++ gas/testsuite/gas/arm/fpa-mem.s	1 Sep 2005 18:55:05 -0000
>@@ -25,7 +25,10 @@ F:
> 	sfmfd	f0, 4, [r0]
> 	sfmea	f0, 4, [r0]
> 	
>-	# Add two nop instructions to ensure that the
>-	# output is 32-byte aligned as required for arm-aout.
>-	nop
>-	nop
>+	# Test mnemonic that is ambiguous between infix and suffic
>+	# condition codes
>+	# sfts condition code pl
>+	stfpls	f0, [r0]
>+	.syntax unified
>+	# stfp condition code ls
>+	stfpls	f0, [r0]
>  
>



More information about the Binutils mailing list