The GUTS device is used by system software to find out about hardware
details of the current system.

We only emulate the bare minimum to be able to reboot a guest which is
not sufficient to make u-boot happy.

Add a few more registers to our portfolio with dummy values.

Signed-off-by: Alexander Graf <ag...@suse.de>
---
 hw/ppc/mpc8544_guts.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c
index a10abe9..af8c742 100644
--- a/hw/ppc/mpc8544_guts.c
+++ b/hw/ppc/mpc8544_guts.c
@@ -25,6 +25,8 @@
 #define MPC8544_GUTS_RSTCR_RESET      0x02
 
 #define MPC8544_GUTS_ADDR_PORPLLSR    0x00
+#define PORPLLSR_SYS_RATIO_MAX        0x3e
+#define PORPLLSR_CPU0_RATIO_MAX       (0x3f << 16)
 #define MPC8544_GUTS_ADDR_PORBMSR     0x04
 #define MPC8544_GUTS_ADDR_PORIMPSCR   0x08
 #define MPC8544_GUTS_ADDR_PORDEVSR    0x0C
@@ -36,6 +38,7 @@
 #define MPC8544_GUTS_ADDR_GPINDR      0x50
 #define MPC8544_GUTS_ADDR_PMUXCR      0x60
 #define MPC8544_GUTS_ADDR_DEVDISR     0x70
+#define DEVDISR_DISABLED_NONE         0x0
 #define MPC8544_GUTS_ADDR_POWMGTCSR   0x80
 #define MPC8544_GUTS_ADDR_MCPSUMR     0x90
 #define MPC8544_GUTS_ADDR_RSTRSCR     0x94
@@ -73,6 +76,15 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr,
 
     addr &= MPC8544_GUTS_MMIO_SIZE - 1;
     switch (addr) {
+    case MPC8544_GUTS_ADDR_PORPLLSR:
+        value = PORPLLSR_SYS_RATIO_MAX | PORPLLSR_CPU0_RATIO_MAX;
+        break;
+    case MPC8544_GUTS_ADDR_PORDEVSR:
+        value = 0;
+        break;
+    case MPC8544_GUTS_ADDR_DEVDISR:
+        value = DEVDISR_DISABLED_NONE;
+        break;
     case MPC8544_GUTS_ADDR_PVR:
         value = env->spr[SPR_PVR];
         break;
-- 
1.8.1.4


Reply via email to