diff --git a/makefile b/makefile index dccdbcf..4cfbaae 100644 --- a/makefile +++ b/makefile @@ -1,6 +1,6 @@ CC := gcc AS := nasm -CFLAGS = -c -mno-sse -mno-sse2 -mno-red-zone -ffreestanding -m32 -nostdlib -O3 -fno-pie -fno-stack-protector -mno-mmx +CFLAGS:=-g -c -m32 -fno-pie -mno-sse -O3 -D __bits__=32 -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -Wno-incompatible-pointer-types -Wno-address-of-packed-member -Wno-discarded-qualifiers -fno-stack-protector -mno-red-zone -mno-sse -mno-sse2 -ffreestanding -nostdlib -mno-mmx BL_ASFLAGS := -f bin SRCS := $(wildcard src/kernel/*/*.c) OBJS := $(patsubst src/kernel/%.c, bin/kernel/%.o, $(SRCS)) @@ -9,6 +9,7 @@ all: bootloader tools kernel cp bin/bootloader.bin image.bin qemu-img resize -f raw image.bin 512M ./diskwrite -v kernel.elf -o image.bin + ./diskwrite -v idm.elf -o image.bin qemu-system-i386 -hda image.bin --no-reboot --no-shutdown -m 32m -smp 2 -serial mon:stdio -D intlog.txt -d int tools: $(CC) tools/diskwrite.c -o diskwrite @@ -19,25 +20,30 @@ bootloader: # kernel: $(OBJS) kernel: nasm src/kernel/entry.s -o bin/kernel/entry.o -f elf32 + gcc src/kmodules/disk_driver.c $(CFLAGS) -o bin/modules/disk_driver.o -m32 sh c_build_helper.sh nasm src/kernel/arch_i386/idt.s -o bin/kernel/idt.o -felf32 # ld -T linker.ld bin/kernel/entry.o bin/kernel/*.o -melf_i386 ld -T linker.ld bin/kernel/*.o -melf_i386 -o kernel.elf ld -T linker.ld -o kernel_interface.elf -r -R kernel.elf -melf_i386 + ld bin/modules/disk_driver.o kernel_interface.elf -o idm.elf -melf_i386 # %.o: $(SRCS) # mkdir -p bin/kernel/$(shell dirname $@) # $(CC) $(CFLAGS) $< -o $@ init: - @mkdir mount - @mkdir bin - @mkdir bin/boot - @mkdir bin/kernel + mkdir mount + mkdir bin + mkdir bin/boot + mkdir bin/kernel + mkdir bin/modules .PHONY: tools makefile src/ clean: - @rm diskwrite - @rm image.bin - @rm -rf bin/ - @rm -rf mount/ \ No newline at end of file + rm diskwrite + rm image.bin + rm -rf bin/ + rm -rf mount/ + rm *.elf + rm intlog.txt \ No newline at end of file diff --git a/src/kmodules/disk_driver.c b/src/kmodules/disk_driver.c new file mode 100644 index 0000000..0658e76 --- /dev/null +++ b/src/kmodules/disk_driver.c @@ -0,0 +1,5 @@ +#include + +void main(){ + uint32_t *t = (void *)0xb8000; +} \ No newline at end of file diff --git a/src/kmodules/disk_driver.h b/src/kmodules/disk_driver.h new file mode 100644 index 0000000..e69de29 diff --git a/tools/diskwrite.c b/tools/diskwrite.c index d4cd03f..236164d 100644 --- a/tools/diskwrite.c +++ b/tools/diskwrite.c @@ -183,8 +183,13 @@ int create_file(char *path, fat_info *info, FILE *file){ //searching for a free dirent file_t *root_dir = (file_t *)root_dir_buffer; uint32_t free_file_index = 0; + // printf("filename: %s\n", root_dir[free_file_index].filename); + for(uint32_t i = 0; i < 0x1000; i++){ + printf("%2x ", root_dir_buffer[i]); + } while(root_dir[free_file_index].filename[0] && free_file_index < dirent_count){ free_file_index++; + printf("\033[0;31mSearching for file, indexx %d\033[0m", free_file_index); } if(free_file_index >= dirent_count){ //!FIXME