[OpenBIOS] [PATCH v3] arch/ppc/qemu: Clean up and add more cpu infos

BALATON Zoltan balaton at eik.bme.hu
Fri May 23 01:30:48 CEST 2014


Removed unused clock_frequency member from struct cpudef which is get from 
FW_CFG and added bus-frequency property to complete the frequency 
properties. Also added tlb infos to cpudef (with values only for G4 
currently as I have no data for other CPUs).

Signed-off-by: BALATON Zoltan <balaton at eik.bme.hu>
---

v2: Get bus-frequency from FW_CFG similarly to clock-frequency and
     tb-frequency (corresponding patch submitted to QEMU, already
     applied to ppc-next)
v3: added definition of FW_CFG_PPC_BUSFREQ that was missed from v2

---
Index: openbios-devel/arch/ppc/qemu/init.c
===================================================================
--- openbios-devel/arch/ppc/qemu/init.c	(revision 1298)
+++ openbios-devel/arch/ppc/qemu/init.c	(working copy)
@@ -44,7 +44,7 @@
      int icache_size, dcache_size;
      int icache_sets, dcache_sets;
      int icache_block_size, dcache_block_size;
-    int clock_frequency;
+    int tlb_sets, tlb_size;
      void (*initfn)(const struct cpudef *cpu);
  };

@@ -269,6 +269,18 @@
      push_str("i-cache-block-size");
      fword("property");

+    if(cpu->tlb_size) {
+        PUSH(cpu->tlb_sets);
+        fword("encode-int");
+        push_str("tlb-sets");
+        fword("property");
+
+        PUSH(cpu->tlb_size);
+        fword("encode-int");
+        push_str("tlb-size");
+        fword("property");
+    }
+
      PUSH(fw_cfg_read_i32(FW_CFG_PPC_TBFREQ));
      fword("encode-int");
      push_str("timebase-frequency");
@@ -279,6 +291,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");
@@ -391,7 +408,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x07de2900,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_604_init,
      },
      { // XXX find out real values
@@ -403,7 +421,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x07de2900,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_604_init,
      },
      { // XXX find out real values
@@ -415,7 +434,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x07de2900,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_604_init,
      },
      { // XXX find out real values
@@ -427,7 +447,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x14dc9380,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_750_init,
      },
      {
@@ -439,7 +460,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x14dc9380,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_750_init,
      },
      { // XXX find out real values
@@ -451,7 +473,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x14dc9380,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_750_init,
      },
      { // XXX find out real values
@@ -463,7 +486,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x14dc9380,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_750_init,
      },
      { // XXX find out real values
@@ -475,7 +499,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x14dc9380,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_750_init,
      },
      { // XXX find out real values
@@ -487,7 +512,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x14dc9380,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_750_init,
      },
      {
@@ -499,7 +525,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x20,
          .dcache_block_size = 0x20,
-        .clock_frequency = 0x1dcd6500,
+        .tlb_sets = 0x40,
+        .tlb_size = 0x80,
          .initfn = cpu_g4_init,
      },
      {
@@ -511,7 +538,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x80,
          .dcache_block_size = 0x80,
-        .clock_frequency = 0x5f5e1000,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_970_init,
      },
      { // XXX find out real values
@@ -523,7 +551,8 @@
          .dcache_sets = 0x80,
          .icache_block_size = 0x80,
          .dcache_block_size = 0x80,
-        .clock_frequency = 0x1dcd6500,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_970_init,
      },
      {
@@ -535,7 +564,8 @@
          .dcache_sets = 0x40,
          .icache_block_size = 0x80,
          .dcache_block_size = 0x80,
-        .clock_frequency = 0x629b4940,
+        .tlb_sets = 0x00,
+        .tlb_size = 0x00,
          .initfn = cpu_970_init,
      },
  };
Index: openbios-devel/include/arch/common/fw_cfg.h
===================================================================
--- openbios-devel/include/arch/common/fw_cfg.h	(revision 1298)
+++ openbios-devel/include/arch/common/fw_cfg.h	(working copy)
@@ -45,6 +45,7 @@
  #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_NVRAM_ADDR	(FW_CFG_ARCH_LOCAL + 0x08)
+#define FW_CFG_PPC_BUSFREQ      (FW_CFG_ARCH_LOCAL + 0x09)

  #define FW_CFG_INVALID          0xffff




More information about the OpenBIOS mailing list