aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-08-19 17:19:42 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-08-19 17:19:42 -0400
commitef7a142481ce34ebd533e9f9f9c8da4e5ec01fcf (patch)
tree56c2be2d6a031065f28decc55dbdbe030a300382
parenta781804452f4eab5a64ad59f8e18dc9ffb9155d5 (diff)
downloadgcc-ef7a142481ce34ebd533e9f9f9c8da4e5ec01fcf.zip
gcc-ef7a142481ce34ebd533e9f9f9c8da4e5ec01fcf.tar.gz
gcc-ef7a142481ce34ebd533e9f9f9c8da4e5ec01fcf.tar.bz2
(output_prolog): Fixup code to set stack pointer if stack size > 32k.
From-SVN: r10252
-rw-r--r--gcc/config/rs6000/rs6000.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 481a18f..0502dab 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -2538,11 +2538,12 @@ output_prolog (file, size)
reg_names[1], - info->total_size, reg_names[1]);
else
{
+ int neg_size = - info->total_size;
asm_fprintf (file, "\t{liu|lis} %s,%d\n\t{oril|ori} %s,%s,%d\n",
- reg_names[0], (info->total_size >> 16) & 0xffff,
- reg_names[0], reg_names[0], info->total_size & 0xffff);
+ reg_names[0], (neg_size >> 16) & 0xffff,
+ reg_names[0], reg_names[0], neg_size & 0xffff);
asm_fprintf (file,
- (TARGET_64BIT) ? "\tstdux %s,%s,%s\n" : "\tstwux %s,%s,%s\n",
+ (TARGET_64BIT) ? "\tstdux %s,%s,%s\n" : "\t{stux|stwux} %s,%s,%s\n",
reg_names[1], reg_names[1], reg_names[0]);
}
}