Add tracing to r5900 p* instructions.
This commit is contained in:
parent
b4d2f483b3
commit
d3e1d59414
4 changed files with 119 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
Tue Feb 24 13:18:42 1998 Andrew Cagney <cagney@b1.cygnus.com>
|
||||||
|
|
||||||
|
* 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 <devans@canuck.cygnus.com>
|
Mon Feb 23 13:08:35 1998 Doug Evans <devans@canuck.cygnus.com>
|
||||||
|
|
||||||
* cgen-sim.h (SEM_NEXT_PC): New arg `len'.
|
* cgen-sim.h (SEM_NEXT_PC): New arg `len'.
|
||||||
|
|
|
@ -438,7 +438,9 @@ print_data (SIM_DESC sd,
|
||||||
trace_printf (sd, cpu, " 0x%08lx", (long) * (unsigned32*) data);
|
trace_printf (sd, cpu, " 0x%08lx", (long) * (unsigned32*) data);
|
||||||
break;
|
break;
|
||||||
case sizeof (unsigned64):
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
abort ();
|
abort ();
|
||||||
|
@ -720,6 +722,23 @@ trace_input_word3 (SIM_DESC sd,
|
||||||
save_data (sd, data, trace_fmt_word, sizeof (unsigned_word), &d2);
|
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
|
void
|
||||||
trace_input_bool1 (SIM_DESC sd,
|
trace_input_bool1 (SIM_DESC sd,
|
||||||
sim_cpu *cpu,
|
sim_cpu *cpu,
|
||||||
|
@ -845,6 +864,46 @@ trace_result_word1 (SIM_DESC sd,
|
||||||
trace_results (sd, cpu, trace_idx, last_input);
|
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
|
void
|
||||||
trace_result_bool1 (SIM_DESC sd,
|
trace_result_bool1 (SIM_DESC sd,
|
||||||
sim_cpu *cpu,
|
sim_cpu *cpu,
|
||||||
|
|
|
@ -257,6 +257,19 @@ extern void trace_input_word3 PARAMS ((SIM_DESC sd,
|
||||||
unsigned_word d1,
|
unsigned_word d1,
|
||||||
unsigned_word d2));
|
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,
|
extern void trace_input_bool1 PARAMS ((SIM_DESC sd,
|
||||||
sim_cpu *cpu,
|
sim_cpu *cpu,
|
||||||
int trace_idx,
|
int trace_idx,
|
||||||
|
@ -305,6 +318,20 @@ extern void trace_result_word1 PARAMS ((SIM_DESC sd,
|
||||||
int trace_idx,
|
int trace_idx,
|
||||||
unsigned_word r0));
|
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,
|
extern void trace_result_bool1 PARAMS ((SIM_DESC sd,
|
||||||
sim_cpu *cpu,
|
sim_cpu *cpu,
|
||||||
int trace_idx,
|
int trace_idx,
|
||||||
|
@ -365,12 +392,32 @@ do { \
|
||||||
trace_input_word3 (SD, CPU, TRACE_ALU_IDX, (V0), (V1), (V2)); \
|
trace_input_word3 (SD, CPU, TRACE_ALU_IDX, (V0), (V1), (V2)); \
|
||||||
} while (0)
|
} 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 { \
|
do { \
|
||||||
if (TRACE_ALU_P (CPU)) \
|
if (TRACE_ALU_P (CPU)) \
|
||||||
trace_result_word1 (SD, CPU, TRACE_ALU_IDX, (R0)); \
|
trace_result_word1 (SD, CPU, TRACE_ALU_IDX, (R0)); \
|
||||||
} while (0)
|
} 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 */
|
/* Macro's for tracing FPU instructions */
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
start-sanitize-r5900
|
start-sanitize-r5900
|
||||||
|
Tue Feb 24 14:44:18 1998 Andrew Cagney <cagney@b1.cygnus.com>
|
||||||
|
|
||||||
|
* r5900.igen: Add tracing to all p* instructions.
|
||||||
|
|
||||||
Tue Feb 24 02:47:33 1998 Andrew Cagney <cagney@b1.cygnus.com>
|
Tue Feb 24 02:47:33 1998 Andrew Cagney <cagney@b1.cygnus.com>
|
||||||
|
|
||||||
* interp.c (sim_store_register, sim_fetch_register): Pull swifty
|
* interp.c (sim_store_register, sim_fetch_register): Pull swifty
|
||||||
|
|
Loading…
Reference in a new issue