* R5900 COP2 sim testing in progress. The majority of instructions actually

work!

[ChangeLog.sky]

	* sky-vu.h (vu_device): Represent "macro instruction just stuffed
 	into fetch buffer" condition with new "m" bit.  Rename old "m" to
 	"l".

	* sky-libvpe.c (indebug): Save snapshot of environment value;
 	workaround for suspected memory corruption.
	(fetch_inst): Respect new "m" macro-instruction flag for reporting
 	successful fetch to caller.
	(exec_inst): Disassemble instruction here instead of fetch time.
  	Renamed old "m" -> "l" flag in VU state to track interlock
 	release.
	(vpecallms_cycle): Call exec_inst only if fetch_inst did some
 	work.

	* sky-vu.c (vu_attach, vu[01]_device): Revamped initialization to
 	ensure complete clear of tail part of struct at attach time.
	(vu0_busy): Fix thinko.
	(vu0_macro_issue): Adapt to new "l" flag.
	(vu0_micro_interlock_released): Ditto.
 	(write_vu_special_reg): Ditto.
	(read_vu_special_reg): Compute VBS0/VBS1 bits more explicitly.
  	The other VU status bits are not yet computed.

[ChangeLog]

	* interp.c (decode_coproc): Do not apply superfluous E (end) flag
 	to upper code of generated VU instruction.
This commit is contained in:
Frank Ch. Eigler 1998-04-07 22:47:53 +00:00
parent 0dee6af299
commit 174ff2242b
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,11 @@
start-sanitize-sky
Tue Apr 7 18:32:49 1998 Frank Ch. Eigler <fche@cygnus.com>
* interp.c (decode_coproc): Do not apply superfluous E (end) flag
to upper code of generated VU instruction.
end-sanitize-sky
start-sanitize-sky
Mon Apr 6 19:55:56 1998 Frank Ch. Eigler <fche@cygnus.com>

View File

@ -3394,7 +3394,7 @@ decode_coproc (SIM_DESC sd,
{
unsigned_4 vu_upper, vu_lower;
vu_upper =
0x40000000 | /* bits 31 .. 25 */
0x00000000 | /* bits 31 .. 25 */
(instruction & 0x01ffffff); /* bits 24 .. 0 */
vu_lower = 0x8000033c; /* NOP */
@ -3413,7 +3413,7 @@ decode_coproc (SIM_DESC sd,
(i_5_0 >= 0x3c && i_10_6 >= 0x0c)) /* VMOVE .. VRXOR */
{ /* N.B.: VWAITQ already covered by prior case */
unsigned_4 vu_upper, vu_lower;
vu_upper = 0x400002ff; /* END/NOP */
vu_upper = 0x000002ff; /* NOP/NOP */
vu_lower =
0x10000000 | /* bits 31 .. 25 */
(instruction & 0x01ffffff); /* bits 24 .. 0 */