summaryrefslogtreecommitdiff
path: root/asm/src
diff options
context:
space:
mode:
Diffstat (limited to 'asm/src')
-rw-r--r--asm/src/arch/x86_64/boot.asm18
-rw-r--r--asm/src/arch/x86_64/grub.cfg7
-rw-r--r--asm/src/arch/x86_64/linker.ld16
-rw-r--r--asm/src/arch/x86_64/multiboot_header.asm15
4 files changed, 56 insertions, 0 deletions
diff --git a/asm/src/arch/x86_64/boot.asm b/asm/src/arch/x86_64/boot.asm
new file mode 100644
index 0000000..0a5f650
--- /dev/null
+++ b/asm/src/arch/x86_64/boot.asm
@@ -0,0 +1,18 @@
+global start
+
+section .text
+bits 32
+start:
+ ; print to the screen
+ mov dword [0xb8000], 0x2f632f49
+ mov dword [0xb8004], 0x00202f68
+ mov dword [0xb8008], 0x4f694f6c
+ mov dword [0xb800c], 0x4f624f65
+ mov dword [0xb8010], 0x00204f65
+ mov dword [0xb8014], 0x2f732f49
+ mov dword [0xb8018], 0x00202f65
+ mov dword [0xb801c], 0x00204f26
+ mov dword [0xb8020], 0x2f612f4d
+ mov dword [0xb8024], 0x2f692f72
+ mov dword [0xb8028], 0x2f732f75
+ hlt
diff --git a/asm/src/arch/x86_64/grub.cfg b/asm/src/arch/x86_64/grub.cfg
new file mode 100644
index 0000000..03f4c4a
--- /dev/null
+++ b/asm/src/arch/x86_64/grub.cfg
@@ -0,0 +1,7 @@
+set timeout=0
+set default=0
+
+menuentry "VulkanOS" {
+ multiboot2 /boot/kernel.bin
+ boot
+}
diff --git a/asm/src/arch/x86_64/linker.ld b/asm/src/arch/x86_64/linker.ld
new file mode 100644
index 0000000..5d788f1
--- /dev/null
+++ b/asm/src/arch/x86_64/linker.ld
@@ -0,0 +1,16 @@
+ENTRY(start)
+
+SECTIONS {
+ . = 1M;
+
+ .boot :
+ {
+ /* ensure that the multiboot header is at the beginning */
+ *(.multiboot_header)
+ }
+
+ .text :
+ {
+ *(.text)
+ }
+}
diff --git a/asm/src/arch/x86_64/multiboot_header.asm b/asm/src/arch/x86_64/multiboot_header.asm
new file mode 100644
index 0000000..9a9289c
--- /dev/null
+++ b/asm/src/arch/x86_64/multiboot_header.asm
@@ -0,0 +1,15 @@
+section .multiboot_header
+header_start:
+ dd 0xe85250d6 ; magic number (multiboot 2)
+ dd 0 ; architecture 0 (protected mode i386)
+ 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: