📄 armdecode.vhd
字号:
when others => null;
end case;
when "1" =>
arm_ldr1 := '1';
if arm_ldr1 = '1' then
insn_return := type_arm_ldr1;
end if;
when others => null;
end case;
case vec_26 is
when "11" =>
arm_undefined := '1' and not (arm_str1 or arm_str2 or arm_str3 or arm_ldr1);
if arm_undefined = '1' then
insn_return := type_arm_undefined;
end if;
when others => null;
end case;
when "10" =>
case vec_27 is
when "0" =>
case vec_28 is
when "0" =>
arm_stm := '1';
if arm_stm = '1' then
insn_return := type_arm_stm;
end if;
when "1" =>
arm_ldm := '1';
if arm_ldm = '1' then
insn_return := type_arm_ldm;
end if;
when others => null;
end case;
when "1" =>
arm_b := '1';
if arm_b = '1' then
insn_return := type_arm_b;
end if;
when others => null;
end case;
when "11" =>
case vec_29 is
when "1" =>
case vec_30 is
when "1" =>
arm_swi := '1';
if arm_swi = '1' then
insn_return := type_arm_swi;
end if;
when "0" =>
case vec_31 is
when "0" =>
arm_cdp := '1';
if arm_cdp = '1' then
insn_return := type_arm_cdp;
end if;
when "1" =>
case vec_32 is
when "1" =>
arm_mrc := '1';
if arm_mrc = '1' then
insn_return := type_arm_mrc;
end if;
when "0" =>
arm_mcr := '1';
if arm_mcr = '1' then
insn_return := type_arm_mcr;
end if;
when others => null;
end case;
when others => null;
end case;
when others => null;
end case;
when "0" =>
case vec_33 is
when "0" =>
arm_stc := '1';
if arm_stc = '1' then
insn_return := type_arm_stc;
end if;
when "1" =>
arm_ldc := '1';
if arm_ldc = '1' then
insn_return := type_arm_ldc;
end if;
when others => null;
end case;
when others => null;
end case;
when others => null;
end case;
return insn_return;
end;
end armdecode;
/*
File /tmp/build_html/soft/doc/test/.config.vhd
used by /tmp/build_html/vhdl/mem/cache/libs/gencmem_lib.vhd
used by /tmp/build_html/vhdl/mem/cache/libs/gendc_lib.vhd
used by /tmp/build_html/vhdl/mem/cache/libs/genic_lib.vhd
used by /tmp/build_html/vhdl/mem/cache/libs/genwb_lib.vhd
used by /tmp/build_html/vhdl/mem/cache/cache_comp.vhd
used by /tmp/build_html/vhdl/mem/cache/cache_comp.vhd
used by /tmp/build_html/vhdl/mem/cache/genic.vhd
used by /tmp/build_html/vhdl/mem/cache/genic.vhd
used by /tmp/build_html/vhdl/mem/cache/genwbfifo.vhd
used by /tmp/build_html/vhdl/arith/cnt/arith_cnt8.vhd
used by /tmp/build_html/vhdl/arm/libs/armshiefter.vhd
used by /tmp/build_html/vhdl/arm/armiu_festg.vhd
used by /tmp/build_html/vhdl/arm/cp/armcp_sctrl.vhd
used by /tmp/build_html/vhdl/core/ctrl/rstgen.vhd
used by /tmp/build_html/vhdl/arm/tbench_armcache.vhd
used by /tmp/build_html/vhdl/m68k/libs/m68kdecode.vhd
used by /tmp/build_html/vhdl/mem/cache/kecs_wb.vhd
used by /tmp/build_html/vhdl/mem/cache/kecs_wbfifo.vhd
used by /tmp/build_html/vhdl/sparc/leon_pci.vhd
used by /tmp/build_html/vhdl/tbench/dep_tbgen.vhd
File /tmp/build_html/vhdl/libs/memdef.vhd
used by /tmp/build_html/vhdl/config.vhd
used by /tmp/build_html/vhdl/bus/bus_comp.vhd
used by /tmp/build_html/vhdl/bus/ahbmst_mp.vhd
used by /tmp/build_html/vhdl/mem/cache/libs/gendc_lib.vhd
used by /tmp/build_html/vhdl/mem/cache/libs/genwb_lib.vhd
used by /tmp/build_html/vhdl/mem/cache/genic.vhd
used by /tmp/build_html/vhdl/mem/cache/genwb.vhd
used by /tmp/build_html/vhdl/mem/cache/gendc.vhd
used by /tmp/build_html/vhdl/arm/libs/armshiefter.vhd
used by /tmp/build_html/vhdl/arm/armiu_festg.vhd
used by /tmp/build_html/vhdl/arm/libs/armcmd.vhd
used by /tmp/build_html/vhdl/arm/armcmd_sm.vhd
used by /tmp/build_html/vhdl/arm/armcmd_cr.vhd
used by /tmp/build_html/vhdl/arm/armcmd_cs.vhd
used by /tmp/build_html/vhdl/arm/armiu_rsstg.vhd
used by /tmp/build_html/vhdl/arm/cp/armcp_sctrl.vhd
used by /tmp/build_html/soft/doc/test/.config.vhd
File /tmp/build_html/vhdl/arm/libs/armpmodel.vhd
used by /tmp/build_html/vhdl/arm/libs/armdecode.vhd
used by /tmp/build_html/vhdl/arm/libs/armpctrl.vhd
used by /tmp/build_html/vhdl/arm/arm_comp.vhd
used by /tmp/build_html/vhdl/arm/libs/armdebug.vhd
used by /tmp/build_html/vhdl/arm/libs/armdebug.vhd
used by /tmp/build_html/vhdl/arm/libs/armldst.vhd
used by /tmp/build_html/vhdl/arm/armcmd_al.vhd
used by /tmp/build_html/vhdl/arm/armcmd_bl.vhd
used by /tmp/build_html/vhdl/arm/armcmd_ld.vhd
used by /tmp/build_html/vhdl/arm/armcmd_st.vhd
used by /tmp/build_html/vhdl/arm/armcmd_lm.vhd
used by /tmp/build_html/vhdl/arm/armcmd_sm.vhd
used by /tmp/build_html/vhdl/arm/armcmd_sw.vhd
used by /tmp/build_html/vhdl/arm/armcmd_cr.vhd
used by /tmp/build_html/vhdl/arm/armcmd_cl.vhd
used by /tmp/build_html/vhdl/arm/armcmd_cs.vhd
used by /tmp/build_html/vhdl/arm/armiu_drstg.vhd
used by /tmp/build_html/vhdl/arm/armiu_rrstg.vhd
used by /tmp/build_html/vhdl/arm/libs/armctrl.vhd
used by /tmp/build_html/vhdl/arm/armiu_rsstg.vhd
used by /tmp/build_html/vhdl/arm/armiu_dmstg.vhd
used by /tmp/build_html/vhdl/arm/armiu_mestg.vhd
File /tmp/build_html/vhdl/arm/libs/armshiefter.vhd
used by /tmp/build_html/vhdl/arm/libs/armdecode.vhd
used by /tmp/build_html/vhdl/arm/libs/armpctrl.vhd
used by /tmp/build_html/vhdl/arm/armcmd_comp.vhd
used by /tmp/build_html/vhdl/arm/armcmd_sr.vhd
used by /tmp/build_html/vhdl/arm/armcmd_ld.vhd
used by /tmp/build_html/vhdl/arm/armcmd_st.vhd
used by /tmp/build_html/vhdl/arm/armiu_drstg.vhd
used by /tmp/build_html/vhdl/arm/libs/armctrl.vhd
File /tmp/build_html/vhdl/arm/libs/armdecode.vhd
used by /tmp/build_html/vhdl/arm/libs/armpctrl.vhd
used by /tmp/build_html/vhdl/arm/arm_comp.vhd
used by /tmp/build_html/vhdl/arm/armiu_festg.vhd
used by /tmp/build_html/vhdl/arm/armiu_destg.vhd
used by /tmp/build_html/vhdl/arm/armiu_destg.vhd
used by /tmp/build_html/vhdl/arm/libs/armdebug.vhd
used by /tmp/build_html/vhdl/arm/libs/armldst.vhd
used by /tmp/build_html/vhdl/arm/armcmd_comp.vhd
used by /tmp/build_html/vhdl/arm/armcmd_al.vhd
used by /tmp/build_html/vhdl/arm/armcmd_sr.vhd
used by /tmp/build_html/vhdl/arm/armcmd_bl.vhd
used by /tmp/build_html/vhdl/arm/armcmd_ld.vhd
used by /tmp/build_html/vhdl/arm/armcmd_st.vhd
used by /tmp/build_html/vhdl/arm/armcmd_lm.vhd
used by /tmp/build_html/vhdl/arm/armcmd_sm.vhd
used by /tmp/build_html/vhdl/arm/armcmd_sw.vhd
used by /tmp/build_html/vhdl/arm/armcmd_cr.vhd
used by /tmp/build_html/vhdl/arm/armcmd_cs.vhd
used by /tmp/build_html/vhdl/arm/armiu_drstg.vhd
used by /tmp/build_html/vhdl/arm/armiu_rrstg.vhd
used by /tmp/build_html/vhdl/arm/libs/armctrl.vhd
used by /tmp/build_html/vhdl/arm/armiu_rsstg.vhd
used by /tmp/build_html/vhdl/arm/armiu_dmstg.vhd
used by /tmp/build_html/vhdl/arm/armiu_mestg.vhd
Enum rdatatype defined in /tmp/build_html/vhdl/sparc/mmu_icache.vhd
type rdatatype is (itag, idata, memory);
Enum ade_DAPRAM defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd
type ade_DAPRAM is (
ade_DAPRAM_simm, -- OP2 shieft with imm
ade_DAPRAM_sreg, -- OP2 shieft with reg
ade_DAPRAM_immrot -- OP2 immidiate rotated
);
Enum icycletype defined in /tmp/build_html/vhdl/peripherals/mem/sdmctrl.vhd
type icycletype is (iidle, pre, ref1, ref2, lmode, finish);
Enum ade_LDSTAMxLSV4AM defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd
type ade_LDSTAMxLSV4AM is (
ade_LDSTAMxLSV4AM_imm, -- addr v1 imm
-- addr v4 imm
ade_LDSTAMxLSV4AM_reg -- addr v1 reg (shieft with imm)
-- addr v4 reg
);
Enum ade_pos defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd
type ade_pos is (
ade_pre, -- pre indexed
ade_post -- post indexed
);
Enum ash_sdir defined in /tmp/build_html/vhdl/arm/libs/armshiefter.vhd
type ash_sdir is (
ash_sdir_snone, -- no shieft
ash_sdir_slsl, -- LSL #: logical shieft left
ash_sdir_slsr, -- LSR #: logical shieft righ
ash_sdir_sasr, -- ASR #: arithmetic shieft left
ash_sdir_sror, -- ROR #: rotate
ash_sdir_srrx -- RRX #: rotate 1 with carry
);
Type ade_amode defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd
type ade_amode is record
DAPRAM_typ : ade_DAPRAM;
LDSTAM_typ : ade_LDSTAMxLSV4AM;
LSV4AM_typ : ade_LDSTAMxLSV4AM;
LDSTAMxLSV4AM_pos : ade_pos;
DAPRAMxLDSTAM_sdir : ash_sdir;
LDSTAMxLSV4AM_uacc : std_logic;
LDSTAMxLSV4AM_wb : std_logic;
end record;
Enum ade_decinsn defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd
type ade_decinsn is (
type_arm_invalid,type_arm_nop, type_arm_mrs, type_arm_bx, type_arm_mul, type_arm_mla,
type_arm_swp, type_arm_sumull, type_arm_sumlal, type_arm_strhb, type_arm_ldrhb, type_arm_and,
type_arm_sub, type_arm_eor, type_arm_rsb, type_arm_add, type_arm_sbc, type_arm_adc,
type_arm_msr, type_arm_teq, type_arm_cmn, type_arm_tst, type_arm_cmp, type_arm_orr,
type_arm_mov, type_arm_mvn, type_arm_str1, type_arm_str2, type_arm_str3, type_arm_ldr1,
type_arm_stm, type_arm_ldm, type_arm_b, type_arm_swi, type_arm_cdp, type_arm_mrc,
type_arm_mcr, type_arm_stc, type_arm_ldc, type_arm_rsc, type_arm_bic, type_arm_undefined
);
Enum ade_insntyp defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd
type ade_insntyp is (
ade_typmem,
ade_typalu,
ade_typmisc,
ade_typcp
);
Enum lmd_byteorder defined in /tmp/build_html/vhdl/libs/memdef.vhd
type lmd_byteorder is (lmd_big, lmd_little);
Constant CFG_BO_PROC defined in /tmp/build_html/vhdl/config.vhd
constant CFG_BO_PROC : lmd_byteorder := lmd_big;
Function ade_decode_v4 defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd
function ade_decode_v4(
insn_in : in std_logic_vector(31 downto 0)
) return ade_decinsn is
variable arm_nop : std_logic;
variable arm_mrs : std_logic;
variable arm_bx : std_logic;
variable arm_mul : std_logic;
variable arm_mla : std_logic;
variable arm_swp : std_logic;
variable arm_sumull : std_logic;
variable arm_sumlal : std_logic;
variable arm_strhb : std_logic;
variable arm_ldrhb : std_logic;
variable arm_and : std_logic;
variable arm_sub : std_logic;
variable arm_eor : std_logic;
variable arm_rsb : std_logic;
variable arm_add : std_logic;
variable arm_sbc : std_logic;
variable arm_adc : std_logic;
variable arm_rsc : std_logic;
variable arm_msr : std_logic;
variable arm_teq : std_logic;
variable arm_cmn : std_logic;
variable arm_tst : std_logic;
variable arm_cmp : std_logic;
variable arm_orr : std_logic;
variable arm_bic : std_logic;
variable arm_mov : std_logic;
variable arm_mvn : std_logic;
variable arm_str1 : std_logic;
variable arm_str2 : std_logic;
variable arm_str3 : std_logic;
variable arm_ldr1 : std_logic;
variable arm_undefined : std_logic;
variable arm_stm : std_logic;
variable arm_ldm : std_logic;
variable arm_b : std_logic;
variable arm_swi : std_logic;
variable arm_cdp : std_logic;
variable arm_mrc : std_logic;
variable arm_mcr : std_logic;
variable arm_stc : std_logic;
variable arm_ldc : std_logic;
variable vec_1 : std_logic_vector(1 downto 0);
variable vec_2 : std_logic_vector(2 downto 0);
variable vec_3 : std_logic_vector(4 downto 0);
variable vec_4 : std_logic_vector(21 downto 0);
variable vec_5 : std_logic_vector(12 downto 0);
variable vec_6 : std_logic_vector(18 downto 0);
variable vec_7 : std_logic_vector(4 downto 0);
variable vec_8 : std_logic_vector(0 downto 0);
variable vec_9 : std_logic_vector(0 downto 0);
variable vec_10 : std_logic_vector(4 downto 0);
variable vec_11 : std_logic_vector(0 downto 0);
variable vec_12 : std_logic_vector(2 downto 0);
variable vec_13 : std_logic_vector(0 downto 0);
variable vec_14 : std_logic_vector(0 downto 0);
variable vec_15 : std_logic_vector(0 downto 0);
variable vec_16 : std_logic_vector(0 downto 0);
variable vec_17 : std_logic_vector(6 downto 0);
variable vec_18 : std_logic_vector(0 downto 0);
variable vec_19 : std_logic_vector(0 downto 0);
variable vec_20 : std_logic_vector(0 downto 0);
variable vec_21 : std_logic_vector(0 downto 0);
variable vec_22 : std_logic_vector(0 downto 0);
variable vec_23 : std_logic_vector(0 downto 0);
variable vec_24 : std_logic_vector(7 downto 0);
variable vec_25 : std_logic_vector(0 downto 0);
variable vec_26 : std_logic_vector(1 downto 0);
variable vec_27 : std_logic_vector(0 downto 0);
variable vec_28 : std_logic_vector(0 downto 0);
variable vec_29 : std_logic_vector(0 downto 0);
variable vec_30 : std_logic_vector(0 downto 0);
variable vec_31 : std_logic_vector(0 downto 0);
variable vec_32 : std_logic_vector(0 downto 0);
variable vec_33 : std_logic_vector(0 downto 0);
variable insn_return : ade_decinsn;
variable insn : std_logic_vector(31 downto 0);
begin
insn := insn_in;
-- decoder assumes littleendian: word[3 2 1 0]
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -