am,arch: refactor *-nemu.mk

This commit is contained in:
Zihao Yu 2019-02-17 23:13:38 +08:00
parent 41b6043167
commit 4c3f7ddc5b
9 changed files with 33 additions and 68 deletions

View File

@ -5,7 +5,7 @@ $(error Environment variable AM_HOME must be defined.)
endif
ARCH ?= native
ARCHS := $(basename $(shell ls $(AM_HOME)/am/arch/))
ARCHS := $(basename $(notdir $(shell ls $(AM_HOME)/am/arch/*.mk)))
ifeq ($(filter $(ARCHS), $(ARCH)), ) # ARCH must be valid
$(error Invalid ARCH. Supported: $(ARCHS))

View File

@ -1,22 +1,2 @@
AM_SRCS := mips32/nemu/trm.c \
mips32/nemu/ioe.c \
mips32/nemu/trap.S \
mips32/nemu/cte.c \
mips32/nemu/vme.c \
nemu-devices/nemu-input.c \
nemu-devices/nemu-timer.c \
nemu-devices/nemu-video.c \
LOADER_DIR := $(AM_HOME)/am/src/mips32/nemu/loader
image:
@echo + CC loader/start.S
@mips-linux-gnu-gcc -EL -march=mips32 -fno-pic -mno-abicalls -fno-delayed-branch -c $(LOADER_DIR)/start.S -o $(LOADER_DIR)/start.o
@echo + LD "->" $(BINARY).o
@mips-linux-gnu-ld --gc-sections -EL -T $(LOADER_DIR)/loader.ld -e _start -o $(BINARY).o $(LOADER_DIR)/start.o --start-group $(LINK_FILES) --end-group
@mips-linux-gnu-objdump -d $(BINARY).o > $(BINARY).txt
@echo + CREATE "->" $(BINARY).bin
@mips-linux-gnu-objcopy -S --set-section-flags .bss=alloc,contents -O binary $(BINARY).o $(BINARY).bin
run:
make -C $(NEMU_HOME) ISA=mips32 run ARGS="-b -l $(shell dirname $(BINARY_ABS))/nemu-log.txt $(BINARY_ABS).bin"
LDFLAGS := -EL
include $(AM_HOME)/am/arch/nemu/nemu.mk

21
am/arch/nemu/nemu.mk Normal file
View File

@ -0,0 +1,21 @@
AM_SRCS := $(ISA)/nemu/trm.c \
$(ISA)/nemu/ioe.c \
$(ISA)/nemu/cte.c \
$(ISA)/nemu/trap.S \
$(ISA)/nemu/vme.c \
nemu-devices/nemu-input.c \
nemu-devices/nemu-timer.c \
nemu-devices/nemu-video.c \
$(ISA)/nemu/boot/start.S
LD_SCRIPT := $(AM_HOME)/am/src/$(ISA)/nemu/boot/loader.ld
image:
@echo + LD "->" $(BINARY).elf
@$(LD) $(LDFLAGS) --gc-sections -T $(LD_SCRIPT) -e _start -o $(BINARY).elf --start-group $(LINK_FILES) --end-group
@$(OBJDUMP) -d $(BINARY).elf > $(BINARY).txt
@echo + OBJCOPY "->" $(BINARY).bin
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(BINARY).elf $(BINARY).bin
run:
make -C $(NEMU_HOME) ISA=$(ISA) run ARGS="-b -l $(shell dirname $(BINARY_ABS))/nemu-log.txt $(BINARY_ABS).bin"

View File

@ -1,22 +1,2 @@
AM_SRCS := riscv32/nemu/trm.c \
riscv32/nemu/ioe.c \
riscv32/nemu/trap.S \
riscv32/nemu/cte.c \
riscv32/nemu/vme.c \
nemu-devices/nemu-input.c \
nemu-devices/nemu-timer.c \
nemu-devices/nemu-video.c \
LOADER_DIR := $(AM_HOME)/am/src/riscv32/nemu/loader
image:
@echo + CC loader/start.S
@riscv-none-embed-gcc -march=rv32im -mabi=ilp32 -fno-pic -c $(LOADER_DIR)/start.S -o $(LOADER_DIR)/start.o
@echo + LD "->" $(BINARY).o
@riscv-none-embed-ld --gc-sections -melf32lriscv -T $(LOADER_DIR)/loader.ld -e _start -o $(BINARY).o $(LOADER_DIR)/start.o --start-group $(LINK_FILES) --end-group
@riscv-none-embed-objdump -d $(BINARY).o > $(BINARY).txt
@echo + CREATE "->" $(BINARY).bin
@riscv-none-embed-objcopy -S --set-section-flags .bss=alloc,contents -O binary $(BINARY).o $(BINARY).bin
run:
make -C $(NEMU_HOME) ISA=riscv32 run ARGS="-b -l $(shell dirname $(BINARY_ABS))/nemu-log.txt $(BINARY_ABS).bin"
LDFLAGS := -melf32lriscv
include $(AM_HOME)/am/arch/nemu/nemu.mk

View File

@ -1,22 +1,2 @@
AM_SRCS := $(ISA)/nemu/trm.c \
$(ISA)/nemu/ioe.c \
$(ISA)/nemu/cte.c \
$(ISA)/nemu/trap.S \
$(ISA)/nemu/vme.c \
nemu-devices/nemu-input.c \
nemu-devices/nemu-timer.c \
nemu-devices/nemu-video.c \
$(ISA)/nemu/boot/start.S
LD_SCRIPT := $(AM_HOME)/am/src/$(ISA)/nemu/boot/loader.ld
LDFLAGS := -melf_i386
image:
@echo + LD "->" $(BINARY).elf
@$(LD) $(LDFLAGS) --gc-sections -T $(LD_SCRIPT) -e _start -o $(BINARY).elf --start-group $(LINK_FILES) --end-group
@$(OBJDUMP) -d $(BINARY).elf > $(BINARY).txt
@echo + OBJCOPY "->" $(BINARY).bin
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(BINARY).elf $(BINARY).bin
run:
make -C $(NEMU_HOME) ISA=$(ISA) run ARGS="-b -l $(shell dirname $(BINARY_ABS))/nemu-log.txt $(BINARY_ABS).bin"
include $(AM_HOME)/am/arch/nemu/nemu.mk

View File

@ -1,6 +1,7 @@
SECTIONS {
. = 0x80100000;
.text : {
*(entry)
*(.text)
}
etext = .;

View File

@ -1,5 +1,6 @@
.section entry, "ax"
.globl _start
.type _start, function
.type _start, @function
_start:
move $fp, $zero

View File

@ -1,6 +1,7 @@
SECTIONS {
. = 0x80100000;
.text : {
*(entry)
*(.text)
}
etext = .;

View File

@ -1,5 +1,6 @@
.section entry, "ax"
.globl _start
.type _start, function
.type _start, @function
_start:
mv s0, zero