Home | History | Annotate | Line # | Download | only in apps
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