Imported Upstream version 3.10
[debian/elilo] / x86_64 / system.c
index 72c094fad9381745c86b9b2b4e3d49b46e615a91..6874acc51aa32e2eea7b9d07231a06e916211624 100644 (file)
@@ -105,7 +105,10 @@ UINTN high_base_mem = 0x90000;
 UINTN high_ext_mem = 32 * 1024 * 1024;
 
 /* This starting address will hold true for all of the loader types for now */
-VOID *kernel_start = (VOID *)0x100000; /* 1M */
+VOID *kernel_start = (void *)DEFAULT_KERNEL_START;
+
+/* The kernel may load elsewhere if EFI firmware reserves kernel_start */
+VOID *kernel_load_address = DEFAULT_KERNEL_START; 
 
 VOID *initrd_start = NULL;
 UINTN initrd_size = 0;
@@ -139,16 +142,16 @@ sysdeps_initrd_get_addr(kdesc_t *kd, memdesc_t *imem)
        DBG_PRT((L"initrd_get_addr()\n"));
 
        if (!kd || !imem) {
-               ERR_PRT((L"kd=0x%x imem=0x%x", kd, imem));
+               ERR_PRT((L"kd="PTR_FMT" imem="PTR_FMT"", kd, imem));
                return -1;
        }
 
-       VERB_PRT(3, Print(L"kstart=0x%x  kentry=0x%x  kend=0x%x\n", 
+       VERB_PRT(3, Print(L"kstart="PTR_FMT"  kentry="PTR_FMT"  kend="PTR_FMT"\n", 
                kd->kstart, kd->kentry, kd->kend));
 
        imem->start_addr = kd->kend;
 
-       VERB_PRT(3, Print(L"initrd start_addr=0x%x pgcnt=%d\n", 
+       VERB_PRT(3, Print(L"initrd start_addr="PTR_FMT" pgcnt=%d\n", 
                imem->start_addr, imem->pgcnt));
 
        return 0;
@@ -160,7 +163,7 @@ sysdeps_free_boot_params(boot_params_t *bp)
        mmap_desc_t md;
 
        ZeroMem(&md, sizeof md);
-       md.md = (VOID *)bp->s.efi_mem_map;
+       md.md = (VOID *)(UINT64)bp->s.efi_mem_map;
        free_memmap(&md);
 }
 
@@ -189,10 +192,11 @@ static INTN get_video_info(boot_params_t * bp) {
         EFI_GUID GopProtocol = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
         EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop_interface;
         EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Gop_info;
-        EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE   *Gop_mode;
-        EFI_HANDLE *Gop_handle;
+        EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE   *Gop_mode = NULL;
+        EFI_HANDLE *Gop_handle = NULL;
         EFI_STATUS efi_status;
-        UINTN size, size1;
+        UINTN size = 0;
+        UINTN size1;
         UINT8 i;
 
        efi_status = uefi_call_wrapper(
@@ -459,7 +463,7 @@ sysdeps_create_boot_params(
        DBG_PRT((L"fill_boot_params()\n"));
 
        if (!bp || !cmdline || !initrd || !cookie) {
-               ERR_PRT((L"bp=0x%x  cmdline=0x%x  initrd=0x%x cookie=0x%x",
+               ERR_PRT((L"bp="PTR_FMT"  cmdline="PTR_FMT"  initrd="PTR_FMT" cookie="PTR_FMT"",
                        bp, cmdline, initrd, cookie));
 
                if (param_start != NULL) {
@@ -546,7 +550,7 @@ sysdeps_create_boot_params(
         * Initial RAMdisk and root device stuff.
         */
 
-       DBG_PRT((L"initrd->start_addr=0x%x  initrd->pgcnt=%d\n",
+       DBG_PRT((L"initrd->start_addr="PTR_FMT"  initrd->pgcnt=%d\n",
                initrd->start_addr, initrd->pgcnt));
 
        /* These RAMdisk flags are not needed, just zero them. */
@@ -554,7 +558,7 @@ sysdeps_create_boot_params(
 
        if (initrd->start_addr && initrd->pgcnt) {
                /* %%TBD - This will probably have to be changed. */
-               bp->s.initrd_start = (UINT32)initrd->start_addr;
+               bp->s.initrd_start = (UINT32)(UINT64)initrd->start_addr;
                bp->s.initrd_size = (UINT32)(initrd->size);
                /*
                 * This is the RAMdisk root device for RedHat 2.2.x
@@ -598,7 +602,7 @@ sysdeps_create_boot_params(
        /*
         * Kernel entry point.
         */
-       bp->s.kernel_start = (UINT32)kernel_start;
+       bp->s.kernel_start = (UINT32)(UINT64)kernel_start;
 
        /*
         * When changing stuff in the parameter structure compare