summaryrefslogtreecommitdiffhomepage
path: root/Kernel
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlal@softwarelabs.com>2024-06-16 12:56:02 +0200
committerAmlal EL Mahrouss <amlal@softwarelabs.com>2024-06-16 12:57:28 +0200
commit30bcb0416e8acaf3fb7b224e18534e7f64df26af (patch)
tree37e7481396c23d321601b091d178f8398b07b6c4 /Kernel
parent684197d4bcb66e94c1dbf37591ed2a984792e51d (diff)
MHR-31: Work in progress ARM64 port of the kernel.
- This is a very capable kernel, it has HAL capabilities. - We're going to make a timer to implmenent our scheduler. - We're going to support flash memoru and SD cards, alongside a SIM driver. Signed-off-by: Amlal EL Mahrouss <amlal@softwarelabs.com>
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/amd64-efi.make (renamed from Kernel/makefile)5
-rw-r--r--Kernel/arm64-cb.make73
2 files changed, 75 insertions, 3 deletions
diff --git a/Kernel/makefile b/Kernel/amd64-efi.make
index 1f749323..7e076a8d 100644
--- a/Kernel/makefile
+++ b/Kernel/amd64-efi.make
@@ -6,12 +6,11 @@
CC = x86_64-w64-mingw32-gcc
LD = x86_64-w64-mingw32-ld
CCFLAGS = -c -fPIC -ffreestanding -D__NEWOS_AMD64__ -mno-red-zone -fno-rtti -fno-exceptions \
- -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./ \
- -DBLEND2D_NO_STDCXX -DBLEND2D_NO_TLS -DBLEND2D_EMBED
+ -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./
ASM = nasm
-DISKDRIVER = -D__ATA_PIO__
+DISKDRIVER =
ifneq ($(ATA_PIO_SUPPORT), )
DISKDRIVER = -D__ATA_PIO__
diff --git a/Kernel/arm64-cb.make b/Kernel/arm64-cb.make
new file mode 100644
index 00000000..3b24bcdb
--- /dev/null
+++ b/Kernel/arm64-cb.make
@@ -0,0 +1,73 @@
+##################################################
+# (C) Zeta Electronics Corporation, all rights reserved.
+# This is the microkernel makefile.
+##################################################
+
+CC = arm-none-eabi-gcc.exe
+LD = arm-none-eabi-ld.exe
+CCFLAGS = -c -fPIC -ffreestanding -D__NEWOS_ARM64__ -fno-rtti -fno-exceptions -I../ -I./ \
+ -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__
+
+ASM = arm-none-eabi-as.exe
+
+DISKDRIVER = -D__FLASH_MEM__
+
+ifneq ($(SDCARD_SUPPORT), )
+DISKDRIVER = -D__SDCARD__
+endif
+
+ifneq ($(DEBUG_SUPPORT), )
+DEBUG = -D__DEBUG__
+endif
+
+COPY = cp
+
+# Add assembler, linker, and object files variables.
+ASMFLAGS = -f elf64
+
+# NewOS subsystem is 17 and entrypoint is __ImageStart
+LDFLAGS = -e __ImageStart
+LDOBJ = Objects/*.obj
+
+# This file is the kernel, responsible of task management and memory.
+KERNEL = newoskrnl.exe
+
+.PHONY: error
+error:
+ @echo "=== ERROR ==="
+ @echo "=> Use a specific target."
+
+MOVEALL=./MoveAll.sh
+
+.PHONY: newos-arm64-epm
+newos-arm64-epm: clean
+ $(CC) $(CCFLAGS) $(DISKDRIVER) $(DEBUG) $(wildcard Sources/*.cxx) \
+ $(wildcard Sources/FS/*.cxx) $(wildcard HALKit/ARM64/Storage/*.cxx) \
+ $(wildcard HALKit/ARM64/PCI/*.cxx) $(wildcard Sources/Network/*.cxx) $(wildcard Sources/Storage/*.cxx) \
+ $(wildcard HALKit/ARM64/*.cxx) $(wildcard HALKit/ARM64/*.cpp) \
+ $(wildcard HALKit/ARM64/*.s)
+
+ $(MOVEALL)
+
+OBJCOPY=x86_64-w64-mingw32-objcopy
+
+.PHONY: link-arm64-epm
+link-arm64-epm:
+ $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL)
+
+.PHONY: all
+all: newos-arm64-epm link-arm64-epm
+ qemu-img create -f raw newoskrnl.rom 512K
+ dd if=newoskrnl.exe of=newoskrnl.rom bs=1 seek=0 conv=notrunc
+ @echo "NewOSKrnl => OK."
+
+.PHONY: help
+help:
+ @echo "=== HELP ==="
+ @echo "all: Build kernel and link it."
+ @echo "link-arm64-epm: Link kernel. (EPM AMD64)"
+ @echo "newos-arm64-epm: Build kernel. (EPM AMD64)"
+
+.PHONY: clean
+clean:
+ rm -f $(LDOBJ) $(KERNEL)