Adjusted structure to use make command.
This commit is contained in:
parent
74de6123a9
commit
9fcf6b866f
|
@ -1,10 +0,0 @@
|
|||
#define HYPKERNEL32 __attribute__((__cdecl__))
|
||||
extern void* kernel_stack;
|
||||
extern void print_str(char* dst);
|
||||
void HYPKERNEL32 hk_main(void* multiboot_info)
|
||||
{
|
||||
char* str = "Kernel is here";
|
||||
print_str(str);
|
||||
fuck:
|
||||
goto fuck;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
menuentry "HOS Multiboot [Dev]" {
|
||||
multiboot /HOS/kernel.bin
|
||||
}
|
||||
menuentry "HOS Multiboot2 [Pending]" {
|
||||
multiboot2 /HOS/multiboot2.bin
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
OUTPUT_FORMAT("binary")
|
||||
INPUT
|
||||
(
|
||||
multiboot.o
|
||||
entry.o
|
||||
)
|
||||
OUTPUT(kernel.bin)
|
||||
SECTIONS
|
||||
{
|
||||
.text.start (0x1000000):
|
||||
{
|
||||
multiboot.o(.multiboot)
|
||||
}
|
||||
|
||||
.text :
|
||||
{
|
||||
*(.text)
|
||||
}
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
}
|
||||
|
||||
.bss :
|
||||
{
|
||||
*(.bss)
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
sudo rm HOS.iso
|
||||
sudo nasm -f elf32 multiboot.asm -o multiboot.o
|
||||
sudo gcc -m32 -masm=intel -c entry.c -o entry.o
|
||||
|
||||
sudo mkdir temp_iso
|
||||
sudo mkdir temp_iso/HOS
|
||||
sudo mkdir temp_iso/boot
|
||||
sudo mkdir temp_iso/boot/grub
|
||||
#link files
|
||||
sudo ld -m elf_i386 -T link.ld
|
||||
|
||||
#remove temp obj files
|
||||
sudo rm multiboot.o
|
||||
sudo rm entry.o
|
||||
|
||||
#sudo cp kernel.bin kernel.binn
|
||||
sudo mv kernel.bin temp_iso/HOS/kernel.bin
|
||||
|
||||
sudo cp grub.cfg temp_iso/boot/grub/
|
||||
#make iso file
|
||||
sudo grub-mkrescue -o HOS.iso temp_iso
|
||||
sudo rm -rf temp_iso
|
|
@ -4,8 +4,8 @@ config_interface: win32config
|
|||
display_library: win32
|
||||
magic_break: enabled=1
|
||||
memory: host=256, guest=512
|
||||
romimage: file="C:\Program Files (x86)\Bochs-2.6.6/BIOS-bochs-latest"
|
||||
vgaromimage: file="C:\Program Files (x86)\Bochs-2.6.6/VGABIOS-lgpl-latest"
|
||||
romimage: file="bochs/BIOS-bochs-latest"
|
||||
vgaromimage: file="bochs/VGABIOS-lgpl-latest"
|
||||
boot: cdrom
|
||||
floppy_bootsig_check: disabled=0
|
||||
# no floppya
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -4,8 +4,8 @@ config_interface: win32config
|
|||
display_library: win32, options="gui_debug"
|
||||
magic_break: enabled=1
|
||||
memory: host=256, guest=512
|
||||
romimage: file="C:\Program Files (x86)\Bochs-2.6.6\BIOS-bochs-latest"
|
||||
vgaromimage: file="C:\Program Files (x86)\Bochs-2.6.6\VGABIOS-lgpl-latest"
|
||||
romimage: file="bochs/BIOS-bochs-latest"
|
||||
vgaromimage: file="bochs/VGABIOS-lgpl-latest"
|
||||
boot: cdrom
|
||||
floppy_bootsig_check: disabled=0
|
||||
# no floppya
|
128
makefile
128
makefile
|
@ -1,104 +1,56 @@
|
|||
ENTRYPOINT = 0x30000
|
||||
ASM = nasm
|
||||
ASMBOOTFLAGS = -I inc/ -I lib/
|
||||
ASMLOADERFLAGS = -I inc/ -I lib/
|
||||
ASMKERNELFLAGS = -f elf
|
||||
CFLAGS = -I kclib/ -c -fno-builtin
|
||||
LDFLAGS = -e _start -Ttext $(ENTRYPOINT)
|
||||
CC = gcc
|
||||
LD = ld
|
||||
OPY = objcopy
|
||||
C_SRC_PATH = x86/src/c
|
||||
ASM_SRC_PATH = x86/src/asm
|
||||
OUTPUT_DIR = temp
|
||||
C_FLAGS_32 = -m32 -c -fno-builtin -masm=intel -Wall -Wextra
|
||||
ASM_FLAGS_32 = -f elf32 -I $(ASM_SRC_PATH)/
|
||||
LD_FLAGS_32 = -m elf_i386
|
||||
LD_SCRIPT = build/link.ld
|
||||
GRUB_CFG = build/grub.cfg
|
||||
|
||||
#Add corresponding .o files from kclib and kalib
|
||||
KERNELBINPRE = kernel/kernel.o kclib/KeKernelEntry.o kalib/_asm_KeMemory32.o kalib/_asm_KeGraph32.o kalib/_asm_KeIO32.o kalib/_asm_KeProcess32.o kclib/KeProcess32.o kclib/KeGraph32.o kclib/KeIO32.o kclib/KeMemory32.o
|
||||
#C source code
|
||||
C_FILES = $(wildcard $(C_SRC_PATH)/*.c)
|
||||
|
||||
#Add all .o files
|
||||
OBJECTFILES = kernel/kernel.o kclib/KeKernelEntry.o kalib/_asm_KeMemory32.o kalib/_asm_KeGraph32.o kalib/_asm_KeIO32.o kalib/_asm_KeProcess32.o kclib/KeProcess32.o kclib/KeGraph32.o kclib/KeIO32.o kclib/KeMemory32.o
|
||||
#ASM source code
|
||||
ASM_FILES = $(wildcard $(ASM_SRC_PATH)/*.asm)
|
||||
|
||||
#Add all .bin files
|
||||
BINFILES = boot/boot.bin boot/loader.bin kernel/kernel.bin
|
||||
#bin files
|
||||
KERNEL_BIN = $(OUTPUT_DIR)/kernel.bin
|
||||
|
||||
#Add all temp files
|
||||
TEMPFILES = kernel/kernel.out
|
||||
|
||||
#Prerequisites
|
||||
#Add new .h/.c files form kclib
|
||||
KEKERNELENTRYPRE = kclib/KeKernelEntry.c kclib/KeGraph32.h kclib/KeDef.h kclib/KeGlobalVariables.h kclib/KeMemory32.h kclib/KeIO32.h kclib/KeProcess32.h kclib/KeProcess32.c kclib/KeGraph32.c kclib/KeMemory32.c kclib/KeProcess32.c kclib/KeIO32.c kclib/KeKernelStruct32.h
|
||||
|
||||
#No need to change
|
||||
_ASM_KEGRAPH32PRE = kalib/_asm_KeGraph32.asm
|
||||
|
||||
_ASM_KEMEMORY32PRE = kalib/_asm_KeMemory32.asm
|
||||
|
||||
KERNELOPRE = kernel/kernel.asm
|
||||
|
||||
BOOTBINPRE = boot/boot.asm inc/FAT12Header.inc lib/fat12readfile.lib
|
||||
|
||||
LOADERBINPRE = boot/loader.asm inc/FAT12Header.inc inc/pm.inc lib/fat12readfile.lib lib/io16.lib lib/io32.lib lib/mem32.lib
|
||||
|
||||
_ASM_KEIO32PRE = kalib/_asm_KeIO32.asm
|
||||
|
||||
_ASM_KEPROCESS32PRE = kalib/_asm_KeProcess32.asm
|
||||
#Object files
|
||||
C_OBJ_FILES = $(addprefix $(OUTPUT_DIR)/,$(notdir $(C_FILES:.c=.o)))
|
||||
ASM_OBJ_FILES = $(addprefix $(OUTPUT_DIR)/,$(notdir $(ASM_FILES:.asm=.o)))
|
||||
ALL_OBJ_FILES = $(C_OBJ_FILES) $(ASM_OBJ_FILES)
|
||||
|
||||
|
||||
all : init compile link buildiso clean
|
||||
|
||||
init:
|
||||
sudo mkdir $(OUTPUT_DIR)
|
||||
|
||||
|
||||
.PHONY : everything clean all image buildimg
|
||||
everything : $(BINFILES) $(OBJECTFILES) $(TEMPFILES)
|
||||
compile: $(C_OBJ_FILES) $(ASM_OBJ_FILES)
|
||||
|
||||
all : clean everything
|
||||
|
||||
image: all buildimg
|
||||
link: $(KERNEL_BIN)
|
||||
|
||||
clean:
|
||||
rm -rf $(BINFILES) $(OBJECTFILES) $(TEMPFILES)
|
||||
|
||||
buildimg:
|
||||
dd if=boot/boot.bin of=a.img bs=512 count=1 conv=notrunc
|
||||
cp -f kernel/kernel.bin kernel.bin
|
||||
cp -f boot/loader.bin loader.bin
|
||||
rm -rf $(BINFILES) $(OBJECTFILES) $(TEMPFILES)
|
||||
|
||||
boot/boot.bin: $(BOOTBINPRE)
|
||||
$(ASM) $(ASMBOOTFLAGS) -o boot/boot.bin boot/boot.asm
|
||||
|
||||
boot/loader.bin: $(LOADERPRE)
|
||||
$(ASM) $(ASMBOOTFLAGS) -o boot/loader.bin boot/loader.asm
|
||||
|
||||
kernel/kernel.o: $(KERNELOPRE)
|
||||
$(ASM) $(ASMKERNELFLAGS) -o kernel/kernel.o kernel/kernel.asm
|
||||
|
||||
kalib/_asm_KeMemory32.o: $(_ASM_KEMEMORY32PRE)
|
||||
$(ASM) $(ASMKERNELFLAGS) -o kalib/_asm_KeMemory32.o kalib/_asm_KeMemory32.asm
|
||||
|
||||
kalib/_asm_KeGraph32.o: $(_ASM_KEGRAPH32PRE)
|
||||
$(ASM) $(ASMKERNELFLAGS) -o kalib/_asm_KeGraph32.o kalib/_asm_KeGraph32.asm
|
||||
|
||||
kalib/_asm_KeProcess32.o: $(_ASM_KEGRAPH32PRE)
|
||||
$(ASM) $(ASMKERNELFLAGS) -o kalib/_asm_KeProcess32.o kalib/_asm_KeProcess32.asm
|
||||
|
||||
kernel/kernel.bin: $(KERNELBINPRE)
|
||||
$(LD) $(OBJECTFILES) $(LDFLAGS) -o kernel/kernel.out
|
||||
$(OPY) kernel/kernel.out -O binary kernel/kernel.bin
|
||||
|
||||
kalib/_asm_KeIO32.o: $(_ASM_KEIO32PRE)
|
||||
$(ASM) $(ASMKERNELFLAGS) -o kalib/_asm_KeIO32.o kalib/_asm_KeIO32.asm
|
||||
|
||||
#C LIBS
|
||||
kclib/KeKernelEntry.o: $(KEKERNELENTRYPRE)
|
||||
$(CC) $(CFLAGS) -o kclib/KeKernelEntry.o kclib/KeKernelEntry.c
|
||||
|
||||
kclib/KeIO32.o: $(KERNELBINPRE)
|
||||
$(CC) $(CFLAGS) -o kclib/KeIO32.o kclib/KeIO32.c
|
||||
|
||||
kclib/KeGraph32.o: $(KERNELBINPRE)
|
||||
$(CC) $(CFLAGS) -o kclib/KeGraph32.o kclib/KeGraph32.c
|
||||
|
||||
kclib/KeProcess32.o: $(KERNELBINPRE)
|
||||
$(CC) $(CFLAGS) -o kclib/KeProcess32.o kclib/KeProcess32.c
|
||||
|
||||
kclib/KeMemory32.o: $(KERNELBINPRE)
|
||||
$(CC) $(CFLAGS) -o kclib/KeMemory32.o kclib/KeMemory32.c
|
||||
sudo rm -rf $(OUTPUT_DIR)
|
||||
buildiso:
|
||||
sudo mkdir $(OUTPUT_DIR)/temp_iso
|
||||
sudo mkdir $(OUTPUT_DIR)/temp_iso/HOS
|
||||
sudo mkdir $(OUTPUT_DIR)/temp_iso/boot
|
||||
sudo mkdir $(OUTPUT_DIR)/temp_iso/boot/grub
|
||||
sudo mv $(KERNEL_BIN) $(OUTPUT_DIR)/temp_iso/HOS/kernel.bin
|
||||
sudo cp $(GRUB_CFG) $(OUTPUT_DIR)/temp_iso/boot/grub/
|
||||
sudo grub-mkrescue -o HOS.iso $(OUTPUT_DIR)/temp_iso
|
||||
|
||||
|
||||
$(C_OBJ_FILES): $(C_FILES)
|
||||
sudo $(CC) $(C_FLAGS_32) -o $@ $<
|
||||
|
||||
$(ASM_OBJ_FILES): $(ASM_FILES)
|
||||
sudo $(ASM) $(ASM_FLAGS_32) -o $@ $<
|
||||
|
||||
$(KERNEL_BIN): $(ALL_OBJ_FILES)
|
||||
sudo $(LD) $(LD_FLAGS_32) -T $(LD_SCRIPT) -o $(KERNEL_BIN) $(ALL_OBJ_FILES)
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
extern void* kernel_stack;
|
||||
extern void print_str(char* src);
|
||||
int hk_main(void)
|
||||
{
|
||||
char* msg = "Welcome to HYP OS 1.0";
|
||||
print_str(msg);
|
||||
loop:
|
||||
goto loop;
|
||||
}
|
Loading…
Reference in New Issue