OpenCores
URL https://opencores.org/ocsvn/core_arm/core_arm/trunk

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [arm/] [libs/] [armdebug.vhd] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tarookumic
library ieee;
2
use ieee.std_logic_1164.all;
3
use work.armdecode.all;
4
use work.armpmodel.all;
5
 
6
-- PREFIX: adg_xxx
7
package armdebug is
8
 
9
-- pragma translate_off
10
 
11
-------------------------------------------------------------------------------
12
 
13
-- dbg: readable processor modes
14
type adg_dbgpmode is (
15
  adg_usr,
16
  adg_sys,
17
  adg_svc,
18
  adg_abt,
19
  adg_und,
20
  adg_irq,
21
  adg_fiq,
22
  adg_invalid
23
);
24
 
25
-- Convert to readable pmode enum
26
function adg_todbgpmode (
27
  mode : std_logic_vector(4 downto 0)
28
) return adg_dbgpmode;
29
 
30
-------------------------------------------------------------------------------
31
 
32
-- dbg: readable aluop 
33
type adg_dbgaluop is (
34
  adg_opand,
35
  adg_opeor,
36
  adg_opsub,
37
  adg_oprsb,
38
  adg_opadd,
39
  adg_opadc,
40
  adg_opsbc,
41
  adg_oprsc,
42
  adg_optst,
43
  adg_opteq,
44
  adg_opcmp,
45
  adg_opcmn,
46
  adg_oporr,
47
  adg_opmov,
48
  adg_opbic,
49
  adg_opmvn,
50
  adg_opinvalid
51
);
52
 
53
-- Convert to readable aluop enum
54
function adg_todbgaluop (
55
  mode : std_logic_vector(3 downto 0)
56
) return adg_dbgaluop;
57
 
58
-- pragma translate_on
59
 
60
end armdebug;
61
 
62
package body armdebug is
63
 
64
-- pragma translate_off
65
 
66
function adg_todbgpmode (
67
  mode : std_logic_vector(4 downto 0)
68
) return adg_dbgpmode is
69
  variable tmp : adg_dbgpmode;
70
begin
71
 
72
  tmp := adg_invalid;
73
 
74
  case mode is
75
    when APM_USR => tmp := adg_usr;
76
    when APM_SYS => tmp := adg_sys;
77
    when APM_SVC => tmp := adg_svc;
78
    when APM_ABT => tmp := adg_abt;
79
    when APM_UND => tmp := adg_und;
80
    when APM_IRQ => tmp := adg_irq;
81
    when APM_FIQ => tmp := adg_fiq;
82
    when others => null;
83
  end case;
84
  return tmp;
85
end;
86
 
87
function adg_todbgaluop (
88
  mode : std_logic_vector(3 downto 0)
89
) return adg_dbgaluop is
90
  variable tmp : adg_dbgaluop;
91
begin
92
 
93
  tmp := adg_opinvalid;
94
 
95
  case mode is
96
    when ADE_OP_AND => tmp := adg_opand;
97
    when ADE_OP_EOR => tmp := adg_opeor;
98
    when ADE_OP_SUB => tmp := adg_opsub;
99
    when ADE_OP_RSB => tmp := adg_oprsb;
100
    when ADE_OP_ADD => tmp := adg_opadd;
101
    when ADE_OP_ADC => tmp := adg_opadc;
102
    when ADE_OP_SBC => tmp := adg_opsbc;
103
    when ADE_OP_RSC => tmp := adg_oprsc;
104
    when ADE_OP_TST => tmp := adg_optst;
105
    when ADE_OP_TEQ => tmp := adg_opteq;
106
    when ADE_OP_CMP => tmp := adg_opcmp;
107
    when ADE_OP_CMN => tmp := adg_opcmn;
108
    when ADE_OP_ORR => tmp := adg_oporr;
109
    when ADE_OP_MOV => tmp := adg_opmov;
110
    when ADE_OP_BIC => tmp := adg_opbic;
111
    when ADE_OP_MVN => tmp := adg_opmvn;
112
    when others =>
113
  end case;
114
  return tmp;
115
end;
116
 
117
-- pragma translate_on
118
 
119
end armdebug;

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.