Line 42... |
Line 42... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.4 2002/01/28 01:16:00 lampret
|
|
// Changed 'void' nop-ops instead of insn[0] to use insn[16]. Debug unit stalls the tick timer. Prepared new flag generation for add and and insns. Blocked DC/IC while they are turned off. Fixed I/D MMU SPRs layout except WAYs. TODO: smart IC invalidate, l.j 2 and TLB ways.
|
|
//
|
// Revision 1.3 2002/01/18 07:56:00 lampret
|
// Revision 1.3 2002/01/18 07:56:00 lampret
|
// No more low/high priority interrupts (PICPR removed). Added tick timer exception. Added exception prefix (SR[EPH]). Fixed single-step bug whenreading NPC.
|
// No more low/high priority interrupts (PICPR removed). Added tick timer exception. Added exception prefix (SR[EPH]). Fixed single-step bug whenreading NPC.
|
//
|
//
|
// Revision 1.2 2002/01/14 06:18:22 lampret
|
// Revision 1.2 2002/01/14 06:18:22 lampret
|
// Fixed mem2reg bug in FAST implementation. Updated debug unit to work with new genpc/if.
|
// Fixed mem2reg bug in FAST implementation. Updated debug unit to work with new genpc/if.
|
Line 84... |
Line 87... |
module or1200_genpc(
|
module or1200_genpc(
|
// Clock and reset
|
// Clock and reset
|
clk, rst,
|
clk, rst,
|
|
|
// External i/f to IC
|
// External i/f to IC
|
icpu_adr_o, icpu_cyc_o, icpu_stb_o, icpu_sel_o, icpu_tag_o,
|
icpu_adr_o, icpu_cycstb_o, icpu_sel_o, icpu_tag_o,
|
icpu_ack_i, icpu_rty_i, icpu_err_i, icpu_adr_i,
|
icpu_ack_i, icpu_rty_i, icpu_err_i, icpu_adr_i,
|
|
|
// Internal i/f
|
// Internal i/f
|
branch_op, except_type, except_prefix,
|
branch_op, except_type, except_prefix,
|
branch_addrofs, lr_restor, flag, taken, except_start,
|
branch_addrofs, lr_restor, flag, taken, except_start,
|
Line 108... |
Line 111... |
|
|
//
|
//
|
// External i/f to IC
|
// External i/f to IC
|
//
|
//
|
output [31:0] icpu_adr_o;
|
output [31:0] icpu_adr_o;
|
output icpu_cyc_o;
|
output icpu_cycstb_o;
|
output icpu_stb_o;
|
|
output [3:0] icpu_sel_o;
|
output [3:0] icpu_sel_o;
|
output [3:0] icpu_tag_o;
|
output [3:0] icpu_tag_o;
|
input icpu_ack_i;
|
input icpu_ack_i;
|
input icpu_rty_i;
|
input icpu_rty_i;
|
input icpu_err_i;
|
input icpu_err_i;
|
Line 155... |
Line 157... |
// assign icpu_adr_o = !except_start & !spr_pc_we & (icpu_rty_i | genpc_refetch) ? icpu_adr_i : pc;
|
// assign icpu_adr_o = !except_start & !spr_pc_we & (icpu_rty_i | genpc_refetch) ? icpu_adr_i : pc;
|
|
|
//
|
//
|
// Control access to IC subsystem
|
// Control access to IC subsystem
|
//
|
//
|
// assign icpu_cyc_o = !genpc_freeze & !no_more_dslot;
|
// assign icpu_cycstb_o = !genpc_freeze & !no_more_dslot;
|
assign icpu_cyc_o = !genpc_freeze;
|
assign icpu_cycstb_o = !genpc_freeze;
|
assign icpu_stb_o = icpu_cyc_o;
|
|
assign icpu_sel_o = 4'b1111;
|
assign icpu_sel_o = 4'b1111;
|
assign icpu_tag_o = `OR1200_ITAG_NI;
|
assign icpu_tag_o = `OR1200_ITAG_NI;
|
|
|
//
|
//
|
// Async calculation of new PC value. This value is used for addressing the IC.
|
// Async calculation of new PC value. This value is used for addressing the IC.
|