From 20dd72e40dc2728d3c5335d860e4b8ab8da14fcc Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Mon, 25 Oct 2021 00:36:33 +0200 Subject: Changing build system to recursive make --- src/as/boot.s | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/as/boot.s (limited to 'src/as/boot.s') diff --git a/src/as/boot.s b/src/as/boot.s new file mode 100644 index 0000000..6fe5ab8 --- /dev/null +++ b/src/as/boot.s @@ -0,0 +1,82 @@ +.set ALIGN, 1<<0 +.set MEMINFO, 1<<1 +.set FLAGS, ALIGN | MEMINFO +.set MAGIC, 0x1BADB002 +.set CHECKSUM, -(MAGIC + FLAGS) + +.section .multiboot +.align 4 +.long MAGIC +.long FLAGS +.long CHECKSUM + +.global _start +.global load_gdt +.global load_idt +.global enable_interrupts +.global keyboard_handler +.global ioport_in +.global ioport_out + +.extern init_gdt_table +.extern handle_keyboard_interrupt +.extern kernel_main + +load_gdt: + movl 4(%esp), %edx + lgdt (%edx) + ret + +load_idt: + movl 4(%esp), %edx + lidt (%edx) + sti + ret + +keyboard_handler: + pushal + cld + call handle_keyboard_interrupt + popal + iretl + +ioport_in: + movl 4(%esp),%edx + in %dx,%al + ret + +ioport_out: + movl 4(%esp),%edx + movl 8(%esp),%eax + outb %al,%dx + ret + +.set CODE_SEGMENT, 0x08 +.set DATA_SEGMENT, 0x10 + +.section .bss +.align 16 +stack_bottom: +.skip 16384 +stack_top: + +.section .text +.type _start, @function +_start: + call init_gdt_table + ljmp $CODE_SEGMENT, $code + +code: + movw $DATA_SEGMENT, %ax + movw %ax, %ds + movw %ax, %es + movw %ax, %fs + movw %ax, %gs + movw %ax, %ss + movl $stack_top, %esp + cli + call _init + call kernel_main + hlt + +.size _start, . - _start -- cgit v1.2.3