From d1e94c48212f7fff0ce9c452395855ae97bf3336 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 5 Apr 2021 12:25:53 +0000 Subject: [PATCH] - refactored - made changes due to new GCC git-svn-id: http://moon:8086/svn/mips@145 a8ebac50-d88d-4704-bea3-6648445a41b3 --- make/mips_app.mk | 44 +++++++++++++++++++ make/mips_lib.mk | 49 +++++++++++++++++++++ src/Makefile | 40 +---------------- src/delay_mips.c | 2 +- src/jman/vars.c | 6 +-- src/libsys/Makefile | 38 +---------------- src/link/{link.ld => link_ram.ld} | 0 src/link/{link_tlb.ld => link_ram_tlb.ld} | 0 src/link/link_rom.ld | 41 ++++++++++++++++++ src/link/link_rom_tlb.ld | 52 +++++++++++++++++++++++ 10 files changed, 193 insertions(+), 79 deletions(-) create mode 100644 make/mips_app.mk create mode 100644 make/mips_lib.mk rename src/link/{link.ld => link_ram.ld} (100%) rename src/link/{link_tlb.ld => link_ram_tlb.ld} (100%) create mode 100644 src/link/link_rom.ld create mode 100644 src/link/link_rom_tlb.ld diff --git a/make/mips_app.mk b/make/mips_app.mk new file mode 100644 index 0000000..55086eb --- /dev/null +++ b/make/mips_app.mk @@ -0,0 +1,44 @@ +# environment vaiables read: +# BOARD = {ml402, denano} +# TLB = {no, yes} +# ENDIANESS = {eb, el} +# DEBUGGER = {gdb, mips, rom} + +ifeq ($(TLB),yes) + SPECNAME=specs_tlb +else + SPECNAME=specs +endif + +ifeq ($(ENDIANESS),eb) + ENDIAN_FLAGS=-EB +else + ENDIAN_FLAGS=-EL +endif + +BUILD_DIR=build/$(BOARD)/$(ENDIANESS) +LSYS_BUILD_DIR=libsys/build/$(BOARD)/$(ENDIANESS) + +CFLAGS :=$(ENDIAN_FLAGS) -ffunction-sections -fdata-sections -Wl,--gc-sections -G 0 -Tlink/link_ram.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 + CFLAGS+=-DSYS_IO_BASE=0xA0000000 -DSDRAM_BASE=0x40000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x00000000 +endif + +ifeq ($(TLB),yes) + FLASHGEN=flashgen_tlb +else + FLASHGEN=flashgen +endif +PACKHEX=packhex + +LIBS=-lm -lc -lsys -lc + +AS=mips-elf-as +AR=mips-elf-ar +CC=mips-elf-gcc +LD=mips-elf-ld +OBJDUMP=mips-elf-objdump +OBJCOPY=mips-elf-objcopy + diff --git a/make/mips_lib.mk b/make/mips_lib.mk new file mode 100644 index 0000000..0ff6833 --- /dev/null +++ b/make/mips_lib.mk @@ -0,0 +1,49 @@ +# environment vaiables read: +# BOARD = {ml402, denano} +# TLB = {no, yes} +# ENDIANESS = {eb, el} +# DEBUGGER = {gdb, mips, rom} + +BOARD ?= ml402 +TLB ?= no +ENDIANESS ?= eb +DEBUGGER ?= mips + + +ifeq ($(ENDIANESS),el) + ENDIAN_FLAGS=-EL +else + ENDIAN_FLAGS=-EB +endif + +ifeq ($(DEBUGGER),gdb) + DBG_FLAGS := -DWITH_GDB_STUB + DBG_OBJ := gdb_stub.o +endif +ifeq ($(DEBUGGER),mips) + DBG_FLAGS := + DBG_OBJ := mips_dbg.o mips_dis.o +endif +ifeq ($(DEBUGGER),rom) + DBG_FLAGS := -DWITH_ROM_DEBUGGER +endif + + +CFLAGS=$(ENDIAN_FLAGS) -ffunction-sections -fdata-sections -g -msoft-float -O2 -march=r3000 -I. -Iboards/$(BOARD) -D$(BOARD) $(DBG_FLAGS) + +ifeq ($(TLB),yes) + CFLAGS+=-DSYS_IO_BASE=0xAC000000 -DSDRAM_BASE=0x80000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x88000000 +else + CFLAGS+=-DSYS_IO_BASE=0xA0000000 -DSDRAM_BASE=0x40000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x00000000 +endif + +BUILD_DIR=./build/$(BOARD)/$(ENDIANESS) + +AS=mips-elf-as +AR=mips-elf-ar +CC=mips-elf-gcc +LD=mips-elf-ld +OBJDUMP=mips-elf-objdump +OBJCOPY=mips-elf-objcopy +FLASHGEN=flashgen + diff --git a/src/Makefile b/src/Makefile index 382b153..39b8376 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,44 +1,8 @@ ENDIANESS ?=eb BOARD ?=ml402 -ifeq ($(TLB),yes) - SPECNAME=specs_tlb -else - SPECNAME=specs -endif - -ifeq ($(ENDIANESS),eb) - ENDIAN_FLAGS=-EB -else - ENDIAN_FLAGS=-EL -endif - -BUILD_DIR=build/$(BOARD)/$(ENDIANESS) -LSYS_BUILD_DIR=libsys/build/$(BOARD)/$(ENDIANESS) - -CFLAGS:=$(ENDIAN_FLAGS) -ffunction-sections -fdata-sections -Wl,--gc-sections -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 - CFLAGS+=-DSYS_IO_BASE=0xA0000000 -DSDRAM_BASE=0x40000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x00000000 -endif - -ifeq ($(TLB),yes) - FLASHGEN=$(MIPS_HOME)/tools/flashgen_tlb -else - FLASHGEN=$(MIPS_HOME)/tools/flashgen -endif -PACKHEX=$(MIPS_HOME)/tools/packhex - -LIBS=-lm -lc -lsys -lc - -AS=mips-elf-as -AR=mips-elf-ar -CC=mips-elf-gcc -LD=mips-elf-ld -OBJDUMP=mips-elf-objdump -OBJCOPY=mips-elf-objcopy - +include ../make/mips_app.mk + 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) diff --git a/src/delay_mips.c b/src/delay_mips.c index 9b20d86..fbc2d19 100644 --- a/src/delay_mips.c +++ b/src/delay_mips.c @@ -1,6 +1,6 @@ // MIPS delay. -__inline void delay(int loops) +void delay(unsigned int loops) { __asm ( diff --git a/src/jman/vars.c b/src/jman/vars.c index 21ecffa..576e839 100644 --- a/src/jman/vars.c +++ b/src/jman/vars.c @@ -71,7 +71,7 @@ ri_var_t* VarListFindByName(var_list_t *pObj, uint8_t *name) while(pVarList) { pVar = (ri_var_t*)pVarList->pData; - if (!stricmp(name, pVar->name)) + if (!strcasecmp(name, pVar->name)) { return pVar; } @@ -127,7 +127,7 @@ ri_var_t* VarListDeclare(var_list_t *pObj, uint8_t *name, uint8_t *cls, uint8_t pToken = VAR_CLASSES; while(*pToken) { - if (!stricmp(cls, *pToken)) + if (!strcasecmp(cls, *pToken)) { var.cls = *pToken; break; @@ -146,7 +146,7 @@ ri_var_t* VarListDeclare(var_list_t *pObj, uint8_t *name, uint8_t *cls, uint8_t pEclasses = VAR_ECLASSES; while(*pToken) { - if (!stricmp(type, *pToken)) + if (!strcasecmp(type, *pToken)) { var.type = *pToken; var.value_size = *pSize; diff --git a/src/libsys/Makefile b/src/libsys/Makefile index 9828941..60730a3 100644 --- a/src/libsys/Makefile +++ b/src/libsys/Makefile @@ -9,43 +9,7 @@ TLB ?= no ENDIANESS ?= eb DEBUGGER ?= mips - -ifeq ($(ENDIANESS),el) - ENDIAN_FLAGS=-EL -else - ENDIAN_FLAGS=-EB -endif - -ifeq ($(DEBUGGER),gdb) - DBG_FLAGS := -DWITH_GDB_STUB - DBG_OBJ := gdb_stub.o -endif -ifeq ($(DEBUGGER),mips) - DBG_FLAGS := - DBG_OBJ := mips_dbg.o mips_dis.o -endif -ifeq ($(DEBUGGER),rom) - DBG_FLAGS := -DWITH_ROM_DEBUGGER -endif - - -CFLAGS=$(ENDIAN_FLAGS) -ffunction-sections -fdata-sections -g -msoft-float -O2 -march=r3000 -I. -Iboards/$(BOARD) -D$(BOARD) $(DBG_FLAGS) - -ifeq ($(TLB),yes) - CFLAGS+=-DSYS_IO_BASE=0xAC000000 -DSDRAM_BASE=0x80000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x88000000 -else - CFLAGS+=-DSYS_IO_BASE=0xA0000000 -DSDRAM_BASE=0x40000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x00000000 -endif - -BUILD_DIR=./build/$(BOARD)/$(ENDIANESS) - -AS=mips-elf-as -AR=mips-elf-ar -CC=mips-elf-gcc -LD=mips-elf-ld -OBJDUMP=mips-elf-objdump -OBJCOPY=mips-elf-objcopy -FLASHGEN=flashgen +include ../make/mips_lib.mk 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) diff --git a/src/link/link.ld b/src/link/link_ram.ld similarity index 100% rename from src/link/link.ld rename to src/link/link_ram.ld diff --git a/src/link/link_tlb.ld b/src/link/link_ram_tlb.ld similarity index 100% rename from src/link/link_tlb.ld rename to src/link/link_ram_tlb.ld diff --git a/src/link/link_rom.ld b/src/link/link_rom.ld new file mode 100644 index 0000000..b01efd7 --- /dev/null +++ b/src/link/link_rom.ld @@ -0,0 +1,41 @@ +MEMORY +{ + rom : ORIGIN = 0xBFC00000, LENGTH = 0x00002000 /* 8K */ + ram : ORIGIN = 0x40000000, LENGTH = 0x04000000 /* 64M */ + flash : ORIGIN = 0xA4000000, LENGTH = 0x00800000 /* 8M */ + io : ORIGIN = 0xA0000000, LENGTH = 0x00800000 /* 8M */ +} + +stack_ptr = 0x7FFFEFF0; + +SECTIONS +{ + ROM : + { + start = ALIGN(4); + entry = ALIGN(4); + _entry = ALIGN(4); + __entry = ALIGN(4); + *(.init) + . = ORIGIN(rom) + 0x180; + *(.ktext) + *(.text*) + *(.rodata*) + . = ORIGIN(rom) + LENGTH(rom) - 0x40; + *(.dbg_stub*) + } > rom + + .data ORIGIN(ram) : + { + _ram_start = ALIGN(4); + __bss_start = ALIGN(4); + *(.*bss) + _end = ALIGN(4); + } > ram + + .flash ORIGIN(flash) : + { + _flash_start = ALIGN(4); + } > flash + +} diff --git a/src/link/link_rom_tlb.ld b/src/link/link_rom_tlb.ld new file mode 100644 index 0000000..4a14356 --- /dev/null +++ b/src/link/link_rom_tlb.ld @@ -0,0 +1,52 @@ +MEMORY +{ + rom : ORIGIN = 0x9FC00000, LENGTH = 0x00002000 /* 8K */ + ram : ORIGIN = 0x80000000, LENGTH = 0x04000000 /* 64M */ + flash_u : ORIGIN = 0xA4000000, LENGTH = 0x00800000 /* 8M */ + flash_c : ORIGIN = 0x88000000, LENGTH = 0x00800000 /* 8M */ + io : ORIGIN = 0xAC000000, LENGTH = 0x00800000 /* 8M */ +} + +stack_ptr = 0x83FFEFF0; +baudrate = 0x0D; +sys_led_port = 0xAC000000; +sys_uart_data = 0xAC010000; +sys_uart_stat = 0xAC010004; +sys_uart_baud = 0xAC010008; +sys_timer_usec = 0xAC00008; +sys_timer_sec = 0xAC00000C; + + +SECTIONS +{ + .init ORIGIN(rom) : + { + start = ALIGN(4); + entry = ALIGN(4); + _entry = ALIGN(4); + __entry = ALIGN(4); + *(.stext) + } > rom + + .ktext ORIGIN(rom) + 0x180 : + { + *(.ktext) + } > rom + + .text . : + { + *(.text) + } > rom + + .rodata . : + { + *(.rodata*) + } > rom + + .data ORIGIN(ram) : + { + _ram_start = ALIGN(4); + *(.*data) *(.*bss) *(.*common) + } > ram + +}