aboutsummaryrefslogtreecommitdiffstats
path: root/main/gummiboot/gummiboot-aarch64-support.patch
blob: 4f14ce5b34920c09e1ecc85b671f75e2544a1013 (plain) (blame)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
From koen.kooi at linaro.org  Sat Apr 11 01:23:22 2015
From: koen.kooi at linaro.org (Koen Kooi)
Date: Sat, 11 Apr 2015 10:23:22 +0200
Subject: [systemd-devel] [gummiboot][PATCH 1/5] Makefile: support non-x86
	builds
Message-ID: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>

Move the no-mmx/no-sse CFLAGS to X86-64 and IA32 defines in preparation
for ARM32 and Aarch64 support.

Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
---
 Makefile.am | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 6568a35..2cca313 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -94,17 +94,23 @@ efi_cflags = \
 	-ffreestanding \
 	-fno-strict-aliasing \
 	-fno-stack-protector \
-	-Wsign-compare \
-	-mno-sse \
-	-mno-mmx
+	-Wsign-compare
 
 if ARCH_X86_64
 efi_cflags += \
 	-mno-red-zone \
+	-mno-sse \
+	-mno-mmx
 	-DEFI_FUNCTION_WRAPPER \
 	-DGNU_EFI_USE_MS_ABI
 endif
 
+if ARCH_IA32
+efi_cflags += \
+	-mno-sse \
+	-mno-mmx
+endif
+
 efi_ldflags = \
 	$(EFI_LDFLAGS) \
 	-T $(EFI_LDS_DIR)/elf_$(ARCH)_efi.lds \
-- 
2.0.1


From koen.kooi at linaro.org  Sat Apr 11 01:23:23 2015
From: koen.kooi at linaro.org (Koen Kooi)
Date: Sat, 11 Apr 2015 10:23:23 +0200
Subject: [systemd-devel] [gummiboot][PATCH 2/5] util: use x86 ASM only on
	x86(-64) platforms.
In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
Message-ID: <1428740606-30060-2-git-send-email-koen.kooi@linaro.org>

Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
---
 src/efi/util.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/efi/util.c b/src/efi/util.c
index ba5ed7d..689bc7c 100644
--- a/src/efi/util.c
+++ b/src/efi/util.c
@@ -33,7 +33,9 @@ UINT64 ticks_read(VOID) {
         __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
         return (d << 32) | a;
 }
-#else
+#endif
+
+#ifdef __i386__
 UINT64 ticks_read(VOID) {
         UINT64 val;
         __asm__ volatile ("rdtsc" : "=A" (val));
-- 
2.0.1


From koen.kooi at linaro.org  Sat Apr 11 01:23:24 2015
From: koen.kooi at linaro.org (Koen Kooi)
Date: Sat, 11 Apr 2015 10:23:24 +0200
Subject: [systemd-devel] [gummiboot][PATCH 3/5] configure: add AARCH64
	support
In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
Message-ID: <1428740606-30060-3-git-send-email-koen.kooi@linaro.org>

This is just plumbing to add ARCH_AARCH64 for makefile tests and
defining the machine name.

Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
---
 configure.ac | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/configure.ac b/configure.ac
index 27bbe1d..c2077b1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,6 +51,7 @@ dnl Define ARCH_<NAME> conditionals
 SET_ARCH(IA32, i*86*)
 SET_ARCH(X86_64, x86_64*)
 SET_ARCH(IA64, ia64*)
+SET_ARCH(AARCH64, aarch64*)
 
 ARCH=`echo $host | sed "s/\(-\).*$//"`
 
@@ -61,6 +62,9 @@ AM_COND_IF(ARCH_IA32, [
 AM_COND_IF(ARCH_X86_64, [
         MACHINE_TYPE_NAME=x64])
 
+AM_COND_IF(ARCH_AARCH64, [
+        MACHINE_TYPE_NAME=aa64])
+
 AC_SUBST([ARCH])
 AC_SUBST([MACHINE_TYPE_NAME])
 
-- 
2.0.1


From koen.kooi at linaro.org  Sat Apr 11 01:23:25 2015
From: koen.kooi at linaro.org (Koen Kooi)
Date: Sat, 11 Apr 2015 10:23:25 +0200
Subject: [systemd-devel] [gummiboot][PATCH 4/5] util: confine x86 asm to x86
	architectures
In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
Message-ID: <1428740606-30060-4-git-send-email-koen.kooi@linaro.org>

Also add a stub function that just returns '1' to avoid missing symbols.

Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
---
 src/efi/util.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/efi/util.c b/src/efi/util.c
index 689bc7c..6ce1f18 100644
--- a/src/efi/util.c
+++ b/src/efi/util.c
@@ -33,14 +33,17 @@ UINT64 ticks_read(VOID) {
         __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
         return (d << 32) | a;
 }
-#endif
-
-#ifdef __i386__
+#elif __i386__
 UINT64 ticks_read(VOID) {
         UINT64 val;
         __asm__ volatile ("rdtsc" : "=A" (val));
         return val;
 }
+#else
+UINT64 ticks_read(VOID) {
+        UINT64 val = 1;
+        return val;
+}
 #endif
 
 /* count TSC ticks during a millisecond delay */
-- 
2.0.1


From koen.kooi at linaro.org  Sat Apr 11 01:23:26 2015
From: koen.kooi at linaro.org (Koen Kooi)
Date: Sat, 11 Apr 2015 10:23:26 +0200
Subject: [systemd-devel] [gummiboot][PATCH 5/5] Makefile.am: Add support for
	AARCH64
In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org>
Message-ID: <1428740606-30060-5-git-send-email-koen.kooi@linaro.org>

Aarch64 and ARM32 lack an EFI capable objcopy, so use the ldflags + -O
binary trick gnu-efi and the Red Hat shimloader are using.

Signed-off-by: Koen Kooi <koen.kooi at linaro.org>
---
 Makefile.am | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 2cca313..eba5ec4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -121,6 +121,17 @@ efi_ldflags = \
 	-L $(EFI_LIB_DIR) \
 	$(EFI_LDS_DIR)/crt0-efi-$(ARCH).o
 
+# Aarch64 and ARM32 don't have an EFI capable objcopy
+if ARCH_AARCH64
+efi_ldflags += \
+	--defsym=EFI_SUBSYSTEM=0xa
+
+FORMAT = -O binary
+else
+FORMAT = --target=efi-app-$(ARCH) 
+endif
+
+
 # ------------------------------------------------------------------------------
 gummiboot_headers = \
 	src/efi/util.h \
@@ -156,7 +167,7 @@ $(gummiboot_solib): $(gummiboot_objects)
 $(gummiboot): $(gummiboot_solib)
 	$(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \
 	  -j .dynsym -j .rel -j .rela -j .reloc \
-	  --target=efi-app-$(ARCH) $< $@
+	  $(FORMAT) $< $@
 
 # ------------------------------------------------------------------------------
 stub_headers = \
@@ -191,7 +202,7 @@ $(stub_solib): $(stub_objects)
 $(stub): $(stub_solib)
 	$(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \
 	  -j .dynsym -j .rel -j .rela -j .reloc \
-	  --target=efi-app-$(ARCH) $< $@
+	  $(FORMAT) $< $@
 
 # ------------------------------------------------------------------------------
 CLEANFILES += test-disk.img
-- 
2.0.1