2007-06-26 Paul Brook <paul@codesourcery.com>
authorPaul Brook <paul@codesourcery.com>
Tue, 26 Jun 2007 21:36:37 +0000 (21:36 +0000)
committerPaul Brook <paul@codesourcery.com>
Tue, 26 Jun 2007 21:36:37 +0000 (21:36 +0000)
gas/
* config/tc-arm.c (parse_operands): Accept generic coprocessor regs
for OP_RVC.
(reg_names): Add fpinst, pfinst2, mvfr0 and mvfr1.

gas/testsuite/
* gas/arm/vfp1xD.d: Add new fmrx/fmxr tests.
* gas/arm/vfp1xD.s: Ditto.
* gas/arm/vfp1xD_t2.d: Ditto.
* gas/arm/vfp1xD_t2.s: Ditto.

opcodes/
* arm-dis.c (coprocessor_opcodes): Add fmxr/fmrx mvfr0/mvfr1.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/vfp1xD.d
gas/testsuite/gas/arm/vfp1xD.s
gas/testsuite/gas/arm/vfp1xD_t2.d
gas/testsuite/gas/arm/vfp1xD_t2.s
opcodes/ChangeLog
opcodes/arm-dis.c

index cb45c263a62474bccd3ecaa699a3d490da3c5e13..c7f3feab2566eacfd33a45b1c7e02ee02b7a476b 100644 (file)
@@ -1,3 +1,9 @@
+2007-06-26  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (parse_operands): Accept generic coprocessor regs
+       for OP_RVC.
+       (reg_names): Add fpinst, pfinst2, mvfr0 and mvfr1.
+
 2007-06-25  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/tc-i386.c (process_operands): Replace regKludge
index 54e8483418c762f56c6e3147e3cdbd39d3952f59..2a2b587e882cf7237c33f272e9e575205b0d052d 100644 (file)
@@ -5612,7 +5612,13 @@ parse_operands (char *str, const unsigned char *pattern)
        case OP_RVD:   po_reg_or_fail (REG_TYPE_VFD);     break;
         case OP_oRND:
        case OP_RND:   po_reg_or_fail (REG_TYPE_VFD);     break;
-       case OP_RVC:   po_reg_or_fail (REG_TYPE_VFC);     break;
+       case OP_RVC:
+         po_reg_or_goto (REG_TYPE_VFC, coproc_reg);
+         break;
+         /* Also accept generic coprocessor regs for unknown registers.  */
+         coproc_reg:
+         po_reg_or_fail (REG_TYPE_CN);
+         break;
        case OP_RMF:   po_reg_or_fail (REG_TYPE_MVF);     break;
        case OP_RMD:   po_reg_or_fail (REG_TYPE_MVD);     break;
        case OP_RMFX:  po_reg_or_fail (REG_TYPE_MVFX);    break;
@@ -14506,6 +14512,10 @@ static const struct reg_entry reg_names[] =
   /* VFP control registers.  */
   REGDEF(fpsid,0,VFC), REGDEF(fpscr,1,VFC), REGDEF(fpexc,8,VFC),
   REGDEF(FPSID,0,VFC), REGDEF(FPSCR,1,VFC), REGDEF(FPEXC,8,VFC),
+  REGDEF(fpinst,9,VFC), REGDEF(fpinst2,10,VFC),
+  REGDEF(FPINST,9,VFC), REGDEF(FPINST2,10,VFC),
+  REGDEF(mvfr0,7,VFC), REGDEF(mvfr1,6,VFC),
+  REGDEF(MVFR0,7,VFC), REGDEF(MVFR1,6,VFC),
 
   /* Maverick DSP coprocessor registers.  */
   REGSET(mvf,MVF),  REGSET(mvd,MVD),  REGSET(mvfx,MVFX),  REGSET(mvdx,MVDX),
index 30ad225f8bcd9af4a1bd64afe1a82f95b37dae7e..0c7e228f833c0618ee34b9f62ee36251ce6fc26b 100644 (file)
@@ -1,3 +1,10 @@
+2007-06-26  Paul Brook  <paul@codesourcery.com>
+
+       * gas/arm/vfp1xD.d: Add new fmrx/fmxr tests.
+       * gas/arm/vfp1xD.s: Ditto.
+       * gas/arm/vfp1xD_t2.d: Ditto.
+       * gas/arm/vfp1xD_t2.s: Ditto.
+
 2007-06-24  Nick Clifton  <nickc@redhat.com>
 
        * gas/arm/backslash-at.d: Fix for non-ELF arm targets.
