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

[patch] Arm ldm and stm


The patch below adds Arm/Thumb ldm and stm instructions as aliases for ldmia 
and stmia. This is required as part of the unified assembly syntax.

Tested with cross to arm-none-eabi.
Ok?

Paul

2006-03-16  Paul Brook  <paul@codesourcery.com>

gas/
	* config/tc-arm.c (insns): Add ldm and stm.
gas/testsuite/
	* gas/arm/thumb32.d: Add ldm and stm tests.
	* gas/arm/thumb32.s: Ditto.

Index: gas/config/tc-arm.c
===================================================================
RCS file: /var/cvsroot/src-cvs/src/gas/config/tc-arm.c,v
retrieving revision 1.247
diff -u -p -r1.247 tc-arm.c
--- gas/config/tc-arm.c	16 Mar 2006 15:08:47 -0000	1.247
+++ gas/config/tc-arm.c	16 Mar 2006 16:23:27 -0000
@@ -8944,8 +9007,10 @@ static const struct asm_opcode insns[] =
  tCE(str,	4000000, str,	   2, (RR, ADDR),    ldst, t_ldst),
  tC3(strb,	4400000, strb,	   2, (RR, ADDR),    ldst, t_ldst),
 
+ tCE(stm,	8800000, stmia,    2, (RRw, REGLST), ldmstm, t_ldmstm),
  tC3(stmia,	8800000, stmia,    2, (RRw, REGLST), ldmstm, t_ldmstm),
  tC3(stmea,	8800000, stmia,    2, (RRw, REGLST), ldmstm, t_ldmstm),
+ tCE(ldm,	8900000, ldmia,    2, (RRw, REGLST), ldmstm, t_ldmstm),
  tC3(ldmia,	8900000, ldmia,    2, (RRw, REGLST), ldmstm, t_ldmstm),
  tC3(ldmfd,	8900000, ldmia,    2, (RRw, REGLST), ldmstm, t_ldmstm),
 
Index: gas/testsuite/gas/arm/thumb32.d
===================================================================
RCS file: /var/cvsroot/src-cvs/src/gas/testsuite/gas/arm/thumb32.d,v
retrieving revision 1.15
diff -u -p -r1.15 thumb32.d
--- gas/testsuite/gas/arm/thumb32.d	24 Feb 2006 15:36:36 -0000	1.15
+++ gas/testsuite/gas/arm/thumb32.d	16 Mar 2006 16:29:04 -0000
@@ -944,3 +944,13 @@ Disassembly of section .text:
 0[0-9a-f]+ <[^>]+> f85d 8b04 	ldr.w	r8, \[sp\], #4
 0[0-9a-f]+ <[^>]+> e930 0580 	ldmdb	r0!, \{r7, r8, sl\}
 0[0-9a-f]+ <[^>]+> e920 0580 	stmdb	r0!, \{r7, r8, sl\}
+0[0-9a-f]+ <[^>]+> c806      	ldmia	r0!, \{r1, r2\}
+0[0-9a-f]+ <[^>]+> c006      	stmia	r0!, \{r1, r2\}
+0[0-9a-f]+ <[^>]+> e890 0300 	ldmia.w	r0, \{r8, r9\}
+0[0-9a-f]+ <[^>]+> e880 0300 	stmia.w	r0, \{r8, r9\}
+0[0-9a-f]+ <[^>]+> bf01      	itttt	eq
+0[0-9a-f]+ <[^>]+> c806      	ldmia	r0!, \{r1, r2\}
+0[0-9a-f]+ <[^>]+> c006      	stmia	r0!, \{r1, r2\}
+0[0-9a-f]+ <[^>]+> e890 0300 	ldmia.w	r0, \{r8, r9\}
+0[0-9a-f]+ <[^>]+> e880 0300 	stmia.w	r0, \{r8, r9\}
+0[0-9a-f]+ <[^>]+> bf00      	nop
Index: gas/testsuite/gas/arm/thumb32.s
===================================================================
RCS file: /var/cvsroot/src-cvs/src/gas/testsuite/gas/arm/thumb32.s,v
retrieving revision 1.9
diff -u -p -r1.9 thumb32.s
--- gas/testsuite/gas/arm/thumb32.s	8 Sep 2005 12:49:25 -0000	1.9
+++ gas/testsuite/gas/arm/thumb32.s	16 Mar 2006 16:28:44 -0000
@@ -758,3 +758,14 @@ xta:	
 
 	ldmdb	r0!, {r7,r8,r10}
 	stmdb	r0!, {r7,r8,r10}
+
+	ldm	r0!, {r1, r2}
+	stm	r0!, {r1, r2}
+	ldm	r0, {r8, r9}
+	stm	r0, {r8, r9}
+	itttt eq
+	ldmeq	r0!, {r1, r2}
+	stmeq	r0!, {r1, r2}
+	ldmeq	r0, {r8, r9}
+	stmeq	r0, {r8, r9}
+	nop


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