This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] Add new ppc hwsync extended mnemonic
- From: Peter Bergner <bergner at vnet dot ibm dot com>
- To: Binutils <binutils at sourceware dot org>
- Cc: Alan Modra <amodra at gmail dot com>
- Date: Wed, 03 Jun 2015 16:10:28 -0500
- Subject: [PATCH] Add new ppc hwsync extended mnemonic
- Authentication-results: sourceware.org; auth=none
This patch adds a new extended menmonic for "sync 0" (same as "sync").
The ISA documentation doesn't explicitly mention hwsync as an extended
mnemonic (yet), but it does mention "heavyweight sync" and "hwsync" as
the operation that gets performed when the sync's L field is 0.
The hardware designers and Steve Munroe both mentioned they would like
to see hwsync added as an extended mnemonic (which will show up as such
in a future ISA document) and that we disassemble to it by default.
Alan, what do you think about changing the default of disassembling
"sync 0" to "hwsync"?
Peter
opcodes/
* ppc-opc.c: (powerpc_opcodes) <hwsync>: New extended mnemonic.
gas/testsuite/
* gas/ppc/a2.d: Fixup test case due to new extended mnemonic.
* gas/ppc/power4.s <hwsync, lwsync, ptesync, sync>: Add tests.
* gas/ppc/power4.d: Likewise.
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 57a0973..64adbbc 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -5465,6 +5465,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"lswi", X(31,597), X_MASK, PPCCOM|PPCVLE, E500|E500MC, {RT, RAX, NBI}},
{"lsi", X(31,597), X_MASK, PWRCOM, PPCNONE, {RT, RA0, NB}},
+{"hwsync", XSYNC(31,598,0), 0xffffffff, PPC, BOOKE|PPC476, {0}},
{"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, E500, {0}},
{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, PPCNONE, {0}},
{"sync", X(31,598), XSYNCLE_MASK,E6500, PPCNONE, {LS, ESYNC}},
diff --git a/gas/testsuite/gas/ppc/a2.d b/gas/testsuite/gas/ppc/a2.d
index 700c665..aa05cbc 100644
--- a/gas/testsuite/gas/ppc/a2.d
+++ b/gas/testsuite/gas/ppc/a2.d
@@ -544,9 +544,9 @@ Disassembly of section \.text:
810: (7e 95 01 90|90 01 95 7e) subfze r20,r21
814: (7e 95 05 91|91 05 95 7e) subfzeo\. r20,r21
818: (7e 95 05 90|90 05 95 7e) subfzeo r20,r21
- 81c: (7c 00 04 ac|ac 04 00 7c) sync
- 820: (7c 00 04 ac|ac 04 00 7c) sync
- 824: (7c 00 04 ac|ac 04 00 7c) sync
+ 81c: (7c 00 04 ac|ac 04 00 7c) hwsync
+ 820: (7c 00 04 ac|ac 04 00 7c) hwsync
+ 824: (7c 00 04 ac|ac 04 00 7c) hwsync
828: (7c 20 04 ac|ac 04 20 7c) lwsync
82c: (7c aa 58 88|88 58 aa 7c) tdlge r10,r11
830: (08 aa 00 64|64 00 aa 08) tdlgei r10,100
diff --git a/gas/testsuite/gas/ppc/power4.s b/gas/testsuite/gas/ppc/power4.s
index 49423a1..583284c 100644
--- a/gas/testsuite/gas/ppc/power4.s
+++ b/gas/testsuite/gas/ppc/power4.s
@@ -72,6 +72,13 @@ dsym1:
stq 0,16(5)
stq 2,16(5)
slbia
+ hwsync
+ sync
+ sync 0
+ lwsync
+ sync 1
+ ptesync
+ sync 2
.section ".data"
usym0: .llong 0xcafebabe
diff --git a/gas/testsuite/gas/ppc/power4.d b/gas/testsuite/gas/ppc/power4.d
index cd71245..8a09c05 100644
--- a/gas/testsuite/gas/ppc/power4.d
+++ b/gas/testsuite/gas/ppc/power4.d
@@ -10,7 +10,7 @@ start address 0x0+
Sections:
Idx Name +Size +VMA +LMA +File off +Algn
- +0 \.text +0+cc +0+ +0+ +.*
+ +0 \.text +0+e8 +0+ +0+ +.*
+CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
+1 \.data +0+20 +0+ +0+ +.*
+CONTENTS, ALLOC, LOAD, DATA
@@ -99,3 +99,10 @@ Disassembly of section \.text:
.*: (f8 05 00 12|12 00 05 f8) stq r0,16\(r5\)
.*: (f8 45 00 12|12 00 45 f8) stq r2,16\(r5\)
.*: (7c 00 03 e4|e4 03 00 7c) slbia
+.*: (7c 00 04 ac|ac 04 00 7c) hwsync
+.*: (7c 00 04 ac|ac 04 00 7c) hwsync
+.*: (7c 00 04 ac|ac 04 00 7c) hwsync
+.*: (7c 20 04 ac|ac 04 20 7c) lwsync
+.*: (7c 20 04 ac|ac 04 20 7c) lwsync
+.*: (7c 40 04 ac|ac 04 40 7c) ptesync
+.*: (7c 40 04 ac|ac 04 40 7c) ptesync