MIPS/resources/soft/perf_func/Makefile
Paul Pan 7b33e4213a a big update
1. add test soft
2. modify verilator (TODO: crossbar need to replace)
3. fix CP0: now CU0 is always 1
4. Controller: cacheop
5. Controller: fix TEN
6. mycpu_top fix CP0_i
7. fix AXI.sv
8. fix AXIReader.sv
9. fix AXIWriter.sv: getting the correct data and length
10. MU: fix cache writeback, fix mem data mux, fix writer address, fix read request
2022-07-29 18:25:58 +08:00

158 lines
3.9 KiB
Makefile

#export LD_PRELOAD =
MEM_DEF= -DMEMSTART=0x80040000 -DMEMSIZE=0x10000
AFLAGS = -O2 -fno-pic -mno-abicalls -fno-builtin -mips1 -I include -msoft-float
export CROSS_COMPILE ?= mipsel-linux-gnu-
export MEM_DEF
OBJDIR = obj
ALLBENCH.a = bench/bitcount/bitcount.a
ALLBENCH.a += bench/bubble_sort/bubble_sort.a
ALLBENCH.a += bench/coremark/coremark.a
ALLBENCH.a += bench/crc32/crc32.a
ALLBENCH.a += bench/dhrystone/dhrystone.a
ALLBENCH.a += bench/quick_sort/quick_sort.a
ALLBENCH.a += bench/select_sort/select_sort.a
ALLBENCH.a += bench/sha/sha.a
ALLBENCH.a += bench/stream_copy/stream_copy.a
ALLBENCH.a += bench/stringsearch/stringsearch.a
all:
make bitcount
make bubble_sort
make coremark
make crc32
make dhrystone
make quick_sort
make select_sort
make sha
make stream_copy
make stringsearch
make allbench
bitcount: AFLAGS+=-DCMP_FUNC=1
bitcount: start.o
$(eval export BENCH = $@)
@echo $(AFLAGS)
make target_bench
bubble_sort: AFLAGS+=-DCMP_FUNC=2
bubble_sort: start.o
$(eval export BENCH = $@)
@echo $(AFLAGS)
make target_bench
coremark: AFLAGS+=-DCMP_FUNC=3
coremark: start.o
$(eval export BENCH = $@)
make target_bench
crc32: AFLAGS+=-DCMP_FUNC=4
crc32: start.o
$(eval export BENCH = $@)
make target_bench
dhrystone: AFLAGS+=-DCMP_FUNC=5
dhrystone: start.o
$(eval export BENCH = $@)
make target_bench
quick_sort: AFLAGS+=-DCMP_FUNC=6
quick_sort: start.o
$(eval export BENCH = $@)
make target_bench
select_sort: AFLAGS+=-DCMP_FUNC=7
select_sort: start.o
$(eval export BENCH = $@)
make target_bench
sha: AFLAGS+=-DCMP_FUNC=8
sha: start.o
$(eval export BENCH = $@)
make target_bench
stream_copy: AFLAGS+=-DCMP_FUNC=9
stream_copy: start.o
$(eval export BENCH = $@)
make target_bench
stringsearch: AFLAGS+=-DCMP_FUNC=10
stringsearch: start.o
$(eval export BENCH = $@)
make target_bench
allbench: AFLAGS+=-DCMP_FUNC=0
allbench: start.o
$(eval export BENCH_DIR = $@)
$(eval export BENCH_LIB = $(ALLBENCH.a))
make -C bench/bitcount
make -C bench/bubble_sort
make -C bench/coremark
make -C bench/crc32
make -C bench/dhrystone
make -C bench/quick_sort
make -C bench/select_sort
make -C bench/sha
make -C bench/stream_copy
make -C bench/stringsearch
mkdir -p $(OBJDIR)/allbench
make generate
libtinyc.a :
make -C lib $@
target_bench:
$(eval export BENCH_DIR = $(BENCH))
$(eval export BENCH_LIB = bench/$(BENCH)/$(BENCH).a)
make -C bench/$(BENCH_DIR)
mkdir -p $(OBJDIR)/$(BENCH_DIR)
make generate
generate: inst_data.bin convert
./convert inst_data.bin $(OBJDIR)/$(BENCH_DIR)/
rm start.o
inst_data.bin: main.elf
${CROSS_COMPILE}objcopy -O binary -j .text -j .data $(OBJDIR)/$(BENCH_DIR)/$< $(OBJDIR)/$(BENCH_DIR)/$@
#main.data: main.elf
# ${CROSS_COMPILE}objcopy -O binary -j .data $(OBJDIR)/$(BENCH_DIR)/$< $(OBJDIR)/$(BENCH_DIR)/$@
main.elf: start.o libtinyc.a bin.lds
${CROSS_COMPILE}ld -g -T bin.lds start.o $(BENCH_LIB) lib/libtinyc.a -o $(OBJDIR)/$(BENCH_DIR)/$@
${CROSS_COMPILE}objdump -alD $(OBJDIR)/$(BENCH_DIR)/$@ > $(OBJDIR)/$(BENCH_DIR)/test.s
bin.lds: bin.lds.S
${CROSS_COMPILE}gcc -E -P -Umips -D_LOADER -U_MAIN $(MEM_DEF) $< -o $@
start.o: start.S
${CROSS_COMPILE}gcc $(AFLAGS) -c $< -nostdinc -nostdlib
convert: convert.c
gcc -o convert convert.c
clean:
rm -f *.o *.bin *.elf *.a testbin *.s *.vlog *.coe *.data *.mif
rm -rf obj
make -C lib clean
make -C bench clean
reset:
make clean
rm -f bin.lds convert
help:
@echo "################################################################"
@echo "### help for compiling memory game"
@echo "################################################################"
@echo "### options:"
@echo "### make : get compiled result, which is saved in ./obj"
@echo "### make clean: remove *.o, *.a, and ./obj"
@echo "### make reset: "make clean" and remove convert, bin.lds"
@echo "### make help : show help information"
@echo "###############################################################"
#-include rules.make