mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
hptw: Simplified TranslationVAdr calculation based just on DTLBWalk
This commit is contained in:
parent
af02437c3a
commit
ad44835e6e
@ -80,6 +80,7 @@ module pagetablewalker
|
|||||||
logic ValidPTE, ADPageFault, MegapageMisaligned, TerapageMisaligned, GigapageMisaligned, BadMegapage, LeafPTE;
|
logic ValidPTE, ADPageFault, MegapageMisaligned, TerapageMisaligned, GigapageMisaligned, BadMegapage, LeafPTE;
|
||||||
logic StartWalk;
|
logic StartWalk;
|
||||||
logic EndWalk;
|
logic EndWalk;
|
||||||
|
logic PRegEn;
|
||||||
logic [1:0] NextPageType;
|
logic [1:0] NextPageType;
|
||||||
|
|
||||||
typedef enum {LEVEL0_SET_ADR, LEVEL0_WDV, LEVEL0,
|
typedef enum {LEVEL0_SET_ADR, LEVEL0_WDV, LEVEL0,
|
||||||
@ -90,18 +91,14 @@ module pagetablewalker
|
|||||||
|
|
||||||
statetype WalkerState, NextWalkerState, InitialWalkerState;
|
statetype WalkerState, NextWalkerState, InitialWalkerState;
|
||||||
|
|
||||||
logic PRegEn;
|
|
||||||
logic SelDataTranslation;
|
|
||||||
|
|
||||||
logic [`SVMODE_BITS-1:0] SvMode;
|
logic [`SVMODE_BITS-1:0] SvMode;
|
||||||
assign SvMode = SATP_REGW[`XLEN-1:`XLEN-`SVMODE_BITS];
|
assign SvMode = SATP_REGW[`XLEN-1:`XLEN-`SVMODE_BITS];
|
||||||
|
|
||||||
assign BasePageTablePPN = SATP_REGW[`PPN_BITS-1:0];
|
assign BasePageTablePPN = SATP_REGW[`PPN_BITS-1:0];
|
||||||
assign MemWrite = MemRWM[0];
|
assign MemWrite = MemRWM[0];
|
||||||
|
|
||||||
// Prefer data address translations over instruction address translations
|
// Determine which address to translate
|
||||||
assign SelDataTranslation = DTLBWalk | DTLBMissM; // *** missM is probably unnecessary
|
assign TranslationVAdr = DTLBWalk ? MemAdrM : PCF;
|
||||||
assign TranslationVAdr = (SelDataTranslation) ? MemAdrM : PCF;
|
|
||||||
|
|
||||||
flop #(`XLEN) HPTWPAdrMReg(clk, HPTWPAdrE, HPTWPAdrM);
|
flop #(`XLEN) HPTWPAdrMReg(clk, HPTWPAdrE, HPTWPAdrM);
|
||||||
flopenrc #(1) TLBMissMReg(clk, reset, EndWalk, StartWalk | EndWalk, DTLBMissM, DTLBWalk);
|
flopenrc #(1) TLBMissMReg(clk, reset, EndWalk, StartWalk | EndWalk, DTLBMissM, DTLBWalk);
|
||||||
|
Loading…
Reference in New Issue
Block a user