From cb9edd2a7bf26f87e876221fc962c07cf89c3c86 Mon Sep 17 00:00:00 2001 From: mintsuki Date: Mon, 14 Sep 2020 19:32:11 +0200 Subject: [PATCH] Reorganise source tree --- Makefile | 27 +++++++++++++------ {src/bootsect => bootsect}/a20_enabler.inc | 0 {src/bootsect => bootsect}/bootsect.asm | 2 +- {src/bootsect => bootsect}/disk.inc | 0 {src/bootsect => bootsect}/gdt.inc | 0 {src/bootsect => bootsect}/simple_print.inc | 0 {src/decompressor => decompressor}/Makefile | 8 +++--- .../decompressor => decompressor}/gzip/tinf.h | 0 .../gzip/tinfgzip.c | 0 .../gzip/tinflate.c | 0 {src/decompressor => decompressor}/lib/asm.h | 0 {src/decompressor => decompressor}/linker.ld | 0 {src/decompressor => decompressor}/main.c | 0 {src => stage2}/Makefile | 12 ++++----- {src => stage2}/drivers/disk.c | 0 {src => stage2}/drivers/disk.h | 0 {src => stage2}/drivers/pic.c | 0 {src => stage2}/drivers/pic.h | 0 {src => stage2}/drivers/vbe.c | 0 {src => stage2}/drivers/vbe.h | 0 {src => stage2}/drivers/vga_textmode.c | 0 {src => stage2}/drivers/vga_textmode.h | 0 {src => stage2}/fs/echfs.c | 0 {src => stage2}/fs/echfs.h | 0 {src => stage2}/fs/ext2.c | 0 {src => stage2}/fs/ext2.h | 0 {src => stage2}/fs/fat32.c | 0 {src => stage2}/fs/fat32.h | 0 {src => stage2}/fs/file.c | 0 {src => stage2}/fs/file.h | 0 {src => stage2}/lib/acpi.c | 0 {src => stage2}/lib/acpi.h | 0 {src => stage2}/lib/asm.h | 0 {src => stage2}/lib/blib.c | 0 {src => stage2}/lib/blib.h | 0 {src => stage2}/lib/builtins.asm | 0 {src => stage2}/lib/cio.h | 0 {src => stage2}/lib/config.c | 0 {src => stage2}/lib/config.h | 0 {src => stage2}/lib/e820.c | 0 {src => stage2}/lib/e820.h | 0 {src => stage2}/lib/elf.c | 0 {src => stage2}/lib/elf.h | 0 {src => stage2}/lib/libc.c | 0 {src => stage2}/lib/libc.h | 0 {src => stage2}/lib/memmap.c | 0 {src => stage2}/lib/memmap.h | 0 {src => stage2}/lib/part.c | 0 {src => stage2}/lib/part.h | 0 {src => stage2}/lib/print.c | 0 {src => stage2}/lib/print.h | 0 {src => stage2}/lib/rand.c | 0 {src => stage2}/lib/rand.h | 0 {src => stage2}/lib/real.asm | 0 {src => stage2}/lib/real.h | 0 {src => stage2}/lib/sleep.asm | 0 {src => stage2}/lib/term.c | 0 {src => stage2}/lib/term.h | 0 {src => stage2}/lib/time.c | 0 {src => stage2}/lib/time.h | 0 {src => stage2}/limine.h | 0 {src => stage2}/linker.ld | 0 {src => stage2}/main.c | 0 {src => stage2}/menu.c | 0 {src => stage2}/menu.h | 0 {src => stage2}/mm/vmm64.c | 0 {src => stage2}/mm/vmm64.h | 0 {src => stage2}/protos/chainload.c | 0 {src => stage2}/protos/chainload.h | 0 {src => stage2}/protos/linux.c | 0 {src => stage2}/protos/linux.h | 0 {src => stage2}/protos/stivale.c | 0 {src => stage2}/protos/stivale.h | 0 {src => stage2}/protos/stivale2.c | 0 {src => stage2}/protos/stivale2.h | 0 75 files changed, 30 insertions(+), 19 deletions(-) rename {src/bootsect => bootsect}/a20_enabler.inc (100%) rename {src/bootsect => bootsect}/bootsect.asm (98%) rename {src/bootsect => bootsect}/disk.inc (100%) rename {src/bootsect => bootsect}/gdt.inc (100%) rename {src/bootsect => bootsect}/simple_print.inc (100%) rename {src/decompressor => decompressor}/Makefile (82%) rename {src/decompressor => decompressor}/gzip/tinf.h (100%) rename {src/decompressor => decompressor}/gzip/tinfgzip.c (100%) rename {src/decompressor => decompressor}/gzip/tinflate.c (100%) rename {src/decompressor => decompressor}/lib/asm.h (100%) rename {src/decompressor => decompressor}/linker.ld (100%) rename {src/decompressor => decompressor}/main.c (100%) rename {src => stage2}/Makefile (64%) rename {src => stage2}/drivers/disk.c (100%) rename {src => stage2}/drivers/disk.h (100%) rename {src => stage2}/drivers/pic.c (100%) rename {src => stage2}/drivers/pic.h (100%) rename {src => stage2}/drivers/vbe.c (100%) rename {src => stage2}/drivers/vbe.h (100%) rename {src => stage2}/drivers/vga_textmode.c (100%) rename {src => stage2}/drivers/vga_textmode.h (100%) rename {src => stage2}/fs/echfs.c (100%) rename {src => stage2}/fs/echfs.h (100%) rename {src => stage2}/fs/ext2.c (100%) rename {src => stage2}/fs/ext2.h (100%) rename {src => stage2}/fs/fat32.c (100%) rename {src => stage2}/fs/fat32.h (100%) rename {src => stage2}/fs/file.c (100%) rename {src => stage2}/fs/file.h (100%) rename {src => stage2}/lib/acpi.c (100%) rename {src => stage2}/lib/acpi.h (100%) rename {src => stage2}/lib/asm.h (100%) rename {src => stage2}/lib/blib.c (100%) rename {src => stage2}/lib/blib.h (100%) rename {src => stage2}/lib/builtins.asm (100%) rename {src => stage2}/lib/cio.h (100%) rename {src => stage2}/lib/config.c (100%) rename {src => stage2}/lib/config.h (100%) rename {src => stage2}/lib/e820.c (100%) rename {src => stage2}/lib/e820.h (100%) rename {src => stage2}/lib/elf.c (100%) rename {src => stage2}/lib/elf.h (100%) rename {src => stage2}/lib/libc.c (100%) rename {src => stage2}/lib/libc.h (100%) rename {src => stage2}/lib/memmap.c (100%) rename {src => stage2}/lib/memmap.h (100%) rename {src => stage2}/lib/part.c (100%) rename {src => stage2}/lib/part.h (100%) rename {src => stage2}/lib/print.c (100%) rename {src => stage2}/lib/print.h (100%) rename {src => stage2}/lib/rand.c (100%) rename {src => stage2}/lib/rand.h (100%) rename {src => stage2}/lib/real.asm (100%) rename {src => stage2}/lib/real.h (100%) rename {src => stage2}/lib/sleep.asm (100%) rename {src => stage2}/lib/term.c (100%) rename {src => stage2}/lib/term.h (100%) rename {src => stage2}/lib/time.c (100%) rename {src => stage2}/lib/time.h (100%) rename {src => stage2}/limine.h (100%) rename {src => stage2}/linker.ld (100%) rename {src => stage2}/main.c (100%) rename {src => stage2}/menu.c (100%) rename {src => stage2}/menu.h (100%) rename {src => stage2}/mm/vmm64.c (100%) rename {src => stage2}/mm/vmm64.h (100%) rename {src => stage2}/protos/chainload.c (100%) rename {src => stage2}/protos/chainload.h (100%) rename {src => stage2}/protos/linux.c (100%) rename {src => stage2}/protos/linux.h (100%) rename {src => stage2}/protos/stivale.c (100%) rename {src => stage2}/protos/stivale.h (100%) rename {src => stage2}/protos/stivale2.c (100%) rename {src => stage2}/protos/stivale2.h (100%) diff --git a/Makefile b/Makefile index 8321224f..bc74b047 100644 --- a/Makefile +++ b/Makefile @@ -6,28 +6,39 @@ CC = cc OBJCOPY = objcopy CFLAGS = -O2 -pipe -Wall -Wextra -.PHONY: all toolchain limine install clean echfs-test ext2-test test.img +.PHONY: all toolchain stage2 stage2-clean decompressor decompressor-clean limine install clean echfs-test ext2-test fat32-test test.img all: limine-install toolchain: cd toolchain && ./make_toolchain.sh -j`nproc` -limine: - $(MAKE) -C src all - cp src/limine.bin ./ +stage2: + $(MAKE) -C stage2 all -install: all - install -s limine-install $(DESTDIR)$(PREFIX)/bin/ +stage2-clean: + $(MAKE) -C stage2 clean -clean: +decompressor: + $(MAKE) -C decompressor all + +decompressor-clean: + $(MAKE) -C decompressor clean + +limine: stage2 decompressor + gzip -n -9 < stage2/stage2.bin > stage2/stage2.bin.gz + cd bootsect && nasm bootsect.asm -fbin -o ../limine.bin + +clean: stage2-clean decompressor-clean rm -f limine-install - $(MAKE) -C src clean limine-install: limine.bin limine-install.c $(OBJCOPY) -I binary -O default limine.bin limine.o $(CC) $(CFLAGS) limine.o limine-install.c -o limine-install +install: all + install -s limine-install $(DESTDIR)$(PREFIX)/bin/ + test.img: rm -f test.img dd if=/dev/zero bs=1M count=0 seek=64 of=test.img diff --git a/src/bootsect/a20_enabler.inc b/bootsect/a20_enabler.inc similarity index 100% rename from src/bootsect/a20_enabler.inc rename to bootsect/a20_enabler.inc diff --git a/src/bootsect/bootsect.asm b/bootsect/bootsect.asm similarity index 98% rename from src/bootsect/bootsect.asm rename to bootsect/bootsect.asm index 1dfc80c1..57fcda78 100644 --- a/src/bootsect/bootsect.asm +++ b/bootsect/bootsect.asm @@ -156,7 +156,7 @@ incbin '../decompressor/decompressor.bin' align 16 stage2: -incbin '../stage2.bin.gz' +incbin '../stage2/stage2.bin.gz' .size: equ $ - stage2 times 32768-($-$$) db 0 diff --git a/src/bootsect/disk.inc b/bootsect/disk.inc similarity index 100% rename from src/bootsect/disk.inc rename to bootsect/disk.inc diff --git a/src/bootsect/gdt.inc b/bootsect/gdt.inc similarity index 100% rename from src/bootsect/gdt.inc rename to bootsect/gdt.inc diff --git a/src/bootsect/simple_print.inc b/bootsect/simple_print.inc similarity index 100% rename from src/bootsect/simple_print.inc rename to bootsect/simple_print.inc diff --git a/src/decompressor/Makefile b/decompressor/Makefile similarity index 82% rename from src/decompressor/Makefile rename to decompressor/Makefile index 602d4457..aac8135a 100644 --- a/src/decompressor/Makefile +++ b/decompressor/Makefile @@ -1,6 +1,6 @@ -CC = ../../toolchain/bin/i386-elf-gcc -LD = ../../toolchain/bin/i386-elf-gcc -OBJCOPY = ../../toolchain/bin/i386-elf-objcopy +CC = ../toolchain/bin/i386-elf-gcc +LD = ../toolchain/bin/i386-elf-gcc +OBJCOPY = ../toolchain/bin/i386-elf-objcopy CFLAGS = -flto -Os -pipe -Wall -Wextra @@ -9,8 +9,10 @@ INTERNAL_CFLAGS = \ -ffreestanding \ -fno-stack-protector \ -fno-pic \ + -fomit-frame-pointer \ -mno-80387 \ -mno-mmx \ + -mno-3dnow \ -mno-sse \ -mno-sse2 \ -I. \ diff --git a/src/decompressor/gzip/tinf.h b/decompressor/gzip/tinf.h similarity index 100% rename from src/decompressor/gzip/tinf.h rename to decompressor/gzip/tinf.h diff --git a/src/decompressor/gzip/tinfgzip.c b/decompressor/gzip/tinfgzip.c similarity index 100% rename from src/decompressor/gzip/tinfgzip.c rename to decompressor/gzip/tinfgzip.c diff --git a/src/decompressor/gzip/tinflate.c b/decompressor/gzip/tinflate.c similarity index 100% rename from src/decompressor/gzip/tinflate.c rename to decompressor/gzip/tinflate.c diff --git a/src/decompressor/lib/asm.h b/decompressor/lib/asm.h similarity index 100% rename from src/decompressor/lib/asm.h rename to decompressor/lib/asm.h diff --git a/src/decompressor/linker.ld b/decompressor/linker.ld similarity index 100% rename from src/decompressor/linker.ld rename to decompressor/linker.ld diff --git a/src/decompressor/main.c b/decompressor/main.c similarity index 100% rename from src/decompressor/main.c rename to decompressor/main.c diff --git a/src/Makefile b/stage2/Makefile similarity index 64% rename from src/Makefile rename to stage2/Makefile index 3f04c413..c14a94c7 100644 --- a/src/Makefile +++ b/stage2/Makefile @@ -9,8 +9,10 @@ INTERNAL_CFLAGS = \ -ffreestanding \ -fno-stack-protector \ -fno-pic \ + -fomit-frame-pointer \ -mno-80387 \ -mno-mmx \ + -mno-3dnow \ -mno-sse \ -mno-sse2 \ -I. \ @@ -28,8 +30,8 @@ INTERNAL_LDFLAGS = \ .PHONY: all clean -C_FILES := $(shell find ./ -type f -name '*.c' | grep -v bootsect | grep -v decompressor | sort) -ASM_FILES := $(shell find ./ -type f -name '*.asm' | grep -v bootsect | grep -v decompressor | sort) +C_FILES := $(shell find ./ -type f -name '*.c' | sort) +ASM_FILES := $(shell find ./ -type f -name '*.asm' | sort) OBJ := $(ASM_FILES:.asm=.o) $(C_FILES:.c=.o) all: limine.bin @@ -37,9 +39,6 @@ all: limine.bin limine.bin: $(OBJ) $(LD) $(OBJ) $(LDFLAGS) $(INTERNAL_LDFLAGS) -o stage2.elf $(OBJCOPY) -O binary stage2.elf stage2.bin - gzip -n -9 < stage2.bin > stage2.bin.gz - $(MAKE) -C decompressor - cd bootsect && nasm bootsect.asm -fbin -o ../limine.bin %.o: %.c $(CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@ @@ -48,5 +47,4 @@ limine.bin: $(OBJ) nasm $< -f elf32 -o $@ clean: - $(MAKE) -C decompressor clean - rm -f stage2.bin.gz stage2.bin stage2.elf limine.bin $(OBJ) + rm -f stage2.bin stage2.elf $(OBJ) diff --git a/src/drivers/disk.c b/stage2/drivers/disk.c similarity index 100% rename from src/drivers/disk.c rename to stage2/drivers/disk.c diff --git a/src/drivers/disk.h b/stage2/drivers/disk.h similarity index 100% rename from src/drivers/disk.h rename to stage2/drivers/disk.h diff --git a/src/drivers/pic.c b/stage2/drivers/pic.c similarity index 100% rename from src/drivers/pic.c rename to stage2/drivers/pic.c diff --git a/src/drivers/pic.h b/stage2/drivers/pic.h similarity index 100% rename from src/drivers/pic.h rename to stage2/drivers/pic.h diff --git a/src/drivers/vbe.c b/stage2/drivers/vbe.c similarity index 100% rename from src/drivers/vbe.c rename to stage2/drivers/vbe.c diff --git a/src/drivers/vbe.h b/stage2/drivers/vbe.h similarity index 100% rename from src/drivers/vbe.h rename to stage2/drivers/vbe.h diff --git a/src/drivers/vga_textmode.c b/stage2/drivers/vga_textmode.c similarity index 100% rename from src/drivers/vga_textmode.c rename to stage2/drivers/vga_textmode.c diff --git a/src/drivers/vga_textmode.h b/stage2/drivers/vga_textmode.h similarity index 100% rename from src/drivers/vga_textmode.h rename to stage2/drivers/vga_textmode.h diff --git a/src/fs/echfs.c b/stage2/fs/echfs.c similarity index 100% rename from src/fs/echfs.c rename to stage2/fs/echfs.c diff --git a/src/fs/echfs.h b/stage2/fs/echfs.h similarity index 100% rename from src/fs/echfs.h rename to stage2/fs/echfs.h diff --git a/src/fs/ext2.c b/stage2/fs/ext2.c similarity index 100% rename from src/fs/ext2.c rename to stage2/fs/ext2.c diff --git a/src/fs/ext2.h b/stage2/fs/ext2.h similarity index 100% rename from src/fs/ext2.h rename to stage2/fs/ext2.h diff --git a/src/fs/fat32.c b/stage2/fs/fat32.c similarity index 100% rename from src/fs/fat32.c rename to stage2/fs/fat32.c diff --git a/src/fs/fat32.h b/stage2/fs/fat32.h similarity index 100% rename from src/fs/fat32.h rename to stage2/fs/fat32.h diff --git a/src/fs/file.c b/stage2/fs/file.c similarity index 100% rename from src/fs/file.c rename to stage2/fs/file.c diff --git a/src/fs/file.h b/stage2/fs/file.h similarity index 100% rename from src/fs/file.h rename to stage2/fs/file.h diff --git a/src/lib/acpi.c b/stage2/lib/acpi.c similarity index 100% rename from src/lib/acpi.c rename to stage2/lib/acpi.c diff --git a/src/lib/acpi.h b/stage2/lib/acpi.h similarity index 100% rename from src/lib/acpi.h rename to stage2/lib/acpi.h diff --git a/src/lib/asm.h b/stage2/lib/asm.h similarity index 100% rename from src/lib/asm.h rename to stage2/lib/asm.h diff --git a/src/lib/blib.c b/stage2/lib/blib.c similarity index 100% rename from src/lib/blib.c rename to stage2/lib/blib.c diff --git a/src/lib/blib.h b/stage2/lib/blib.h similarity index 100% rename from src/lib/blib.h rename to stage2/lib/blib.h diff --git a/src/lib/builtins.asm b/stage2/lib/builtins.asm similarity index 100% rename from src/lib/builtins.asm rename to stage2/lib/builtins.asm diff --git a/src/lib/cio.h b/stage2/lib/cio.h similarity index 100% rename from src/lib/cio.h rename to stage2/lib/cio.h diff --git a/src/lib/config.c b/stage2/lib/config.c similarity index 100% rename from src/lib/config.c rename to stage2/lib/config.c diff --git a/src/lib/config.h b/stage2/lib/config.h similarity index 100% rename from src/lib/config.h rename to stage2/lib/config.h diff --git a/src/lib/e820.c b/stage2/lib/e820.c similarity index 100% rename from src/lib/e820.c rename to stage2/lib/e820.c diff --git a/src/lib/e820.h b/stage2/lib/e820.h similarity index 100% rename from src/lib/e820.h rename to stage2/lib/e820.h diff --git a/src/lib/elf.c b/stage2/lib/elf.c similarity index 100% rename from src/lib/elf.c rename to stage2/lib/elf.c diff --git a/src/lib/elf.h b/stage2/lib/elf.h similarity index 100% rename from src/lib/elf.h rename to stage2/lib/elf.h diff --git a/src/lib/libc.c b/stage2/lib/libc.c similarity index 100% rename from src/lib/libc.c rename to stage2/lib/libc.c diff --git a/src/lib/libc.h b/stage2/lib/libc.h similarity index 100% rename from src/lib/libc.h rename to stage2/lib/libc.h diff --git a/src/lib/memmap.c b/stage2/lib/memmap.c similarity index 100% rename from src/lib/memmap.c rename to stage2/lib/memmap.c diff --git a/src/lib/memmap.h b/stage2/lib/memmap.h similarity index 100% rename from src/lib/memmap.h rename to stage2/lib/memmap.h diff --git a/src/lib/part.c b/stage2/lib/part.c similarity index 100% rename from src/lib/part.c rename to stage2/lib/part.c diff --git a/src/lib/part.h b/stage2/lib/part.h similarity index 100% rename from src/lib/part.h rename to stage2/lib/part.h diff --git a/src/lib/print.c b/stage2/lib/print.c similarity index 100% rename from src/lib/print.c rename to stage2/lib/print.c diff --git a/src/lib/print.h b/stage2/lib/print.h similarity index 100% rename from src/lib/print.h rename to stage2/lib/print.h diff --git a/src/lib/rand.c b/stage2/lib/rand.c similarity index 100% rename from src/lib/rand.c rename to stage2/lib/rand.c diff --git a/src/lib/rand.h b/stage2/lib/rand.h similarity index 100% rename from src/lib/rand.h rename to stage2/lib/rand.h diff --git a/src/lib/real.asm b/stage2/lib/real.asm similarity index 100% rename from src/lib/real.asm rename to stage2/lib/real.asm diff --git a/src/lib/real.h b/stage2/lib/real.h similarity index 100% rename from src/lib/real.h rename to stage2/lib/real.h diff --git a/src/lib/sleep.asm b/stage2/lib/sleep.asm similarity index 100% rename from src/lib/sleep.asm rename to stage2/lib/sleep.asm diff --git a/src/lib/term.c b/stage2/lib/term.c similarity index 100% rename from src/lib/term.c rename to stage2/lib/term.c diff --git a/src/lib/term.h b/stage2/lib/term.h similarity index 100% rename from src/lib/term.h rename to stage2/lib/term.h diff --git a/src/lib/time.c b/stage2/lib/time.c similarity index 100% rename from src/lib/time.c rename to stage2/lib/time.c diff --git a/src/lib/time.h b/stage2/lib/time.h similarity index 100% rename from src/lib/time.h rename to stage2/lib/time.h diff --git a/src/limine.h b/stage2/limine.h similarity index 100% rename from src/limine.h rename to stage2/limine.h diff --git a/src/linker.ld b/stage2/linker.ld similarity index 100% rename from src/linker.ld rename to stage2/linker.ld diff --git a/src/main.c b/stage2/main.c similarity index 100% rename from src/main.c rename to stage2/main.c diff --git a/src/menu.c b/stage2/menu.c similarity index 100% rename from src/menu.c rename to stage2/menu.c diff --git a/src/menu.h b/stage2/menu.h similarity index 100% rename from src/menu.h rename to stage2/menu.h diff --git a/src/mm/vmm64.c b/stage2/mm/vmm64.c similarity index 100% rename from src/mm/vmm64.c rename to stage2/mm/vmm64.c diff --git a/src/mm/vmm64.h b/stage2/mm/vmm64.h similarity index 100% rename from src/mm/vmm64.h rename to stage2/mm/vmm64.h diff --git a/src/protos/chainload.c b/stage2/protos/chainload.c similarity index 100% rename from src/protos/chainload.c rename to stage2/protos/chainload.c diff --git a/src/protos/chainload.h b/stage2/protos/chainload.h similarity index 100% rename from src/protos/chainload.h rename to stage2/protos/chainload.h diff --git a/src/protos/linux.c b/stage2/protos/linux.c similarity index 100% rename from src/protos/linux.c rename to stage2/protos/linux.c diff --git a/src/protos/linux.h b/stage2/protos/linux.h similarity index 100% rename from src/protos/linux.h rename to stage2/protos/linux.h diff --git a/src/protos/stivale.c b/stage2/protos/stivale.c similarity index 100% rename from src/protos/stivale.c rename to stage2/protos/stivale.c diff --git a/src/protos/stivale.h b/stage2/protos/stivale.h similarity index 100% rename from src/protos/stivale.h rename to stage2/protos/stivale.h diff --git a/src/protos/stivale2.c b/stage2/protos/stivale2.c similarity index 100% rename from src/protos/stivale2.c rename to stage2/protos/stivale2.c diff --git a/src/protos/stivale2.h b/stage2/protos/stivale2.h similarity index 100% rename from src/protos/stivale2.h rename to stage2/protos/stivale2.h