aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/tc-ppc.c20
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/ppc/power6.d2
-rw-r--r--gas/testsuite/gas/ppc/power6.s2
-rw-r--r--gas/testsuite/gas/ppc/power7.d4
-rw-r--r--gas/testsuite/gas/ppc/power7.s2
7 files changed, 34 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3957744..fee4807 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2009-03-31 Peter Bergner <bergner@vnet.ibm.com>
+
+ * config/tc-ppc.c (ppc_handle_align): Handle power7's group ending nop.
+
2009-03-31 Dave Korn <dave.korn.cygwin@gmail.com>
* doc/internals.texi: Fix trivial syntax errors.
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 537b676..0b0edbd 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -5687,13 +5687,14 @@ ppc_handle_align (struct frag *fragP)
fragP->fr_var = 4;
md_number_to_chars (dest, 0x60000000, 4);
- if ((ppc_cpu & PPC_OPCODE_POWER6) != 0)
+ if ((ppc_cpu & PPC_OPCODE_POWER6) != 0
+ || (ppc_cpu & PPC_OPCODE_POWER7) != 0)
{
- /* For power6, we want the last nop to be a group terminating
- one, "ori 1,1,0". Do this by inserting an rs_fill frag
- immediately after this one, with its address set to the last
- nop location. This will automatically reduce the number of
- nops in the current frag by one. */
+ /* For power6 and power7, we want the last nop to be a group
+ terminating one. Do this by inserting an rs_fill frag immediately
+ after this one, with its address set to the last nop location.
+ This will automatically reduce the number of nops in the current
+ frag by one. */
if (count > 4)
{
struct frag *group_nop = xmalloc (SIZEOF_STRUCT_FRAG + 4);
@@ -5707,7 +5708,12 @@ ppc_handle_align (struct frag *fragP)
dest = group_nop->fr_literal;
}
- md_number_to_chars (dest, 0x60210000, 4);
+ if ((ppc_cpu & PPC_OPCODE_POWER7) != 0)
+ /* power7 group terminating nop: "ori 2,2,0". */
+ md_number_to_chars (dest, 0x60420000, 4);
+ else
+ /* power6 group terminating nop: "ori 1,1,0". */
+ md_number_to_chars (dest, 0x60210000, 4);
}
}
}
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index b881c61..82db4f0 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2009-03-31 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gas/ppc/power7.d ("ori", ".p2align"): Add tests for group ending nop.
+ * gas/ppc/power7.s: Likewise.
+ * gas/ppc/power6.d: Likewise.
+ * gas/ppc/power6.s: Likewise.
+
2009-03-30 Joseph Myers <joseph@codesourcery.com>
* gas/arm/mapsecs.d, gas/arm/mapsecs.s: New.
diff --git a/gas/testsuite/gas/ppc/power6.d b/gas/testsuite/gas/ppc/power6.d
index c4d1ff0..bf75982 100644
--- a/gas/testsuite/gas/ppc/power6.d
+++ b/gas/testsuite/gas/ppc/power6.d
@@ -69,3 +69,5 @@ Disassembly of section \.text:
ec: 7d 6a 02 74 cbcdtd r10,r11
f0: 7d 6a 02 34 cdtbcd r10,r11
f4: 7d 4b 60 94 addg6s r10,r11,r12
+ f8: 60 21 00 00 ori r1,r1,0
+ fc: 60 21 00 00 ori r1,r1,0
diff --git a/gas/testsuite/gas/ppc/power6.s b/gas/testsuite/gas/ppc/power6.s
index 9f5cde1..106468f 100644
--- a/gas/testsuite/gas/ppc/power6.s
+++ b/gas/testsuite/gas/ppc/power6.s
@@ -64,3 +64,5 @@ start:
cbcdtd 10,11
cdtbcd 10,11
addg6s 10,11,12
+ ori 1,1,0
+ .p2align 4,,15
diff --git a/gas/testsuite/gas/ppc/power7.d b/gas/testsuite/gas/ppc/power7.d
index b8dae90..b974183 100644
--- a/gas/testsuite/gas/ppc/power7.d
+++ b/gas/testsuite/gas/ppc/power7.d
@@ -111,3 +111,7 @@ Disassembly of section \.text:
194: ed c0 78 34 frsqrtes f14,f15
198: ed c0 78 35 frsqrtes\. f14,f15
19c: 7c 43 27 1e isel r2,r3,r4,28
+ 1a0: 60 42 00 00 ori r2,r2,0
+ 1a4: 60 00 00 00 nop
+ 1a8: 60 00 00 00 nop
+ 1ac: 60 42 00 00 ori r2,r2,0
diff --git a/gas/testsuite/gas/ppc/power7.s b/gas/testsuite/gas/ppc/power7.s
index 2e2448a..7736452 100644
--- a/gas/testsuite/gas/ppc/power7.s
+++ b/gas/testsuite/gas/ppc/power7.s
@@ -104,3 +104,5 @@ power7:
frsqrtes 14,15
frsqrtes. 14,15
isel 2,3,4,28
+ ori 2,2,0
+ .p2align 4,,15