From 40cfa8693564e3f74a5f1a0cd437d0d0ff03d577 Mon Sep 17 00:00:00 2001 From: Kip Macsai-Goren Date: Tue, 1 Jun 2021 17:49:45 -0400 Subject: [PATCH] Edited and added constants to support SV48 --- .../config/buildroot/wally-constants.vh | 26 +++++++++++++------ .../config/busybear/wally-constants.vh | 26 +++++++++++++------ .../config/coremark/wally-constants.vh | 26 +++++++++++++------ .../config/coremark_bare/wally-constants.vh | 26 +++++++++++++------ .../config/rv32ic/wally-constants.vh | 12 ++++++++- .../config/rv64BP/wally-constants.vh | 26 +++++++++++++------ .../config/rv64ic/wally-constants.vh | 26 +++++++++++++------ .../config/rv64icfd/wally-constants.vh | 26 +++++++++++++------ .../config/rv64imc/wally-constants.vh | 26 +++++++++++++------ 9 files changed, 155 insertions(+), 65 deletions(-) diff --git a/wally-pipelined/config/buildroot/wally-constants.vh b/wally-pipelined/config/buildroot/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/buildroot/wally-constants.vh +++ b/wally-pipelined/config/buildroot/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9 diff --git a/wally-pipelined/config/busybear/wally-constants.vh b/wally-pipelined/config/busybear/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/busybear/wally-constants.vh +++ b/wally-pipelined/config/busybear/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9 diff --git a/wally-pipelined/config/coremark/wally-constants.vh b/wally-pipelined/config/coremark/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/coremark/wally-constants.vh +++ b/wally-pipelined/config/coremark/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9 diff --git a/wally-pipelined/config/coremark_bare/wally-constants.vh b/wally-pipelined/config/coremark_bare/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/coremark_bare/wally-constants.vh +++ b/wally-pipelined/config/coremark_bare/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9 diff --git a/wally-pipelined/config/rv32ic/wally-constants.vh b/wally-pipelined/config/rv32ic/wally-constants.vh index ec4a48b4d..f4c5ce9aa 100644 --- a/wally-pipelined/config/rv32ic/wally-constants.vh +++ b/wally-pipelined/config/rv32ic/wally-constants.vh @@ -2,7 +2,10 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: kmacsaigoren@hmc.edu 31 May 2021 +// added svmode constants. These aren't strictly necessary since we're just checking one bit, +// but they're here to stay consistent and to make sure we dont wind up +// a "NO_TRANSLATE undefined" situation. // // Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. // These macros should not be changed, except in the event of an @@ -31,3 +34,10 @@ `define PPN_BITS 22 `define PPN_HIGH_SEGMENT_BITS 12 `define PA_BITS 34 +`define SVMODE_BITS 1 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 // These two are only here to stop +`define SV48 9 // the verilator from yelling at me diff --git a/wally-pipelined/config/rv64BP/wally-constants.vh b/wally-pipelined/config/rv64BP/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/rv64BP/wally-constants.vh +++ b/wally-pipelined/config/rv64BP/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9 diff --git a/wally-pipelined/config/rv64ic/wally-constants.vh b/wally-pipelined/config/rv64ic/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/rv64ic/wally-constants.vh +++ b/wally-pipelined/config/rv64ic/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9 diff --git a/wally-pipelined/config/rv64icfd/wally-constants.vh b/wally-pipelined/config/rv64icfd/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/rv64icfd/wally-constants.vh +++ b/wally-pipelined/config/rv64icfd/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9 diff --git a/wally-pipelined/config/rv64imc/wally-constants.vh b/wally-pipelined/config/rv64imc/wally-constants.vh index 43d958632..cc6c27fc1 100644 --- a/wally-pipelined/config/rv64imc/wally-constants.vh +++ b/wally-pipelined/config/rv64imc/wally-constants.vh @@ -2,11 +2,14 @@ // wally-constants.vh // // Written: tfleming@hmc.edu 4 March 2021 -// Modified: +// Modified: Kmacsaigoren@hmc.edu 31 May 2021 +// Added constants for checking sv mode and changed existing constants to accomodate +// both sv48 and sv39 // -// Purpose: Specify certain constants defined in the RISC-V 64-bit architecture. -// These macros should not be changed, except in the event of an -// update to the architecture or particularly special circumstances. +// Purpose: Specify constants nexessary for different memory virtualization modes. +// These are specific to sv49, defined in section 4.5 of the privileged spec. +// However, despite different constants for different modes, the hardware helps distinguish between +// each mode. // // A component of the Wally configurable RISC-V project. // @@ -25,9 +28,16 @@ // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /////////////////////////////////////////// -// Virtual Memory Constants (sv39) +// Virtual Memory Constants (sv48) `define VPN_SEGMENT_BITS 9 -`define VPN_BITS 27 +`define VPN_BITS 36 +`define PPN_HIGH_SEGMENT_BITS 17 `define PPN_BITS 44 -`define PPN_HIGH_SEGMENT_BITS 26 -`define PA_BITS 56 +`define PA_BITS 56 +`define SVMODE_BITS 4 +// constants to check SATP_MODE against +// defined in Table 4.3 of the privileged spec +`define NO_TRANSLATE 0 +`define SV32 1 +`define SV39 8 +`define SV48 9