From d3e1d5941439d9f38eb0d35aa58da2c1790e6416 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Tue, 24 Feb 1998 03:42:27 +0000 Subject: [PATCH] Add tracing to r5900 p* instructions. --- sim/common/ChangeLog | 7 +++++ sim/common/sim-trace.c | 61 +++++++++++++++++++++++++++++++++++++++++- sim/common/sim-trace.h | 49 ++++++++++++++++++++++++++++++++- sim/mips/ChangeLog | 4 +++ 4 files changed, 119 insertions(+), 2 deletions(-) diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index b441c081800..c8a2c455a3f 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,10 @@ +Tue Feb 24 13:18:42 1998 Andrew Cagney + + * sim-trace.h (TRACE_ALU_RESULT2): Define. + + * sim-trace.h, sim-trace.c (trace_result_word2, + trace_input_word4, trace_result_word4): New function. + Mon Feb 23 13:08:35 1998 Doug Evans * cgen-sim.h (SEM_NEXT_PC): New arg `len'. diff --git a/sim/common/sim-trace.c b/sim/common/sim-trace.c index 0990aee5df8..10a0508c49d 100644 --- a/sim/common/sim-trace.c +++ b/sim/common/sim-trace.c @@ -438,7 +438,9 @@ print_data (SIM_DESC sd, trace_printf (sd, cpu, " 0x%08lx", (long) * (unsigned32*) data); break; case sizeof (unsigned64): - trace_printf (sd, cpu, " 0x%08lx", (long) * (unsigned64*) data); + trace_printf (sd, cpu, " 0x%08lx%08lx", + (long) ((* (unsigned64*) data) >> 32), + (long) * (unsigned64*) data); break; default: abort (); @@ -720,6 +722,23 @@ trace_input_word3 (SIM_DESC sd, save_data (sd, data, trace_fmt_word, sizeof (unsigned_word), &d2); } +void +trace_input_word4 (SIM_DESC sd, + sim_cpu *cpu, + int trace_idx, + unsigned_word d0, + unsigned_word d1, + unsigned_word d2, + unsigned_word d3) +{ + TRACE_DATA *data = CPU_TRACE_DATA (cpu); + TRACE_IDX (data) = trace_idx; + save_data (sd, data, trace_fmt_word, sizeof (d0), &d0); + save_data (sd, data, trace_fmt_word, sizeof (d1), &d1); + save_data (sd, data, trace_fmt_word, sizeof (d2), &d2); + save_data (sd, data, trace_fmt_word, sizeof (d3), &d3); +} + void trace_input_bool1 (SIM_DESC sd, sim_cpu *cpu, @@ -845,6 +864,46 @@ trace_result_word1 (SIM_DESC sd, trace_results (sd, cpu, trace_idx, last_input); } +void +trace_result_word2 (SIM_DESC sd, + sim_cpu *cpu, + int trace_idx, + unsigned_word r0, + unsigned_word r1) +{ + TRACE_DATA *data = CPU_TRACE_DATA (cpu); + int last_input; + + /* Append any results to the end of the inputs */ + last_input = TRACE_INPUT_IDX (data); + save_data (sd, data, trace_fmt_word, sizeof (r0), &r0); + save_data (sd, data, trace_fmt_word, sizeof (r1), &r1); + + trace_results (sd, cpu, trace_idx, last_input); +} + +void +trace_result_word4 (SIM_DESC sd, + sim_cpu *cpu, + int trace_idx, + unsigned_word r0, + unsigned_word r1, + unsigned_word r2, + unsigned_word r3) +{ + TRACE_DATA *data = CPU_TRACE_DATA (cpu); + int last_input; + + /* Append any results to the end of the inputs */ + last_input = TRACE_INPUT_IDX (data); + save_data (sd, data, trace_fmt_word, sizeof (r0), &r0); + save_data (sd, data, trace_fmt_word, sizeof (r1), &r1); + save_data (sd, data, trace_fmt_word, sizeof (r2), &r2); + save_data (sd, data, trace_fmt_word, sizeof (r3), &r3); + + trace_results (sd, cpu, trace_idx, last_input); +} + void trace_result_bool1 (SIM_DESC sd, sim_cpu *cpu, diff --git a/sim/common/sim-trace.h b/sim/common/sim-trace.h index 374681de119..0cd344b661a 100644 --- a/sim/common/sim-trace.h +++ b/sim/common/sim-trace.h @@ -257,6 +257,19 @@ extern void trace_input_word3 PARAMS ((SIM_DESC sd, unsigned_word d1, unsigned_word d2)); +extern void trace_input_word4 PARAMS ((SIM_DESC sd, + sim_cpu *cpu, + int trace_idx, + unsigned_word d0, + unsigned_word d1, + unsigned_word d2, + unsigned_word d3)); + +extern void trace_input_addr1 PARAMS ((SIM_DESC sd, + sim_cpu *cpu, + int trace_idx, + address_word d0)); + extern void trace_input_bool1 PARAMS ((SIM_DESC sd, sim_cpu *cpu, int trace_idx, @@ -305,6 +318,20 @@ extern void trace_result_word1 PARAMS ((SIM_DESC sd, int trace_idx, unsigned_word r0)); +extern void trace_result_word2 PARAMS ((SIM_DESC sd, + sim_cpu *cpu, + int trace_idx, + unsigned_word r0, + unsigned_word r1)); + +extern void trace_result_word4 PARAMS ((SIM_DESC sd, + sim_cpu *cpu, + int trace_idx, + unsigned_word r0, + unsigned_word r1, + unsigned_word r2, + unsigned_word r3)); + extern void trace_result_bool1 PARAMS ((SIM_DESC sd, sim_cpu *cpu, int trace_idx, @@ -365,12 +392,32 @@ do { \ trace_input_word3 (SD, CPU, TRACE_ALU_IDX, (V0), (V1), (V2)); \ } while (0) -#define TRACE_ALU_RESULT(R0) \ +#define TRACE_ALU_INPUT4(V0,V1,V2,V3) \ +do { \ + if (TRACE_ALU_P (CPU)) \ + trace_input_word4 (SD, CPU, TRACE_ALU_IDX, (V0), (V1), (V2), (V3)); \ +} while (0) + +#define TRACE_ALU_RESULT(R0) TRACE_ALU_RESULT1(R0) + +#define TRACE_ALU_RESULT1(R0) \ do { \ if (TRACE_ALU_P (CPU)) \ trace_result_word1 (SD, CPU, TRACE_ALU_IDX, (R0)); \ } while (0) +#define TRACE_ALU_RESULT2(R0,R1) \ +do { \ + if (TRACE_ALU_P (CPU)) \ + trace_result_word2 (SD, CPU, TRACE_ALU_IDX, (R0), (R1)); \ +} while (0) + +#define TRACE_ALU_RESULT4(R0,R1,R2,R3) \ +do { \ + if (TRACE_ALU_P (CPU)) \ + trace_result_word4 (SD, CPU, TRACE_ALU_IDX, (R0), (R1), (R2), (R3)); \ +} while (0) + /* Macro's for tracing FPU instructions */ diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog index 231891e0951..2f04fb5a1e1 100644 --- a/sim/mips/ChangeLog +++ b/sim/mips/ChangeLog @@ -1,4 +1,8 @@ start-sanitize-r5900 +Tue Feb 24 14:44:18 1998 Andrew Cagney + + * r5900.igen: Add tracing to all p* instructions. + Tue Feb 24 02:47:33 1998 Andrew Cagney * interp.c (sim_store_register, sim_fetch_register): Pull swifty -- 2.30.2