summaryrefslogtreecommitdiff
path: root/kc/core/kc_main.c
blob: 4f70d007ee5708f39a186cb0ab54115698dfa2fe (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
37
38
39
40
41
42
43
44
45
#include "cpu.h"
#include "serial.h"
#include "memory.h"
#include "panic.h"
#include "task.h"
#include "pic8259.h"
#include "pit8253.h"
#include "cpu/irq.h"
#include "video.h"
#include "i8042.h"

#include <kernel/entry.h>
#include <libc/stdio.h>

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

//TODO: initialize vm before cpu?
//      alternatively, split memory and/or cpu initialization steps

static struct kc_boot_data *boot_data;

unsigned long kc_main(struct kc_boot_data *data)
{
    boot_data = data;
    cpu_init();
    serial_init();
    video_init();
    printf("sophia starting, boot data %#lx\n", boot_data);
    memory_init();
    pic8259_init();
    pit8253_timer_source.init();
    pit8253_timer_source.set_frequency(1);
    i8042_input_source.init();
    task_init();

    return 0;
}

struct kc_boot_data *get_boot_data()
{
    return boot_data;
}