summaryrefslogtreecommitdiffstats
path: root/arch/x86/PrimaryInit.cpp
blob: 535997856779c384be6edf2f5919c7eeda6ce407 (plain) (blame)
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
#include "PrimaryInit.h"
#include "idt/Idt.h"


// Function to test idt work. Should remove
void isr()
{
    out::display << "The kernel has finished" << '\n';
};

void PrimaryInitialization::processorInitialize()
{
    MngIdt &mngIdt = MngIdt::getInstance();
    MngGdt &mngGdt = MngGdt::getInstance();

    mngGdt.addDescriptor(DescSeg32::flatCodeKernel());
    mngGdt.addDescriptor(DescSeg32::flatDataKernel());
    mngGdt.loadGdt();

    mngIdt.setDescriptor(
        DescInterrupt32::InterruptKernelLong(
            (uint32)isr, 
            mngGdt.getCodeSegmentKernel()),
         0x20);
    mngIdt.loadIdt();
};

void PrimaryInitialization::devicesInitialize()
{
    out::display = VGADisplay();
};