1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // FIXED_FRAME defines the size of the fixed part of a stack frame. A stack 6 // frame looks like this: 7 // 8 // +---------------------+ 9 // | local variable area | 10 // +---------------------+ 11 // | argument area | 12 // +---------------------+ <- R1+FIXED_FRAME 13 // | fixed area | 14 // +---------------------+ <- R1 15 // 16 // So a function that sets up a stack frame at all uses as least FIXED_FRAME 17 // bytes of stack. This mostly affects assembly that calls other functions 18 // with arguments (the arguments should be stored at FIXED_FRAME+0(R1), 19 // FIXED_FRAME+8(R1) etc) and some other low-level places. 20 // 21 // The reason for using a constant is to make supporting PIC easier (although 22 // we only support PIC on ppc64le which has a minimum 32 bytes of stack frame, 23 // and currently always use that much, PIC on ppc64 would need to use 48). 24 25 #define FIXED_FRAME 32 26