From 1530cab6de64d5e4e6e1e301e1edb6326eb8cb01 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 4 Feb 2017 10:59:49 +0000 Subject: [PATCH] [mips]- added sim stuff and lto git-svn-id: http://moon:8086/svn/mips@136 a8ebac50-d88d-4704-bea3-6648445a41b3 --- src/Makefile | 18 +++++++++++++++--- src/bootloader/Makefile | 5 +++-- src/bootloader/bootloader.c | 2 +- src/libsys/Makefile | 1 + src/testbench_denano.c | 2 +- toolchain/make.sh | 4 ++-- 6 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/Makefile b/src/Makefile index 58b8616..5250fa1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -16,7 +16,7 @@ endif BUILD_DIR=build/$(BOARD)/$(ENDIANESS) LSYS_BUILD_DIR=libsys/build/$(BOARD)/$(ENDIANESS) -CFLAGS:=$(ENDIAN_FLAGS) -Tlink/link.ld -g -msoft-float -O2 -march=r3000 -I. -Ilibsys -Ilibsys/boards/$(BOARD) -L$(LSYS_BUILD_DIR) -Wl,-M +CFLAGS:=$(ENDIAN_FLAGS) -G 0 -Tlink/link.ld -g -msoft-float -O2 -march=r3000 -I. -Ilibsys -Ilibsys/boards/$(BOARD) -L$(LSYS_BUILD_DIR) -Wl,-M ifeq ($(TLB),yes) CFLAGS+=-DSYS_IO_BASE=0xAC000000 -DSDRAM_BASE=0x80000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x88000000 else @@ -40,9 +40,12 @@ OBJDUMP=mips-elf-objdump OBJCOPY=mips-elf-objcopy PROG-ml402 = $(addprefix $(BUILD_DIR)/, hello.elf testbench.elf test_irq.elf dhry.elf queens.elf stanford.elf paranoia.elf rmd160_test.elf Bessel.elf whet.elf phrasen.elf dttl.elf richards_benchmark.elf test_exception.elf life.elf r3.elf gunzip.elf basic_math.elf jman_patches.elf jman_patchmeshes.elf jman_polys.elf test_hpi.elf test_vga.elf test_fft.elf) - PROG-denano = $(addprefix $(BUILD_DIR)/, hello.elf dhry.elf queens.elf stanford.elf paranoia.elf rmd160_test.elf Bessel.elf whet.elf phrasen.elf dttl.elf richards_benchmark.elf test_exception.elf testbench_denano.elf) - +PROG-sim = $(addprefix $(BUILD_DIR)/, hello.elf ICacheTest.elf) +CFLAGS-sim := -flto -O0 + +CFLAGS += $(CFLAGS-$(BOARD)) + all: $(PROG-$(BOARD)) $(BUILD_DIR): @@ -66,6 +69,15 @@ $(BUILD_DIR)/hello.elf: $(BUILD_DIR) hello.c cat $@.srec | $(PACKHEX) > $@.pack $(OBJCOPY) -O ihex -I binary $@.flash.bin $@.hex +$(BUILD_DIR)/ICacheTest.elf: $(BUILD_DIR) ICacheTest.c + $(CC) -O0 $(CFLAGS) -o $@ ICacheTest.c $(LIBS) >$@.map + $(OBJDUMP) -d $@ > $@.dis + $(OBJCOPY) $@ -O binary $@.bin + $(OBJCOPY) -O srec $@ $@.srec + $(FLASHGEN) $@.bin $(ENDIAN_FLAGS) + cat $@.srec | $(PACKHEX) > $@.pack + $(OBJCOPY) -O ihex -I binary $@.flash.bin $@.hex + $(BUILD_DIR)/blittertest.elf: $(BUILD_DIR) blittertest.c $(CC) $(CFLAGS) -o $@ -Os blittertest.c $(LIBS) >$@.map $(OBJDUMP) -d $@ > $@.dis diff --git a/src/bootloader/Makefile b/src/bootloader/Makefile index 78ff4d5..4f3b490 100644 --- a/src/bootloader/Makefile +++ b/src/bootloader/Makefile @@ -1,5 +1,5 @@ # environment vaiables read: -# BOARD = {ml402, denano} +# BOARD = {ml402, denano, sim} # TLB = {no, yes} # ENDIANESS = {eb, el} BOARD ?= ml402 @@ -50,7 +50,8 @@ all: $(BUILD_DIR) $(BUILD_DIR)/bootloader.elf $(BUILD_DIR)/bootloader_with_flash OBJS-ml402=$(addprefix $(BUILD_DIR)/, startup.o kernel.o cop0.o libsys.o srec.o board.o uart.o $(DBG_OBJ)) OBJS-denano=$(addprefix $(BUILD_DIR)/, startup.o kernel.o cop0.o libsys.o srec.o board.o uart.o $(DBG_OBJ)) - +OBJS-sim=$(addprefix $(BUILD_DIR)/, startup.o kernel.o cop0.o libsys.o srec.o board.o uart.o $(DBG_OBJ)) + $(BUILD_DIR)/cop0.o : ../libsys/cop0.c $(CC) $(CFLAGS) -c -o $@ $< diff --git a/src/bootloader/bootloader.c b/src/bootloader/bootloader.c index 8d13ddb..04fa849 100644 --- a/src/bootloader/bootloader.c +++ b/src/bootloader/bootloader.c @@ -5,7 +5,7 @@ #define MAGIC_EB 0x4A464931 // "JFI1" in big-endian; #define MAGIC_EL 0x3149464A // "JFI1" in little-endian; -extern uint32_t getBootOffset(uint32_t sel); +extern uint32_t getBootOffset(uint32_t sel) __attribute__ ((used)); typedef struct _sflash_img_hdr_t { diff --git a/src/libsys/Makefile b/src/libsys/Makefile index 0b557d9..d7795da 100644 --- a/src/libsys/Makefile +++ b/src/libsys/Makefile @@ -49,6 +49,7 @@ FLASHGEN=flashgen OBJS-ml402=$(addprefix $(BUILD_DIR)/, libsys.o xcpt.o syscalls.o cop0.o irq.o $(DBG_OBJ) console.o uart.o board.o gpio.o mips_ps2.o mips_gfx.o screen.o) OBJS-denano=$(addprefix $(BUILD_DIR)/, libsys.o xcpt.o syscalls.o cop0.o irq.o $(DBG_OBJ) console.o uart.o board.o gpio.o) +OBJS-sim=$(addprefix $(BUILD_DIR)/, libsys.o xcpt.o syscalls.o cop0.o irq.o $(DBG_OBJ) console.o uart.o board.o gpio.o) all: $(BUILD_DIR) $(BUILD_DIR)/libsys.a diff --git a/src/testbench_denano.c b/src/testbench_denano.c index d4e9642..802fde7 100644 --- a/src/testbench_denano.c +++ b/src/testbench_denano.c @@ -20,7 +20,7 @@ extern int paranoia(int argc, char **argv); gpio_if_t gpio_if; -uint32_t test_icache_instr[] = +const uint32_t test_icache_instr[] = { 0x27bdfff8, // addiu sp,sp,-8 0xafbe0004, // sw s8,4(sp) diff --git a/toolchain/make.sh b/toolchain/make.sh index 7c98218..437e8b4 100644 --- a/toolchain/make.sh +++ b/toolchain/make.sh @@ -31,7 +31,7 @@ if [ ! -e ./$SRC_BINUTILS-build ]; then echo Building $SRC_BINUTILS mkdir -p $SRC_BINUTILS-build cd $SRC_BINUTILS-build - ../$SRC_BINUTILS/configure --target=$TARGET --prefix=$PREFIX || exit 1 + ../$SRC_BINUTILS/configure --target=$TARGET --prefix=$PREFIX --enable-plugins --enable-lto || exit 1 make -j4 || exit 1 make install || exit 1 cd .. @@ -171,7 +171,7 @@ if [ ! -e ./$SRC_GCC-build ]; then echo Building $SRC_GCC mkdir -p $SRC_GCC-build cd $SRC_GCC-build - ../$SRC_GCC/configure --target=$TARGET --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-float=soft --with-newlib --verbose --enable-languages="c,c++" --with-gnu-as --with-gnu-ld || exit 1 + ../$SRC_GCC/configure --target=$TARGET --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-float=soft --with-newlib --verbose --enable-languages="c,c++" --with-gnu-as --with-gnu-ld --enable-lto || exit 1 make -j4 all || exit 1 make info || exit 1 make install || exit 1