[OpenBIOS] [PATCH] More complete PowerPC OpenFirmware emulation -- adding bus-frequency
Alexander von Gluck
kallisti5 at unixzen.com
Mon Aug 8 17:07:51 CEST 2011
Below is a quick patch to introduce the bus-frequency field for each
CPU.
This exists on every Apple OpenFirmware i've seen and is expected on
Haiku OS.
The change to config/scripts/switch-arch isn't required but lets
you compile openbios using Haiku's PowerPC cross-compiler.
Also included is a extra tracing line for troubleshooting MMU issues.
Index: include/arch/common/fw_cfg.h
===================================================================
--- include/arch/common/fw_cfg.h (revision 1046)
+++ include/arch/common/fw_cfg.h (working copy)
@@ -41,9 +41,10 @@
#define FW_CFG_PPC_DEPTH (FW_CFG_ARCH_LOCAL + 0x02)
#define FW_CFG_PPC_TBFREQ (FW_CFG_ARCH_LOCAL + 0x03)
#define FW_CFG_PPC_CPUFREQ (FW_CFG_ARCH_LOCAL + 0x04)
-#define FW_CFG_PPC_IS_KVM (FW_CFG_ARCH_LOCAL + 0x05)
-#define FW_CFG_PPC_KVM_HC (FW_CFG_ARCH_LOCAL + 0x06)
-#define FW_CFG_PPC_KVM_PID (FW_CFG_ARCH_LOCAL + 0x07)
+#define FW_CFG_PPC_IS_KVM (FW_CFG_ARCH_LOCAL + 0x05)
+#define FW_CFG_PPC_KVM_HC (FW_CFG_ARCH_LOCAL + 0x06)
+#define FW_CFG_PPC_KVM_PID (FW_CFG_ARCH_LOCAL + 0x07)
+#define FW_CFG_PPC_BUSFREQ (FW_CFG_ARCH_LOCAL + 0x08)
#define FW_CFG_INVALID 0xffff
Index: config/scripts/switch-arch
===================================================================
--- config/scripts/switch-arch (revision 1046)
+++ config/scripts/switch-arch (working copy)
@@ -97,7 +97,7 @@
select_prefix()
{
- for TARGET in ${1}-linux-gnu- ${1}-linux- ${1}-elf- ${1}-eabi-
+ for TARGET in ${1}-linux-gnu- ${1}-linux- ${1}-elf- ${1}-eabi-
${1}-apple-haiku-
do
if type ${TARGET}gcc > /dev/null 2>&1
then
Index: arch/ppc/qemu/init.c
===================================================================
--- arch/ppc/qemu/init.c (revision 1046)
+++ arch/ppc/qemu/init.c (working copy)
@@ -260,6 +260,11 @@
push_str("clock-frequency");
fword("property");
+ PUSH(fw_cfg_read_i32(FW_CFG_PPC_BUSFREQ));
+ fword("encode-int");
+ push_str("bus-frequency");
+ fword("property");
+
push_str("running");
fword("encode-string");
push_str("state");
Index: drivers/iommu.c
===================================================================
--- drivers/iommu.c (revision 1046)
+++ drivers/iommu.c (working copy)
@@ -129,6 +129,7 @@
/* Tremendous alignment causes great waste... */
ptsize = (vasize / PAGE_SIZE) * sizeof(int);
ret = ofmem_posix_memalign((void *)&ptab, ptsize, ptsize);
+ DPRINTF("Allocated IOMMU @ %p\n", (void *)&ptab);
if (ret != 0) {
DPRINTF("Cannot allocate IOMMU table [0x%x]\n", ptsize);
for (;;) { }
More information about the OpenBIOS
mailing list