mirror of
https://github.com/panpaul/tiny_os
synced 2024-09-20 09:45:19 +08:00
feat: root: add dummy root server
This commit is contained in:
parent
2ec3859da7
commit
41208c1e15
2
Makefile
2
Makefile
@ -31,7 +31,7 @@ QEMU = qemu-system-$(ARCH)
|
|||||||
QEMU_ARGS = -nographic -serial mon:stdio -smp 1
|
QEMU_ARGS = -nographic -serial mon:stdio -smp 1
|
||||||
QEMU_ARGS += -machine virt # TODO: override by $(BOARD)
|
QEMU_ARGS += -machine virt # TODO: override by $(BOARD)
|
||||||
QEMU_ARGS += -kernel target/$(BUILD_TARGET)/$(MODE)/kernel
|
QEMU_ARGS += -kernel target/$(BUILD_TARGET)/$(MODE)/kernel
|
||||||
QEMU_ARGS += -initrd build/init.cpio
|
QEMU_ARGS += -initrd root/init.cpio
|
||||||
QEMU_ARGS += -append "loglevel=4"
|
QEMU_ARGS += -append "loglevel=4"
|
||||||
|
|
||||||
kernel:
|
kernel:
|
||||||
|
3
root/.gitignore
vendored
Normal file
3
root/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*.cpio
|
||||||
|
*.o
|
||||||
|
root
|
21
root/Makefile
Normal file
21
root/Makefile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
AS = riscv64-elf-as
|
||||||
|
LD = riscv64-elf-ld
|
||||||
|
|
||||||
|
ASFLAGS += -march=rv64imac -mabi=lp64
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
|
|
||||||
|
all: init.cpio
|
||||||
|
|
||||||
|
%.o: %.S
|
||||||
|
$(AS) $(ASFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
root: root.o
|
||||||
|
$(LD) -Tlink.ld $^ -o $@
|
||||||
|
|
||||||
|
init.cpio: root
|
||||||
|
find . -type f -not -name "*.cpio" | cpio -ov -H crc > init.cpio
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o root
|
||||||
|
rm -f init.cpio
|
16
root/link.ld
Normal file
16
root/link.ld
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
OUTPUT_ARCH(riscv)
|
||||||
|
ENTRY(_start)
|
||||||
|
|
||||||
|
PHDRS {
|
||||||
|
text PT_LOAD FLAGS (5);
|
||||||
|
rodata PT_LOAD FLAGS (4);
|
||||||
|
data PT_LOAD FLAGS (6);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS {
|
||||||
|
. = 0x400000;
|
||||||
|
.text : { *(.text .text.* ); . = ALIGN(4096); } : text
|
||||||
|
.rodata : { *(.rodata .rodata.*); . = ALIGN(4096); } : rodata
|
||||||
|
.data : { *(.data .data.* ); . = ALIGN(4096); } : data
|
||||||
|
.bss : { *(.bss .bss.* ); . = ALIGN(4096); } : data
|
||||||
|
}
|
19
root/root.S
Normal file
19
root/root.S
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
.macro syscall msg ptr
|
||||||
|
li a0, \msg
|
||||||
|
li a1, \ptr
|
||||||
|
ecall
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.text
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
la t0, msg
|
||||||
|
.loop:
|
||||||
|
lb a2, 0(t0)
|
||||||
|
beqz a2, _start # print forever
|
||||||
|
syscall (1<<12 | 1), 1 # see uapi/syscall.rs
|
||||||
|
addi t0, t0, 1
|
||||||
|
j .loop
|
||||||
|
|
||||||
|
.data
|
||||||
|
msg : .string "Hello, world!\n\0"
|
Loading…
Reference in New Issue
Block a user