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