From ff61889138ba72be29a9cae795e1940c2a29249a Mon Sep 17 00:00:00 2001 From: bLueriVerLHR Date: Fri, 21 Jul 2023 14:26:41 +0800 Subject: [PATCH] [Modified] change toolchain to la32r --- .gitmodules | 3 ++ la32r-toolchains | 1 + lasoft/xv6-la/Makefile | 97 +++++++++++------------------------- lasoft/xv6-la/kernel/la32r.h | 0 lasoft/xv6-la/kernel/start.c | 2 +- loongarch64-linux-gnu | 1 - 6 files changed, 33 insertions(+), 71 deletions(-) create mode 160000 la32r-toolchains create mode 100644 lasoft/xv6-la/kernel/la32r.h delete mode 160000 loongarch64-linux-gnu diff --git a/.gitmodules b/.gitmodules index f0ca3ed..10ce7ab 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lasoft/la32r-nemu"] path = lasoft/la32r-nemu url = https://gitee.com/wwt_panache/la32r-nemu +[submodule "la32r-toolchains"] + path = la32r-toolchains + url = https://gitee.com/loongson-edu/la32r-toolchains diff --git a/la32r-toolchains b/la32r-toolchains new file mode 160000 index 0000000..c6d7b1f --- /dev/null +++ b/la32r-toolchains @@ -0,0 +1 @@ +Subproject commit c6d7b1ffac6fa75b4e4e08df6496850e84984137 diff --git a/lasoft/xv6-la/Makefile b/lasoft/xv6-la/Makefile index d5e8f5d..4180100 100644 --- a/lasoft/xv6-la/Makefile +++ b/lasoft/xv6-la/Makefile @@ -2,53 +2,37 @@ K=kernel U=user OBJS = \ - $K/entry.o \ - $K/start.o \ - $K/console.o \ - $K/printf.o \ - $K/uart.o \ - $K/kalloc.o \ - $K/spinlock.o \ - $K/string.o \ - $K/main.o \ - $K/vm.o \ - $K/proc.o \ - $K/swtch.o \ - $K/trampoline.o \ - $K/trap.o \ - $K/syscall.o \ - $K/sysproc.o \ - $K/bio.o \ - $K/fs.o \ - $K/log.o \ - $K/sleeplock.o \ - $K/file.o \ - $K/pipe.o \ - $K/exec.o \ - $K/sysfile.o \ - $K/kernelvec.o \ - $K/plic.o \ - $K/virtio_disk.o + $K/entry.o \ + $K/start.o \ + $K/console.o \ + $K/printf.o \ + $K/uart.o \ + $K/kalloc.o \ + $K/spinlock.o \ + $K/string.o \ + $K/main.o \ + $K/vm.o \ + $K/proc.o \ + $K/swtch.o \ + $K/trampoline.o \ + $K/trap.o \ + $K/syscall.o \ + $K/sysproc.o \ + $K/bio.o \ + $K/fs.o \ + $K/log.o \ + $K/sleeplock.o \ + $K/file.o \ + $K/pipe.o \ + $K/exec.o \ + $K/sysfile.o \ + $K/kernelvec.o \ + $K/plic.o \ + $K/virtio_disk.o # riscv64-unknown-elf- or riscv64-linux-gnu- # perhaps in /opt/riscv/bin -#TOOLPREFIX = - -# Try to infer the correct TOOLPREFIX if not set -ifndef TOOLPREFIX -TOOLPREFIX := $(shell if riscv64-unknown-elf-objdump -i 2>&1 | grep 'elf64-big' >/dev/null 2>&1; \ - then echo 'riscv64-unknown-elf-'; \ - elif riscv64-linux-gnu-objdump -i 2>&1 | grep 'elf64-big' >/dev/null 2>&1; \ - then echo 'riscv64-linux-gnu-'; \ - elif riscv64-unknown-linux-gnu-objdump -i 2>&1 | grep 'elf64-big' >/dev/null 2>&1; \ - then echo 'riscv64-unknown-linux-gnu-'; \ - else echo "***" 1>&2; \ - echo "*** Error: Couldn't find a riscv64 version of GCC/binutils." 1>&2; \ - echo "*** To turn off this error, run 'gmake TOOLPREFIX= ...'." 1>&2; \ - echo "***" 1>&2; exit 1; fi) -endif - -QEMU = qemu-system-riscv64 +TOOLPREFIX ?= CC = $(TOOLPREFIX)gcc AS = $(TOOLPREFIX)gas @@ -146,30 +130,5 @@ clean: $U/usys.S \ $(UPROGS) -# try to generate a unique GDB port -GDBPORT = $(shell expr `id -u` % 5000 + 25000) -# QEMU's gdb stub command line changed in 0.11 -QEMUGDB = $(shell if $(QEMU) -help | grep -q '^-gdb'; \ - then echo "-gdb tcp::$(GDBPORT)"; \ - else echo "-s -p $(GDBPORT)"; fi) -ifndef CPUS -CPUS := 3 -endif - -QEMUOPTS = -machine virt -bios none -kernel $K/kernel -m 128M -smp $(CPUS) -nographic -QEMUOPTS += -global virtio-mmio.force-legacy=false -QEMUOPTS += -drive file=fs.img,if=none,format=raw,id=x0 -QEMUOPTS += -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0 - build: $K/kernel fs.img -qemu: $K/kernel fs.img - $(QEMU) $(QEMUOPTS) - -.gdbinit: .gdbinit.tmpl-riscv - sed "s/:1234/:$(GDBPORT)/" < $^ > $@ - -qemu-gdb: $K/kernel .gdbinit fs.img - @echo "*** Now run 'gdb' in another window." 1>&2 - $(QEMU) $(QEMUOPTS) -S $(QEMUGDB) - diff --git a/lasoft/xv6-la/kernel/la32r.h b/lasoft/xv6-la/kernel/la32r.h new file mode 100644 index 0000000..e69de29 diff --git a/lasoft/xv6-la/kernel/start.c b/lasoft/xv6-la/kernel/start.c index e16f18a..5356339 100644 --- a/lasoft/xv6-la/kernel/start.c +++ b/lasoft/xv6-la/kernel/start.c @@ -51,7 +51,7 @@ start() w_tp(id); // switch to supervisor mode and jump to main(). - asm volatile("mret"); + asm volatile("ertn"); } // arrange to receive timer interrupts. diff --git a/loongarch64-linux-gnu b/loongarch64-linux-gnu deleted file mode 160000 index f535a6f..0000000 --- a/loongarch64-linux-gnu +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f535a6f47e8837dc3a5fea74a1d49a9aa1bad393