mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Merge pull request #538 from ross144/main
Got Verilator compiling! and Questa still simulates
This commit is contained in:
commit
2236e2c93c
@ -662,8 +662,11 @@ add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/STATUS_TW
|
|||||||
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/PrivilegeModeW
|
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/PrivilegeModeW
|
||||||
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/wfi/WFICount
|
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/wfi/WFICount
|
||||||
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/WFITimeoutM
|
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/WFITimeoutM
|
||||||
|
add wave -noupdate -expand -group testbench /testbench/DCacheFlushStart
|
||||||
|
add wave -noupdate -expand -group testbench /testbench/TestComplete
|
||||||
|
add wave -noupdate -expand -group testbench /testbench/CurrState
|
||||||
TreeUpdate [SetDefaultTree]
|
TreeUpdate [SetDefaultTree]
|
||||||
WaveRestoreCursors {{Cursor 4} {6586 ns} 1} {{Cursor 4} {372450 ns} 0} {{Cursor 3} {403021 ns} 1}
|
WaveRestoreCursors {{Cursor 4} {6586 ns} 1} {{Cursor 4} {1405857 ns} 0} {{Cursor 3} {403021 ns} 1}
|
||||||
quietly wave cursor active 2
|
quietly wave cursor active 2
|
||||||
configure wave -namecolwidth 250
|
configure wave -namecolwidth 250
|
||||||
configure wave -valuecolwidth 194
|
configure wave -valuecolwidth 194
|
||||||
@ -679,4 +682,4 @@ configure wave -griddelta 40
|
|||||||
configure wave -timeline 0
|
configure wave -timeline 0
|
||||||
configure wave -timelineunits ns
|
configure wave -timelineunits ns
|
||||||
update
|
update
|
||||||
WaveRestoreZoom {372177 ns} {372771 ns}
|
WaveRestoreZoom {0 ns} {16302587 ns}
|
||||||
|
@ -102,7 +102,8 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
|||||||
logic HPTWLoadAccessFaultDelay, HPTWStoreAmoAccessFaultDelay, HPTWInstrAccessFaultDelay;
|
logic HPTWLoadAccessFaultDelay, HPTWStoreAmoAccessFaultDelay, HPTWInstrAccessFaultDelay;
|
||||||
logic HPTWAccessFaultDelay;
|
logic HPTWAccessFaultDelay;
|
||||||
logic TakeHPTWFault, TakeHPTWFaultDelay;
|
logic TakeHPTWFault, TakeHPTWFaultDelay;
|
||||||
|
logic [P.XLEN-1:0] ReadDataNoXM;
|
||||||
|
|
||||||
// map hptw access faults onto either the original LSU load/store fault or instruction access fault
|
// map hptw access faults onto either the original LSU load/store fault or instruction access fault
|
||||||
assign LSUAccessFaultM = LSULoadAccessFaultM | LSUStoreAmoAccessFaultM;
|
assign LSUAccessFaultM = LSULoadAccessFaultM | LSUStoreAmoAccessFaultM;
|
||||||
assign HPTWLoadAccessFault = LSUAccessFaultM & DTLBWalk & MemRWM[1] & ~MemRWM[0];
|
assign HPTWLoadAccessFault = LSUAccessFaultM & DTLBWalk & MemRWM[1] & ~MemRWM[0];
|
||||||
@ -154,7 +155,8 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
|||||||
logic [P.XLEN-1:0] AccessedPTE;
|
logic [P.XLEN-1:0] AccessedPTE;
|
||||||
|
|
||||||
assign AccessedPTE = {PTE[P.XLEN-1:8], (SetDirty | PTE[7]), 1'b1, PTE[5:0]}; // set accessed bit, conditionally set dirty bit
|
assign AccessedPTE = {PTE[P.XLEN-1:8], (SetDirty | PTE[7]), 1'b1, PTE[5:0]}; // set accessed bit, conditionally set dirty bit
|
||||||
mux2 #(P.XLEN) NextPTEMux(ReadDataM, AccessedPTE, UpdatePTE, NextPTE); // NextPTE = ReadDataM when ADUE = 0 because UpdatePTE = 0
|
assign ReadDataNoXM = (ReadDataM[0] === 'x) ? '0 : ReadDataM; // If the PTE.V bit is x because it was read from uninitialized memory set to 0 to avoid x propagation and hanging the simulation.
|
||||||
|
mux2 #(P.XLEN) NextPTEMux(ReadDataNoXM, AccessedPTE, UpdatePTE, NextPTE); // NextPTE = ReadDataNoXM when ADUE = 0 because UpdatePTE = 0
|
||||||
flopenr #(P.PA_BITS) HPTWAdrWriteReg(clk, reset, SaveHPTWAdr, HPTWReadAdr, HPTWWriteAdr);
|
flopenr #(P.PA_BITS) HPTWAdrWriteReg(clk, reset, SaveHPTWAdr, HPTWReadAdr, HPTWWriteAdr);
|
||||||
|
|
||||||
assign SaveHPTWAdr = WalkerState == L0_ADR;
|
assign SaveHPTWAdr = WalkerState == L0_ADR;
|
||||||
@ -190,7 +192,7 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
|||||||
assign UpdatePTE = (WalkerState == LEAF) & HPTWUpdateDA; // UpdatePTE will always be 0 if ADUE = 0 because HPTWUpdateDA will be 0
|
assign UpdatePTE = (WalkerState == LEAF) & HPTWUpdateDA; // UpdatePTE will always be 0 if ADUE = 0 because HPTWUpdateDA will be 0
|
||||||
|
|
||||||
end else begin // block: hptwwrites
|
end else begin // block: hptwwrites
|
||||||
assign NextPTE = ReadDataM;
|
assign NextPTE = ReadDataNoXM;
|
||||||
assign HPTWAdr = HPTWReadAdr;
|
assign HPTWAdr = HPTWReadAdr;
|
||||||
assign HPTWUpdateDA = '0;
|
assign HPTWUpdateDA = '0;
|
||||||
assign UpdatePTE = '0;
|
assign UpdatePTE = '0;
|
||||||
|
@ -37,7 +37,7 @@ module testbench;
|
|||||||
parameter DEBUG=0;
|
parameter DEBUG=0;
|
||||||
parameter TEST="none";
|
parameter TEST="none";
|
||||||
parameter PrintHPMCounters=0;
|
parameter PrintHPMCounters=0;
|
||||||
parameter BPRED_LOGGER=1;
|
parameter BPRED_LOGGER=0;
|
||||||
parameter I_CACHE_ADDR_LOGGER=0;
|
parameter I_CACHE_ADDR_LOGGER=0;
|
||||||
parameter D_CACHE_ADDR_LOGGER=0;
|
parameter D_CACHE_ADDR_LOGGER=0;
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ module testbench;
|
|||||||
logic riscofTest;
|
logic riscofTest;
|
||||||
logic Validate;
|
logic Validate;
|
||||||
logic SelectTest;
|
logic SelectTest;
|
||||||
|
logic TestComplete;
|
||||||
|
|
||||||
// pick tests based on modes supported
|
// pick tests based on modes supported
|
||||||
initial begin
|
initial begin
|
||||||
@ -176,6 +176,7 @@ module testbench;
|
|||||||
STATE_LOAD_MEMORIES,
|
STATE_LOAD_MEMORIES,
|
||||||
STATE_RESET_TEST,
|
STATE_RESET_TEST,
|
||||||
STATE_RUN_TEST,
|
STATE_RUN_TEST,
|
||||||
|
STATE_COPY_RAM,
|
||||||
STATE_CHECK_TEST,
|
STATE_CHECK_TEST,
|
||||||
STATE_CHECK_TEST_WAIT,
|
STATE_CHECK_TEST_WAIT,
|
||||||
STATE_VALIDATE,
|
STATE_VALIDATE,
|
||||||
@ -186,10 +187,10 @@ module testbench;
|
|||||||
logic LoadMem;
|
logic LoadMem;
|
||||||
logic ResetCntEn;
|
logic ResetCntEn;
|
||||||
logic ResetCntRst;
|
logic ResetCntRst;
|
||||||
|
logic CopyRAM;
|
||||||
|
|
||||||
string signame, memfilename, pathname;
|
string signame, memfilename, pathname;
|
||||||
integer begin_signature_addr;
|
integer begin_signature_addr, end_signature_addr, signature_size;
|
||||||
|
|
||||||
assign ResetThreshold = 3'd5;
|
assign ResetThreshold = 3'd5;
|
||||||
|
|
||||||
@ -218,8 +219,9 @@ module testbench;
|
|||||||
STATE_LOAD_MEMORIES: NextState = STATE_RESET_TEST;
|
STATE_LOAD_MEMORIES: NextState = STATE_RESET_TEST;
|
||||||
STATE_RESET_TEST: if(ResetCount < ResetThreshold) NextState = STATE_RESET_TEST;
|
STATE_RESET_TEST: if(ResetCount < ResetThreshold) NextState = STATE_RESET_TEST;
|
||||||
else NextState = STATE_RUN_TEST;
|
else NextState = STATE_RUN_TEST;
|
||||||
STATE_RUN_TEST: if(DCacheFlushStart) NextState = STATE_CHECK_TEST;
|
STATE_RUN_TEST: if(TestComplete) NextState = STATE_COPY_RAM;
|
||||||
else NextState = STATE_RUN_TEST;
|
else NextState = STATE_RUN_TEST;
|
||||||
|
STATE_COPY_RAM: NextState = STATE_CHECK_TEST;
|
||||||
STATE_CHECK_TEST: if (DCacheFlushDone) NextState = STATE_VALIDATE;
|
STATE_CHECK_TEST: if (DCacheFlushDone) NextState = STATE_VALIDATE;
|
||||||
else NextState = STATE_CHECK_TEST_WAIT;
|
else NextState = STATE_CHECK_TEST_WAIT;
|
||||||
STATE_CHECK_TEST_WAIT: if(DCacheFlushDone) NextState = STATE_VALIDATE;
|
STATE_CHECK_TEST_WAIT: if(DCacheFlushDone) NextState = STATE_VALIDATE;
|
||||||
@ -240,6 +242,8 @@ module testbench;
|
|||||||
assign ResetCntEn = CurrState == STATE_RESET_TEST;
|
assign ResetCntEn = CurrState == STATE_RESET_TEST;
|
||||||
assign Validate = CurrState == STATE_VALIDATE;
|
assign Validate = CurrState == STATE_VALIDATE;
|
||||||
assign SelectTest = CurrState == STATE_INIT_TEST;
|
assign SelectTest = CurrState == STATE_INIT_TEST;
|
||||||
|
assign CopyRAM = TestComplete & CurrState == STATE_RUN_TEST;
|
||||||
|
assign DCacheFlushStart = CurrState == STATE_COPY_RAM;
|
||||||
|
|
||||||
// fsm reset counter
|
// fsm reset counter
|
||||||
counter #(3) RstCounter(clk, ResetCntRst, ResetCntEn, ResetCount);
|
counter #(3) RstCounter(clk, ResetCntRst, ResetCntEn, ResetCount);
|
||||||
@ -249,6 +253,8 @@ module testbench;
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
logic [P.XLEN-1:0] testadr;
|
logic [P.XLEN-1:0] testadr;
|
||||||
assign begin_signature_addr = ProgramAddrLabelArray["begin_signature"];
|
assign begin_signature_addr = ProgramAddrLabelArray["begin_signature"];
|
||||||
|
assign end_signature_addr = ProgramAddrLabelArray["sig_end_canary"];
|
||||||
|
assign signature_size = end_signature_addr - begin_signature_addr;
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
if(SelectTest) begin
|
if(SelectTest) begin
|
||||||
if (riscofTest) memfilename = {pathname, tests[test], "/ref/ref.elf.memfile"};
|
if (riscofTest) memfilename = {pathname, tests[test], "/ref/ref.elf.memfile"};
|
||||||
@ -317,69 +323,15 @@ module testbench;
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Some memories are not reset, but should be zeros or set to some initial value for simulation
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
/* -----\/----- EXCLUDED -----\/-----
|
|
||||||
integer adrindex;
|
|
||||||
always @(posedge clk) begin
|
|
||||||
if (ResetMem) // program memory is sometimes reset
|
|
||||||
if (P.UNCORE_RAM_SUPPORTED)
|
|
||||||
for (adrindex=0; adrindex<(P.UNCORE_RAM_RANGE>>1+(P.XLEN/32)); adrindex = adrindex+1)
|
|
||||||
dut.uncore.uncore.ram.ram.memory.RAM[adrindex] = '0;
|
|
||||||
if(reset) begin // branch predictor must always be reset
|
|
||||||
if (P.BPRED_SUPPORTED) begin
|
|
||||||
// local history only
|
|
||||||
if (P.BPRED_TYPE == `BP_LOCAL_AHEAD | P.BPRED_TYPE == `BP_LOCAL_REPAIR)
|
|
||||||
for(adrindex = 0; adrindex < 2**P.BPRED_NUM_LHR; adrindex++)
|
|
||||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.BHT.mem[adrindex] = 0;
|
|
||||||
for(adrindex = 0; adrindex < 2**P.BTB_SIZE; adrindex++)
|
|
||||||
dut.core.ifu.bpred.bpred.TargetPredictor.memory.mem[adrindex] = 0;
|
|
||||||
for(adrindex = 0; adrindex < 2**P.BPRED_SIZE; adrindex++)
|
|
||||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem[adrindex] = 0;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-----/\----- EXCLUDED -----/\----- */
|
|
||||||
|
|
||||||
// still not working in this format
|
|
||||||
/* -----\/----- EXCLUDED -----\/-----
|
|
||||||
integer adrindex;
|
|
||||||
if (P.UNCORE_RAM_SUPPORTED) begin
|
|
||||||
always @(posedge clk) begin
|
|
||||||
if (ResetMem) // program memory is sometimes reset
|
|
||||||
for (adrindex=0; adrindex<(P.UNCORE_RAM_RANGE>>1+(P.XLEN/32)); adrindex = adrindex+1)
|
|
||||||
dut.uncore.uncore.ram.ram.memory.RAM[adrindex] = '0;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
genvar adrindex2;
|
|
||||||
|
|
||||||
if (P.BPRED_SUPPORTED & (P.BPRED_TYPE == `BP_LOCAL_AHEAD | P.BPRED_TYPE == `BP_LOCAL_REPAIR)) begin
|
|
||||||
for(adrindex2 = 0; adrindex2 < 2**P.BPRED_NUM_LHR; adrindex2++)
|
|
||||||
always @(posedge clk) begin
|
|
||||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.BHT.mem[adrindex2] = 0;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if (P.BPRED_SUPPORTED) begin
|
|
||||||
always @(posedge clk)
|
|
||||||
dut.core.ifu.bpred.bpred.TargetPredictor.memory.mem[0] = 0;
|
|
||||||
for(adrindex2 = 0; adrindex2 < 2**P.BTB_SIZE; adrindex2++)
|
|
||||||
always @(posedge clk) begin
|
|
||||||
dut.core.ifu.bpred.bpred.TargetPredictor.memory.mem[adrindex2] = 0;
|
|
||||||
end
|
|
||||||
for(adrindex2 = 0; adrindex2 < 2**P.BPRED_SIZE; adrindex2++)
|
|
||||||
always @(posedge clk) begin
|
|
||||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem[adrindex2] = 0;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-----/\----- EXCLUDED -----/\----- */
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// load memories with program image
|
// load memories with program image
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
integer ShadowIndex;
|
||||||
|
integer LogXLEN;
|
||||||
|
integer StartIndex;
|
||||||
|
integer EndIndex;
|
||||||
|
integer BaseIndex;
|
||||||
if (P.SDC_SUPPORTED) begin
|
if (P.SDC_SUPPORTED) begin
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
if (LoadMem) begin
|
if (LoadMem) begin
|
||||||
@ -398,11 +350,20 @@ module testbench;
|
|||||||
$readmemh(memfilename, dut.core.ifu.irom.irom.rom.ROM);
|
$readmemh(memfilename, dut.core.ifu.irom.irom.rom.ROM);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end else if (P.BUS_SUPPORTED) begin
|
end else if (P.BUS_SUPPORTED) begin : bus_supported
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
if (LoadMem) begin
|
if (LoadMem) begin
|
||||||
$readmemh(memfilename, dut.uncore.uncore.ram.ram.memory.RAM);
|
$readmemh(memfilename, dut.uncore.uncore.ram.ram.memory.RAM);
|
||||||
end
|
end
|
||||||
|
if (CopyRAM) begin
|
||||||
|
LogXLEN = (1 + P.XLEN/32); // 2 for rv32 and 3 for rv64
|
||||||
|
StartIndex = begin_signature_addr >> LogXLEN;
|
||||||
|
EndIndex = (end_signature_addr >> LogXLEN) + 8;
|
||||||
|
BaseIndex = P.UNCORE_RAM_BASE >> LogXLEN;
|
||||||
|
for(ShadowIndex = StartIndex; ShadowIndex <= EndIndex; ShadowIndex++) begin
|
||||||
|
testbench.DCacheFlushFSM.ShadowRAM[ShadowIndex] = dut.uncore.uncore.ram.ram.memory.RAM[ShadowIndex - BaseIndex];
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if (P.DTIM_SUPPORTED) begin
|
if (P.DTIM_SUPPORTED) begin
|
||||||
@ -411,6 +372,15 @@ module testbench;
|
|||||||
$readmemh(memfilename, dut.core.lsu.dtim.dtim.ram.RAM);
|
$readmemh(memfilename, dut.core.lsu.dtim.dtim.ram.RAM);
|
||||||
$display("Read memfile %s", memfilename);
|
$display("Read memfile %s", memfilename);
|
||||||
end
|
end
|
||||||
|
if (CopyRAM) begin
|
||||||
|
LogXLEN = (1 + P.XLEN/32); // 2 for rv32 and 3 for rv64
|
||||||
|
StartIndex = begin_signature_addr >> LogXLEN;
|
||||||
|
EndIndex = (end_signature_addr >> LogXLEN) + 8;
|
||||||
|
BaseIndex = P.UNCORE_RAM_BASE >> LogXLEN;
|
||||||
|
for(ShadowIndex = StartIndex; ShadowIndex <= EndIndex; ShadowIndex++) begin
|
||||||
|
testbench.DCacheFlushFSM.ShadowRAM[ShadowIndex] = dut.core.lsu.dtim.dtim.ram.RAM[ShadowIndex - BaseIndex];
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -502,14 +472,15 @@ module testbench;
|
|||||||
logic ecf; // remove this once we don't rely on old Imperas tests with Ecalls
|
logic ecf; // remove this once we don't rely on old Imperas tests with Ecalls
|
||||||
if (P.ZICSR_SUPPORTED) assign ecf = dut.core.priv.priv.EcallFaultM;
|
if (P.ZICSR_SUPPORTED) assign ecf = dut.core.priv.priv.EcallFaultM;
|
||||||
else assign ecf = 0;
|
else assign ecf = 0;
|
||||||
assign DCacheFlushStart = ecf &
|
assign TestComplete = ecf &
|
||||||
(dut.core.ieu.dp.regf.rf[3] == 1 |
|
(dut.core.ieu.dp.regf.rf[3] == 1 |
|
||||||
(dut.core.ieu.dp.regf.we3 &
|
(dut.core.ieu.dp.regf.we3 &
|
||||||
dut.core.ieu.dp.regf.a3 == 3 &
|
dut.core.ieu.dp.regf.a3 == 3 &
|
||||||
dut.core.ieu.dp.regf.wd3 == 1)) |
|
dut.core.ieu.dp.regf.wd3 == 1)) |
|
||||||
((InstrM == 32'h6f | InstrM == 32'hfc32a423 | InstrM == 32'hfc32a823) & dut.core.ieu.c.InstrValidM ) |
|
((InstrM == 32'h6f | InstrM == 32'hfc32a423 | InstrM == 32'hfc32a823) & dut.core.ieu.c.InstrValidM ) |
|
||||||
((dut.core.lsu.IEUAdrM == ProgramAddrLabelArray["tohost"]) & InstrMName == "SW" );
|
((dut.core.lsu.IEUAdrM == ProgramAddrLabelArray["tohost"]) & InstrMName == "SW" );
|
||||||
|
//assign DCacheFlushStart = TestComplete;
|
||||||
|
|
||||||
DCacheFlushFSM #(P) DCacheFlushFSM(.clk(clk), .reset(reset), .start(DCacheFlushStart), .done(DCacheFlushDone));
|
DCacheFlushFSM #(P) DCacheFlushFSM(.clk(clk), .reset(reset), .start(DCacheFlushStart), .done(DCacheFlushDone));
|
||||||
|
|
||||||
task automatic CheckSignature;
|
task automatic CheckSignature;
|
||||||
@ -567,14 +538,18 @@ module testbench;
|
|||||||
logic [P.XLEN-1:0] sig;
|
logic [P.XLEN-1:0] sig;
|
||||||
// **************************************
|
// **************************************
|
||||||
// ***** BUG BUG BUG make sure RT undoes this.
|
// ***** BUG BUG BUG make sure RT undoes this.
|
||||||
if (P.DTIM_SUPPORTED) sig = testbench.dut.core.lsu.dtim.dtim.ram.RAM[testadrNoBase+i];
|
//if (P.DTIM_SUPPORTED) sig = testbench.dut.core.lsu.dtim.dtim.ram.RAM[testadrNoBase+i];
|
||||||
else if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
//else if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
||||||
|
if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
||||||
//if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
//if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
||||||
//$display("signature[%h] = %h sig = %h", i, signature[i], sig);
|
//$display("signature[%h] = %h sig = %h", i, signature[i], sig);
|
||||||
if (signature[i] !== sig & (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i])) begin
|
//if (signature[i] !== sig & (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i])) begin
|
||||||
|
if (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i]) begin
|
||||||
errors = errors+1;
|
errors = errors+1;
|
||||||
$display(" Error on test %s result %d: adr = %h sim (D$) %h sim (DTIM_SUPPORTED) = %h, signature = %h",
|
$display(" Error on test %s result %d: adr = %h sim (D$) %h sim (DTIM_SUPPORTED) = %h, signature = %h",
|
||||||
TestName, i, (testadr+i)*(P.XLEN/8), testbench.DCacheFlushFSM.ShadowRAM[testadr+i], sig, signature[i]);
|
TestName, i, (testadr+i)*(P.XLEN/8), testbench.DCacheFlushFSM.ShadowRAM[testadr+i], sig, signature[i]);
|
||||||
|
//$display(" Error on test %s result %d: adr = %h sim (DTIM_SUPPORTED) = %h, signature = %h",
|
||||||
|
// TestName, i, (testadr+i)*(P.XLEN/8), testbench.DCacheFlushFSM.ShadowRAM[testadr+i], signature[i]);
|
||||||
$stop; //***debug
|
$stop; //***debug
|
||||||
end
|
end
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
@ -604,14 +579,15 @@ task automatic updateProgramAddrLabelArray;
|
|||||||
inout integer ProgramAddrLabelArray [string];
|
inout integer ProgramAddrLabelArray [string];
|
||||||
// Gets the memory location of begin_signature
|
// Gets the memory location of begin_signature
|
||||||
integer ProgramLabelMapFP, ProgramAddrMapFP;
|
integer ProgramLabelMapFP, ProgramAddrMapFP;
|
||||||
|
|
||||||
ProgramLabelMapFP = $fopen(ProgramLabelMapFile, "r");
|
ProgramLabelMapFP = $fopen(ProgramLabelMapFile, "r");
|
||||||
ProgramAddrMapFP = $fopen(ProgramAddrMapFile, "r");
|
ProgramAddrMapFP = $fopen(ProgramAddrMapFile, "r");
|
||||||
|
|
||||||
|
|
||||||
if (ProgramLabelMapFP & ProgramAddrMapFP) begin // check we found both files
|
if (ProgramLabelMapFP & ProgramAddrMapFP) begin // check we found both files
|
||||||
// *** RT: I'm a bit confused by the required initialization here.
|
// *** RT: I'm a bit confused by the required initialization here.
|
||||||
ProgramAddrLabelArray["begin_signature"] = 0;
|
ProgramAddrLabelArray["begin_signature"] = 0;
|
||||||
ProgramAddrLabelArray["tohost"] = 0;
|
ProgramAddrLabelArray["tohost"] = 0;
|
||||||
|
ProgramAddrLabelArray["sig_end_canary"] = 0;
|
||||||
while (!$feof(ProgramLabelMapFP)) begin
|
while (!$feof(ProgramLabelMapFP)) begin
|
||||||
string label, adrstr;
|
string label, adrstr;
|
||||||
integer returncode;
|
integer returncode;
|
||||||
@ -620,6 +596,10 @@ task automatic updateProgramAddrLabelArray;
|
|||||||
if (ProgramAddrLabelArray.exists(label)) ProgramAddrLabelArray[label] = adrstr.atohex();
|
if (ProgramAddrLabelArray.exists(label)) ProgramAddrLabelArray[label] = adrstr.atohex();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if(ProgramAddrLabelArray["begin"] == 0) $display("Couldn't find begin_signature in %s", ProgramLabelMapFile);
|
||||||
|
if(ProgramAddrLabelArray["sig_end_canary"] == 0) $display("Couldn't find sig_end_canary in %s", ProgramLabelMapFile);
|
||||||
|
|
||||||
$fclose(ProgramLabelMapFP);
|
$fclose(ProgramLabelMapFP);
|
||||||
$fclose(ProgramAddrMapFP);
|
$fclose(ProgramAddrMapFP);
|
||||||
/* verilator lint_on WIDTHTRUNC */
|
/* verilator lint_on WIDTHTRUNC */
|
||||||
|
@ -76,6 +76,10 @@ gpr_save:
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../../wally-riscv-arch-test/riscv-test-suite/rv32i_m/D/src/WALLY-fld.S
|
// ../../wally-riscv-arch-test/riscv-test-suite/rv32i_m/D/src/WALLY-fld.S
|
||||||
// David_Harris@hmc.edu & Katherine Parry
|
// David_Harris@hmc.edu & Katherine Parry
|
||||||
|
@ -2997,5 +2997,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2887,5 +2887,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3022,5 +3022,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2847,5 +2847,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -387,5 +387,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3027,5 +3027,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3012,5 +3012,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3717,5 +3717,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3007,5 +3007,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3712,5 +3712,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3007,5 +3007,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -152,5 +152,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -212,5 +212,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -162,5 +162,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -162,5 +162,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -152,5 +152,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -157,5 +157,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -387,5 +387,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -157,5 +157,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3032,5 +3032,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2862,5 +2862,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -462,5 +462,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -432,5 +432,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -517,5 +517,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -522,5 +522,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2987,5 +2987,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2887,5 +2887,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3562,5 +3562,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3692,5 +3692,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -527,5 +527,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -512,5 +512,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -522,5 +522,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -517,5 +517,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -3002,5 +3002,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -412,5 +412,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2997,5 +2997,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2877,5 +2877,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -132,6 +132,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-ADD.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-ADD.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SLT.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SLT.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SLTU.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SLTU.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SUB.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SUB.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-XOR.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-XOR.S
|
||||||
|
@ -39,7 +39,7 @@ beef0110
|
|||||||
0000000d # Test 11.3.1.3.6(a) page fault on read when A = 0
|
0000000d # Test 11.3.1.3.6(a) page fault on read when A = 0
|
||||||
00000bad
|
00000bad
|
||||||
0000000f # Test 11.3.1.3.7(a) page fault on write when D = 0
|
0000000f # Test 11.3.1.3.7(a) page fault on write when D = 0
|
||||||
deadbeef # Test 11.3.1.3.7(a) successful read when D = 0
|
12345678 # Test 11.3.1.3.7(a) successful read when D = 0
|
||||||
00000009 # call from going to m mode from s mode
|
00000009 # call from going to m mode from s mode
|
||||||
0000000b # ecall from going to S mode from m mode
|
0000000b # ecall from going to S mode from m mode
|
||||||
beef0770 # Test 11.3.1.3.6: check successful read/write when A=0 and MENVCFG.ADUE=1
|
beef0770 # Test 11.3.1.3.6: check successful read/write when A=0 and MENVCFG.ADUE=1
|
||||||
|
@ -1428,6 +1428,9 @@ RVMODEL_DATA_BEGIN
|
|||||||
test_1_res:
|
test_1_res:
|
||||||
.fill 1024, 4, 0xdeadbeef
|
.fill 1024, 4, 0xdeadbeef
|
||||||
|
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
|
||||||
#ifdef rvtest_mtrap_routine
|
#ifdef rvtest_mtrap_routine
|
||||||
|
@ -468,5 +468,8 @@ Destination3:
|
|||||||
signature:
|
signature:
|
||||||
.fill 16, 4, 0x0bad0bad
|
.fill 16, 4, 0x0bad0bad
|
||||||
|
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
|
||||||
|
@ -372,6 +372,8 @@ Destination2:
|
|||||||
.fill 16, 4, 0xdeadbeef
|
.fill 16, 4, 0xdeadbeef
|
||||||
signature:
|
signature:
|
||||||
.fill 16, 4, 0x0bad0bad
|
.fill 16, 4, 0x0bad0bad
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
|
||||||
|
@ -113,4 +113,7 @@ RVMODEL_DATA_BEGIN
|
|||||||
# signature output
|
# signature output
|
||||||
wally_signature:
|
wally_signature:
|
||||||
.fill 6, 4, -1
|
.fill 6, 4, -1
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -88,6 +88,7 @@ test_cases:
|
|||||||
.4byte 0x80805EA0, 0xBEEF0440, write32_test # 11.3.1.3.3
|
.4byte 0x80805EA0, 0xBEEF0440, write32_test # 11.3.1.3.3
|
||||||
.4byte 0x8000FFA0, 0x11100393, write32_test # write executable code for "li x7, 0x111; ret" to executable region.
|
.4byte 0x8000FFA0, 0x11100393, write32_test # write executable code for "li x7, 0x111; ret" to executable region.
|
||||||
.4byte 0x8000FFA4, 0x00008067, write32_test # Used for 11.3.1.3.1, 11.3.1.3.2
|
.4byte 0x8000FFA4, 0x00008067, write32_test # Used for 11.3.1.3.1, 11.3.1.3.2
|
||||||
|
.4byte 0x80803658, 0x12345678, write32_test # initialize memory for 11.3.1.3.7(a)
|
||||||
|
|
||||||
# test 11.3.1.1.3 read values back from Paddrs without translation (this also verifies the previous test)
|
# test 11.3.1.1.3 read values back from Paddrs without translation (this also verifies the previous test)
|
||||||
.4byte 0x0, 0x0, goto_baremetal # satp.MODE = baremetal / no translation.
|
.4byte 0x0, 0x0, goto_baremetal # satp.MODE = baremetal / no translation.
|
||||||
|
@ -917,4 +917,7 @@ RVMODEL_DATA_BEGIN
|
|||||||
# signature output
|
# signature output
|
||||||
wally_signature:
|
wally_signature:
|
||||||
.fill 0x200, 8, 0x00000000
|
.fill 0x200, 8, 0x00000000
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-ADD.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-ADD.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLT.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLT.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLTU.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLTU.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SUB.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SUB.S
|
||||||
|
@ -133,6 +133,9 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-XOR.S
|
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-XOR.S
|
||||||
|
@ -360,5 +360,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -385,5 +385,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -360,5 +360,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -385,5 +385,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -360,5 +360,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -385,5 +385,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -360,5 +360,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -385,5 +385,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1275,5 +1275,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -965,5 +965,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -300,5 +300,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -505,5 +505,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1180,5 +1180,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2712,5 +2712,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2712,5 +2712,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2702,5 +2702,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2692,5 +2692,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2157,5 +2157,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2157,5 +2157,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2157,5 +2157,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2712,5 +2712,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1527,5 +1527,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1512,5 +1512,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -2707,5 +2707,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1275,5 +1275,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -965,5 +965,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -300,5 +300,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1275,5 +1275,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -965,5 +965,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -300,5 +300,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1275,5 +1275,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -965,5 +965,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -300,5 +300,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -1275,5 +1275,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
@ -965,5 +965,8 @@ gpr_save:
|
|||||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
sig_end_canary:
|
||||||
|
.int 0x0
|
||||||
|
rvtest_sig_end:
|
||||||
|
|
||||||
RVMODEL_DATA_END
|
RVMODEL_DATA_END
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user