This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[patch] Arm ldm and stm
- From: Paul Brook <paul at codesourcery dot com>
- To: binutils at sourceware dot org
- Date: Thu, 16 Mar 2006 16:45:36 +0000
- Subject: [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