From e9f366b9f63588eed75a8dc250102e1833c4d4a9 Mon Sep 17 00:00:00 2001
From: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Date: Sun, 10 May 2020 09:50:54 +0200
Subject: [PATCH] eminaries/qtmips/call-syscall/l10-05-call-6args.S: describe
 omit-frame-pointer.

Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
---
 seminaries/qtmips/call-syscall/l10-05-call-6args.S | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/seminaries/qtmips/call-syscall/l10-05-call-6args.S b/seminaries/qtmips/call-syscall/l10-05-call-6args.S
index 2f6502c..4169dff 100644
--- a/seminaries/qtmips/call-syscall/l10-05-call-6args.S
+++ b/seminaries/qtmips/call-syscall/l10-05-call-6args.S
@@ -35,6 +35,11 @@ final:
 main:
 	addiu   $sp, $sp, -32	// allocate space for save and arguments
 	sw      $ra, 28($sp)	// store return address from main
+
+	sw      $s8, 24($sp)	// store farme pointer, not required there
+	or      $s8, $sp, $zero	// set fp to point to top of the stack, not required
+				// see -fomit-frame-pointer/-fno-omit-frame-pointer
+
 	addiu   $v0, $zero, 6	// 6-th argument value
 	sw      $v0, 20($sp)	// 6-th argument to the stack
 	addiu   $v0, $zero, 5	// 5-th argument value
@@ -44,6 +49,10 @@ main:
 	addiu   $a1, $zero, 2	// 2-nd argument value
 	jal     complex		// call complex function
 	addiu   $a0, $zero, 1	// store 1-st argument, run in delay slot
+
+	or      $sp, $s8, $zero	// restore stack from frame pointer
+	lw      $s8, 24($sp)	// restore frame pointer, not required there
+
 	lw      $ra, 28($sp)	// restore return address
 	nop			// on MIPS1 lw result not available directly
 	jr      $ra		// return from main, result in v0
-- 
GitLab