more work towards RVC 1.8
[riscv-isa-sim.git] / riscv / riscv.mk.in
1 get_insn_list = $(shell grep ^DECLARE_INSN $(1) | sed 's/DECLARE_INSN(\(.*\),.*,.*)/\1/')
2 get_opcode = $(shell grep ^DECLARE_INSN.*\\\<$(2)\\\> $(1) | sed 's/DECLARE_INSN(.*,\(.*\),.*)/\1/')
3
4 riscv_subproject_deps = \
5 softfloat \
6
7 riscv_install_prog_srcs = \
8
9 riscv_hdrs = \
10 htif.h \
11 common.h \
12 decode.h \
13 disasm.h \
14 mmu.h \
15 processor.h \
16 sim.h \
17 trap.h \
18 encoding.h \
19 cachesim.h \
20 memtracer.h \
21 extension.h \
22 rocc.h \
23 insn_template.h \
24 mulhi.h \
25
26 riscv_precompiled_hdrs = \
27 insn_template.h \
28
29 riscv_srcs = \
30 htif.cc \
31 processor.cc \
32 execute.cc \
33 sim.cc \
34 interactive.cc \
35 trap.cc \
36 cachesim.cc \
37 mmu.cc \
38 disasm.cc \
39 extension.cc \
40 extensions.cc \
41 rocc.cc \
42 regnames.cc \
43 $(riscv_gen_srcs) \
44
45 riscv_test_srcs =
46
47 riscv_gen_hdrs = \
48 icache.h \
49 insn_list.h \
50
51 riscv_insn_list = \
52 add \
53 addi \
54 addiw \
55 addw \
56 amoadd_d \
57 amoadd_w \
58 amoand_d \
59 amoand_w \
60 amomax_d \
61 amomaxu_d \
62 amomaxu_w \
63 amomax_w \
64 amomin_d \
65 amominu_d \
66 amominu_w \
67 amomin_w \
68 amoor_d \
69 amoor_w \
70 amoswap_d \
71 amoswap_w \
72 amoxor_d \
73 amoxor_w \
74 and \
75 andi \
76 auipc \
77 beq \
78 bge \
79 bgeu \
80 blt \
81 bltu \
82 bne \
83 c_add \
84 c_addi4spn \
85 c_addi \
86 c_addw \
87 c_and \
88 c_andi \
89 c_beqz \
90 c_bnez \
91 c_ebreak \
92 c_fld \
93 c_fldsp \
94 c_flw \
95 c_flwsp \
96 c_fsd \
97 c_fsdsp \
98 c_fsw \
99 c_fswsp \
100 c_jal \
101 c_jalr \
102 c_j \
103 c_jr \
104 c_li \
105 c_lui \
106 c_lw \
107 c_lwsp \
108 c_mv \
109 c_or \
110 c_sll \
111 c_slli \
112 c_srai \
113 c_srl \
114 c_srli \
115 c_sub \
116 c_subw \
117 c_xor \
118 csrrc \
119 csrrci \
120 csrrs \
121 csrrsi \
122 csrrw \
123 csrrwi \
124 c_sw \
125 c_swsp \
126 div \
127 divu \
128 divuw \
129 divw \
130 fadd_d \
131 fadd_s \
132 fclass_d \
133 fclass_s \
134 fcvt_d_l \
135 fcvt_d_lu \
136 fcvt_d_s \
137 fcvt_d_w \
138 fcvt_d_wu \
139 fcvt_l_d \
140 fcvt_l_s \
141 fcvt_lu_d \
142 fcvt_lu_s \
143 fcvt_s_d \
144 fcvt_s_l \
145 fcvt_s_lu \
146 fcvt_s_w \
147 fcvt_s_wu \
148 fcvt_w_d \
149 fcvt_w_s \
150 fcvt_wu_d \
151 fcvt_wu_s \
152 fdiv_d \
153 fdiv_s \
154 fence \
155 fence_i \
156 feq_d \
157 feq_s \
158 fld \
159 fle_d \
160 fle_s \
161 flt_d \
162 flt_s \
163 flw \
164 fmadd_d \
165 fmadd_s \
166 fmax_d \
167 fmax_s \
168 fmin_d \
169 fmin_s \
170 fmsub_d \
171 fmsub_s \
172 fmul_d \
173 fmul_s \
174 fmv_d_x \
175 fmv_s_x \
176 fmv_x_d \
177 fmv_x_s \
178 fnmadd_d \
179 fnmadd_s \
180 fnmsub_d \
181 fnmsub_s \
182 fsd \
183 fsgnj_d \
184 fsgnjn_d \
185 fsgnjn_s \
186 fsgnj_s \
187 fsgnjx_d \
188 fsgnjx_s \
189 fsqrt_d \
190 fsqrt_s \
191 fsub_d \
192 fsub_s \
193 fsw \
194 hrts \
195 jal \
196 jalr \
197 lb \
198 lbu \
199 ld \
200 lh \
201 lhu \
202 lr_d \
203 lr_w \
204 lui \
205 lw \
206 lwu \
207 mrth \
208 mrts \
209 mul \
210 mulh \
211 mulhsu \
212 mulhu \
213 mulw \
214 or \
215 ori \
216 rem \
217 remu \
218 remuw \
219 remw \
220 sb \
221 sbreak \
222 scall \
223 sc_d \
224 sc_w \
225 sd \
226 sfence_vm \
227 sh \
228 sll \
229 slli \
230 slliw \
231 sllw \
232 slt \
233 slti \
234 sltiu \
235 sltu \
236 sra \
237 srai \
238 sraiw \
239 sraw \
240 sret \
241 srl \
242 srli \
243 srliw \
244 srlw \
245 sub \
246 subw \
247 sw \
248 wfi \
249 xor \
250 xori \
251
252 riscv_gen_srcs = \
253 $(addsuffix .cc,$(riscv_insn_list))
254
255 icache_entries := `grep "ICACHE_ENTRIES =" $(src_dir)/riscv/mmu.h | sed 's/.* = \(.*\);/\1/'`
256
257 icache.h: mmu.h
258 $(src_dir)/riscv/gen_icache $(icache_entries) > $@.tmp
259 mv $@.tmp $@
260
261 insn_list.h: $(src_dir)/riscv/riscv.mk.in
262 for insn in $(foreach insn,$(riscv_insn_list),$(subst .,_,$(insn))) ; do \
263 printf 'DEFINE_INSN(%s)\n' "$${insn}" ; \
264 done > $@.tmp
265 mv $@.tmp $@
266
267 $(riscv_gen_srcs): %.cc: insns/%.h insn_template.cc
268 sed 's/NAME/$(subst .cc,,$@)/' $(src_dir)/riscv/insn_template.cc | sed 's/OPCODE/$(call get_opcode,$(src_dir)/riscv/encoding.h,$(subst .cc,,$@))/' > $@
269
270 riscv_junk = \
271 $(riscv_gen_srcs) \