From: Leon Alrae <leon.alrae@imgtec.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 3/9] target-mips: update writing to CP0.Status.KX/SX/UX in MIPS Release R6
Date: Fri, 30 Oct 2015 15:00:46 +0000 [thread overview]
Message-ID: <1446217252-3637-4-git-send-email-leon.alrae@imgtec.com> (raw)
In-Reply-To: <1446217252-3637-1-git-send-email-leon.alrae@imgtec.com>
Implement the relationship between CP0.Status.KX, SX and UX. It should not
be possible to set UX bit if SX is 0, the same applies for setting SX if
KX is 0.
Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
---
target-mips/cpu.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/target-mips/cpu.h b/target-mips/cpu.h
index 3799d26..c68681d 100644
--- a/target-mips/cpu.h
+++ b/target-mips/cpu.h
@@ -1001,7 +1001,12 @@ static inline void cpu_mips_store_status(CPUMIPSState *env, target_ulong val)
if (env->insn_flags & ISA_MIPS32R6) {
bool has_supervisor = extract32(mask, CP0St_KSU, 2) == 0x3;
-
+#if defined(TARGET_MIPS64)
+ uint32_t ksux = (1 << CP0St_KX) & val;
+ ksux |= (ksux >> 1) & val; /* KX = 0 forces SX to be 0 */
+ ksux |= (ksux >> 1) & val; /* SX = 0 forces UX to be 0 */
+ val = (val & ~(7 << CP0St_UX)) | ksux;
+#endif
if (has_supervisor && extract32(val, CP0St_KSU, 2) == 0x3) {
mask &= ~(3 << CP0St_KSU);
}
--
2.1.0
next prev parent reply other threads:[~2015-10-30 15:01 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-30 15:00 [Qemu-devel] [PULL 0/9] target-mips queue Leon Alrae
2015-10-30 15:00 ` [Qemu-devel] [PULL 1/9] target-mips: move the test for enabled interrupts to a separate function Leon Alrae
2015-10-30 15:00 ` [Qemu-devel] [PULL 2/9] target-mips: implement the CPU wake-up on non-enabled interrupts in R6 Leon Alrae
2015-10-30 15:00 ` Leon Alrae [this message]
2015-10-30 15:00 ` [Qemu-devel] [PULL 4/9] target-mips: Add enum for BREAK32 Leon Alrae
2015-10-30 15:00 ` [Qemu-devel] [PULL 5/9] hw/mips_malta: Fix KVM PC initialisation Leon Alrae
2015-10-30 15:00 ` [Qemu-devel] [PULL 6/9] target-mips: add PC, XNP reg numbers to RDHWR Leon Alrae
2015-10-30 15:00 ` [Qemu-devel] [PULL 7/9] target-mips: Set Config5.XNP for R6 cores Leon Alrae
2015-10-30 15:00 ` [Qemu-devel] [PULL 8/9] target-mips: add SIGRIE instruction Leon Alrae
2015-10-30 15:00 ` [Qemu-devel] [PULL 9/9] target-mips: fix updating XContext on mmu exception Leon Alrae
2015-10-30 17:36 ` [Qemu-devel] [PULL 0/9] target-mips queue Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1446217252-3637-4-git-send-email-leon.alrae@imgtec.com \
--to=leon.alrae@imgtec.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).