From: "Hervé Poussineau" <hpoussin@reactos.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [RFC] MIPS CP0 random register strategy
Date: Thu, 01 Jan 2009 20:38:35 +0100 [thread overview]
Message-ID: <495D1BBB.6090204@reactos.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 1257 bytes --]
Hello,
MIPS TLBWR instruction asks the CPU to randomly overwrite a TLB entry by
the one we want to write. The TLB index needs to be between number of
wired TLB entries and TLB count - 1.
However, algorithm to choose which one to overwrite is implementation
dependant.
After checking MIPS CPU documentations, 4 algorithms are emerging:
- Random register is decremented once at each clock tick
- Random register is decremented once after 'number of wired TLB
entries' clock ticks
- Random register is decremented only after TLBWR instruction
- Random register uses a Not Last Used algorithm, ie whatever value
which is not the previous one
At the moment, Qemu implementation seems to be more the 4th one, but can
return the same value more than once.
Due to this, NetBSD 1.6.2 on MIPS Magnum emulation crashes.
Attached patch tries to fix the problem by adding 4 methods to update
Random value.
Each CPU needs to define which Random algorithm it is using.
Patch also optimizes CP0_Random access, by not requiring call to a
helper function
Finally, it initializes CP0_Random even in user mode emulation, which
was not the case before.
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Please comment
Hervé
[-- Attachment #2: cp0_random.diff --]
[-- Type: plain/text, Size: 11066 bytes --]
next reply other threads:[~2009-01-01 19:38 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-01 19:38 Hervé Poussineau [this message]
2009-01-03 12:29 ` [Qemu-devel] [RFC] MIPS CP0 random register strategy Aurelien Jarno
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=495D1BBB.6090204@reactos.org \
--to=hpoussin@reactos.org \
--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).