summaryrefslogtreecommitdiff
path: root/kernel/main.c
blob: 93647f51ae46f711586f7e6c87141e897acfe27b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "printf.h"
#include "gdt.h"
#include "idt.h"
#include "irq.h"

void main() {
	printf("main()\n");
	
	gdt_init();
	printf("GDT set.\n");
	
	idt_init();
	printf("IDT set.\n");
	
	irq_init();
	printf("IRQs set.\n");
	
	asm volatile("sti");
	
	asm volatile(
		"push $0x23\n"
		"push $entry_stack_top\n"
		"pushf\n"
		"push $0x1b\n"
		"push $0x0010a000\n"
		"iret\n"
	);
	
	printf("Halting.\n");
	
	asm volatile(
		"cli\n"
		"hlt\n"
	);
	while(1);
}