From ab03d3be21f229be8c28dba292d5da237a929a73 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 28 Aug 2024 22:25:56 +0200 Subject: Restructure the whole thing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It will be something more than just messing around with RISC-V stuff. Signed-off-by: Miquel Sabaté Solà --- arch/riscv/kernel/Makefile | 20 ++++++++++++++++++++ arch/riscv/kernel/hello.ld | 9 +++++++++ arch/riscv/kernel/hello.s | 15 +++++++++++++++ arch/riscv/kernel/infinite.ld | 9 +++++++++ arch/riscv/kernel/infinite.s | 4 ++++ 5 files changed, 57 insertions(+) create mode 100644 arch/riscv/kernel/Makefile create mode 100644 arch/riscv/kernel/hello.ld create mode 100644 arch/riscv/kernel/hello.s create mode 100644 arch/riscv/kernel/infinite.ld create mode 100644 arch/riscv/kernel/infinite.s (limited to 'arch/riscv/kernel') diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile new file mode 100644 index 0000000..e943353 --- /dev/null +++ b/arch/riscv/kernel/Makefile @@ -0,0 +1,20 @@ +CROSS_AS ?= riscv64-suse-linux-as +CROSS_LD ?= riscv64-suse-linux-ld +ASFLAGS = -march=rv64g -mabi=lp64 + +## +# Targets + +.PHONY: infinite +infinite: clean + $(CROSS_AS) $(ASFLAGS) -o infinite.o -c infinite.s + $(CROSS_LD) -T infinite.ld infinite.o -o infinite + +.PHONY: hello +hello: clean + $(CROSS_AS) $(ASFLAGS) -o hello.o -c hello.s + $(CROSS_LD) -T hello.ld hello.o -o hello + +.PHONY: clean +clean: + @rm -f *.o infinite hello diff --git a/arch/riscv/kernel/hello.ld b/arch/riscv/kernel/hello.ld new file mode 100644 index 0000000..e4af459 --- /dev/null +++ b/arch/riscv/kernel/hello.ld @@ -0,0 +1,9 @@ +MEMORY { + kernel_space (rwx) : ORIGIN = 0x80200000, LENGTH = 128 +} + +SECTIONS { + .text : { + hello.o(.text.kernel) + } > kernel_space +} diff --git a/arch/riscv/kernel/hello.s b/arch/riscv/kernel/hello.s new file mode 100644 index 0000000..eacd797 --- /dev/null +++ b/arch/riscv/kernel/hello.s @@ -0,0 +1,15 @@ +.global _start +.section .text.kernel + +_start: li a7, 0x4442434E + li a6, 0x00 + li a0, 12 + lla a1, debug_string + li a2, 0 + ecall + +loop: j loop + + .section .rodata +debug_string: + .string "Hello world\n" diff --git a/arch/riscv/kernel/infinite.ld b/arch/riscv/kernel/infinite.ld new file mode 100644 index 0000000..2eee384 --- /dev/null +++ b/arch/riscv/kernel/infinite.ld @@ -0,0 +1,9 @@ +MEMORY { + kernel_space (rwx) : ORIGIN = 0x80200000, LENGTH = 128 +} + +SECTIONS { + .text : { + infinite.o(.text.kernel) + } > kernel_space +} diff --git a/arch/riscv/kernel/infinite.s b/arch/riscv/kernel/infinite.s new file mode 100644 index 0000000..855f58e --- /dev/null +++ b/arch/riscv/kernel/infinite.s @@ -0,0 +1,4 @@ + .global _start + .section .text.kernel + +_start: j _start -- cgit v1.2.3