X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=bootparams.c;h=576a57942973f7c93b1e79b7ecf4e18cb8e72931;hb=refs%2Fheads%2Fupstream;hp=a6c9d7c47f7befac6fc1a70b08180139ccd976df;hpb=054761502f884ae2cb147c75bd17a660fe63b071;p=debian%2Felilo diff --git a/bootparams.c b/bootparams.c index a6c9d7c..576a579 100644 --- a/bootparams.c +++ b/bootparams.c @@ -38,7 +38,7 @@ * bp : the address of the bootparams otherwise (opaque type) */ VOID * -create_boot_params(CHAR16 *args, memdesc_t *initrd, UINTN *cookie) +create_boot_params(CHAR16 *args, memdesc_t *initrd, memdesc_t *vmcode, UINTN *cookie) { /* * XXX: need cleanup @@ -69,6 +69,7 @@ create_boot_params(CHAR16 *args, memdesc_t *initrd, UINTN *cookie) * Allocate memory for boot parameters. * This CANNOT be EfiLoaderData or EfiLoaderCode as the kernel * frees this region when initializing. + * FIXME: Is this a bug? (since the memory type *is* EfiLoaderData) */ bp = (boot_params_t *)alloc(BOOT_PARAM_MEMSIZE, EfiLoaderData); @@ -77,12 +78,12 @@ create_boot_params(CHAR16 *args, memdesc_t *initrd, UINTN *cookie) return 0; } - VERB_PRT(3, Print(L"boot params @ 0x%lx\n", bp)); + VERB_PRT(3, Print(L"boot params @ " PTR_FMT "\n", bp)); /* XXX: need to fix this for 3.5 */ #ifdef CONFIG_ia64 cp = ((CHAR8 *)bp) + BOOT_PARAM_MEMSIZE - cmdline_size; -#elif defined CONFIG_ia32 +#elif defined CONFIG_ia32 || CONFIG_x86_64 cp = ((CHAR8 *)bp) + BOOT_PARAM_MEMSIZE - 2048; #endif @@ -95,7 +96,9 @@ create_boot_params(CHAR16 *args, memdesc_t *initrd, UINTN *cookie) */ Memset(bp, 0, BOOT_PARAM_MEMSIZE); - if (sysdeps_create_boot_params(bp, cp, initrd, cookie) == -1) return 0; + U2ascii(args, cp, cmdline_size); + + if (sysdeps_create_boot_params(bp, cp, initrd, vmcode, cookie) == -1) return 0; /* * Convert kernel command line args from UNICODE to ASCII and put them where