Wesley W. Terpstra 
							
						 
					 
					
						
						
							
						
						4959771c97 
					 
					
						
						
							
							Revert "For D$, use source 0 through N-1 for MMIO, not 1 through N"  
						
						... 
						
						
						
						This reverts commit 0538dc77ce 
						
						
					 
					
						2017-03-27 16:30:46 -07:00 
						 
				 
			
				
					
						
							
							
								Wesley W. Terpstra 
							
						 
					 
					
						
						
							
						
						fa7ead6357 
					 
					
						
						
							
							Revert "Use Reg(Vec) instead of Seq(Reg) for DCache MMIO"  
						
						... 
						
						
						
						This reverts commit fb6498f2c3 
						
						
					 
					
						2017-03-27 16:30:46 -07:00 
						 
				 
			
				
					
						
							
							
								Megan Wachs 
							
						 
					 
					
						
						
							
						
						08c4f7cea6 
					 
					
						
						
							
							RocketTile: Create a wrapper for SyncRocketTile as well ( #616 )  
						
						... 
						
						
						
						* RocketTile: Create a wrapper for SyncRocketTile as well
There is no guarantee that debugInterrupt is synchronous
to tlClk, even though it is true in the current implementation.
It will not be true in future implementations, as decoupling
this allows the debugInterrupt to be asserted across tlClk
gating/reset scenarios.
Therefore, even for SyncRocketTile, the debug interrupt needs to be
synchronized to coreClk, and for RationalRocketTile, 1 cycle
of synchronization is not sufficient.
Even though other interrupts may be synchronized, we just
synchronize them all to simplify the code at the expense of
a few cycles latency.
It could still be nice to use a parameter vs hard coding "3".
* RocketTile: Actually use the SyncRocketTile wrapper to get properly synchronized resets. 
						
						
					 
					
						2017-03-27 02:45:37 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						5d1165c850 
					 
					
						
						
							
							Express PMP mask generator using a carry chain  
						
						... 
						
						
						
						This allows it to be optimized like an adder, improving QoR when it
is on the critical path. 
						
						
					 
					
						2017-03-26 14:20:16 -07:00 
						 
				 
			
				
					
						
							
							
								Henry Cook 
							
						 
					 
					
						
						
							
						
						996a31364a 
					 
					
						
						
							
							rocket: remove hard-coded paddrBits ( #610 )  
						
						... 
						
						
						
						Fall back on global variable but check that it is compatible with memory as seen from rocket's tilelink master port. 
						
						
					 
					
						2017-03-24 22:30:18 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						17b1ee3037 
					 
					
						
						
							
							Default to 8 PMPs; support 0 PMPs  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						97006ab396 
					 
					
						
						
							
							Don't modulate PMP privilege on passsthrough when !usingVM  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						3f0d2fe826 
					 
					
						
						
							
							Instantiate PTW unconditionally  
						
						... 
						
						
						
						This keeps the PMP datapaths intact.  The PTW itself will get optimized
away for the !usingVM case. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						30415215b8 
					 
					
						
						
							
							Don't check for exceptions on ScratchpadSlavePort accesses  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						ccd5bc9a91 
					 
					
						
						
							
							Improve QoR of PMP homogeneity checker  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						e9cadf29d2 
					 
					
						
						
							
							Improve DCache MMIO QoR  
						
						... 
						
						
						
						No need to store the cmd field.  From the perspective of the cache, all
MMIO responses that have data can be treated the same as loads. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						fb6498f2c3 
					 
					
						
						
							
							Use Reg(Vec) instead of Seq(Reg) for DCache MMIO  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						0538dc77ce 
					 
					
						
						
							
							For D$, use source 0 through N-1 for MMIO, not 1 through N  
						
						... 
						
						
						
						This makes the code a bit cleaner. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						3951e57789 
					 
					
						
						
							
							Force each TLB entry into its own clock-gate group  
						
						... 
						
						
						
						This ameliorates a PMP critical path.
I can't figure out how to do this without asUInt/asTypeOf. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						8d7f1d777e 
					 
					
						
						
							
							Fix an embarrassing typo in the PMPHeterogeneityChecker  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						10c39cb8d6 
					 
					
						
						
							
							Disable mprv in D-mode  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						d3bda9574c 
					 
					
						
						
							
							Put page homogeneity checker in PMP  
						
						... 
						
						
						
						Avoids redundancy between ITLB and DTLB 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						9e05200e51 
					 
					
						
						
							
							Don't require that PMP ranges be aligned to access size  
						
						... 
						
						
						
						e.g., if a range permits access to 0x0-0xb, allow 8-byte accesses 0x0-0x7. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						29e67279ba 
					 
					
						
						
							
							add comments  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						4c8be13a4d 
					 
					
						
						
							
							Improve homogeneity circuit QoR  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						59d6afa132 
					 
					
						
						
							
							mideleg/medeleg not present without less-privileged traps  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						38808f55d5 
					 
					
						
						
							
							Share PMP mask gen between I$ and D$  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						86d84959cf 
					 
					
						
						
							
							More WIP on PMP  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						2888779422 
					 
					
						
						
							
							Flush pipeline from WB stage, not MEM  
						
						... 
						
						
						
						Fixes sptbr write -> instruction translation hazard. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						44ca3b60ab 
					 
					
						
						
							
							Retime PTW response valid bits  
						
						... 
						
						
						
						It's not just to save the gate delay; it also reduces wire delay by
allowing the flops to be closer to their respective TLBs. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						a03556220c 
					 
					
						
						
							
							Default TLB size = 32  
						
						... 
						
						
						
						@davidbiancolin 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						1875407316 
					 
					
						
						
							
							Get TLB permission checks off D$ clock gating critical path  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						a4164348b4 
					 
					
						
						
							
							Expose MXR to S-mode  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						0380aed329 
					 
					
						
						
							
							PUM -> SUM  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						29414f3a23 
					 
					
						
						
							
							Simplify interrupt-stack discipline  
						
						... 
						
						
						
						f2ed45b179 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						723352c3e2 
					 
					
						
						
							
							Mitigate some more PMP critical paths  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						7484f27ed3 
					 
					
						
						
							
							Don't gate exception-cause pipeline registers separately  
						
						... 
						
						
						
						They are too narrow to justify gating separately from the other pipeline
registers (and one of the clock gates was on the PMP critical path). 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						487b8db5ef 
					 
					
						
						
							
							Address some PMP critical paths  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						03fb334c4c 
					 
					
						
						
							
							Take mprv calculation off critical path  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						f0796f0509 
					 
					
						
						
							
							Pass correct access size information to PMP checker  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						a6874c03f7 
					 
					
						
						
							
							Remove DecoupledTLB  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						78f9f6b9ef 
					 
					
						
						
							
							When SFENCE.VMA has rs2 != x0, don't flush global mappings  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						1b950128e1 
					 
					
						
						
							
							PTW should always use S-mode privilege  
						
						... 
						
						
						
						If an exception occurs while a page-table walk is coincidentally in
progress (e.g., an illegal instruction executes during data TLB refill),
then the processor might enter M-mode.  However, the PTW's accesses
should proceed without M privilege, to avoid bypassing PMPs.
Note, the same argument doesn't apply to the nonblocking cache's replay
queues, because those accesses have already been checked against the PMPs.
The cache correctly ignores access exceptions reported on replays,
provided no exceptions were reported on the initial access. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						aace526857 
					 
					
						
						
							
							WIP on PMP  
						
						
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						b1b405404d 
					 
					
						
						
							
							Set PRV=M when entering debug mode  
						
						... 
						
						
						
						Debug mode mostly behaves like M-mode, so this approach avoids having
to check the debug bit in most permission checks. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						cf168e419b 
					 
					
						
						
							
							Support SFENCE.VMA rs1 argument  
						
						... 
						
						
						
						This one's a little invasive.  To flush a specific entry from the TLB, you
need to reuse its CAM port.  Since the TLB lookup can be on the critical
path, we wish to avoid muxing in another address.
This is simple on the data side, where the datapath already carries rs1 to
the TLB (it's the same path as the AMO address calculation).  It's trickier
for the I$, where the TLB lookup address comes from the fetch stage PC.
The trick is to temporarily redirect the PC to rs1, then redirect the PC
again to the instruction after SFENCE.VMA. 
						
						
					 
					
						2017-03-24 16:39:52 -07:00 
						 
				 
			
				
					
						
							
							
								Henry Cook 
							
						 
					 
					
						
						
							
						
						055b8ba1f0 
					 
					
						
						
							
							rocket: avoid LinkedHashMap.keys to preserve traversal order ( #603 )  
						
						
						
						
					 
					
						2017-03-22 14:38:33 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						3609254e4a 
					 
					
						
						
							
							There's no structural hazard on MMIO store responses  
						
						... 
						
						
						
						So don't stall as though there were. 
						
						
					 
					
						2017-03-21 14:17:32 -07:00 
						 
				 
			
				
					
						
							
							
								Yunsup Lee 
							
						 
					 
					
						
						
							
						
						5eae7e1da4 
					 
					
						
						
							
							make DCache s1_nack less conservative for pipelined MMIO requests  
						
						
						
						
					 
					
						2017-03-21 11:16:51 -07:00 
						 
				 
			
				
					
						
							
							
								Wesley W. Terpstra 
							
						 
					 
					
						
						
							
						
						4c00066746 
					 
					
						
						
							
							rocket: describe dcache as two clients (fifo+cached)  
						
						
						
						
					 
					
						2017-03-21 11:16:51 -07:00 
						 
				 
			
				
					
						
							
							
								Wesley W. Terpstra 
							
						 
					 
					
						
						
							
						
						278f6fea24 
					 
					
						
						
							
							tilelink2: define is{Request,Response} based on spec  
						
						
						
						
					 
					
						2017-03-20 13:41:02 -07:00 
						 
				 
			
				
					
						
							
							
								Wesley W. Terpstra 
							
						 
					 
					
						
						
							
						
						0c92283a61 
					 
					
						
						
							
							rocket icache: tie off b ready  
						
						
						
						
					 
					
						2017-03-19 17:18:50 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						d6f571cbbb 
					 
					
						
						
							
							Implement mstatus.TSR  
						
						
						
						
					 
					
						2017-03-13 14:50:06 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						1fea0460ba 
					 
					
						
						
							
							Support superpage entries in TLB  
						
						
						
						
					 
					
						2017-03-13 14:50:06 -07:00 
						 
				 
			
				
					
						
							
							
								Andrew Waterman 
							
						 
					 
					
						
						
							
						
						2d267b4940 
					 
					
						
						
							
							Support corner cases in TLBPermissions  
						
						... 
						
						
						
						Don't crap out if the yes-set or no-set is empty. 
						
						
					 
					
						2017-03-13 14:50:06 -07:00