Line 1... |
Line 1... |
/* $Id: aeMB_xecu.v,v 1.10 2007-12-25 22:15:09 sybreon Exp $
|
/* $Id: aeMB_xecu.v,v 1.11 2008-01-19 15:57:36 sybreon Exp $
|
**
|
**
|
** AEMB MAIN EXECUTION ALU
|
** AEMB MAIN EXECUTION ALU
|
** Copyright (C) 2004-2007 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
|
** Copyright (C) 2004-2007 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
|
**
|
**
|
** This file is part of AEMB.
|
** This file is part of AEMB.
|
Line 253... |
Line 253... |
|
|
|
|
// --- MSR REGISTER -----------------
|
// --- MSR REGISTER -----------------
|
|
|
// C
|
// C
|
wire fMTS = (rOPC == 6'o45) & rIMM[14];
|
wire fMTS = (rOPC == 6'o45) & rIMM[14] & !fSKIP;
|
wire fADDC = ({rOPC[5:4], rOPC[2]} == 3'o0);
|
wire fADDC = ({rOPC[5:4], rOPC[2]} == 3'o0);
|
|
|
always @(/*AUTOSENSE*/fADDC or fMTS or fSKIP or rMSR_C or rMXALU
|
always @(/*AUTOSENSE*/fADDC or fMTS or fSKIP or rMSR_C or rMXALU
|
or rOPA or rRES_ADDC or rRES_SFTC)
|
or rOPA or rRES_ADDC or rRES_SFTC)
|
//if (fSKIP | |rXCE) begin
|
//if (fSKIP | |rXCE) begin
|
Line 270... |
Line 270... |
3'o2: xMSR_C <= rRES_SFTC; // SHIFT
|
3'o2: xMSR_C <= rRES_SFTC; // SHIFT
|
3'o3: xMSR_C <= (fMTS) ? rOPA[2] : rMSR_C;
|
3'o3: xMSR_C <= (fMTS) ? rOPA[2] : rMSR_C;
|
3'o4: xMSR_C <= rMSR_C;
|
3'o4: xMSR_C <= rMSR_C;
|
3'o5: xMSR_C <= rMSR_C;
|
3'o5: xMSR_C <= rMSR_C;
|
default: xMSR_C <= 1'hX;
|
default: xMSR_C <= 1'hX;
|
endcase
|
endcase // case (rMXALU)
|
|
|
// IE/BIP/BE
|
// IE/BIP/BE
|
wire fRTID = (rOPC == 6'o55) & rRD[0];
|
wire fRTID = (rOPC == 6'o55) & rRD[0] & !fSKIP;
|
wire fRTBD = (rOPC == 6'o55) & rRD[1];
|
wire fRTBD = (rOPC == 6'o55) & rRD[1] & !fSKIP;
|
wire fBRK = ((rOPC == 6'o56) | (rOPC == 6'o66)) & (rRA == 5'hC);
|
wire fBRK = ((rOPC == 6'o56) | (rOPC == 6'o66)) & (rRA == 5'hC);
|
wire fINT = ((rOPC == 6'o56) | (rOPC == 6'o66)) & (rRA == 5'hE);
|
wire fINT = ((rOPC == 6'o56) | (rOPC == 6'o66)) & (rRA == 5'hE);
|
|
|
always @(/*AUTOSENSE*/fINT or fMTS or fRTID or rMSR_IE or rOPA)
|
always @(/*AUTOSENSE*/fINT or fMTS or fRTID or rMSR_IE or rOPA)
|
xMSR_IE <= (fINT) ? 1'b0 :
|
xMSR_IE <= (fINT) ? 1'b0 :
|
Line 359... |
Line 359... |
rMSR_BIP <= 1'h0;
|
rMSR_BIP <= 1'h0;
|
rMSR_C <= 1'h0;
|
rMSR_C <= 1'h0;
|
rMSR_IE <= 1'h0;
|
rMSR_IE <= 1'h0;
|
rRESULT <= 32'h0;
|
rRESULT <= 32'h0;
|
// End of automatics
|
// End of automatics
|
end else if (gena) begin
|
end else if (gena) begin // if (grst)
|
rRESULT <= #1 xRESULT;
|
rRESULT <= #1 xRESULT;
|
rDWBSEL <= #1 xDWBSEL;
|
rDWBSEL <= #1 xDWBSEL;
|
rMSR_C <= #1 xMSR_C;
|
rMSR_C <= #1 xMSR_C;
|
rMSR_IE <= #1 xMSR_IE;
|
rMSR_IE <= #1 xMSR_IE;
|
rMSR_BE <= #1 xMSR_BE;
|
rMSR_BE <= #1 xMSR_BE;
|
Line 373... |
Line 373... |
|
|
endmodule // aeMB_xecu
|
endmodule // aeMB_xecu
|
|
|
/*
|
/*
|
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
|
Revision 1.10 2007/12/25 22:15:09 sybreon
|
|
Stalls pipeline on MUL/BSF instructions results in minor speed improvements.
|
|
|
Revision 1.9 2007/11/30 16:42:51 sybreon
|
Revision 1.9 2007/11/30 16:42:51 sybreon
|
Minor code cleanup.
|
Minor code cleanup.
|
|
|
Revision 1.8 2007/11/16 21:52:03 sybreon
|
Revision 1.8 2007/11/16 21:52:03 sybreon
|
Added fsl_tag_o to FSL bus (tag either address or data).
|
Added fsl_tag_o to FSL bus (tag either address or data).
|