};
int rc;
uint32_t xen_size = (_end - _start);
- paddr_t xen_paddr;
+ paddr_t xen_paddr = (paddr_t)(_start + boot_phys_offset);
dcache_line_bytes = read_dcache_line_bytes();
if ( !coloring_init() )
panic("Xen Coloring support: setup failed\n");
+
xen_size = XEN_COLOR_MAP_SIZE;
+ // TODO: find a better way
+ if ( xen_size > 2*1024*1024 )
+ xen_paddr = get_xen_paddr(xen_size);
/* Register Xen's load address as a boot module. */
- xen_bootmodule = add_boot_module(BOOTMOD_XEN,
- (paddr_t)(uintptr_t)(_start + boot_phys_offset),
- (paddr_t)(uintptr_t)(xen_size + 1), false);
+ xen_bootmodule = add_boot_module(BOOTMOD_XEN, xen_paddr, xen_size, false);
BUG_ON(!xen_bootmodule);
- xen_paddr = get_xen_paddr(xen_size);
setup_pagetables(boot_phys_offset, xen_paddr);
- /* Update Xen's address now that we have relocated. */
- printk("Update BOOTMOD_XEN from %"PRIpaddr"-%"PRIpaddr" => %"PRIpaddr"-%"PRIpaddr"\n",
- xen_bootmodule->start, xen_bootmodule->start + xen_bootmodule->size,
- xen_paddr, xen_paddr + xen_bootmodule->size);
- xen_bootmodule->start = xen_paddr;
-
setup_mm();
/* Parse the ACPI tables for possible boot-time configuration */