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