diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-19 17:19:42 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-19 17:19:42 -0400 |
commit | ef7a142481ce34ebd533e9f9f9c8da4e5ec01fcf (patch) | |
tree | 56c2be2d6a031065f28decc55dbdbe030a300382 /gcc | |
parent | a781804452f4eab5a64ad59f8e18dc9ffb9155d5 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 7 |
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]); } } |