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_addi16sp \
85 c_addi4spn \
86 c_addi \
87 c_addw \
88 c_and \
89 c_andi \
90 c_beqz \
91 c_bnez \
92 c_ebreak \
93 c_fld \
94 c_fldsp \
95 c_flw \
96 c_flwsp \
97 c_fsd \
98 c_fsdsp \
99 c_fsw \
100 c_fswsp \
101 c_jal \
102 c_jalr \
103 c_j \
104 c_jr \
105 c_li \
106 c_lui \
107 c_lbu \
108 c_lw \
109 c_lwsp \
110 c_mv \
111 c_or \
112 c_sll \
113 c_slli \
114 c_srai \
115 c_srl \
116 c_srli \
117 c_sub \
118 c_subw \
119 c_xor \
120 csrrc \
121 csrrci \
122 csrrs \
123 csrrsi \
124 csrrw \
125 csrrwi \
126 c_sw \
127 c_swsp \
128 div \
129 divu \
130 divuw \
131 divw \
132 fadd_d \
133 fadd_s \
134 fclass_d \
135 fclass_s \
136 fcvt_d_l \
137 fcvt_d_lu \
138 fcvt_d_s \
139 fcvt_d_w \
140 fcvt_d_wu \
141 fcvt_l_d \
142 fcvt_l_s \
143 fcvt_lu_d \
144 fcvt_lu_s \
145 fcvt_s_d \
146 fcvt_s_l \
147 fcvt_s_lu \
148 fcvt_s_w \
149 fcvt_s_wu \
150 fcvt_w_d \
151 fcvt_w_s \
152 fcvt_wu_d \
153 fcvt_wu_s \
154 fdiv_d \
155 fdiv_s \
156 fence \
157 fence_i \
158 feq_d \
159 feq_s \
160 fld \
161 fle_d \
162 fle_s \
163 flt_d \
164 flt_s \
165 flw \
166 fmadd_d \
167 fmadd_s \
168 fmax_d \
169 fmax_s \
170 fmin_d \
171 fmin_s \
172 fmsub_d \
173 fmsub_s \
174 fmul_d \
175 fmul_s \
176 fmv_d_x \
177 fmv_s_x \
178 fmv_x_d \
179 fmv_x_s \
180 fnmadd_d \
181 fnmadd_s \
182 fnmsub_d \
183 fnmsub_s \
184 fsd \
185 fsgnj_d \
186 fsgnjn_d \
187 fsgnjn_s \
188 fsgnj_s \
189 fsgnjx_d \
190 fsgnjx_s \
191 fsqrt_d \
192 fsqrt_s \
193 fsub_d \
194 fsub_s \
195 fsw \
196 hrts \
197 jal \
198 jalr \
199 lb \
200 lbu \
201 ld \
202 lh \
203 lhu \
204 lr_d \
205 lr_w \
206 lui \
207 lw \
208 lwu \
209 mrth \
210 mrts \
211 mul \
212 mulh \
213 mulhsu \
214 mulhu \
215 mulw \
216 or \
217 ori \
218 rem \
219 remu \
220 remuw \
221 remw \
222 sb \
223 sbreak \
224 scall \
225 sc_d \
226 sc_w \
227 sd \
228 sfence_vm \
229 sh \
230 sll \
231 slli \
232 slliw \
233 sllw \
234 slt \
235 slti \
236 sltiu \
237 sltu \
238 sra \
239 srai \
240 sraiw \
241 sraw \
242 sret \
243 srl \
244 srli \
245 srliw \
246 srlw \
247 sub \
248 subw \
249 sw \
250 wfi \
251 xor \
252 xori \
253
254 riscv_gen_srcs = \
255 $(addsuffix .cc,$(riscv_insn_list))
256
257 icache_entries := `grep "ICACHE_ENTRIES =" $(src_dir)/riscv/mmu.h | sed 's/.* = \(.*\);/\1/'`
258
259 icache.h: mmu.h
260 $(src_dir)/riscv/gen_icache $(icache_entries) > $@.tmp
261 mv $@.tmp $@
262
263 insn_list.h: $(src_dir)/riscv/riscv.mk.in
264 for insn in $(foreach insn,$(riscv_insn_list),$(subst .,_,$(insn))) ; do \
265 printf 'DEFINE_INSN(%s)\n' "$${insn}" ; \
266 done > $@.tmp
267 mv $@.tmp $@
268
269 $(riscv_gen_srcs): %.cc: insns/%.h insn_template.cc
270 sed 's/NAME/$(subst .cc,,$@)/' $(src_dir)/riscv/insn_template.cc | sed 's/OPCODE/$(call get_opcode,$(src_dir)/riscv/encoding.h,$(subst .cc,,$@))/' > $@
271
272 riscv_junk = \
273 $(riscv_gen_srcs) \