From 9af96aa1e15676fb90d83cdea9defdb06e53f922 Mon Sep 17 00:00:00 2001 From: Agila Forge Importer Date: Mon, 13 Jul 2026 11:54:29 +0000 Subject: [PATCH] Initial project import --- .gitignore | 17 +++++++++++++++++ LICENSE | 16 ++++++++++++++++ Makefile | 28 ++++++++++++++++++++++++++++ arch/arm64/.keep | 0 arch/riscv64/.keep | 0 arch/x86_64/.keep | 0 boot/.keep | 0 examples/.keep | 0 kernel.gpr | 23 +++++++++++++++++++++++ kernel/console/console.adb | 18 ++++++++++++++++++ kernel/console/console.ads | 5 +++++ kernel/cpu/cpu.adb | 6 ++++++ kernel/cpu/cpu.ads | 3 +++ kernel/drivers/.keep | 0 kernel/fs/.keep | 0 kernel/interrupt/interrupt.adb | 6 ++++++ kernel/interrupt/interrupt.ads | 3 +++ kernel/kernel.adb | 26 ++++++++++++++++++++++++++ kernel/kernel.ads | 3 +++ kernel/main.adb | 6 ++++++ kernel/memory/memory.adb | 6 ++++++ kernel/memory/memory.ads | 3 +++ kernel/scheduler/scheduler.adb | 6 ++++++ kernel/scheduler/scheduler.ads | 3 +++ kernel/services/.keep | 0 kernel/timer/timer.adb | 6 ++++++ kernel/timer/timer.ads | 3 +++ runtime/.keep | 0 scripts/.keep | 0 sdk/.keep | 0 tests/.keep | 0 tools/.keep | 0 32 files changed, 187 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 arch/arm64/.keep create mode 100644 arch/riscv64/.keep create mode 100644 arch/x86_64/.keep create mode 100644 boot/.keep create mode 100644 examples/.keep create mode 100644 kernel.gpr create mode 100644 kernel/console/console.adb create mode 100644 kernel/console/console.ads create mode 100644 kernel/cpu/cpu.adb create mode 100644 kernel/cpu/cpu.ads create mode 100644 kernel/drivers/.keep create mode 100644 kernel/fs/.keep create mode 100644 kernel/interrupt/interrupt.adb create mode 100644 kernel/interrupt/interrupt.ads create mode 100644 kernel/kernel.adb create mode 100644 kernel/kernel.ads create mode 100644 kernel/main.adb create mode 100644 kernel/memory/memory.adb create mode 100644 kernel/memory/memory.ads create mode 100644 kernel/scheduler/scheduler.adb create mode 100644 kernel/scheduler/scheduler.ads create mode 100644 kernel/services/.keep create mode 100644 kernel/timer/timer.adb create mode 100644 kernel/timer/timer.ads create mode 100644 runtime/.keep create mode 100644 scripts/.keep create mode 100644 sdk/.keep create mode 100644 tests/.keep create mode 100644 tools/.keep diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4f177d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +/build/ +/bin/ +/out/ +/target/ +*.o +*.obj +*.ali +*.elf +*.map +*.lst +*.img +*.iso +*.log +.vscode/ +.idea/ +.DS_Store +Thumbs.db diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a182822 --- /dev/null +++ b/LICENSE @@ -0,0 +1,16 @@ +Agila Open License v1.0 + +Copyright (c) 2026 Matthew McClung + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software to use, copy, modify, merge, publish, distribute, and +sublicense the software, subject to the following conditions: + +1. This license and copyright notice must be preserved. +2. Significant modifications must be clearly identified. +3. The Agila, Flying V, and AGX names and logos may not be used to imply + endorsement or official status without written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dafa449 --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +PROJECT := agila-open-kernel +BUILD := build +OBJ := $(BUILD)/obj +BIN := $(BUILD)/bin +GPRBUILD := gprbuild +GPRCLEAN := gprclean + +.PHONY: all clean rebuild run help + +all: + mkdir -p $(OBJ) $(BIN) + $(GPRBUILD) -P kernel.gpr + +clean: + $(GPRCLEAN) -P kernel.gpr || true + rm -rf $(BUILD) + +rebuild: clean all + +run: all + $(BIN)/main + +help: + @echo "Agila Open Kernel" + @echo "make Build the host prototype" + @echo "make run Build and run the host prototype" + @echo "make clean Remove build output" + @echo "make rebuild Clean and rebuild" diff --git a/arch/arm64/.keep b/arch/arm64/.keep new file mode 100644 index 0000000..e69de29 diff --git a/arch/riscv64/.keep b/arch/riscv64/.keep new file mode 100644 index 0000000..e69de29 diff --git a/arch/x86_64/.keep b/arch/x86_64/.keep new file mode 100644 index 0000000..e69de29 diff --git a/boot/.keep b/boot/.keep new file mode 100644 index 0000000..e69de29 diff --git a/examples/.keep b/examples/.keep new file mode 100644 index 0000000..e69de29 diff --git a/kernel.gpr b/kernel.gpr new file mode 100644 index 0000000..fe7fa58 --- /dev/null +++ b/kernel.gpr @@ -0,0 +1,23 @@ +project Kernel is + for Languages use ("Ada"); + + for Source_Dirs use + ("kernel", + "kernel/console", + "kernel/cpu", + "kernel/memory", + "kernel/scheduler", + "kernel/interrupt", + "kernel/timer"); + + for Object_Dir use "build/obj"; + for Exec_Dir use "build/bin"; + for Main use ("main.adb"); + + package Compiler is + for Default_Switches ("Ada") use + ("-gnat2022", + "-gnata", + "-gnatwa"); + end Compiler; +end Kernel; diff --git a/kernel/console/console.adb b/kernel/console/console.adb new file mode 100644 index 0000000..11d3592 --- /dev/null +++ b/kernel/console/console.adb @@ -0,0 +1,18 @@ +with Ada.Text_IO; + +package body Console is + procedure Initialize is + begin + null; + end Initialize; + + procedure Write (Text : String) is + begin + Ada.Text_IO.Put (Text); + end Write; + + procedure Write_Line (Text : String) is + begin + Ada.Text_IO.Put_Line (Text); + end Write_Line; +end Console; diff --git a/kernel/console/console.ads b/kernel/console/console.ads new file mode 100644 index 0000000..b32937f --- /dev/null +++ b/kernel/console/console.ads @@ -0,0 +1,5 @@ +package Console is + procedure Initialize; + procedure Write (Text : String); + procedure Write_Line (Text : String); +end Console; diff --git a/kernel/cpu/cpu.adb b/kernel/cpu/cpu.adb new file mode 100644 index 0000000..5dc96ca --- /dev/null +++ b/kernel/cpu/cpu.adb @@ -0,0 +1,6 @@ +package body Cpu is + procedure Initialize is + begin + null; + end Initialize; +end Cpu; diff --git a/kernel/cpu/cpu.ads b/kernel/cpu/cpu.ads new file mode 100644 index 0000000..4b08c94 --- /dev/null +++ b/kernel/cpu/cpu.ads @@ -0,0 +1,3 @@ +package Cpu is + procedure Initialize; +end Cpu; diff --git a/kernel/drivers/.keep b/kernel/drivers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/kernel/fs/.keep b/kernel/fs/.keep new file mode 100644 index 0000000..e69de29 diff --git a/kernel/interrupt/interrupt.adb b/kernel/interrupt/interrupt.adb new file mode 100644 index 0000000..050f9a6 --- /dev/null +++ b/kernel/interrupt/interrupt.adb @@ -0,0 +1,6 @@ +package body Interrupt is + procedure Initialize is + begin + null; + end Initialize; +end Interrupt; diff --git a/kernel/interrupt/interrupt.ads b/kernel/interrupt/interrupt.ads new file mode 100644 index 0000000..47ba40d --- /dev/null +++ b/kernel/interrupt/interrupt.ads @@ -0,0 +1,3 @@ +package Interrupt is + procedure Initialize; +end Interrupt; diff --git a/kernel/kernel.adb b/kernel/kernel.adb new file mode 100644 index 0000000..ad3fca7 --- /dev/null +++ b/kernel/kernel.adb @@ -0,0 +1,26 @@ +with CPU; +with Memory; +with Console; +with Scheduler; +with Interrupt; +with Timer; + +package body Kernel is + procedure Start is + begin + CPU.Initialize; + Memory.Initialize; + Console.Initialize; + Interrupt.Initialize; + Timer.Initialize; + Scheduler.Initialize; + + Console.Write_Line ("Agila Open Kernel 0.1"); + Console.Write_Line ("CPU: initialized"); + Console.Write_Line ("Memory: initialized"); + Console.Write_Line ("Interrupts: initialized"); + Console.Write_Line ("Timer: initialized"); + Console.Write_Line ("Scheduler: initialized"); + Console.Write_Line ("System ready"); + end Start; +end Kernel; diff --git a/kernel/kernel.ads b/kernel/kernel.ads new file mode 100644 index 0000000..f158e3b --- /dev/null +++ b/kernel/kernel.ads @@ -0,0 +1,3 @@ +package Kernel is + procedure Start; +end Kernel; diff --git a/kernel/main.adb b/kernel/main.adb new file mode 100644 index 0000000..dc332cc --- /dev/null +++ b/kernel/main.adb @@ -0,0 +1,6 @@ +with Kernel; + +procedure Main is +begin + Kernel.Start; +end Main; diff --git a/kernel/memory/memory.adb b/kernel/memory/memory.adb new file mode 100644 index 0000000..6f741b3 --- /dev/null +++ b/kernel/memory/memory.adb @@ -0,0 +1,6 @@ +package body Memory is + procedure Initialize is + begin + null; + end Initialize; +end Memory; diff --git a/kernel/memory/memory.ads b/kernel/memory/memory.ads new file mode 100644 index 0000000..dffeced --- /dev/null +++ b/kernel/memory/memory.ads @@ -0,0 +1,3 @@ +package Memory is + procedure Initialize; +end Memory; diff --git a/kernel/scheduler/scheduler.adb b/kernel/scheduler/scheduler.adb new file mode 100644 index 0000000..e8c2537 --- /dev/null +++ b/kernel/scheduler/scheduler.adb @@ -0,0 +1,6 @@ +package body Scheduler is + procedure Initialize is + begin + null; + end Initialize; +end Scheduler; diff --git a/kernel/scheduler/scheduler.ads b/kernel/scheduler/scheduler.ads new file mode 100644 index 0000000..0e09b19 --- /dev/null +++ b/kernel/scheduler/scheduler.ads @@ -0,0 +1,3 @@ +package Scheduler is + procedure Initialize; +end Scheduler; diff --git a/kernel/services/.keep b/kernel/services/.keep new file mode 100644 index 0000000..e69de29 diff --git a/kernel/timer/timer.adb b/kernel/timer/timer.adb new file mode 100644 index 0000000..fe4125c --- /dev/null +++ b/kernel/timer/timer.adb @@ -0,0 +1,6 @@ +package body Timer is + procedure Initialize is + begin + null; + end Initialize; +end Timer; diff --git a/kernel/timer/timer.ads b/kernel/timer/timer.ads new file mode 100644 index 0000000..401e1ef --- /dev/null +++ b/kernel/timer/timer.ads @@ -0,0 +1,3 @@ +package Timer is + procedure Initialize; +end Timer; diff --git a/runtime/.keep b/runtime/.keep new file mode 100644 index 0000000..e69de29 diff --git a/scripts/.keep b/scripts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/sdk/.keep b/sdk/.keep new file mode 100644 index 0000000..e69de29 diff --git a/tests/.keep b/tests/.keep new file mode 100644 index 0000000..e69de29 diff --git a/tools/.keep b/tools/.keep new file mode 100644 index 0000000..e69de29