index 096b46c86e4cfea60f924e4190448a389a214778..22932e5284c0ef60f325d938166c1d2f9a7d0dcf 100644 (file)
@@ -239,3 +239,15 @@ Disassembly of section .text:
 0+394 <[^>]*> 0ef09a10         fmrxeq  r9, fpsid
 0+398 <[^>]*> 0e019a90         fmsreq  s3, r9
 0+39c <[^>]*> 0ee08a10         fmxreq  fpsid, r8
+0+3a0 <[^>]*> eef90a10         fmrx    r0, fpinst      @ Impl def
+0+3a4 <[^>]*> eefa0a10         fmrx    r0, fpinst2     @ Impl def
+0+3a8 <[^>]*> eef70a10         fmrx    r0, mvfr0
+0+3ac <[^>]*> eef60a10         fmrx    r0, mvfr1
+0+3b0 <[^>]*> eefc0a10         fmrx    r0, <impl def 0xc>
+0+3b4 <[^>]*> eee90a10         fmxr    fpinst, r0      @ Impl def
+0+3b8 <[^>]*> eeea0a10         fmxr    fpinst2, r0     @ Impl def
+0+3bc <[^>]*> eee70a10         fmxr    mvfr0, r0
+0+3c0 <[^>]*> eee60a10         fmxr    mvfr1, r0
+0+3c4 <[^>]*> eeec0a10         fmxr    <impl def 0xc>, r0
+0+3c8 <[^>]*> e1a00000         nop                     \(mov r0,r0\)
+0+3cc <[^>]*> e1a00000         nop                     \(mov r0,r0\)
index 82f080f499b0c6fba31dd9c38016a9dfe62d9950..ecc022638158f08d7a4fda4b2ae29a2a8dee9787 100644 (file)
@@ -337,3 +337,17 @@ F:
        fmsreq  s3, r9
        fmxreq  fpsid, r8
 
+       @ Implementation specific system registers
+       fmrx    r0, fpinst
+       fmrx    r0, fpinst2
+       fmrx    r0, mvfr0
+       fmrx    r0, mvfr1
+       fmrx    r0, c12
+       fmxr    fpinst, r0
+       fmxr    fpinst2, r0
+       fmxr    mvfr0, r0
+       fmxr    mvfr1, r0
+       fmxr    c12, r0
+
+       nop
+       nop
index db8a3aa7c7ad21638663f2551bc14abd66f0d05a..d2943114d6c0aea3aed7c6d0c744b6408bb64732 100644 (file)
@@ -253,5 +253,19 @@ Disassembly of section .text:
 0+3b2 <[^>]*> bf04             itt     eq
 0+3b4 <[^>]*> ee01 9a90        fmsreq  s3, r9
 0+3b8 <[^>]*> eee0 8a10        fmxreq  fpsid, r8
-0+3bc <[^>]*> bf00             nop
-0+3be <[^>]*> bf00             nop
+0+3bc <[^>]*> eef9 0a10        fmrx    r0, fpinst      @ Impl def
+0+3c0 <[^>]*> eefa 0a10        fmrx    r0, fpinst2     @ Impl def
+0+3c4 <[^>]*> eef7 0a10        fmrx    r0, mvfr0
+0+3c8 <[^>]*> eef6 0a10        fmrx    r0, mvfr1
+0+3cc <[^>]*> eefc 0a10        fmrx    r0, <impl def 0xc>
+0+3d0 <[^>]*> eee9 0a10        fmxr    fpinst, r0      @ Impl def
+0+3d4 <[^>]*> eeea 0a10        fmxr    fpinst2, r0     @ Impl def
+0+3d8 <[^>]*> eee7 0a10        fmxr    mvfr0, r0
+0+3dc <[^>]*> eee6 0a10        fmxr    mvfr1, r0
+0+3e0 <[^>]*> eeec 0a10        fmxr    <impl def 0xc>, r0
+0+3e4 <[^>]*> bf00             nop
+0+3e6 <[^>]*> bf00             nop
+0+3e8 <[^>]*> bf00             nop
+0+3ea <[^>]*> bf00             nop
+0+3ec <[^>]*> bf00             nop
+0+3ee <[^>]*> bf00             nop
index f3087a37ee969b878450d81256b80fb554b426ee..8e962c07e3e93c264fd336cbe0c91ed791b609f5 100644 (file)
@@ -354,6 +354,21 @@ F:
        fmsreq  s3, r9
        fmxreq  fpsid, r8
 
