From 1811d54f49e0eb472f28030f9fbe9b854d144f66 Mon Sep 17 00:00:00 2001 From: bLueriVerLHR Date: Sat, 22 Jul 2023 02:02:10 +0800 Subject: [PATCH] [Modified] update makefile --- Makefile | 31 +++++++++++++++---------------- lasoft/xv6-la/Makefile | 11 +++++------ lasoft/xv6-la/kernel/entry.S | 1 + 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 1c4aa2f..8ab6ab8 100644 --- a/Makefile +++ b/Makefile @@ -7,30 +7,29 @@ submodue-update-init: # prepare loongarch toolchain -TOOLCHAIN_PK := loongarch64-linux-gnu/toolchain-loongarch64-linux-gnu-gcc8-host-x86_64-2022-07-18.tar.xz +TOOLCHAIN_URL := https://gitee.com/loongson-edu/la32r-toolchains/releases/download/v0.0.2/loongarch32r-linux-gnusf-2022-05-20-x86.tar.gz +LA_GDB_URL := https://gitee.com/loongson-edu/la32r-toolchains/releases/download/v0.0.2/loongarch32r-linux-gnusf-gdb-x86 -LA_PATH := ext/toolchain-loongarch64-linux-gnu-gcc8-host-x86_64-2022-07-18/bin -LA_ARCH := loongarch64-linux-gnu- -LA := $(LA_PATH)/$(LA_ARCH) +TOOLCHAIN_TAR := $(notdir $(TOOLCHAIN_URL)) +LA_GDB_TAR := $(notdir $(LA_GDB_URL)) -GCC := $(LA)gcc -OD := $(LA)objdump -OC := $(LA)objcopy -RE := $(LA)readelf +ext/$(TOOLCHAIN_TAR): + wget $(TOOLCHAIN_URL) + tar -zxvf $(notdir $@) + mv loongarch32r-linux-gnusf-* ext -LA_TOOLS := $(GCC) $(OD) $(OC) $(RE) +lagcc: ext/$(TOOLCHAIN_TAR) -unpk-gcc: submodue-update-init - mkdir -p ext - tar -xvf $(TOOLCHAIN_PK) -C ext - -$(LA_TOOLS): unpk-gcc +LA_ARCH := loongarch32r-linux-gnusf- # prepare loongarch source code -xv6: - TOOLPREFIX=$(CURDIR)/$(LA) $(MAKE) -C lasoft/xv6-la build +xv6: lagcc + TOOLPREFIX=$(CURDIR)/$(shell find ext -type d -name '$(LA_ARCH)*')/bin/$(LA_ARCH) \ + $(MAKE) -C lasoft/xv6-la build xv6-clean: $(MAKE) -C lasoft/xv6-la clean +clean-latc: + rm -r ext/* diff --git a/lasoft/xv6-la/Makefile b/lasoft/xv6-la/Makefile index 4180100..db73e2e 100644 --- a/lasoft/xv6-la/Makefile +++ b/lasoft/xv6-la/Makefile @@ -30,8 +30,6 @@ OBJS = \ $K/plic.o \ $K/virtio_disk.o -# riscv64-unknown-elf- or riscv64-linux-gnu- -# perhaps in /opt/riscv/bin TOOLPREFIX ?= CC = $(TOOLPREFIX)gcc @@ -42,9 +40,10 @@ OBJDUMP = $(TOOLPREFIX)objdump CFLAGS = -Wall -Werror -O -fno-omit-frame-pointer -ggdb -gdwarf-2 CFLAGS += -MD -CFLAGS += -mcmodel=medany -CFLAGS += -ffreestanding -fno-common -nostdlib -mno-relax +CFLAGS += -mcmodel=normal +CFLAGS += -ffreestanding -fno-common -nostdlib -mstrict-align CFLAGS += -I. +CFLAGS += -mfpu=none -mabi=ilp32s -march=loongarch32r CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector) # Disable PIE when possible (for Ubuntu 16.10 toolchain) @@ -58,12 +57,12 @@ endif LDFLAGS = -z max-page-size=4096 $K/kernel: $(OBJS) $K/kernel.ld $U/initcode - $(LD) $(LDFLAGS) -T $K/kernel.ld -o $K/kernel $(OBJS) + $(LD) $(LDFLAGS) -T $K/kernel.ld -o $K/kernel $(OBJS) $(OBJDUMP) -S $K/kernel > $K/kernel.asm $(OBJDUMP) -t $K/kernel | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $K/kernel.sym $U/initcode: $U/initcode.S - $(CC) $(CFLAGS) -march=rv64g -nostdinc -I. -Ikernel -c $U/initcode.S -o $U/initcode.o + $(CC) $(CFLAGS) -nostdinc -I. -Ikernel -c $U/initcode.S -o $U/initcode.o $(LD) $(LDFLAGS) -N -e start -Ttext 0 -o $U/initcode.out $U/initcode.o $(OBJCOPY) -S -O binary $U/initcode.out $U/initcode $(OBJDUMP) -S $U/initcode.o > $U/initcode.asm diff --git a/lasoft/xv6-la/kernel/entry.S b/lasoft/xv6-la/kernel/entry.S index a8433b8..107d410 100644 --- a/lasoft/xv6-la/kernel/entry.S +++ b/lasoft/xv6-la/kernel/entry.S @@ -1,3 +1,4 @@ +#include "csr.h" # qemu -kernel loads the kernel at 0x80000000 # and causes each hart (i.e. CPU) to jump there. # kernel.ld causes the following code to