build/
+*.gch
autom4te.cache/
.*.swp
# Build the object files for this subproject
+$(2)_pch := $$(patsubst %.h, %.h.gch, $$($(2)_precompiled_hdrs))
$(2)_objs := $$(patsubst %.cc, %.o, $$($(2)_srcs))
$(2)_c_objs := $$(patsubst %.c, %.o, $$($(2)_c_srcs))
$(2)_deps := $$(patsubst %.o, %.d, $$($(2)_objs))
$(2)_c_deps := $$(patsubst %.o, %.d, $$($(2)_c_objs))
-$$($(2)_objs) : %.o : %.cc $$($(2)_gen_hdrs)
+$$($(2)_pch) : %.h.gch : %.h
+ $(COMPILE) $$<
+$$($(2)_objs) : %.o : %.cc $$($(2)_gen_hdrs) $$($(2)_pch)
$(COMPILE) -c $$<
$$($(2)_c_objs) : %.o : %.c $$($(2)_gen_hdrs)
$(COMPILE_C) -c $$<
-$(2)_junk += $$($(2)_objs) $$($(2)_c_objs) $$($(2)_deps) $$($(2)_c_deps) $$($(2)_gen_hdrs)
+$(2)_junk += $$(addprefix $(src_dir)/$(1)/, $$($(2)_pch)) \
+ $$($(2)_objs) $$($(2)_c_objs) $$($(2)_deps) $$($(2)_c_deps) $$($(2)_gen_hdrs)
# Reverse the dependency list so that a given subproject only depends on
# subprojects listed to its right. This is the correct order for linking
#include "hwacha.h"
#include "hwacha_xcpt.h"
+#include "mmu.h"
#define XS1 (xs1)
#define XS2 (xs2)
decode_hwacha_ut.h \
opcodes_hwacha.h \
opcodes_hwacha_ut.h \
+ insn_template_hwacha.h \
+ insn_template_hwacha_ut.h \
+
+hwacha_precompiled_hdrs = \
+ insn_template_hwacha.h \
+ insn_template_hwacha_ut.h \
hwacha_srcs = \
hwacha.cc \
// See LICENSE for license details.
-
-#include "config.h"
-#include "processor.h"
-#include "mmu.h"
-#include "hwacha.h"
-#include "decode_hwacha.h"
-#include "encodings_hwacha.h"
-#include "rocc.h"
-#include <assert.h>
+#include "insn_template_hwacha.h"
reg_t hwacha_NAME(processor_t* p, insn_t insn, reg_t pc)
{
--- /dev/null
+#include "hwacha.h"
+#include "decode_hwacha.h"
+#include "encodings_hwacha.h"
+#include "rocc.h"
+#include <assert.h>
// See LICENSE for license details.
-
-#include "config.h"
-#include "processor.h"
-#include "mmu.h"
-#include "softfloat.h"
-#include "platform.h" // softfloat isNaNF32UI, etc.
-#include "internals.h" // ditto
-#include "hwacha.h"
-#include "decode_hwacha_ut.h"
-#include <assert.h>
+#include "insn_template_hwacha_ut.h"
reg_t hwacha_NAME(processor_t* p, insn_t insn, reg_t pc)
{
--- /dev/null
+#include "hwacha.h"
+#include "decode_hwacha_ut.h"
+#include "softfloat.h"
+#include "platform.h" // softfloat isNaNF32UI, etc.
+#include "internals.h" // ditto
+#include <assert.h>
// See LICENSE for license details.
-#include "processor.h"
-#include "config.h"
-#include "mmu.h"
-#include "softfloat.h"
-#include "platform.h" // softfloat isNaNF32UI, etc.
-#include "internals.h" // ditto
-#include <assert.h>
+#include "insn_template.h"
reg_t rv32_NAME(processor_t* p, insn_t insn, reg_t pc)
{
--- /dev/null
+#include "mmu.h"
+#include "softfloat.h"
+#include "platform.h" // softfloat isNaNF32UI, etc.
+#include "internals.h" // ditto
+#include <assert.h>
extension.h \
rocc.h \
dummy-rocc.h \
+ insn_template.h \
+
+riscv_precompiled_hdrs = \
+ insn_template.h \
riscv_srcs = \
htif.cc \