diff options
author | Zack Weinberg <zackw@panix.com> | 2003-12-10 22:12:50 +0000 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2003-12-10 22:12:50 +0000 |
commit | 1f6c9eb08453736ce145144dbdd0b3727e2c5592 (patch) | |
tree | f37591828f9f05c6d90404b1fd903a36bbf2125d | |
parent | 7ae4c3a566beba00e16dd10bb69414ffc214dcbb (diff) | |
download | fsf-binutils-gdb-1f6c9eb08453736ce145144dbdd0b3727e2c5592.zip fsf-binutils-gdb-1f6c9eb08453736ce145144dbdd0b3727e2c5592.tar.gz fsf-binutils-gdb-1f6c9eb08453736ce145144dbdd0b3727e2c5592.tar.bz2 |
opcodes:
* ppc-opc.c (MO): Make optional.
(RAO, RSO, SHO): New optional forms of RA, RS, SH operands.
(tlbwe): Accept for both PPC403 and BOOKE. Make all operands optional.
gas:
* tc-ppc.c (md_assemble): Rewrite comment about optional operands
to indicate that 'all or none' is also handled. Pluralize a
word in another comment.
gas/testsuite:
* gas/ppc/booke.s: Add two more forms of the mbar instruction
and three forms of the tlbwe instruction.
* gas/ppc/booke.d: Update to match.
-rw-r--r-- | gas/ChangeLog | 14 | ||||
-rw-r--r-- | gas/config/tc-ppc.c | 17 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 34 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/booke.d | 113 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/booke.s | 5 | ||||
-rw-r--r-- | opcodes/ChangeLog | 6 | ||||
-rw-r--r-- | opcodes/ppc-opc.c | 23 |
7 files changed, 126 insertions, 86 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 2ce547e..677e0d0 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2003-12-10 Zack Weinberg <zack@codesourcery.com> + + * tc-ppc.c (md_assemble): Rewrite comment about optional operands + to indicate that 'all or none' is also handled. Pluralize a + word in another comment. + 2003-12-10 Paul Brook <paul@codesourcery.com> * config/tc-arm.c (FPU_MAVERICK): Define. @@ -32,7 +38,7 @@ 2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com> Mark Mitchell <mark@codesourcery.com> Richard Earnshaw <rearnsha@arm.com> - + Add V6 support. * config/tc-arm.c (ARM_EXT_V6): New macro. (ARM_ARCH_V6): Likewise. @@ -96,11 +102,11 @@ * config/tc-sh.c: Add support for sh4a and no-fpu variants. * testsuite/gas/sh/basic.exp: Call tests for sh4a. - * testsuite/gas/sh/{err-sh4a-fp.s, err-sh4a.s, - err-sh4al-dsp.s, sh4a-dsp.d, sh4a-dsp.s, sh4a-fp.d, + * testsuite/gas/sh/{err-sh4a-fp.s, err-sh4a.s, + err-sh4al-dsp.s, sh4a-dsp.d, sh4a-dsp.s, sh4a-fp.d, sh4a-fp.s, sh4a.d, sh4a.s, sh4al-dsp.d, sh4al-dsp.s: New files, tests for sh4a and related variants. - + 2003-12-05 Michael Snyder <msnyder@redhat.com> * config/tc-sh.c (md_show_usage): Mention new -isa options. diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index 84698be..f4cf419 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -2136,13 +2136,14 @@ md_assemble (str) /* PowerPC operands are just expressions. The only real issue is that a few operand types are optional. All cases which might use - an optional operand separate the operands only with commas (in - some cases parentheses are used, as in ``lwz 1,0(1)'' but such - cases never have optional operands). There is never more than - one optional operand for an instruction. So, before we start - seriously parsing the operands, we check to see if we have an - optional operand, and, if we do, we count the number of commas to - see whether the operand should be omitted. */ + an optional operand separate the operands only with commas (in some + cases parentheses are used, as in ``lwz 1,0(1)'' but such cases never + have optional operands). Most instructions with optional operands + have only one. Those that have more than one optional operand can + take either all their operands or none. So, before we start seriously + parsing the operands, we check to see if we have optional operands, + and if we do, we count the number of commas to see which operands + have been omitted. */ skip_optional = 0; for (opindex_ptr = opcode->operands; *opindex_ptr != 0; opindex_ptr++) { @@ -2178,7 +2179,7 @@ md_assemble (str) /* If there are fewer operands in the line then are called for by the instruction, we want to skip the optional - operand. */ + operands. */ if (opcount < num_operands_expected) skip_optional = 1; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index b8cfb69..8c2996a 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2003-12-10 Zack Weinberg <zack@codesourcery.com> + + * gas/ppc/booke.s: Add two more forms of the mbar instruction + and three forms of the tlbwe instruction. + * gas/ppc/booke.d: Update to match. + 2003-12-10 Paul Brook <paul@codesourcery.com> * gas/arm/arm.exp: Add r15-bad. @@ -95,13 +101,13 @@ 2003-11-14 Nick Clifton <nickc@redhat.com> * gas/arm/arm7.d: Pass -D instead of -d to objdump in order to - display the contents of data fields in the .text section. - This change is necessary after the addition of arm elf mapping - symbol support to gas. - * gas/arm/pic.d: Expect addresses with function name offsets. - This change is necessary after the addition of arm elf mapping - symbol support to gas. - + display the contents of data fields in the .text section. + This change is necessary after the addition of arm elf mapping + symbol support to gas. + * gas/arm/pic.d: Expect addresses with function name offsets. + This change is necessary after the addition of arm elf mapping + symbol support to gas. + 2003-11-13 Nick Clifton <nickc@redhat.com> * gas/arm/mapping.s: New test: Source for ARM ELF mapping @@ -215,10 +221,10 @@ * gas/z8k/jr-back.d: New file. * gas/z8k/jr-forw.d: New file. * gas/z8k/jr-back.s: Fix displacement length. Add some more jumps - for jr-back.d. + for jr-back.d. * gas/z8k/jr-backf.s: Fix displacement length. * gas/z8k/jr-forw.s: Fix displacement length. Add some more jumps - for jr-forw.d. + for jr-forw.d. * gas/z8k/jr-forwf.s: Fix displacement length. * gas/z8k/z8k.exp: Run new tests. @@ -372,11 +378,11 @@ 2003-09-01 Maciej W. Rozycki <macro@ds2.pg.gda.pl> - * gas/mips/elf-rel-got-n32.d: Fix ulw and usw patterns for - little-endian. - * gas/mips/elf-rel-got-n64.d: Likewise. - * gas/mips/elf-rel-xgot-n32.d: Likewise. - * gas/mips/elf-rel-xgot-n64.d: Likewise. + * gas/mips/elf-rel-got-n32.d: Fix ulw and usw patterns for + little-endian. + * gas/mips/elf-rel-got-n64.d: Likewise. + * gas/mips/elf-rel-xgot-n32.d: Likewise. + * gas/mips/elf-rel-xgot-n64.d: Likewise. 2003-08-29 Jakub Jelinek <jakub@redhat.com> diff --git a/gas/testsuite/gas/ppc/booke.d b/gas/testsuite/gas/ppc/booke.d index 44b74a4..595424c 100644 --- a/gas/testsuite/gas/ppc/booke.d +++ b/gas/testsuite/gas/ppc/booke.d @@ -81,59 +81,64 @@ Disassembly of section \.text: dc: 7c 09 56 26 tlbivaxe r9,r10 e0: 7c 0b 67 24 tlbsx r11,r12 e4: 7c 0d 77 26 tlbsxe r13,r14 + e8: 7c 00 07 a4 tlbwe + ec: 7c 00 07 a4 tlbwe + f0: 7c 21 0f a4 tlbwe r1,r1,1 -0+00000e8 <branch_target_7>: - e8: 7c 22 1b 14 adde64 r1,r2,r3 - ec: 7c 85 37 14 adde64o r4,r5,r6 - f0: 7c e8 03 d4 addme64 r7,r8 - f4: 7d 2a 07 d4 addme64o r9,r10 - f8: 7d 6c 03 94 addze64 r11,r12 - fc: 7d ae 07 94 addze64o r13,r14 - 100: 7e 80 04 40 mcrxr64 cr5 - 104: 7d f0 8b 10 subfe64 r15,r16,r17 - 108: 7e 53 a7 10 subfe64o r18,r19,r20 - 10c: 7e b6 03 d0 subfme64 r21,r22 - 110: 7e f8 07 d0 subfme64o r23,r24 - 114: 7f 3a 03 90 subfze64 r25,r26 - 118: 7f 7c 07 90 subfze64o r27,r28 +0+00000f4 <branch_target_7>: + f4: 7c 22 1b 14 adde64 r1,r2,r3 + f8: 7c 85 37 14 adde64o r4,r5,r6 + fc: 7c e8 03 d4 addme64 r7,r8 + 100: 7d 2a 07 d4 addme64o r9,r10 + 104: 7d 6c 03 94 addze64 r11,r12 + 108: 7d ae 07 94 addze64o r13,r14 + 10c: 7e 80 04 40 mcrxr64 cr5 + 110: 7d f0 8b 10 subfe64 r15,r16,r17 + 114: 7e 53 a7 10 subfe64o r18,r19,r20 + 118: 7e b6 03 d0 subfme64 r21,r22 + 11c: 7e f8 07 d0 subfme64o r23,r24 + 120: 7f 3a 03 90 subfze64 r25,r26 + 124: 7f 7c 07 90 subfze64o r27,r28 -0+000011c <branch_target_8>: - 11c: e8 22 03 28 stbe r1,50\(r2\) - 120: e8 64 02 89 stbue r3,40\(r4\) - 124: 7c a6 39 fe stbuxe r5,r6,r7 - 128: 7d 09 51 be stbxe r8,r9,r10 - 12c: 7d 6c 6b ff stdcxe\. r11,r12,r13 - 130: f9 cf 00 78 stde r14,28\(r15\) - 134: fa 11 00 59 stdue r16,20\(r17\) - 138: 7e 53 a7 3e stdxe r18,r19,r20 - 13c: 7e b6 bf 7e stduxe r21,r22,r23 - 140: f8 38 00 3e stfde f1,12\(r24\) - 144: f8 59 00 0f stfdue f2,0\(r25\) - 148: 7c 7a dd be stfdxe f3,r26,r27 - 14c: 7c 9c ed fe stfduxe f4,r28,r29 - 150: 7c be ff be stfiwxe f5,r30,r31 - 154: f8 de 00 6c stfse f6,24\(r30\) - 158: f8 fd 00 5d stfsue f7,20\(r29\) - 15c: 7d 1c dd 3e stfsxe f8,r28,r27 - 160: 7d 3a cd 7e stfsuxe f9,r26,r25 - 164: 7f 17 b7 3c sthbrxe r24,r23,r22 - 168: ea b4 01 ea sthe r21,30\(r20\) - 16c: ea 72 02 8b sthue r19,40\(r18\) - 170: 7e 30 7b 7e sthuxe r17,r16,r15 - 174: 7d cd 63 3e sthxe r14,r13,r12 - 178: 7d 6a 4d 3c stwbrxe r11,r10,r9 - 17c: 7d 07 31 3d stwcxe\. r8,r7,r6 - 180: e8 a4 03 2e stwe r5,50\(r4\) - 184: e8 62 02 8f stwue r3,40\(r2\) - 188: 7c 22 19 7e stwuxe r1,r2,r3 - 18c: 7c 85 31 3e stwxe r4,r5,r6 - 190: 4c 00 00 66 rfci - 194: 7c 60 01 06 wrtee r3 - 198: 7c 00 81 46 wrteei 1 - 19c: 7c 85 02 06 mfdcrx r4,r5 - 1a0: 7c aa 3a 86 mfdcr r5,234 - 1a4: 7c e6 03 06 mtdcrx r6,r7 - 1a8: 7d 10 6b 86 mtdcr 432,r8 - 1ac: 7c 00 04 ac msync - 1b0: 7c 09 55 ec dcba r9,r10 - 1b4: 7c 00 06 ac mbar 0 +0+0000128 <branch_target_8>: + 128: e8 22 03 28 stbe r1,50\(r2\) + 12c: e8 64 02 89 stbue r3,40\(r4\) + 130: 7c a6 39 fe stbuxe r5,r6,r7 + 134: 7d 09 51 be stbxe r8,r9,r10 + 138: 7d 6c 6b ff stdcxe\. r11,r12,r13 + 13c: f9 cf 00 78 stde r14,28\(r15\) + 140: fa 11 00 59 stdue r16,20\(r17\) + 144: 7e 53 a7 3e stdxe r18,r19,r20 + 148: 7e b6 bf 7e stduxe r21,r22,r23 + 14c: f8 38 00 3e stfde f1,12\(r24\) + 150: f8 59 00 0f stfdue f2,0\(r25\) + 154: 7c 7a dd be stfdxe f3,r26,r27 + 158: 7c 9c ed fe stfduxe f4,r28,r29 + 15c: 7c be ff be stfiwxe f5,r30,r31 + 160: f8 de 00 6c stfse f6,24\(r30\) + 164: f8 fd 00 5d stfsue f7,20\(r29\) + 168: 7d 1c dd 3e stfsxe f8,r28,r27 + 16c: 7d 3a cd 7e stfsuxe f9,r26,r25 + 170: 7f 17 b7 3c sthbrxe r24,r23,r22 + 174: ea b4 01 ea sthe r21,30\(r20\) + 178: ea 72 02 8b sthue r19,40\(r18\) + 17c: 7e 30 7b 7e sthuxe r17,r16,r15 + 180: 7d cd 63 3e sthxe r14,r13,r12 + 184: 7d 6a 4d 3c stwbrxe r11,r10,r9 + 188: 7d 07 31 3d stwcxe\. r8,r7,r6 + 18c: e8 a4 03 2e stwe r5,50\(r4\) + 190: e8 62 02 8f stwue r3,40\(r2\) + 194: 7c 22 19 7e stwuxe r1,r2,r3 + 198: 7c 85 31 3e stwxe r4,r5,r6 + 19c: 4c 00 00 66 rfci + 1a0: 7c 60 01 06 wrtee r3 + 1a4: 7c 00 81 46 wrteei 1 + 1a8: 7c 85 02 06 mfdcrx r4,r5 + 1ac: 7c aa 3a 86 mfdcr r5,234 + 1b0: 7c e6 03 06 mtdcrx r6,r7 + 1b4: 7d 10 6b 86 mtdcr 432,r8 + 1b8: 7c 00 04 ac msync + 1bc: 7c 09 55 ec dcba r9,r10 + 1c0: 7c 00 06 ac mbar + 1c4: 7c 00 06 ac mbar + 1c8: 7c 20 06 ac mbar 1 diff --git a/gas/testsuite/gas/ppc/booke.s b/gas/testsuite/gas/ppc/booke.s index f0bbecc..4c40b49 100644 --- a/gas/testsuite/gas/ppc/booke.s +++ b/gas/testsuite/gas/ppc/booke.s @@ -72,6 +72,9 @@ branch_target_6: tlbivaxe 9, 10 tlbsx 11, 12 tlbsxe 13, 14 + tlbwe + tlbwe 0,0,0 + tlbwe 1,1,1 branch_target_7: adde64 1, 2, 3 @@ -128,4 +131,6 @@ branch_target_8: mtdcr 432, 8 msync dcba 9, 10 + mbar mbar 0 + mbar 1 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 1d181fd..046e268 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2003-12-10 Zack Weinberg <zack@codesourcery.com> + + * ppc-opc.c (MO): Make optional. + (RAO, RSO, SHO): New optional forms of RA, RS, SH operands. + (tlbwe): Accept for both PPC403 and BOOKE. Make all operands optional. + 2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com> Mark Mitchell <mark@codesourcery.com> Richard Earnshaw <rearnsha@arm.com> diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c index 0da244c..d011edf 100644 --- a/opcodes/ppc-opc.c +++ b/opcodes/ppc-opc.c @@ -344,7 +344,7 @@ const struct powerpc_operand powerpc_operands[] = /* The MO field in an mbar instruction. */ #define MO MB6 + 1 - { 5, 21, 0, 0, 0 }, + { 5, 21, 0, 0, PPC_OPERAND_OPTIONAL }, /* The NB field in an X form instruction. The value 32 is stored as 0. */ @@ -384,8 +384,12 @@ const struct powerpc_operand powerpc_operands[] = #define RAS RAM + 1 { 5, 16, insert_ras, 0, PPC_OPERAND_GPR }, + /* The RA field of the tlbwe instruction, which is optional. */ +#define RAO RAS + 1 + { 5, 16, 0, 0, PPC_OPERAND_GPR|PPC_OPERAND_OPTIONAL }, + /* The RB field in an X, XO, M, or MDS form instruction. */ -#define RB RAS + 1 +#define RB RAO + 1 #define RB_MASK (0x1f << 11) { 5, 11, 0, 0, PPC_OPERAND_GPR }, @@ -413,8 +417,12 @@ const struct powerpc_operand powerpc_operands[] = #define RTQ RSQ + 1 { 5, 21, insert_rtq, 0, PPC_OPERAND_GPR }, + /* The RS field of the tlbwe instruction, which is optional. */ +#define RSO RTQ + 1 + { 5, 21, 0, 0, PPC_OPERAND_GPR|PPC_OPERAND_OPTIONAL }, + /* The SH field in an X or M form instruction. */ -#define SH RTQ + 1 +#define SH RSO + 1 #define SH_MASK (0x1f << 11) { 5, 11, 0, 0, 0 }, @@ -423,8 +431,12 @@ const struct powerpc_operand powerpc_operands[] = #define SH6_MASK ((0x1f << 11) | (1 << 1)) { 6, 1, insert_sh6, extract_sh6, 0 }, + /* The SH field of the tlbwe instruction, which is optional. */ +#define SHO SH6 + 1 + { 5, 11,0, 0, PPC_OPERAND_OPTIONAL }, + /* The SI field in a D form instruction. */ -#define SI SH6 + 1 +#define SI SHO + 1 { 16, 0, 0, 0, PPC_OPERAND_SIGNED }, /* The SI field in a D form instruction when we accept a wide range @@ -4256,8 +4268,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { { "tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, { RT, RA } }, { "tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, { RT, RA } }, -{ "tlbwe", X(31,978), X_MASK, BOOKE, { 0 } }, -{ "tlbwe", X(31,978), X_MASK, PPC403, { RS, RA, SH } }, +{ "tlbwe", X(31,978), X_MASK, PPC403|BOOKE, { RSO, RAO, SHO } }, { "tlbld", X(31,978), XRTRA_MASK, PPC, { RB } }, { "icbi", X(31,982), XRT_MASK, PPC, { RA, RB } }, |