Add Tercel PHY reset synchronization
[microwatt.git] / insn_helpers.vhdl
1 library ieee;
2 use ieee.std_logic_1164.all;
3
4 package insn_helpers is
5 function insn_rs (insn_in : std_ulogic_vector) return std_ulogic_vector;
6 function insn_rt (insn_in : std_ulogic_vector) return std_ulogic_vector;
7 function insn_ra (insn_in : std_ulogic_vector) return std_ulogic_vector;
8 function insn_rb (insn_in : std_ulogic_vector) return std_ulogic_vector;
9 function insn_rcreg (insn_in : std_ulogic_vector) return std_ulogic_vector;
10 function insn_si (insn_in : std_ulogic_vector) return std_ulogic_vector;
11 function insn_ui (insn_in : std_ulogic_vector) return std_ulogic_vector;
12 function insn_l (insn_in : std_ulogic_vector) return std_ulogic;
13 function insn_sh32 (insn_in : std_ulogic_vector) return std_ulogic_vector;
14 function insn_mb32 (insn_in : std_ulogic_vector) return std_ulogic_vector;
15 function insn_me32 (insn_in : std_ulogic_vector) return std_ulogic_vector;
16 function insn_li (insn_in : std_ulogic_vector) return std_ulogic_vector;
17 function insn_lk (insn_in : std_ulogic_vector) return std_ulogic;
18 function insn_aa (insn_in : std_ulogic_vector) return std_ulogic;
19 function insn_rc (insn_in : std_ulogic_vector) return std_ulogic;
20 function insn_oe (insn_in : std_ulogic_vector) return std_ulogic;
21 function insn_bd (insn_in : std_ulogic_vector) return std_ulogic_vector;
22 function insn_bf (insn_in : std_ulogic_vector) return std_ulogic_vector;
23 function insn_bfa (insn_in : std_ulogic_vector) return std_ulogic_vector;
24 function insn_cr (insn_in : std_ulogic_vector) return std_ulogic_vector;
25 function insn_bt (insn_in : std_ulogic_vector) return std_ulogic_vector;
26 function insn_ba (insn_in : std_ulogic_vector) return std_ulogic_vector;
27 function insn_bb (insn_in : std_ulogic_vector) return std_ulogic_vector;
28 function insn_fxm (insn_in : std_ulogic_vector) return std_ulogic_vector;
29 function insn_bo (insn_in : std_ulogic_vector) return std_ulogic_vector;
30 function insn_bi (insn_in : std_ulogic_vector) return std_ulogic_vector;
31 function insn_bh (insn_in : std_ulogic_vector) return std_ulogic_vector;
32 function insn_d (insn_in : std_ulogic_vector) return std_ulogic_vector;
33 function insn_ds (insn_in : std_ulogic_vector) return std_ulogic_vector;
34 function insn_dq (insn_in : std_ulogic_vector) return std_ulogic_vector;
35 function insn_dx (insn_in : std_ulogic_vector) return std_ulogic_vector;
36 function insn_to (insn_in : std_ulogic_vector) return std_ulogic_vector;
37 function insn_bc (insn_in : std_ulogic_vector) return std_ulogic_vector;
38 function insn_sh (insn_in : std_ulogic_vector) return std_ulogic_vector;
39 function insn_me (insn_in : std_ulogic_vector) return std_ulogic_vector;
40 function insn_mb (insn_in : std_ulogic_vector) return std_ulogic_vector;
41 function insn_frt (insn_in : std_ulogic_vector) return std_ulogic_vector;
42 function insn_fra (insn_in : std_ulogic_vector) return std_ulogic_vector;
43 function insn_frb (insn_in : std_ulogic_vector) return std_ulogic_vector;
44 function insn_frc (insn_in : std_ulogic_vector) return std_ulogic_vector;
45 function insn_u (insn_in : std_ulogic_vector) return std_ulogic_vector;
46 end package insn_helpers;
47
48 package body insn_helpers is
49 function insn_rs (insn_in : std_ulogic_vector) return std_ulogic_vector is
50 begin
51 return insn_in(25 downto 21);
52 end;
53
54 function insn_rt (insn_in : std_ulogic_vector) return std_ulogic_vector is
55 begin
56 return insn_in(25 downto 21);
57 end;
58
59 function insn_ra (insn_in : std_ulogic_vector) return std_ulogic_vector is
60 begin
61 return insn_in(20 downto 16);
62 end;
63
64 function insn_rb (insn_in : std_ulogic_vector) return std_ulogic_vector is
65 begin
66 return insn_in(15 downto 11);
67 end;
68
69 function insn_rcreg (insn_in : std_ulogic_vector) return std_ulogic_vector is
70 begin
71 return insn_in(10 downto 6);
72 end;
73
74 function insn_si (insn_in : std_ulogic_vector) return std_ulogic_vector is
75 begin
76 return insn_in(15 downto 0);
77 end;
78
79 function insn_ui (insn_in : std_ulogic_vector) return std_ulogic_vector is
80 begin
81 return insn_in(15 downto 0);
82 end;
83
84 function insn_l (insn_in : std_ulogic_vector) return std_ulogic is
85 begin
86 return insn_in(21);
87 end;
88
89 function insn_sh32 (insn_in : std_ulogic_vector) return std_ulogic_vector is
90 begin
91 return insn_in(15 downto 11);
92 end;
93
94 function insn_mb32 (insn_in : std_ulogic_vector) return std_ulogic_vector is
95 begin
96 return insn_in(10 downto 6);
97 end;
98
99 function insn_me32 (insn_in : std_ulogic_vector) return std_ulogic_vector is
100 begin
101 return insn_in(5 downto 1);
102 end;
103
104 function insn_li (insn_in : std_ulogic_vector) return std_ulogic_vector is
105 begin
106 return insn_in(25 downto 2);
107 end;
108
109 function insn_lk (insn_in : std_ulogic_vector) return std_ulogic is
110 begin
111 return insn_in(0);
112 end;
113
114 function insn_aa (insn_in : std_ulogic_vector) return std_ulogic is
115 begin
116 return insn_in(1);
117 end;
118
119 function insn_rc (insn_in : std_ulogic_vector) return std_ulogic is
120 begin
121 return insn_in(0);
122 end;
123
124 function insn_oe (insn_in : std_ulogic_vector) return std_ulogic is
125 begin
126 return insn_in(10);
127 end;
128
129 function insn_bd (insn_in : std_ulogic_vector) return std_ulogic_vector is
130 begin
131 return insn_in(15 downto 2);
132 end;
133
134 function insn_bf (insn_in : std_ulogic_vector) return std_ulogic_vector is
135 begin
136 return insn_in(25 downto 23);
137 end;
138
139 function insn_bfa (insn_in : std_ulogic_vector) return std_ulogic_vector is
140 begin
141 return insn_in(20 downto 18);
142 end;
143
144 function insn_cr (insn_in : std_ulogic_vector) return std_ulogic_vector is
145 begin
146 return insn_in(10 downto 1);
147 end;
148
149 function insn_bb (insn_in : std_ulogic_vector) return std_ulogic_vector is
150 begin
151 return insn_in(15 downto 11);
152 end;
153
154 function insn_ba (insn_in : std_ulogic_vector) return std_ulogic_vector is
155 begin
156 return insn_in(20 downto 16);
157 end;
158
159 function insn_bt (insn_in : std_ulogic_vector) return std_ulogic_vector is
160 begin
161 return insn_in(25 downto 21);
162 end;
163
164 function insn_fxm (insn_in : std_ulogic_vector) return std_ulogic_vector is
165 begin
166 return insn_in(19 downto 12);
167 end;
168
169 function insn_bo (insn_in : std_ulogic_vector) return std_ulogic_vector is
170 begin
171 return insn_in(25 downto 21);
172 end;
173
174 function insn_bi (insn_in : std_ulogic_vector) return std_ulogic_vector is
175 begin
176 return insn_in(20 downto 16);
177 end;
178
179 function insn_bh (insn_in : std_ulogic_vector) return std_ulogic_vector is
180 begin
181 return insn_in(12 downto 11);
182 end;
183
184 function insn_d (insn_in : std_ulogic_vector) return std_ulogic_vector is
185 begin
186 return insn_in(15 downto 0);
187 end;
188
189 function insn_ds (insn_in : std_ulogic_vector) return std_ulogic_vector is
190 begin
191 return insn_in(15 downto 2);
192 end;
193
194 function insn_dq (insn_in : std_ulogic_vector) return std_ulogic_vector is
195 begin
196 return insn_in(15 downto 4);
197 end;
198
199 function insn_dx (insn_in : std_ulogic_vector) return std_ulogic_vector is
200 begin
201 return insn_in(15 downto 6) & insn_in(20 downto 16) & insn_in(0);
202 end;
203
204 function insn_to (insn_in : std_ulogic_vector) return std_ulogic_vector is
205 begin
206 return insn_in(25 downto 21);
207 end;
208
209 function insn_bc (insn_in : std_ulogic_vector) return std_ulogic_vector is
210 begin
211 return insn_in(10 downto 6);
212 end;
213
214 function insn_sh (insn_in : std_ulogic_vector) return std_ulogic_vector is
215 begin
216 return insn_in(1) & insn_in(15 downto 11);
217 end;
218
219 function insn_me (insn_in : std_ulogic_vector) return std_ulogic_vector is
220 begin
221 return insn_in(5) & insn_in(10 downto 6);
222 end;
223
224 function insn_mb (insn_in : std_ulogic_vector) return std_ulogic_vector is
225 begin
226 return insn_in(5) & insn_in(10 downto 6);
227 end;
228
229 function insn_frt(insn_in : std_ulogic_vector) return std_ulogic_vector is
230 begin
231 return insn_in(25 downto 21);
232 end;
233
234 function insn_fra(insn_in : std_ulogic_vector) return std_ulogic_vector is
235 begin
236 return insn_in(20 downto 16);
237 end;
238
239 function insn_frb(insn_in : std_ulogic_vector) return std_ulogic_vector is
240 begin
241 return insn_in(15 downto 11);
242 end;
243
244 function insn_frc(insn_in : std_ulogic_vector) return std_ulogic_vector is
245 begin
246 return insn_in(10 downto 6);
247 end;
248
249 function insn_u(insn_in : std_ulogic_vector) return std_ulogic_vector is
250 begin
251 return insn_in(15 downto 12);
252 end;
253 end package body insn_helpers;