#include "boards.h"
#include "console.h"
+#include "xen_platform.h"
+
/* output Bochs bios info messages */
//#define DEBUG_BIOS
static PCIDevice *i440fx_state;
static void xen_relocator_hook(target_phys_addr_t prot_addr, uint16_t protocol,
- uint8_t header[], int kernel_size);
+ uint8_t header[], int kernel_size,
+ target_phys_addr_t real_addr, int real_size);
#define smbus_eeprom_device_init (void)
static void ioport80_write(void *opaque, uint32_t addr, uint32_t data)
env = env->next_cpu;
}
}
+#else
+#define pic_irq_request 0 /* see i386-dm/i8259.c:i8259_init */
#endif /* !CONFIG_DM */
/* PC cmos mappings */
setup_size = (setup_size+1)*512;
kernel_size -= setup_size; /* Size of protected-mode code */
- xen_relocator_hook(prot_addr, protocol, header, kernel_size);
+ xen_relocator_hook(prot_addr, protocol, header, kernel_size,
+ real_addr, setup_size-1024);
if (!fread_targphys_ok(real_addr+1024, setup_size-1024, f) ||
!fread_targphys_ok(prot_addr, kernel_size, f)) {
static void xen_relocator_hook(target_phys_addr_t prot_addr, uint16_t protocol,
- uint8_t header[], int kernel_size)
+ uint8_t header[], int kernel_size,
+ target_phys_addr_t real_addr, int real_size)
{
/* Urgh, Xen's HVM firmware lives at 0x100000, but that's also the
stl_p(header+0x214, reloc_prot_addr + kernel_size);
setup_relocator(reloc_prot_addr + kernel_size, reloc_prot_addr, prot_addr, kernel_size);
}
+ fprintf(stderr, "qemu: loading kernel protected mode (%x bytes) at %#zx\n",
+ kernel_size, (size_t)reloc_prot_addr);
+ fprintf(stderr, "qemu: loading kernel real mode (%x bytes) at %#zx\n",
+ real_size, (size_t)real_addr);
}
-
- fprintf(stderr, "qemu: loading kernel real mode (%#x bytes) at %#zx\n",
- setup_size-1024, real_addr);
- fprintf(stderr, "qemu: loading kernel protected mode (%#x bytes) at %#zx\n",
- kernel_size, reloc_prot_addr);
}
#ifdef CONFIG_DM
-void vmport_init(CPUX86State *env) { }
-void apic_init(CPUX86State *env) { }
+void vmport_init(void) { }
+int apic_init(CPUX86State *env) { return 0; }
#endif /* CONFIG_DM */