* 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
* 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);
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
*/
Memset(bp, 0, BOOT_PARAM_MEMSIZE);
- if (sysdeps_create_boot_params(bp, cp, initrd, cookie) == -1) return 0;
+ 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