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