From 174ff2242bac23a45001276b0629413bd166bf6e Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 7 Apr 1998 22:47:53 +0000 Subject: [PATCH] * 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. --- sim/mips/ChangeLog | 8 ++++++++ sim/mips/interp.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog index 2c0f0b9..ecd4caf 100644 --- a/sim/mips/ChangeLog +++ b/sim/mips/ChangeLog @@ -1,4 +1,12 @@ start-sanitize-sky + Tue Apr 7 18:32:49 1998 Frank Ch. Eigler + + * 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 * interp.c (cop_[ls]q): Replaced stub with proper COP2 code. diff --git a/sim/mips/interp.c b/sim/mips/interp.c index 7368695..2d5d4f4 100644 --- a/sim/mips/interp.c +++ b/sim/mips/interp.c @@ -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 */ -- 2.7.4