X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=x86_64%2Fsystem.c;h=6874acc51aa32e2eea7b9d07231a06e916211624;hb=3384f0373c8758e5ddd08f489ad7110898dd5406;hp=72c094fad9381745c86b9b2b4e3d49b46e615a91;hpb=528b4479a96491431b243bf02da43c792962fb27;p=debian%2Felilo diff --git a/x86_64/system.c b/x86_64/system.c index 72c094f..6874acc 100644 --- a/x86_64/system.c +++ b/x86_64/system.c @@ -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