Split ERET into URET, SRET, HRET, MRET
[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 devices.cc \
44 $(riscv_gen_srcs) \
45
46 riscv_test_srcs =
47
48 riscv_gen_hdrs = \
49 icache.h \
50 insn_list.h \
51
52 riscv_insn_list = \
53 add \
54 addi \
55 addiw \
56 addw \
57 amoadd_d \
58 amoadd_w \
59 amoand_d \
60 amoand_w \
61 amomax_d \
62 amomaxu_d \
63 amomaxu_w \
64 amomax_w \
65 amomin_d \
66 amominu_d \
67 amominu_w \
68 amomin_w \
69 amoor_d \
70 amoor_w \
71 amoswap_d \
72 amoswap_w \
73 amoxor_d \
74 amoxor_w \
75 and \
76 andi \
77 auipc \
78 beq \
79 bge \
80 bgeu \
81 blt \
82 bltu \
83 bne \
84 c_add \
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_lw \
108 c_lwsp \
109 c_mv \
110 c_or \
111 c_slli \
112 c_srai \
113 c_srli \
114 c_sub \
115 c_subw \
116 c_xor \
117 csrrc \
118 csrrci \
119 csrrs \
120 csrrsi \
121 csrrw \
122 csrrwi \
123 c_sw \
124 c_swsp \
125 div \
126 divu \
127 divuw \
128 divw \
129 ebreak \
130 ecall \
131 fadd_d \
132 fadd_s \
133 fclass_d \
134 fclass_s \
135 fcvt_d_l \
136 fcvt_d_lu \
137 fcvt_d_s \
138 fcvt_d_w \
139 fcvt_d_wu \
140 fcvt_l_d \
141 fcvt_l_s \
142 fcvt_lu_d \
143 fcvt_lu_s \
144 fcvt_s_d \
145 fcvt_s_l \
146 fcvt_s_lu \
147 fcvt_s_w \
148 fcvt_s_wu \
149 fcvt_w_d \
150 fcvt_w_s \
151 fcvt_wu_d \
152 fcvt_wu_s \
153 fdiv_d \
154 fdiv_s \
155 fence \
156 fence_i \
157 feq_d \
158 feq_s \
159 fld \
160 fle_d \
161 fle_s \
162 flt_d \
163 flt_s \
164 flw \
165 fmadd_d \
166 fmadd_s \
167 fmax_d \
168 fmax_s \
169 fmin_d \
170 fmin_s \
171 fmsub_d \
172 fmsub_s \
173 fmul_d \
174 fmul_s \
175 fmv_d_x \
176 fmv_s_x \
177 fmv_x_d \
178 fmv_x_s \
179 fnmadd_d \
180 fnmadd_s \
181 fnmsub_d \
182 fnmsub_s \
183 fsd \
184 fsgnj_d \
185 fsgnjn_d \
186 fsgnjn_s \
187 fsgnj_s \
188 fsgnjx_d \
189 fsgnjx_s \
190 fsqrt_d \
191 fsqrt_s \
192 fsub_d \
193 fsub_s \
194 fsw \
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 mret \
208 mul \
209 mulh \
210 mulhsu \
211 mulhu \
212 mulw \
213 or \
214 ori \
215 rem \
216 remu \
217 remuw \
218 remw \
219 sb \
220 sc_d \
221 sc_w \
222 sd \
223 sfence_vm \
224 sh \
225 sll \
226 slli \
227 slliw \
228 sllw \
229 slt \
230 slti \
231 sltiu \
232 sltu \
233 sra \
234 srai \
235 sraiw \
236 sraw \
237 sret \
238 srl \
239 srli \
240 srliw \
241 srlw \
242 sub \
243 subw \
244 sw \
245 wfi \
246 xor \
247 xori \
248
249 riscv_gen_srcs = \
250 $(addsuffix .cc,$(riscv_insn_list))
251
252 icache_entries := `grep "ICACHE_ENTRIES =" $(src_dir)/riscv/mmu.h | sed 's/.* = \(.*\);/\1/'`
253
254 icache.h: mmu.h
255 $(src_dir)/riscv/gen_icache $(icache_entries) > $@.tmp
256 mv $@.tmp $@
257
258 insn_list.h: $(src_dir)/riscv/riscv.mk.in
259 for insn in $(foreach insn,$(riscv_insn_list),$(subst .,_,$(insn))) ; do \
260 printf 'DEFINE_INSN(%s)\n' "$${insn}" ; \
261 done > $@.tmp
262 mv $@.tmp $@
263
264 $(riscv_gen_srcs): %.cc: insns/%.h insn_template.cc
265 sed 's/NAME/$(subst .cc,,$@)/' $(src_dir)/riscv/insn_template.cc | sed 's/OPCODE/$(call get_opcode,$(src_dir)/riscv/encoding.h,$(subst .cc,,$@))/' > $@
266
267 riscv_junk = \
268 $(riscv_gen_srcs) \