diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1993-07-28 10:43:02 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1993-07-28 10:43:02 -0700 |
commit | 43a9225684a7911f3f198da8d62e1c20789f41a8 (patch) | |
tree | 08b3299bd21e91006da8ada88829fd2b89f92c08 | |
parent | 07f64b95a4297eb66f583df40ac829f1d9f90dd0 (diff) | |
download | gcc-43a9225684a7911f3f198da8d62e1c20789f41a8.zip gcc-43a9225684a7911f3f198da8d62e1c20789f41a8.tar.gz gcc-43a9225684a7911f3f198da8d62e1c20789f41a8.tar.bz2 |
(INITIAL_FRAME_POINTER_OFFSET): Negate, and subtract 64 bytes.
From-SVN: r5021
-rw-r--r-- | gcc/config/i960/i960.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h index 8797d0d..13713f8 100644 --- a/gcc/config/i960/i960.h +++ b/gcc/config/i960/i960.h @@ -498,13 +498,20 @@ extern unsigned int hard_regno_mode_ok[FIRST_PSEUDO_REGISTER]; Zero means the frame pointer need not be set up (and parms may be accessed via the stack pointer) in functions that seem suitable. This is computed in `reload', in reload1.c. */ +/* ??? It isn't clear to me why this is here. Perhaps because of a bug (since + fixed) in the definition of INITIAL_FRAME_POINTER_OFFSET which would have + caused this to fail. */ #define FRAME_POINTER_REQUIRED (! leaf_function_p ()) /* C statement to store the difference between the frame pointer - and the stack pointer values immediately after the function prologue. */ + and the stack pointer values immediately after the function prologue. + + Since the stack grows upward on the i960, this must be a negative number. + This includes the 64 byte hardware register save area and the size of + the frame. */ #define INITIAL_FRAME_POINTER_OFFSET(VAR) \ - do { (VAR) = compute_frame_size (get_frame_size ()); } while (0) + do { (VAR) = - (64 + compute_frame_size (get_frame_size ())); } while (0) /* Base register for access to arguments of the function. */ #define ARG_POINTER_REGNUM 14 |