core: Implement PVR register
authorJordan Niethe <jniethe5@gmail.com>
Tue, 7 Jul 2020 10:37:52 +0000 (20:37 +1000)
committerJordan Niethe <jniethe5@gmail.com>
Tue, 7 Jul 2020 10:40:23 +0000 (20:40 +1000)
Microwatt has been allocated a PVR version of 0x0063. Implement a PVR
with this value.

Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
common.vhdl
execute1.vhdl

index 18378d58570961eada03bcd1b6139aef3f94549f..a193df1fcfa90e088a1d426c598f67651b1aa68d 100644 (file)
@@ -6,6 +6,8 @@ library work;
 use work.decode_types.all;
 
 package common is
+    -- Processor Version Number
+    constant PVR_MICROWATT  : std_ulogic_vector(31 downto 0) := x"00630000";
 
     -- MSR bit numbers
     constant MSR_SF  : integer := (63 - 0);     -- Sixty-Four bit mode
@@ -43,6 +45,7 @@ package common is
     constant SPR_HSPRG1 : spr_num_t := 305;
     constant SPR_PID    : spr_num_t := 48;
     constant SPR_PRTBL  : spr_num_t := 720;
+    constant SPR_PVR   : spr_num_t := 287;
 
     -- GPR indices in the register file (GPR only)
     subtype gpr_index_t is std_ulogic_vector(4 downto 0);
index a1cd008f0b38ff40fd2033b90ffcba4071472bc1..3b2007ad6ec4f2c8d2afb982a2462ccf0d21212b 100644 (file)
@@ -766,6 +766,9 @@ begin
                        spr_val := ctrl.dec;
                     when SPR_CFAR =>
                         spr_val := ctrl.cfar;
+                    when SPR_PVR =>
+                        spr_val(63 downto 32) := (others => '0');
+                        spr_val(31 downto 0) := PVR_MICROWATT;
                     when 724 =>     -- LOG_ADDR SPR
                         spr_val := log_wr_addr & r.log_addr_spr;
                     when 725 =>     -- LOG_DATA SPR