X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=calu.git;a=blobdiff_plain;f=cpu%2Fsrc%2Fextension_b.vhd;h=bff38e9a11c80fa38e1044e0c1560f932ebde021;hp=8ccd6ea2c8edfaed929164d42285c1947d63ecbb;hb=0b3367ce6428a2e3e553fae6a7098b6f9d2ab93f;hpb=16e4a5d83c4442b0e642066ea58b238b257e9c37 diff --git a/cpu/src/extension_b.vhd b/cpu/src/extension_b.vhd index 8ccd6ea..bff38e9 100644 --- a/cpu/src/extension_b.vhd +++ b/cpu/src/extension_b.vhd @@ -54,55 +54,11 @@ begin else incb(incb'high downto 1) := (others => '0'); end if; - - if (ext_reg.sel = '1') and ext_reg.wr_en = '1' then - case ext_reg.addr(1 downto 0) is - when "00" => - if ext_reg.byte_en(0) = '1' then - reg_nxt_v.status := (data_v(0), data_v(1), data_v(3), data_v(2)); - psw <= reg_nxt_v.status; - end if; - when "01" => - --STACK_POINTER - tmp_data := (others =>'0'); - tmp_data(tmp_data'high downto BYTEADDR) := reg.preg(0); - - if ext_reg.byte_en(0) = '1' then - tmp_data(byte_t'range) := data_v(byte_t'range); - end if; - if ext_reg.byte_en(1) = '1' then - tmp_data((2*byte_t'length-1) downto byte_t'length) := data_v((2*byte_t'length-1) downto byte_t'length); - end if; - if ext_reg.byte_en(2) = '1' then - tmp_data((3*byte_t'length-1) downto 2*byte_t'length) := data_v((3*byte_t'length-1) downto 2*byte_t'length); - end if; - if ext_reg.byte_en(3) = '1' then - tmp_data((4*byte_t'length-1) downto 3*byte_t'length) := data_v((4*byte_t'length-1) downto 3*byte_t'length); - end if; - - reg_nxt_v.preg(0) := tmp_data(tmp_data'high downto BYTEADDR); - when others => null; - end case; - end if; - - - if (ext_reg.sel = '1') and ext_reg.wr_en = '0' then - case ext_reg.addr(1 downto 0) is - when "00" => - if ext_reg.byte_en(0) = '1' then - data_out_v(3 downto 0) := (reg.status.sign, reg.status.carry, reg.status.oflo, reg.status.zero); - end if; - when "01" => - --STACK_POINTER - data_out_v(data_out_v'high downto BYTEADDR) := reg.preg(0); - when others => null; - end case; - end if; - sel_pval:= reg_nxt_v.preg(to_integer(unsigned(paddr))); + sel_pval:= reg_nxt_v.preg(0); sel_pval_nxt := std_logic_vector(unsigned(sel_pval)+unsigned(incb)); if pwr_en = '1' then - reg_nxt_v.preg(to_integer(unsigned(paddr))) := sel_pval_nxt; + reg_nxt_v.preg(0) := sel_pval_nxt; end if; reg_nxt_v.status := psw_nxt;