]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
xilinx_timer: Fix writes into TCSR register
authorGuenter Roeck <linux@roeck-us.net>
Fri, 25 Apr 2014 15:39:48 +0000 (08:39 -0700)
committerEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Mon, 12 May 2014 23:12:40 +0000 (09:12 +1000)
The TCSR register has only 11 valid bits. This is now used by the
linux kernel to auto-detect endianness, and causes Linux 3.15-rc1
and later to hang when run under qemu-microblaze. Mask valid bits
before writing the register to solve the problem.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
hw/timer/xilinx_timer.c

index 6113b975bf856d3b1d8f5454ca607f49cd85d8b2..3ff1da9cafb5bd50874515bf320ef281b00901df 100644 (file)
@@ -169,7 +169,7 @@ timer_write(void *opaque, hwaddr addr,
             if (value & TCSR_TINT)
                 value &= ~TCSR_TINT;
 
-            xt->regs[addr] = value;
+            xt->regs[addr] = value & 0x7ff;
             if (value & TCSR_ENT)
                 timer_enable(xt);
             break;