]> git.proxmox.com Git - mirror_qemu.git/commitdiff
target-tricore: Fix psw_read() clearing too many bits
authorBastian Koppelmann <kbastian@mail.uni-paderborn.de>
Mon, 21 Mar 2016 08:03:03 +0000 (09:03 +0100)
committerBastian Koppelmann <kbastian@mail.uni-paderborn.de>
Wed, 23 Mar 2016 08:22:48 +0000 (09:22 +0100)
psw_read() ought to sync the PSW value with the
cached status bits (C,V,SV,AV,SAV). For this the bits
are cleared in the PSW before they are written from the
cached bits. The clear mask is too big and clears two
additional bits.

Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Message-Id: <1458547383-23102-4-git-send-email-kbastian@mail.uni-paderborn.de>

target-tricore/helper.c

index 7d96daddb120268fa392537a2fd4a44a161b8efe..adbb6db10da0a023dbdb76b1fb9c197752ee1840 100644 (file)
@@ -113,7 +113,7 @@ void tricore_cpu_list(FILE *f, fprintf_function cpu_fprintf)
 uint32_t psw_read(CPUTriCoreState *env)
 {
     /* clear all USB bits */
-    env->PSW &= 0xffffff;
+    env->PSW &= 0x6ffffff;
     /* now set them from the cache */
     env->PSW |= ((env->PSW_USB_C != 0) << 31);
     env->PSW |= ((env->PSW_USB_V   & (1 << 31))  >> 1);