From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49505) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WiDHM-0003WY-PN for qemu-devel@nongnu.org; Wed, 07 May 2014 21:37:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WiDHG-0007We-Qe for qemu-devel@nongnu.org; Wed, 07 May 2014 21:37:44 -0400 Received: from mail-qg0-x22e.google.com ([2607:f8b0:400d:c04::22e]:64213) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WiDHG-0007Wa-N4 for qemu-devel@nongnu.org; Wed, 07 May 2014 21:37:38 -0400 Received: by mail-qg0-f46.google.com with SMTP id q108so2019521qgd.5 for ; Wed, 07 May 2014 18:37:38 -0700 (PDT) From: "Edgar E. Iglesias" Date: Thu, 8 May 2014 11:35:06 +1000 Message-Id: <1399512908-23925-4-git-send-email-edgar.iglesias@gmail.com> In-Reply-To: <1399512908-23925-1-git-send-email-edgar.iglesias@gmail.com> References: <1399512908-23925-1-git-send-email-edgar.iglesias@gmail.com> Subject: [Qemu-devel] [PATCH v1 3/5] xilinx_intc: Fix writes into MER register List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.crosthwaite@xilinx.com, linux@roeck-us.net From: Guenter Roeck The MER register only has two 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 Reviewed-by: Edgar E. Iglesias [Edgar: Untabified] Signed-off-by: Edgar E. Iglesias --- hw/intc/xilinx_intc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/intc/xilinx_intc.c b/hw/intc/xilinx_intc.c index 1b228ff..c3682f1 100644 --- a/hw/intc/xilinx_intc.c +++ b/hw/intc/xilinx_intc.c @@ -121,6 +121,9 @@ pic_write(void *opaque, hwaddr addr, case R_CIE: p->regs[R_IER] &= ~value; /* Atomic clear ie. */ break; + case R_MER: + p->regs[R_MER] = value & 0x3; + break; case R_ISR: if ((p->regs[R_MER] & 2)) { break; -- 1.8.3.2