forked from Mirrors/opensbi
		
	lib: sbi: Improve PMP CSR detection and progamming
As-per latest RISC-V privilege spec up to 64 PMP entries are supported. Implementations may implement zero, 16, or 64 PMP CSRs. All PMP CSR fields are WARL and may be hardwired to zero. This patch improves PMP CSR detection and progamming considering above facts. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
This commit is contained in:
		@@ -144,7 +144,12 @@
 | 
			
		||||
#define PMP_L				_UL(0x80)
 | 
			
		||||
 | 
			
		||||
#define PMP_SHIFT			2
 | 
			
		||||
#define PMP_COUNT			16
 | 
			
		||||
#define PMP_COUNT			64
 | 
			
		||||
#if __riscv_xlen == 64
 | 
			
		||||
#define PMP_ADDR_MASK			((_ULL(0x1) << 54) - 1)
 | 
			
		||||
#else
 | 
			
		||||
#define PMP_ADDR_MASK			_UL(0xFFFFFFFF)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if __riscv_xlen == 64
 | 
			
		||||
#define MSTATUS_SD			MSTATUS64_SD
 | 
			
		||||
@@ -263,6 +268,18 @@
 | 
			
		||||
#define CSR_PMPCFG1			0x3a1
 | 
			
		||||
#define CSR_PMPCFG2			0x3a2
 | 
			
		||||
#define CSR_PMPCFG3			0x3a3
 | 
			
		||||
#define CSR_PMPCFG4			0x3a4
 | 
			
		||||
#define CSR_PMPCFG5			0x3a5
 | 
			
		||||
#define CSR_PMPCFG6			0x3a6
 | 
			
		||||
#define CSR_PMPCFG7			0x3a7
 | 
			
		||||
#define CSR_PMPCFG8			0x3a8
 | 
			
		||||
#define CSR_PMPCFG9			0x3a9
 | 
			
		||||
#define CSR_PMPCFG10			0x3aa
 | 
			
		||||
#define CSR_PMPCFG11			0x3ab
 | 
			
		||||
#define CSR_PMPCFG12			0x3ac
 | 
			
		||||
#define CSR_PMPCFG13			0x3ad
 | 
			
		||||
#define CSR_PMPCFG14			0x3ae
 | 
			
		||||
#define CSR_PMPCFG15			0x3af
 | 
			
		||||
#define CSR_PMPADDR0			0x3b0
 | 
			
		||||
#define CSR_PMPADDR1			0x3b1
 | 
			
		||||
#define CSR_PMPADDR2			0x3b2
 | 
			
		||||
@@ -279,6 +296,54 @@
 | 
			
		||||
#define CSR_PMPADDR13			0x3bd
 | 
			
		||||
#define CSR_PMPADDR14			0x3be
 | 
			
		||||
#define CSR_PMPADDR15			0x3bf
 | 
			
		||||
#define CSR_PMPADDR16			0x3c0
 | 
			
		||||
#define CSR_PMPADDR17			0x3c1
 | 
			
		||||
#define CSR_PMPADDR18			0x3c2
 | 
			
		||||
#define CSR_PMPADDR19			0x3c3
 | 
			
		||||
#define CSR_PMPADDR20			0x3c4
 | 
			
		||||
#define CSR_PMPADDR21			0x3c5
 | 
			
		||||
#define CSR_PMPADDR22			0x3c6
 | 
			
		||||
#define CSR_PMPADDR23			0x3c7
 | 
			
		||||
#define CSR_PMPADDR24			0x3c8
 | 
			
		||||
#define CSR_PMPADDR25			0x3c9
 | 
			
		||||
#define CSR_PMPADDR26			0x3ca
 | 
			
		||||
#define CSR_PMPADDR27			0x3cb
 | 
			
		||||
#define CSR_PMPADDR28			0x3cc
 | 
			
		||||
#define CSR_PMPADDR29			0x3cd
 | 
			
		||||
#define CSR_PMPADDR30			0x3ce
 | 
			
		||||
#define CSR_PMPADDR31			0x3cf
 | 
			
		||||
#define CSR_PMPADDR32			0x3d0
 | 
			
		||||
#define CSR_PMPADDR33			0x3d1
 | 
			
		||||
#define CSR_PMPADDR34			0x3d2
 | 
			
		||||
#define CSR_PMPADDR35			0x3d3
 | 
			
		||||
#define CSR_PMPADDR36			0x3d4
 | 
			
		||||
#define CSR_PMPADDR37			0x3d5
 | 
			
		||||
#define CSR_PMPADDR38			0x3d6
 | 
			
		||||
#define CSR_PMPADDR39			0x3d7
 | 
			
		||||
#define CSR_PMPADDR40			0x3d8
 | 
			
		||||
#define CSR_PMPADDR41			0x3d9
 | 
			
		||||
#define CSR_PMPADDR42			0x3da
 | 
			
		||||
#define CSR_PMPADDR43			0x3db
 | 
			
		||||
#define CSR_PMPADDR44			0x3dc
 | 
			
		||||
#define CSR_PMPADDR45			0x3dd
 | 
			
		||||
#define CSR_PMPADDR46			0x3de
 | 
			
		||||
#define CSR_PMPADDR47			0x3df
 | 
			
		||||
#define CSR_PMPADDR48			0x3e0
 | 
			
		||||
#define CSR_PMPADDR49			0x3e1
 | 
			
		||||
#define CSR_PMPADDR50			0x3e2
 | 
			
		||||
#define CSR_PMPADDR51			0x3e3
 | 
			
		||||
#define CSR_PMPADDR52			0x3e4
 | 
			
		||||
#define CSR_PMPADDR53			0x3e5
 | 
			
		||||
#define CSR_PMPADDR54			0x3e6
 | 
			
		||||
#define CSR_PMPADDR55			0x3e7
 | 
			
		||||
#define CSR_PMPADDR56			0x3e8
 | 
			
		||||
#define CSR_PMPADDR57			0x3e9
 | 
			
		||||
#define CSR_PMPADDR58			0x3ea
 | 
			
		||||
#define CSR_PMPADDR59			0x3eb
 | 
			
		||||
#define CSR_PMPADDR60			0x3ec
 | 
			
		||||
#define CSR_PMPADDR61			0x3ed
 | 
			
		||||
#define CSR_PMPADDR62			0x3ee
 | 
			
		||||
#define CSR_PMPADDR63			0x3ef
 | 
			
		||||
#define CSR_TSELECT			0x7a0
 | 
			
		||||
#define CSR_TDATA1			0x7a1
 | 
			
		||||
#define CSR_TDATA2			0x7a2
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user