提交 00a57cee 编写于 作者: Z Zihao Yu

Merge branch 'sdi' into 'master'

am,sdi: use the rv64 engine in NEMU and add more isa

See merge request projectn/nexus-am!36
include $(AM_HOME)/am/arch/isa/mips32.mk
include $(AM_HOME)/am/arch/platform/sdi.mk
AM_SRCS += nemu/isa/mips/boot/start.S
AM_SRCS += sdi/trm.c \
nemu/common/mainargs.S \
nemu/common/ioe.c \
nemu/common/input.c \
nemu/common/timer.c \
nemu/common/video.c \
dummy/cte.c \
dummy/vme.c \
dummy/mpe.c \
CFLAGS += -I$(AM_HOME)/am/src/sdi/include
ASFLAGS += -DMAINARGS=\"$(mainargs)\"
.PHONY: $(AM_HOME)/am/src/nemu/common/mainargs.S
LDFLAGS += -L $(AM_HOME)/am/src/nemu/ldscript
LDFLAGS += -T $(AM_HOME)/am/src/sdi/ldscript/loader.ld
NEMU_ARGS = --batch --log=$(shell dirname $(BINARY))/nemu-log.txt $(BINARY).bin
image:
@echo + LD "->" $(BINARY_REL).elf
@$(LD) $(LDFLAGS) --gc-sections -o $(BINARY).elf $(LINK_FILES)
@$(OBJDUMP) -d $(BINARY).elf > $(BINARY).txt
@echo + OBJCOPY "->" $(BINARY_REL).bin
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(BINARY).elf $(BINARY).bin
run:
$(MAKE) -C $(NEMU_HOME) ISA=riscv64 SHARE=1
$(MAKE) -C $(NEMU_HOME) ISA=$(ISA) ENGINE=rv64 run ARGS="$(NEMU_ARGS)"
#run:
# $(MAKE) -C $(NEMU_HOME) ISA=riscv64 ENGINE=sdi-exec run ARGS="--batch $(BINARY).bin" &
# ( while ps -p $$PPID >/dev/null ; do sleep 1 ; done ; pkill -9 -f riscv64-nemu-sdi-exec ) &
# sleep 3 # wait for riscv64-nemu-sdi-exec to start
# $(MAKE) -C $(NEMU_HOME) ISA=$(ISA) ENGINE=sdi-tran run ARGS="$(NEMU_ARGS)"
gdb: image
$(MAKE) -C $(NEMU_HOME) ISA=$(ISA) ENGINE=rv64 gdb ARGS="$(NEMU_ARGS)"
include $(AM_HOME)/am/arch/isa/riscv32.mk
include $(AM_HOME)/am/arch/platform/sdi.mk
AM_SRCS += nemu/isa/riscv/boot/start.S
include $(AM_HOME)/am/arch/isa/x86.mk
AM_SRCS += sdi/trm.c \
nemu/common/mainargs.S \
nemu/isa/x86/boot/start.S \
nemu/common/ioe.c \
nemu/common/input.c \
nemu/common/timer.c \
nemu/common/video.c \
dummy/cte.c \
dummy/vme.c \
dummy/mpe.c \
CFLAGS += -mstringop-strategy=loop -I$(AM_HOME)/am/src/sdi/include
ASFLAGS += -DMAINARGS=\"$(mainargs)\"
.PHONY: $(AM_HOME)/am/src/nemu/common/mainargs.S
LDFLAGS += -L $(AM_HOME)/am/src/nemu/ldscript
LDFLAGS += -T $(AM_HOME)/am/src/sdi/ldscript/loader.ld
NEMU_ARGS = --batch --log=$(shell dirname $(BINARY))/nemu-log.txt $(BINARY).bin
image:
@echo + LD "->" $(BINARY_REL).elf
@$(LD) $(LDFLAGS) --gc-sections -o $(BINARY).elf $(LINK_FILES)
@$(OBJDUMP) -d $(BINARY).elf > $(BINARY).txt
@echo + OBJCOPY "->" $(BINARY_REL).bin
@$(OBJCOPY) -S --set-section-flags .bss=alloc,contents -O binary $(BINARY).elf $(BINARY).bin
run:
$(MAKE) -C $(NEMU_HOME) ISA=riscv64 ENGINE=sdi-exec run ARGS="--batch $(BINARY).bin" &
( while ps -p $$PPID >/dev/null ; do sleep 1 ; done ; pkill -9 -f riscv64-nemu-sdi-exec ) &
sleep 3 # wait for riscv64-nemu-sdi-exec to start
$(MAKE) -C $(NEMU_HOME) ISA=$(ISA) ENGINE=sdi-tran run ARGS="$(NEMU_ARGS)"
gdb: image
$(MAKE) -C $(NEMU_HOME) ISA=$(ISA) ENGINE=sdi-tran gdb ARGS="$(NEMU_ARGS)"
include $(AM_HOME)/am/arch/platform/sdi.mk
CFLAGS += -mstringop-strategy=loop
AM_SRCS += nemu/isa/x86/boot/start.S
#include "mips32-nemu.h"
#include "riscv32-nemu.h"
pmem_base = 0x0;
pmem_base = 0x80000000;
MEMORY {
ram (rwxa) : ORIGIN = 0x0, LENGTH = 128M
ram (rwxa) : ORIGIN = 0x80100000, LENGTH = 128M
}
INCLUDE "section.ld"
......@@ -20,6 +20,17 @@ void _putc(char ch) {
void _halt(int code) {
printf("Exit with code = %d\n", code);
#if defined(__ISA_X86__)
asm volatile (".byte 0xd6" : :"a"(code));
#elif defined(__ISA_MIPS32__)
asm volatile ("move $v0, %0; .word 0xf0000000" : :"r"(code));
#elif defined(__ISA_RISCV32__)
asm volatile("mv a0, %0; .word 0x0000006b" : :"r"(code));
#else
#error unsupport ISA
#endif
printf("Spinning\n");
while (1);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册