diff options
Diffstat (limited to 'bootstrap/stage2')
-rw-r--r-- | bootstrap/stage2/Makefile | 34 | ||||
-rw-r--r-- | bootstrap/stage2/arch/x86_64/linker.ld | 21 | ||||
-rw-r--r-- | bootstrap/stage2/arch/x86_64/make.conf | 5 | ||||
-rw-r--r-- | bootstrap/stage2/init/init.c | 37 |
4 files changed, 97 insertions, 0 deletions
diff --git a/bootstrap/stage2/Makefile b/bootstrap/stage2/Makefile new file mode 100644 index 0000000..2b3951d --- /dev/null +++ b/bootstrap/stage2/Makefile @@ -0,0 +1,34 @@ +# Copyright (C) 2025 Danny Holman <dholman@gymli.org> +# +# This file is part of BoxOS, a free and open-source Unix-like operating +# system. +# +# BoxOS is free software; you can redistribute it and/or modify under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# BoxOS is distributed in the hope it will be useful, but WITHOUT ANY WARRANTY; +# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# BoxOS; if not, see <https://www.gnu.org/licenses/>. + +include $(ROOTDIR)/common.mk + +ifeq (BS_DEBUG,YES) + AFLAGS+=-g + CFLAGS+=-g +endif + +INCLUDE+=-Iinclude -I$(ROOTDIR)kernel/include +CFLAGS+=-ffreestanding -fno-stack-protector $(BS_OPLVL) + +BINARY=bootstrap-stage2 + +include $(ARCHDIR)/make.conf + +OBJS=$(ARCH_OBJS) \ + +include $(ROOTDIR)/patterns.mk diff --git a/bootstrap/stage2/arch/x86_64/linker.ld b/bootstrap/stage2/arch/x86_64/linker.ld new file mode 100644 index 0000000..7bd0460 --- /dev/null +++ b/bootstrap/stage2/arch/x86_64/linker.ld @@ -0,0 +1,21 @@ +ENTRY(_start) + +SECTIONS { + . = 0x2000; + __bstart = .; + + .text : { + *(.text) + } + + .data : { + *(.data) + } + + .bss : { + *(.bss) + *(COMMON) + } + + __bend = .; +} diff --git a/bootstrap/stage2/arch/x86_64/make.conf b/bootstrap/stage2/arch/x86_64/make.conf new file mode 100644 index 0000000..930b95e --- /dev/null +++ b/bootstrap/stage2/arch/x86_64/make.conf @@ -0,0 +1,5 @@ +AFLAGS+=-target $(ARCH)-none-elf +CFLAGS+=-target $(ARCH)-none-elf -mno-red-zone -mno-mmx -mno-sse -mno-sse2 +LDFLAGS+=--script=$(ARCHDIR)/linker.ld + +ARCH_OBJS=$(ARCHDIR)/asm/entry.o \ diff --git a/bootstrap/stage2/init/init.c b/bootstrap/stage2/init/init.c new file mode 100644 index 0000000..e224e19 --- /dev/null +++ b/bootstrap/stage2/init/init.c @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2025 Danny Holman <dholman@gymli.org> + * + * This file is part of BoxOS, a free and open-source Unix-like operating + * system. + * + * BoxOS is free software; you can redistribute it and/or modify under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * BoxOS is distributed in the hope it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * BoxOS; if not, see <https://www.gnu.org/licenses/>. + */ + +#include <sys/memory_map.h> +#include <sys/efi.h> +#include <elf.h> +#include <stdint.h> +#include <string.h> + +char* read_file(const char *filename) { +} + +uintptr_t load_kernel(const char *filename) { + char *buffer; +} + +void parse_cfg(const char *filename) { +} + +int bootstrap_main(mmap_entry_t *mmap, uintptr_t num_entries) { +} |