summaryrefslogtreecommitdiff
path: root/target-tricore
diff options
context:
space:
mode:
authorBastian Koppelmann <kbastian@mail.uni-paderborn.de>2016-03-21 09:03:03 +0100
committerBastian Koppelmann <kbastian@mail.uni-paderborn.de>2016-03-23 09:22:48 +0100
commit1bd3e2fc3de683941f18e346a1793b81b20cab2d (patch)
treec8467b0511fdf2d06b543c2a03bfcfbf1bf68994 /target-tricore
parent9029710b9ead9c11649ec142d18581412d8f3e68 (diff)
downloadqemu-1bd3e2fc3de683941f18e346a1793b81b20cab2d.tar.gz
target-tricore: Fix psw_read() clearing too many bits
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>
Diffstat (limited to 'target-tricore')
-rw-r--r--target-tricore/helper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target-tricore/helper.c b/target-tricore/helper.c
index 7d96daddb1..adbb6db10d 100644
--- a/target-tricore/helper.c
+++ b/target-tricore/helper.c
@@ -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);