-       @ 2 nops to pad to 16-byte boundary
+       @ Implementation specific system registers
+       fmrx    r0, fpinst
+       fmrx    r0, fpinst2
+       fmrx    r0, mvfr0
+       fmrx    r0, mvfr1
+       fmrx    r0, c12
+       fmxr    fpinst, r0
+       fmxr    fpinst2, r0
+       fmxr    mvfr0, r0
+       fmxr    mvfr1, r0
+       fmxr    c12, r0
+
+       nop
+       nop
+       nop
+       nop
        nop
        nop
index ef72a2fe3bb8da2ec2f8c0ec810b4754c9c91185..84ef5cf1e6d7a2b3879aff28121957c73cdb0745 100644 (file)
@@ -1,3 +1,7 @@
+2007-06-26  Paul Brook  <paul@codesourcery.com>
+
+       * arm-dis.c (coprocessor_opcodes): Add fmxr/fmrx mvfr0/mvfr1.
+
 2007-06-25  H.J. Lu  <hongjiu.lu@intel.com>
 
        * i386-opc.h (regKludge): Renamed to ...
index c39aa514ac2efc1a4c6d006bc7bb0f356d39d712..2af8fdaff9780aff6df087452476948beb8ab528 100644 (file)
@@ -268,11 +268,15 @@ static const struct opcode32 coprocessor_opcodes[] =
   {FPU_VFP_EXT_V1xD, 0x0ef1fa10, 0x0fffffff, "fmstat%c"},
   {FPU_VFP_EXT_V1xD, 0x0ee00a10, 0x0fff0fff, "fmxr%c\tfpsid, %12-15r"},
   {FPU_VFP_EXT_V1xD, 0x0ee10a10, 0x0fff0fff, "fmxr%c\tfpscr, %12-15r"},
+  {FPU_VFP_EXT_V1xD, 0x0ee60a10, 0x0fff0fff, "fmxr%c\tmvfr1, %12-15r"},
+  {FPU_VFP_EXT_V1xD, 0x0ee70a10, 0x0fff0fff, "fmxr%c\tmvfr0, %12-15r"},
   {FPU_VFP_EXT_V1xD, 0x0ee80a10, 0x0fff0fff, "fmxr%c\tfpexc, %12-15r"},
   {FPU_VFP_EXT_V1xD, 0x0ee90a10, 0x0fff0fff, "fmxr%c\tfpinst, %12-15r\t@ Impl def"},
   {FPU_VFP_EXT_V1xD, 0x0eea0a10, 0x0fff0fff, "fmxr%c\tfpinst2, %12-15r\t@ Impl def"},
   {FPU_VFP_EXT_V1xD, 0x0ef00a10, 0x0fff0fff, "fmrx%c\t%12-15r, fpsid"},
   {FPU_VFP_EXT_V1xD, 0x0ef10a10, 0x0fff0fff, "fmrx%c\t%12-15r, fpscr"},
+  {FPU_VFP_EXT_V1xD, 0x0ef60a10, 0x0fff0fff, "fmrx%c\t%12-15r, mvfr1"},
+  {FPU_VFP_EXT_V1xD, 0x0ef70a10, 0x0fff0fff, "fmrx%c\t%12-15r, mvfr0"},
   {FPU_VFP_EXT_V1xD, 0x0ef80a10, 0x0fff0fff, "fmrx%c\t%12-15r, fpexc"},
   {FPU_VFP_EXT_V1xD, 0x0ef90a10, 0x0fff0fff, "fmrx%c\t%12-15r, fpinst\t@ Impl def"},
   {FPU_VFP_EXT_V1xD, 0x0efa0a10, 0x0fff0fff, "fmrx%c\t%12-15r, fpinst2\t@ Impl def"},