SH4/R2D: fix poweroff
authorAurelien Jarno <aurelien@aurel32.net>
Sat, 30 Jan 2010 19:41:33 +0000 (20:41 +0100)
committerAurelien Jarno <aurelien@aurel32.net>
Mon, 8 Feb 2010 11:21:03 +0000 (12:21 +0100)
The write the the PA_POWOFF register is currently ignored. Fix that by
calling qemu_system_shutdown_request() when a poweroff is requested.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
hw/r2d.c

index e4c02f0..8769a12 100644 (file)
--- a/hw/r2d.c
+++ b/hw/r2d.c
@@ -66,7 +66,6 @@ typedef struct {
     uint16_t keyctlclr;
     uint16_t pad0;
     uint16_t pad1;
-    uint16_t powoff;
     uint16_t verreg;
     uint16_t inport;
     uint16_t outport;
@@ -128,7 +127,7 @@ static uint32_t r2d_fpga_read(void *opaque, target_phys_addr_t addr)
     case PA_OUTPORT:
        return s->outport;
     case PA_POWOFF:
-       return s->powoff;
+       return 0x00;
     case PA_VERREG:
        return 0x10;
     }
@@ -150,8 +149,10 @@ r2d_fpga_write(void *opaque, target_phys_addr_t addr, uint32_t value)
        s->outport = value;
        break;
     case PA_POWOFF:
-       s->powoff = value;
-       break;
+        if (value & 1) {
+            qemu_system_shutdown_request();
+        }
+        break;
     case PA_VERREG:
        /* Discard writes */
        break;