Subversion Repositories HelenOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #define EFI_SUCCESS     0
  2.  
  3. typedef short           CHAR16;
  4. typedef unsigned long       UINTN;
  5. typedef unsigned long long  UINT64;
  6. typedef unsigned int        UINT32;
  7. typedef void *          EFI_HANDLE;
  8. typedef UINTN           EFI_STATUS;
  9.  
  10. typedef struct _EFI_TABLE_HEARDER {
  11.     UINT64                      Signature;
  12.     UINT32                      Revision;
  13.     UINT32                      HeaderSize;
  14.     UINT32                      CRC32;
  15.     UINT32                      Reserved;
  16. } EFI_TABLE_HEADER;
  17.  
  18. typedef EFI_STATUS (*EFI_TEXT_STRING) (void *This, CHAR16 *String);
  19.  
  20. typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
  21.     void *                  Reset;
  22.  
  23.     EFI_TEXT_STRING                 OutputString;
  24. } SIMPLE_TEXT_OUTPUT_INTERFACE;
  25.  
  26. typedef struct _EFI_SYSTEM_TABLE {
  27.     EFI_TABLE_HEADER                Hdr;
  28.  
  29.     CHAR16                          *FirmwareVendor;
  30.     UINT32                          FirmwareRevision;
  31.  
  32.     EFI_HANDLE                      ConsoleInHandle;
  33.  /*SIMPLE_INPUT_INTERFACE*/ void    *ConIn;
  34.  
  35.     EFI_HANDLE                      ConsoleOutHandle;
  36.     SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
  37.  
  38.     EFI_HANDLE                      StandardErrorHandle;
  39.     SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
  40.  
  41.  /*EFI_RUNTIME_SERVICES*/ void            *RuntimeServices;
  42.  /*EFI_BOOT_SERVICES*/ void               *BootServices;
  43.  
  44.     UINTN                           NumberOfTableEntries;
  45.  /*EFI_CONFIGURATION_TABLE*/void         *ConfigurationTable;
  46.  
  47. } EFI_SYSTEM_TABLE;
  48.  
  49. static CHAR16 *
  50. a2u (char *str)
  51. {
  52.     static CHAR16 mem[2048];
  53.     int i;
  54.  
  55.     for (i = 0; str[i]; ++i)
  56.         mem[i] = (CHAR16) str[i];
  57.     mem[i] = 0;
  58.     return mem;
  59. }
  60.  
  61. EFI_STATUS
  62. efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
  63. {
  64.     SIMPLE_TEXT_OUTPUT_INTERFACE *conout;
  65.  
  66.     conout = systab->ConOut;
  67.     conout->OutputString(conout, (CHAR16 *)L"Hello World!\n\r");
  68.     conout->OutputString(conout, a2u("Hello World!\n\r"));
  69.  
  70.     return EFI_SUCCESS;
  71. }
  72.