PPC: Mac: Move tbfreq into local variable
We already expose the real CPU's tb frequency to the guest via fw_cfg. Soon we will need to also expose it to the MacIO, so let's move it to a variable that we can leverage every time we need the frequency. Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
2d9907a333
commit
caae6c9611
@ -177,6 +177,7 @@ static void ppc_core99_init(MachineState *machine)
|
|||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
int *token = g_new(int, 1);
|
int *token = g_new(int, 1);
|
||||||
hwaddr nvram_addr = 0xFFF04000;
|
hwaddr nvram_addr = 0xFFF04000;
|
||||||
|
uint64_t tbfreq;
|
||||||
|
|
||||||
linux_boot = (kernel_filename != NULL);
|
linux_boot = (kernel_filename != NULL);
|
||||||
|
|
||||||
@ -373,6 +374,14 @@ static void ppc_core99_init(MachineState *machine)
|
|||||||
pci_bus = pci_pmac_init(pic, get_system_memory(), get_system_io());
|
pci_bus = pci_pmac_init(pic, get_system_memory(), get_system_io());
|
||||||
machine_arch = ARCH_MAC99;
|
machine_arch = ARCH_MAC99;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Timebase Frequency */
|
||||||
|
if (kvm_enabled()) {
|
||||||
|
tbfreq = kvmppc_get_tbfreq();
|
||||||
|
} else {
|
||||||
|
tbfreq = TBFREQ;
|
||||||
|
}
|
||||||
|
|
||||||
/* init basic PC hardware */
|
/* init basic PC hardware */
|
||||||
escc_mem = escc_init(0, pic[0x25], pic[0x24],
|
escc_mem = escc_init(0, pic[0x25], pic[0x24],
|
||||||
serial_hds[0], serial_hds[1], ESCC_CLOCK, 4);
|
serial_hds[0], serial_hds[1], ESCC_CLOCK, 4);
|
||||||
@ -469,15 +478,13 @@ static void ppc_core99_init(MachineState *machine)
|
|||||||
#ifdef CONFIG_KVM
|
#ifdef CONFIG_KVM
|
||||||
uint8_t *hypercall;
|
uint8_t *hypercall;
|
||||||
|
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_TBFREQ, kvmppc_get_tbfreq());
|
|
||||||
hypercall = g_malloc(16);
|
hypercall = g_malloc(16);
|
||||||
kvmppc_get_hypercall(env, hypercall, 16);
|
kvmppc_get_hypercall(env, hypercall, 16);
|
||||||
fw_cfg_add_bytes(fw_cfg, FW_CFG_PPC_KVM_HC, hypercall, 16);
|
fw_cfg_add_bytes(fw_cfg, FW_CFG_PPC_KVM_HC, hypercall, 16);
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_KVM_PID, getpid());
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_KVM_PID, getpid());
|
||||||
#endif
|
#endif
|
||||||
} else {
|
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_TBFREQ, TBFREQ);
|
|
||||||
}
|
}
|
||||||
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_TBFREQ, tbfreq);
|
||||||
/* Mac OS X requires a "known good" clock-frequency value; pass it one. */
|
/* Mac OS X requires a "known good" clock-frequency value; pass it one. */
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_CLOCKFREQ, CLOCKFREQ);
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_CLOCKFREQ, CLOCKFREQ);
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_BUSFREQ, BUSFREQ);
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_BUSFREQ, BUSFREQ);
|
||||||
|
@ -103,6 +103,7 @@ static void ppc_heathrow_init(MachineState *machine)
|
|||||||
uint16_t ppc_boot_device;
|
uint16_t ppc_boot_device;
|
||||||
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
||||||
void *fw_cfg;
|
void *fw_cfg;
|
||||||
|
uint64_t tbfreq;
|
||||||
|
|
||||||
linux_boot = (kernel_filename != NULL);
|
linux_boot = (kernel_filename != NULL);
|
||||||
|
|
||||||
@ -250,6 +251,13 @@ static void ppc_heathrow_init(MachineState *machine)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Timebase Frequency */
|
||||||
|
if (kvm_enabled()) {
|
||||||
|
tbfreq = kvmppc_get_tbfreq();
|
||||||
|
} else {
|
||||||
|
tbfreq = TBFREQ;
|
||||||
|
}
|
||||||
|
|
||||||
/* init basic PC hardware */
|
/* init basic PC hardware */
|
||||||
if (PPC_INPUT(env) != PPC_FLAGS_INPUT_6xx) {
|
if (PPC_INPUT(env) != PPC_FLAGS_INPUT_6xx) {
|
||||||
hw_error("Only 6xx bus is supported on heathrow machine\n");
|
hw_error("Only 6xx bus is supported on heathrow machine\n");
|
||||||
@ -330,15 +338,13 @@ static void ppc_heathrow_init(MachineState *machine)
|
|||||||
#ifdef CONFIG_KVM
|
#ifdef CONFIG_KVM
|
||||||
uint8_t *hypercall;
|
uint8_t *hypercall;
|
||||||
|
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_TBFREQ, kvmppc_get_tbfreq());
|
|
||||||
hypercall = g_malloc(16);
|
hypercall = g_malloc(16);
|
||||||
kvmppc_get_hypercall(env, hypercall, 16);
|
kvmppc_get_hypercall(env, hypercall, 16);
|
||||||
fw_cfg_add_bytes(fw_cfg, FW_CFG_PPC_KVM_HC, hypercall, 16);
|
fw_cfg_add_bytes(fw_cfg, FW_CFG_PPC_KVM_HC, hypercall, 16);
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_KVM_PID, getpid());
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_KVM_PID, getpid());
|
||||||
#endif
|
#endif
|
||||||
} else {
|
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_TBFREQ, TBFREQ);
|
|
||||||
}
|
}
|
||||||
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_TBFREQ, tbfreq);
|
||||||
/* Mac OS X requires a "known good" clock-frequency value; pass it one. */
|
/* Mac OS X requires a "known good" clock-frequency value; pass it one. */
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_CLOCKFREQ, CLOCKFREQ);
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_CLOCKFREQ, CLOCKFREQ);
|
||||||
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_BUSFREQ, BUSFREQ);
|
fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_BUSFREQ, BUSFREQ);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user