qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] MIPS CP0 Random register fix
@ 2009-01-03 17:20 Hervé Poussineau
  2009-01-08 18:51 ` Aurelien Jarno
  0 siblings, 1 reply; 2+ messages in thread
From: Hervé Poussineau @ 2009-01-03 17:20 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 841 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.

At the moment, Qemu implementation is a random one, but can return the 
same value more than once.
Due to this, NetBSD 1.6.2 on MIPS Magnum emulation crashes.

After checking MIPS CPU documentations, multiple algorithms exist to 
update this Random register, but they all guarantee that 2 close TLBWR 
instructions don't overwrite the same TLB.

Attached patch prevents returning the same TLB index twice, by choosing 
the next immediate value if random value is the same as before.

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>

Hervé

[-- Attachment #2: cp0_random_v1.diff --]
[-- Type: plain/text, Size: 662 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-01-08 18:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-03 17:20 [Qemu-devel] [PATCH] MIPS CP0 Random register fix Hervé Poussineau
2009-01-08 18:51 ` Aurelien Jarno

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).