1*735f1daeSFredrik Holmqvist /* 2*735f1daeSFredrik Holmqvist * Copyright 2014-2016 Haiku, Inc. All rights reserved. 3*735f1daeSFredrik Holmqvist * Copyright 2013 Fredrik Holmqvist, fredrik.holmqvist@gmail.com. All rights reserved. 4*735f1daeSFredrik Holmqvist * Distributed under the terms of the MIT License. 5*735f1daeSFredrik Holmqvist */ 6*735f1daeSFredrik Holmqvist 7*735f1daeSFredrik Holmqvist 8*735f1daeSFredrik Holmqvist #include <stdio.h> 9*735f1daeSFredrik Holmqvist 10*735f1daeSFredrik Holmqvist #include "console.h" 11*735f1daeSFredrik Holmqvist #include "efi_platform.h" 12*735f1daeSFredrik Holmqvist 13*735f1daeSFredrik Holmqvist 14*735f1daeSFredrik Holmqvist extern void (*__ctor_list)(void); 15*735f1daeSFredrik Holmqvist extern void (*__ctor_end)(void); 16*735f1daeSFredrik Holmqvist 17*735f1daeSFredrik Holmqvist 18*735f1daeSFredrik Holmqvist const EFI_SYSTEM_TABLE *kSystemTable; 19*735f1daeSFredrik Holmqvist const EFI_BOOT_SERVICES *kBootServices; 20*735f1daeSFredrik Holmqvist const EFI_RUNTIME_SERVICES *kRuntimeServices; 21*735f1daeSFredrik Holmqvist 22*735f1daeSFredrik Holmqvist 23*735f1daeSFredrik Holmqvist static void 24*735f1daeSFredrik Holmqvist call_ctors(void) 25*735f1daeSFredrik Holmqvist { 26*735f1daeSFredrik Holmqvist void (**f)(void); 27*735f1daeSFredrik Holmqvist 28*735f1daeSFredrik Holmqvist for (f = &__ctor_list; f < &__ctor_end; f++) 29*735f1daeSFredrik Holmqvist (**f)(); 30*735f1daeSFredrik Holmqvist } 31*735f1daeSFredrik Holmqvist 32*735f1daeSFredrik Holmqvist 33*735f1daeSFredrik Holmqvist /** 34*735f1daeSFredrik Holmqvist * efi_main - The entry point for the EFI application 35*735f1daeSFredrik Holmqvist * @image: firmware-allocated handle that identifies the image 36*735f1daeSFredrik Holmqvist * @systemTable: EFI system table 37*735f1daeSFredrik Holmqvist */ 38*735f1daeSFredrik Holmqvist extern "C" EFI_STATUS 39*735f1daeSFredrik Holmqvist efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *systemTable) 40*735f1daeSFredrik Holmqvist { 41*735f1daeSFredrik Holmqvist kSystemTable = systemTable; 42*735f1daeSFredrik Holmqvist kBootServices = systemTable->BootServices; 43*735f1daeSFredrik Holmqvist kRuntimeServices = systemTable->RuntimeServices; 44*735f1daeSFredrik Holmqvist 45*735f1daeSFredrik Holmqvist call_ctors(); 46*735f1daeSFredrik Holmqvist 47*735f1daeSFredrik Holmqvist console_init(); 48*735f1daeSFredrik Holmqvist 49*735f1daeSFredrik Holmqvist printf("Hello from EFI Loader for Haiku!\nPress any key to continue...\n"); 50*735f1daeSFredrik Holmqvist console_wait_for_key(); 51*735f1daeSFredrik Holmqvist 52*735f1daeSFredrik Holmqvist return EFI_SUCCESS; 53*735f1daeSFredrik Holmqvist } 54