Lines Matching defs:frame

2550    [saved frame pointer (or possibly padding0)]
2551 --> incoming stack pointer, new hard frame pointer
2554 --> soft frame pointer
2555 [frame]
2567 HOST_WIDE_INT frame;
2654 /* Compute the layout of the stack frame and store it in FRAME. */
2657 c6x_compute_frame_layout (struct c6x_frame *frame)
2663 /* We use the four bytes which are technically inside the caller's frame,
2664 usually to save the frame pointer. */
2666 frame->padding0 = 0;
2668 frame->push_rts = false;
2669 frame->b3_offset = 0;
2672 frame->push_rts = true;
2673 frame->b3_offset = (TARGET_BIG_ENDIAN ? -12 : -13) * 4;
2682 frame->b3_offset -= 4;
2685 frame->nregs = nregs;
2689 frame->padding0 = 4;
2690 frame->padding1 = frame->padding2 = 0;
2691 frame->frame_pointer_offset = frame->to_allocate = 0;
2692 frame->outgoing_arguments_size = 0;
2696 if (!frame->push_rts)
2697 offset += frame->nregs * 4;
2701 /* Don't use the bottom of the caller's frame if we have no
2703 frame->padding0 = frame->padding1 = 4;
2705 frame->padding1 = 4;
2707 frame->padding1 = 0;
2709 offset += frame->padding0 + frame->padding1;
2710 frame->frame_pointer_offset = offset;
2713 frame->outgoing_arguments_size = crtl->outgoing_args_size;
2714 offset += frame->outgoing_arguments_size;
2717 frame->padding2 = 8;
2719 frame->padding2 = 4;
2720 frame->to_allocate = offset + frame->padding2;
2729 struct c6x_frame frame;
2730 c6x_compute_frame_layout (&frame);
2736 return -frame.frame_pointer_offset;
2742 return frame.to_allocate + (frame.push_rts ? 56 : 0);
2745 return frame.to_allocate - frame.frame_pointer_offset;
2805 struct c6x_frame frame;
2811 c6x_compute_frame_layout (&frame);
2814 current_function_static_stack_size = frame.to_allocate;
2816 initial_offset = -frame.to_allocate;
2817 if (frame.push_rts)
2820 nsaved = frame.nregs;
2828 initial_offset = -frame.frame_pointer_offset - 8;
2830 if (frame.to_allocate > 0)
2833 off = -initial_offset + 4 - frame.padding0;
2859 if (nsaved < frame.nregs)
2896 gcc_assert (nsaved == frame.nregs);
2897 emit_add_sp_const (-frame.to_allocate - initial_offset, true);
2926 struct c6x_frame frame;
2931 c6x_compute_frame_layout (&frame);
2941 off = frame.to_allocate - frame.frame_pointer_offset + frame.padding1;
2942 if (frame.push_rts)
2944 nsaved = frame.nregs;
2948 if (frame.to_allocate > 32768)
2985 emit_add_sp_const (off + frame.padding0 - 4, false);
2997 gcc_assert (nsaved == frame.nregs);
3000 if (frame.push_rts)
3008 /* Return the value of the return address for the frame COUNT steps up
3009 from the current frame, after the prologue.
3010 We punt for everything but the current frame by returning const0_rtx. */
6341 struct c6x_frame frame;
6345 c6x_compute_frame_layout (&frame);
6354 offset = frame.b3_offset;
6359 offset = frame.to_allocate - frame.b3_offset;
6741 /* Target unwind frame info is generated from dwarf CFI directives, so