tcc.c revision 1.1.1.1 1 1.1 jakllsch /* $NetBSD: tcc.c,v 1.1.1.1 2014/04/01 16:16:06 jakllsch Exp $ */
2 1.1 jakllsch
3 1.1 jakllsch /*
4 1.1 jakllsch * Test if our calling convention gymnastics actually work
5 1.1 jakllsch */
6 1.1 jakllsch
7 1.1 jakllsch #include <efi.h>
8 1.1 jakllsch #include <efilib.h>
9 1.1 jakllsch
10 1.1 jakllsch #ifdef __x86_64__
11 1.1 jakllsch #include <x86_64/pe.h>
12 1.1 jakllsch #include <x86_64/efibind.h>
13 1.1 jakllsch #endif
14 1.1 jakllsch
15 1.1 jakllsch #if 0
16 1.1 jakllsch asm volatile("out %0,%1" : : "a" ((uint8_t)a), "dN" (0x80));
17 1.1 jakllsch
18 1.1 jakllsch extern void dump_stack(void);
19 1.1 jakllsch asm( ".globl dump_stack\n"
20 1.1 jakllsch "dump_stack:\n"
21 1.1 jakllsch " movq %rsp, %rdi\n"
22 1.1 jakllsch " jmp *dump_stack_helper@GOTPCREL(%rip)\n"
23 1.1 jakllsch ".size dump_stack, .-dump_stack");
24 1.1 jakllsch
25 1.1 jakllsch void dump_stack_helper(uint64_t rsp_val)
26 1.1 jakllsch {
27 1.1 jakllsch uint64_t *rsp = (uint64_t *)rsp_val;
28 1.1 jakllsch int x;
29 1.1 jakllsch
30 1.1 jakllsch Print(L"%%rsp: 0x%08x%08x stack:\r\n",
31 1.1 jakllsch (rsp_val & 0xffffffff00000000) >>32,
32 1.1 jakllsch rsp_val & 0xffffffff);
33 1.1 jakllsch for (x = 0; x < 8; x++) {
34 1.1 jakllsch Print(L"%08x: ", ((uint64_t)rsp) & 0xffffffff);
35 1.1 jakllsch Print(L"%016x ", *rsp++);
36 1.1 jakllsch Print(L"%016x ", *rsp++);
37 1.1 jakllsch Print(L"%016x ", *rsp++);
38 1.1 jakllsch Print(L"%016x\r\n", *rsp++);
39 1.1 jakllsch }
40 1.1 jakllsch }
41 1.1 jakllsch #endif
42 1.1 jakllsch
43 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_failure_callback(void)
44 1.1 jakllsch {
45 1.1 jakllsch return EFI_UNSUPPORTED;
46 1.1 jakllsch }
47 1.1 jakllsch
48 1.1 jakllsch EFI_STATUS test_failure(void)
49 1.1 jakllsch {
50 1.1 jakllsch return uefi_call_wrapper(test_failure_callback, 0);
51 1.1 jakllsch }
52 1.1 jakllsch
53 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call0_callback(void)
54 1.1 jakllsch {
55 1.1 jakllsch return EFI_SUCCESS;
56 1.1 jakllsch }
57 1.1 jakllsch
58 1.1 jakllsch EFI_STATUS test_call0(void)
59 1.1 jakllsch {
60 1.1 jakllsch return uefi_call_wrapper(test_call0_callback, 0);
61 1.1 jakllsch }
62 1.1 jakllsch
63 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call1_callback(UINT32 a)
64 1.1 jakllsch {
65 1.1 jakllsch if (a != 0x12345678) {
66 1.1 jakllsch return EFI_LOAD_ERROR;
67 1.1 jakllsch }
68 1.1 jakllsch return EFI_SUCCESS;
69 1.1 jakllsch }
70 1.1 jakllsch
71 1.1 jakllsch EFI_STATUS test_call1(void)
72 1.1 jakllsch {
73 1.1 jakllsch return uefi_call_wrapper(test_call1_callback, 1,0x12345678);
74 1.1 jakllsch }
75 1.1 jakllsch
76 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call2_callback(UINT32 a, UINT32 b)
77 1.1 jakllsch {
78 1.1 jakllsch if (a != 0x12345678) {
79 1.1 jakllsch return EFI_LOAD_ERROR;
80 1.1 jakllsch }
81 1.1 jakllsch if (b != 0x23456789) {
82 1.1 jakllsch return EFI_INVALID_PARAMETER;
83 1.1 jakllsch }
84 1.1 jakllsch return EFI_SUCCESS;
85 1.1 jakllsch }
86 1.1 jakllsch
87 1.1 jakllsch EFI_STATUS test_call2(void)
88 1.1 jakllsch {
89 1.1 jakllsch return uefi_call_wrapper(test_call2_callback, 2,
90 1.1 jakllsch 0x12345678, 0x23456789);
91 1.1 jakllsch }
92 1.1 jakllsch
93 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call3_callback(UINT32 a, UINT32 b,
94 1.1 jakllsch UINT32 c)
95 1.1 jakllsch {
96 1.1 jakllsch if (a != 0x12345678)
97 1.1 jakllsch return EFI_LOAD_ERROR;
98 1.1 jakllsch if (b != 0x23456789)
99 1.1 jakllsch return EFI_INVALID_PARAMETER;
100 1.1 jakllsch if (c != 0x3456789a)
101 1.1 jakllsch return EFI_UNSUPPORTED;
102 1.1 jakllsch return EFI_SUCCESS;
103 1.1 jakllsch }
104 1.1 jakllsch
105 1.1 jakllsch EFI_STATUS test_call3(void)
106 1.1 jakllsch {
107 1.1 jakllsch return uefi_call_wrapper(test_call3_callback, 3,
108 1.1 jakllsch 0x12345678, 0x23456789, 0x3456789a);
109 1.1 jakllsch }
110 1.1 jakllsch
111 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call4_callback(UINT32 a, UINT32 b,
112 1.1 jakllsch UINT32 c, UINT32 d)
113 1.1 jakllsch {
114 1.1 jakllsch if (a != 0x12345678)
115 1.1 jakllsch return EFI_LOAD_ERROR;
116 1.1 jakllsch if (b != 0x23456789)
117 1.1 jakllsch return EFI_INVALID_PARAMETER;
118 1.1 jakllsch if (c != 0x3456789a)
119 1.1 jakllsch return EFI_UNSUPPORTED;
120 1.1 jakllsch if (d != 0x456789ab)
121 1.1 jakllsch return EFI_BAD_BUFFER_SIZE;
122 1.1 jakllsch
123 1.1 jakllsch return EFI_SUCCESS;
124 1.1 jakllsch }
125 1.1 jakllsch
126 1.1 jakllsch EFI_STATUS test_call4(void)
127 1.1 jakllsch {
128 1.1 jakllsch return uefi_call_wrapper(test_call4_callback, 4,
129 1.1 jakllsch 0x12345678, 0x23456789, 0x3456789a, 0x456789ab);
130 1.1 jakllsch }
131 1.1 jakllsch
132 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call5_callback(UINT32 a, UINT32 b,
133 1.1 jakllsch UINT32 c, UINT32 d, UINT32 e)
134 1.1 jakllsch {
135 1.1 jakllsch if (a != 0x12345678)
136 1.1 jakllsch return EFI_LOAD_ERROR;
137 1.1 jakllsch if (b != 0x23456789)
138 1.1 jakllsch return EFI_INVALID_PARAMETER;
139 1.1 jakllsch if (c != 0x3456789a)
140 1.1 jakllsch return EFI_UNSUPPORTED;
141 1.1 jakllsch if (d != 0x456789ab)
142 1.1 jakllsch return EFI_BAD_BUFFER_SIZE;
143 1.1 jakllsch if (e != 0x56789abc)
144 1.1 jakllsch return EFI_BUFFER_TOO_SMALL;
145 1.1 jakllsch
146 1.1 jakllsch return EFI_SUCCESS;
147 1.1 jakllsch }
148 1.1 jakllsch
149 1.1 jakllsch EFI_STATUS test_call5(void)
150 1.1 jakllsch {
151 1.1 jakllsch return uefi_call_wrapper(test_call5_callback, 5,
152 1.1 jakllsch 0x12345678, 0x23456789, 0x3456789a, 0x456789ab, 0x56789abc);
153 1.1 jakllsch }
154 1.1 jakllsch
155 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call6_callback(UINT32 a, UINT32 b,
156 1.1 jakllsch UINT32 c, UINT32 d, UINT32 e, UINT32 f)
157 1.1 jakllsch {
158 1.1 jakllsch if (a != 0x12345678)
159 1.1 jakllsch return EFI_LOAD_ERROR;
160 1.1 jakllsch if (b != 0x23456789)
161 1.1 jakllsch return EFI_INVALID_PARAMETER;
162 1.1 jakllsch if (c != 0x3456789a)
163 1.1 jakllsch return EFI_UNSUPPORTED;
164 1.1 jakllsch if (d != 0x456789ab)
165 1.1 jakllsch return EFI_BAD_BUFFER_SIZE;
166 1.1 jakllsch if (e != 0x56789abc)
167 1.1 jakllsch return EFI_BUFFER_TOO_SMALL;
168 1.1 jakllsch if (f != 0x6789abcd)
169 1.1 jakllsch return EFI_NOT_READY;
170 1.1 jakllsch
171 1.1 jakllsch return EFI_SUCCESS;
172 1.1 jakllsch }
173 1.1 jakllsch
174 1.1 jakllsch EFI_STATUS test_call6(void)
175 1.1 jakllsch {
176 1.1 jakllsch return uefi_call_wrapper(test_call6_callback, 6,
177 1.1 jakllsch 0x12345678, 0x23456789, 0x3456789a, 0x456789ab, 0x56789abc,
178 1.1 jakllsch 0x6789abcd);
179 1.1 jakllsch }
180 1.1 jakllsch
181 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call7_callback(UINT32 a, UINT32 b,
182 1.1 jakllsch UINT32 c, UINT32 d, UINT32 e, UINT32 f, UINT32 g)
183 1.1 jakllsch {
184 1.1 jakllsch if (a != 0x12345678)
185 1.1 jakllsch return EFI_LOAD_ERROR;
186 1.1 jakllsch if (b != 0x23456789)
187 1.1 jakllsch return EFI_INVALID_PARAMETER;
188 1.1 jakllsch if (c != 0x3456789a)
189 1.1 jakllsch return EFI_UNSUPPORTED;
190 1.1 jakllsch if (d != 0x456789ab)
191 1.1 jakllsch return EFI_BAD_BUFFER_SIZE;
192 1.1 jakllsch if (e != 0x56789abc)
193 1.1 jakllsch return EFI_BUFFER_TOO_SMALL;
194 1.1 jakllsch if (f != 0x6789abcd)
195 1.1 jakllsch return EFI_NOT_READY;
196 1.1 jakllsch if (g != 0x789abcde)
197 1.1 jakllsch return EFI_DEVICE_ERROR;
198 1.1 jakllsch
199 1.1 jakllsch return EFI_SUCCESS;
200 1.1 jakllsch }
201 1.1 jakllsch
202 1.1 jakllsch EFI_STATUS test_call7(void)
203 1.1 jakllsch {
204 1.1 jakllsch return uefi_call_wrapper(test_call7_callback, 7,
205 1.1 jakllsch 0x12345678, 0x23456789, 0x3456789a, 0x456789ab,
206 1.1 jakllsch 0x56789abc, 0x6789abcd, 0x789abcde);
207 1.1 jakllsch }
208 1.1 jakllsch
209 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call8_callback(UINT32 a, UINT32 b,
210 1.1 jakllsch UINT32 c, UINT32 d, UINT32 e, UINT32 f, UINT32 g, UINT32 h)
211 1.1 jakllsch {
212 1.1 jakllsch if (a != 0x12345678)
213 1.1 jakllsch return EFI_LOAD_ERROR;
214 1.1 jakllsch if (b != 0x23456789)
215 1.1 jakllsch return EFI_INVALID_PARAMETER;
216 1.1 jakllsch if (c != 0x3456789a)
217 1.1 jakllsch return EFI_UNSUPPORTED;
218 1.1 jakllsch if (d != 0x456789ab)
219 1.1 jakllsch return EFI_BAD_BUFFER_SIZE;
220 1.1 jakllsch if (e != 0x56789abc)
221 1.1 jakllsch return EFI_BUFFER_TOO_SMALL;
222 1.1 jakllsch if (f != 0x6789abcd)
223 1.1 jakllsch return EFI_NOT_READY;
224 1.1 jakllsch if (g != 0x789abcde)
225 1.1 jakllsch return EFI_DEVICE_ERROR;
226 1.1 jakllsch if (h != 0x89abcdef)
227 1.1 jakllsch return EFI_WRITE_PROTECTED;
228 1.1 jakllsch
229 1.1 jakllsch return EFI_SUCCESS;
230 1.1 jakllsch }
231 1.1 jakllsch
232 1.1 jakllsch EFI_STATUS test_call8(void)
233 1.1 jakllsch {
234 1.1 jakllsch return uefi_call_wrapper(test_call8_callback, 8,
235 1.1 jakllsch 0x12345678,
236 1.1 jakllsch 0x23456789,
237 1.1 jakllsch 0x3456789a,
238 1.1 jakllsch 0x456789ab,
239 1.1 jakllsch 0x56789abc,
240 1.1 jakllsch 0x6789abcd,
241 1.1 jakllsch 0x789abcde,
242 1.1 jakllsch 0x89abcdef);
243 1.1 jakllsch }
244 1.1 jakllsch
245 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call9_callback(UINT32 a, UINT32 b,
246 1.1 jakllsch UINT32 c, UINT32 d, UINT32 e, UINT32 f, UINT32 g, UINT32 h, UINT32 i)
247 1.1 jakllsch {
248 1.1 jakllsch if (a != 0x12345678)
249 1.1 jakllsch return EFI_LOAD_ERROR;
250 1.1 jakllsch if (b != 0x23456789)
251 1.1 jakllsch return EFI_INVALID_PARAMETER;
252 1.1 jakllsch if (c != 0x3456789a)
253 1.1 jakllsch return EFI_UNSUPPORTED;
254 1.1 jakllsch if (d != 0x456789ab)
255 1.1 jakllsch return EFI_BAD_BUFFER_SIZE;
256 1.1 jakllsch if (e != 0x56789abc)
257 1.1 jakllsch return EFI_BUFFER_TOO_SMALL;
258 1.1 jakllsch if (f != 0x6789abcd)
259 1.1 jakllsch return EFI_NOT_READY;
260 1.1 jakllsch if (g != 0x789abcde)
261 1.1 jakllsch return EFI_DEVICE_ERROR;
262 1.1 jakllsch if (h != 0x89abcdef)
263 1.1 jakllsch return EFI_WRITE_PROTECTED;
264 1.1 jakllsch if (i != 0x9abcdef0)
265 1.1 jakllsch return EFI_OUT_OF_RESOURCES;
266 1.1 jakllsch
267 1.1 jakllsch return EFI_SUCCESS;
268 1.1 jakllsch }
269 1.1 jakllsch
270 1.1 jakllsch EFI_STATUS test_call9(void)
271 1.1 jakllsch {
272 1.1 jakllsch return uefi_call_wrapper(test_call9_callback, 9,
273 1.1 jakllsch 0x12345678,
274 1.1 jakllsch 0x23456789,
275 1.1 jakllsch 0x3456789a,
276 1.1 jakllsch 0x456789ab,
277 1.1 jakllsch 0x56789abc,
278 1.1 jakllsch 0x6789abcd,
279 1.1 jakllsch 0x789abcde,
280 1.1 jakllsch 0x89abcdef,
281 1.1 jakllsch 0x9abcdef0);
282 1.1 jakllsch }
283 1.1 jakllsch
284 1.1 jakllsch extern EFI_STATUS test_call10(void);
285 1.1 jakllsch EFI_STATUS EFI_FUNCTION test_call10_callback(UINT32 a, UINT32 b,
286 1.1 jakllsch UINT32 c, UINT32 d, UINT32 e, UINT32 f, UINT32 g, UINT32 h, UINT32 i,
287 1.1 jakllsch UINT32 j)
288 1.1 jakllsch {
289 1.1 jakllsch if (a != 0x12345678)
290 1.1 jakllsch return EFI_LOAD_ERROR;
291 1.1 jakllsch if (b != 0x23456789)
292 1.1 jakllsch return EFI_INVALID_PARAMETER;
293 1.1 jakllsch if (c != 0x3456789a)
294 1.1 jakllsch return EFI_UNSUPPORTED;
295 1.1 jakllsch if (d != 0x456789ab)
296 1.1 jakllsch return EFI_BAD_BUFFER_SIZE;
297 1.1 jakllsch if (e != 0x56789abc)
298 1.1 jakllsch return EFI_BUFFER_TOO_SMALL;
299 1.1 jakllsch if (f != 0x6789abcd)
300 1.1 jakllsch return EFI_NOT_READY;
301 1.1 jakllsch if (g != 0x789abcde)
302 1.1 jakllsch return EFI_DEVICE_ERROR;
303 1.1 jakllsch if (h != 0x89abcdef)
304 1.1 jakllsch return EFI_WRITE_PROTECTED;
305 1.1 jakllsch if (i != 0x9abcdef0)
306 1.1 jakllsch return EFI_OUT_OF_RESOURCES;
307 1.1 jakllsch if (j != 0xabcdef01)
308 1.1 jakllsch return EFI_VOLUME_CORRUPTED;
309 1.1 jakllsch
310 1.1 jakllsch return EFI_SUCCESS;
311 1.1 jakllsch }
312 1.1 jakllsch
313 1.1 jakllsch EFI_STATUS test_call10(void)
314 1.1 jakllsch {
315 1.1 jakllsch return uefi_call_wrapper(test_call10_callback, 10,
316 1.1 jakllsch 0x12345678,
317 1.1 jakllsch 0x23456789,
318 1.1 jakllsch 0x3456789a,
319 1.1 jakllsch 0x456789ab,
320 1.1 jakllsch 0x56789abc,
321 1.1 jakllsch 0x6789abcd,
322 1.1 jakllsch 0x789abcde,
323 1.1 jakllsch 0x89abcdef,
324 1.1 jakllsch 0x9abcdef0,
325 1.1 jakllsch 0xabcdef01);
326 1.1 jakllsch }
327 1.1 jakllsch
328 1.1 jakllsch EFI_STATUS
329 1.1 jakllsch efi_main (EFI_HANDLE *image, EFI_SYSTEM_TABLE *systab)
330 1.1 jakllsch {
331 1.1 jakllsch EFI_STATUS rc = EFI_SUCCESS;
332 1.1 jakllsch
333 1.1 jakllsch InitializeLib(image, systab);
334 1.1 jakllsch PoolAllocationType = 2; /* klooj */
335 1.1 jakllsch
336 1.1 jakllsch #ifndef __x86_64__
337 1.1 jakllsch uefi_call_wrapper(systab->ConOut->OutputString, 2, systab->ConOut,
338 1.1 jakllsch L"This test is only valid on x86_64\n");
339 1.1 jakllsch return EFI_UNSUPPORTED;
340 1.1 jakllsch #endif
341 1.1 jakllsch
342 1.1 jakllsch __asm__ volatile("out %0,%1" : : "a" ((uint8_t)0x14), "dN" (0x80));
343 1.1 jakllsch
344 1.1 jakllsch Print(L"Hello\r\n");
345 1.1 jakllsch rc = test_failure();
346 1.1 jakllsch if (EFI_ERROR(rc)) {
347 1.1 jakllsch Print(L"Returning Failure works\n");
348 1.1 jakllsch } else {
349 1.1 jakllsch Print(L"Returning failure doesn't work.\r\n");
350 1.1 jakllsch Print(L"%%rax was 0x%016x, should have been 0x%016x\n",
351 1.1 jakllsch rc, EFI_UNSUPPORTED);
352 1.1 jakllsch return EFI_INVALID_PARAMETER;
353 1.1 jakllsch }
354 1.1 jakllsch
355 1.1 jakllsch rc = test_call0();
356 1.1 jakllsch if (!EFI_ERROR(rc)) {
357 1.1 jakllsch Print(L"0 args works just fine here.\r\n");
358 1.1 jakllsch } else {
359 1.1 jakllsch Print(L"0 args failed: 0x%016x\n", rc);
360 1.1 jakllsch return rc;
361 1.1 jakllsch }
362 1.1 jakllsch
363 1.1 jakllsch rc = test_call1();
364 1.1 jakllsch if (!EFI_ERROR(rc)) {
365 1.1 jakllsch Print(L"1 arg works just fine here.\r\n");
366 1.1 jakllsch } else {
367 1.1 jakllsch Print(L"1 arg failed: 0x%016x\n", rc);
368 1.1 jakllsch return rc;
369 1.1 jakllsch }
370 1.1 jakllsch
371 1.1 jakllsch rc = test_call2();
372 1.1 jakllsch if (!EFI_ERROR(rc)) {
373 1.1 jakllsch Print(L"2 args works just fine here.\r\n");
374 1.1 jakllsch } else {
375 1.1 jakllsch Print(L"2 args failed: 0x%016x\n", rc);
376 1.1 jakllsch return rc;
377 1.1 jakllsch }
378 1.1 jakllsch
379 1.1 jakllsch rc = test_call3();
380 1.1 jakllsch if (!EFI_ERROR(rc)) {
381 1.1 jakllsch Print(L"3 args works just fine here.\r\n");
382 1.1 jakllsch } else {
383 1.1 jakllsch Print(L"3 args failed: 0x%016x\n", rc);
384 1.1 jakllsch return rc;
385 1.1 jakllsch }
386 1.1 jakllsch
387 1.1 jakllsch rc = test_call4();
388 1.1 jakllsch if (!EFI_ERROR(rc)) {
389 1.1 jakllsch Print(L"4 args works just fine here.\r\n");
390 1.1 jakllsch } else {
391 1.1 jakllsch Print(L"4 args failed: 0x%016x\n", rc);
392 1.1 jakllsch return rc;
393 1.1 jakllsch }
394 1.1 jakllsch
395 1.1 jakllsch rc = test_call5();
396 1.1 jakllsch if (!EFI_ERROR(rc)) {
397 1.1 jakllsch Print(L"5 args works just fine here.\r\n");
398 1.1 jakllsch } else {
399 1.1 jakllsch Print(L"5 args failed: 0x%016x\n", rc);
400 1.1 jakllsch return rc;
401 1.1 jakllsch }
402 1.1 jakllsch
403 1.1 jakllsch rc = test_call6();
404 1.1 jakllsch if (!EFI_ERROR(rc)) {
405 1.1 jakllsch Print(L"6 args works just fine here.\r\n");
406 1.1 jakllsch } else {
407 1.1 jakllsch Print(L"6 args failed: 0x%016x\n", rc);
408 1.1 jakllsch return rc;
409 1.1 jakllsch }
410 1.1 jakllsch
411 1.1 jakllsch rc = test_call7();
412 1.1 jakllsch if (!EFI_ERROR(rc)) {
413 1.1 jakllsch Print(L"7 args works just fine here.\r\n");
414 1.1 jakllsch } else {
415 1.1 jakllsch Print(L"7 args failed: 0x%016x\n", rc);
416 1.1 jakllsch return rc;
417 1.1 jakllsch }
418 1.1 jakllsch
419 1.1 jakllsch rc = test_call8();
420 1.1 jakllsch if (!EFI_ERROR(rc)) {
421 1.1 jakllsch Print(L"8 args works just fine here.\r\n");
422 1.1 jakllsch } else {
423 1.1 jakllsch Print(L"8 args failed: 0x%016x\n", rc);
424 1.1 jakllsch return rc;
425 1.1 jakllsch }
426 1.1 jakllsch
427 1.1 jakllsch rc = test_call9();
428 1.1 jakllsch if (!EFI_ERROR(rc)) {
429 1.1 jakllsch Print(L"9 args works just fine here.\r\n");
430 1.1 jakllsch } else {
431 1.1 jakllsch Print(L"9 args failed: 0x%016x\n", rc);
432 1.1 jakllsch return rc;
433 1.1 jakllsch }
434 1.1 jakllsch
435 1.1 jakllsch rc = test_call10();
436 1.1 jakllsch if (!EFI_ERROR(rc)) {
437 1.1 jakllsch Print(L"10 args works just fine here.\r\n");
438 1.1 jakllsch } else {
439 1.1 jakllsch Print(L"10 args failed: 0x%016x\n", rc);
440 1.1 jakllsch return rc;
441 1.1 jakllsch }
442 1.1 jakllsch
443 1.1 jakllsch return rc;
444 1.1 jakllsch }
445