summaryrefslogtreecommitdiff
path: root/pkg/qbe/patch/0004-arm64-Handle-slots.patch
blob: 49f266e8e3d925627fa7dd276543b6619952fba2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
From c8849e9c7b382f92326434a6522a26829a6e20f8 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Wed, 8 May 2019 18:29:28 -0700
Subject: [PATCH] arm64: Handle slots

---
 arm64/emit.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arm64/emit.c b/arm64/emit.c
index 59e1aae..9cc4a64 100644
--- a/arm64/emit.c
+++ b/arm64/emit.c
@@ -220,8 +220,17 @@ emitf(char *s, Ins *i, E *e)
 			c = *s++;
 			assert(c == '0' || c == '1');
 			r = i->arg[c - '0'];
-			assert(isreg(r) && "TODO emit non reg addresses");
-			fprintf(e->f, "[%s]", rname(r.val, Kl));
+			switch (rtype(r)) {
+			default:
+				die("TODO emit non reg addresses");
+			case RTmp:
+				assert(isreg(r));
+				fprintf(e->f, "[%s]", rname(r.val, Kl));
+				break;
+			case RSlot:
+				fprintf(e->f, "[sp, %"PRIu64"]", slot(r.val, e));
+				break;
+			}
 			break;
 		}
 	}
-- 
2.21.0