summaryrefslogtreecommitdiff
path: root/kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src')
-rw-r--r--kernel/src/boot.asm8
-rw-r--r--kernel/src/grub.cfg7
-rw-r--r--kernel/src/linker.ld16
-rw-r--r--kernel/src/multiboot_header.asm15
4 files changed, 46 insertions, 0 deletions
diff --git a/kernel/src/boot.asm b/kernel/src/boot.asm
new file mode 100644
index 0000000..839457e
--- /dev/null
+++ b/kernel/src/boot.asm
@@ -0,0 +1,8 @@
+global start
+
+section .text
+bits 32
+start:
+ ; print 'OK'
+ mov dword [0xb8000], 0x2f4b2f4f
+ hlt
diff --git a/kernel/src/grub.cfg b/kernel/src/grub.cfg
new file mode 100644
index 0000000..ba8f8e8
--- /dev/null
+++ b/kernel/src/grub.cfg
@@ -0,0 +1,7 @@
+set timeout=0
+set default=0
+
+menuentry "uff-os" {
+ multiboot2 /boot/kernel.bin
+ boot
+}
diff --git a/kernel/src/linker.ld b/kernel/src/linker.ld
new file mode 100644
index 0000000..cef8809
--- /dev/null
+++ b/kernel/src/linker.ld
@@ -0,0 +1,16 @@
+ENTRY(start)
+
+SECTIONS {
+ . = 1M;
+
+ .boot :
+ {
+ /* ensure that the multiboot heater is at the beginning */
+ *(.multiboot_header)
+ }
+
+ .text :
+ {
+ *(.text)
+ }
+}
diff --git a/kernel/src/multiboot_header.asm b/kernel/src/multiboot_header.asm
new file mode 100644
index 0000000..9c9d859
--- /dev/null
+++ b/kernel/src/multiboot_header.asm
@@ -0,0 +1,15 @@
+section .multiboot_header
+header_start:
+ dd 0xe85250d6 ; magic number (multiboot 2)
+ dd 0 ; architecture 0
+ dd header_end - header_start ; header length
+ ; checksum
+ dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start))
+
+ ; insert optional multiboot tags here
+
+ ; required end tag
+ dw 0 ; type
+ dw 0 ; flags
+ dd 8 ; size
+header_end: