From 5630c289dce78fc6ba309def1ce6aa47858848e8 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Thu, 18 Jun 1998 15:11:28 +0000 Subject: [PATCH] * Adapt to changed R5900 SQC2 opcode. Thu Jun 18 17:48:01 1998 Frank Ch. Eigler * mips.igen (SDC2): Removed R5900 alternative. * r5900.igen (SQC2): Updated bit pattern to match changed R5900 specs. --- sim/mips/mips.igen | 65 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/sim/mips/mips.igen b/sim/mips/mips.igen index 4efde4a..3e48d7a 100644 --- a/sim/mips/mips.igen +++ b/sim/mips/mips.igen @@ -2815,9 +2815,6 @@ // start-sanitize-vr5400 *vr5400: // end-sanitize-vr5400 -// start-sanitize-r5900 -*r5900: -// end-sanitize-r5900 // start-sanitize-tx19 *tx19: // end-sanitize-tx19 @@ -5375,10 +5372,17 @@ // start-sanitize-sky { #ifdef TARGET_SKY - address_word offset = EXTEND16 (OFFSET) << 2; - extern int sky_cpcond0; - if (sky_cpcond0 == 0) - DELAY_SLOT (NIA + offset); + extern int sky_cpcond0A; + if (sky_cpcond0A == 0) + { + address_word dest = NIA + (EXTEND16 (OFFSET) << 2); + TRACE_BRANCH_RESULT (dest); + DELAY_SLOT (dest); + } + else + { + TRACE_BRANCH_RESULT (NIA); + } #endif } // end-sanitize-sky @@ -5400,10 +5404,18 @@ // start-sanitize-sky { #ifdef TARGET_SKY - address_word offset = EXTEND16 (OFFSET) << 2; - extern int sky_cpcond0; - if (sky_cpcond0 == 0) - DELAY_SLOT (NIA + offset); + extern int sky_cpcond0A; + if (sky_cpcond0A == 0) + { + address_word dest = NIA + (EXTEND16 (OFFSET) << 2); + TRACE_BRANCH_RESULT (dest); + DELAY_SLOT (dest); + } + else + { + TRACE_BRANCH_RESULT (0); + NULLIFY_NEXT_INSTRUCTION (); + } #endif } // end-sanitize-sky @@ -5418,10 +5430,17 @@ // start-sanitize-sky { #ifdef TARGET_SKY - address_word offset = EXTEND16 (OFFSET) << 2; - extern int sky_cpcond0; - if (sky_cpcond0 != 0) - DELAY_SLOT (NIA + offset); + extern int sky_cpcond0A; + if (sky_cpcond0A != 0) + { + address_word dest = NIA + (EXTEND16 (OFFSET) << 2); + TRACE_BRANCH_RESULT (dest); + DELAY_SLOT (dest); + } + else + { + TRACE_BRANCH_RESULT (NIA); + } #endif } // end-sanitize-sky @@ -5444,10 +5463,18 @@ // start-sanitize-sky { #ifdef TARGET_SKY - address_word offset = EXTEND16 (OFFSET) << 2; - extern int sky_cpcond0; - if (sky_cpcond0 != 0) - DELAY_SLOT (NIA + offset); + extern int sky_cpcond0A; + if (sky_cpcond0A != 0) + { + address_word dest = NIA + (EXTEND16 (OFFSET) << 2); + TRACE_BRANCH_RESULT (dest); + DELAY_SLOT (dest); + } + else + { + TRACE_BRANCH_RESULT (0); + NULLIFY_NEXT_INSTRUCTION (); + } #endif } // end-sanitize-sky -- 2.7.4