OS/K works on real hw
This commit is contained in:
parent
836d967eee
commit
404f1ab20c
|
@ -120,19 +120,6 @@ void IdtSetup(void)
|
|||
IdtSetGate(45, (ulong)isr45, codeSeg, 0x8E);
|
||||
IdtSetGate(46, (ulong)isr46, codeSeg, 0x8E);
|
||||
IdtSetGate(47, (ulong)isr47, codeSeg, 0x8E);
|
||||
IdtSetGate(48, (ulong)isr48, codeSeg, 0x8E);
|
||||
IdtSetGate(49, (ulong)isr49, codeSeg, 0x8E);
|
||||
IdtSetGate(50, (ulong)isr50, codeSeg, 0x8E);
|
||||
IdtSetGate(51, (ulong)isr51, codeSeg, 0x8E);
|
||||
IdtSetGate(52, (ulong)isr52, codeSeg, 0x8E);
|
||||
IdtSetGate(53, (ulong)isr53, codeSeg, 0x8E);
|
||||
IdtSetGate(54, (ulong)isr54, codeSeg, 0x8E);
|
||||
IdtSetGate(55, (ulong)isr55, codeSeg, 0x8E);
|
||||
IdtSetGate(56, (ulong)isr56, codeSeg, 0x8E);
|
||||
IdtSetGate(57, (ulong)isr57, codeSeg, 0x8E);
|
||||
IdtSetGate(58, (ulong)isr58, codeSeg, 0x8E);
|
||||
IdtSetGate(59, (ulong)isr59, codeSeg, 0x8E);
|
||||
IdtSetGate(60, (ulong)isr60, codeSeg, 0x8E);
|
||||
|
||||
// Load IDT
|
||||
IdtInit();
|
||||
|
@ -172,8 +159,8 @@ static void EnablePIC(void)
|
|||
IoWriteByteOnPort(0xa1, 0x28);
|
||||
|
||||
// Set ICW3
|
||||
IoWriteByteOnPort(0x21, 0x0);
|
||||
IoWriteByteOnPort(0xa1, 0x0);
|
||||
IoWriteByteOnPort(0x21, 0x4);
|
||||
IoWriteByteOnPort(0xa1, 0x2);
|
||||
|
||||
// Set ICW4
|
||||
IoWriteByteOnPort(0x21, 0x1);
|
||||
|
@ -231,6 +218,7 @@ void IsrHandler(ISRFrame_t *regs)
|
|||
}
|
||||
|
||||
bprintf(BStdOut, "[ISR 0x%x] %s\n", regs->intNo, "Unknown ISR Exception");
|
||||
IoSendEOItoPIC(regs->intNo);
|
||||
/* KeStartPanic("[ISR 0x%x] Unknown ISR Exception Abort\n" */
|
||||
/* " Error code : 0x%x\n" */
|
||||
/* " RIP:\t\t%p\n" */
|
||||
|
|
|
@ -86,9 +86,11 @@ noreturn void BtStartKern(multiboot_info_t *mbInfo, uint mbMagic, void *codeSeg)
|
|||
IoPrintRtcTime();
|
||||
|
||||
KernLog("There was %d ticks\n", IoGetRtcTicks());
|
||||
for (uint i = 1; i < 2048*15 ; i++) {
|
||||
//IoPrintRtcTime();
|
||||
uint i = 0;
|
||||
while (1) {
|
||||
if (!(i % 2048)) IoPrintRtcTime();
|
||||
KePauseCPU();
|
||||
i++;
|
||||
}
|
||||
|
||||
//divideByZero();
|
||||
|
|
|
@ -184,9 +184,9 @@ static void UpdateRtcTime(void)
|
|||
uchar minRemain, hourRemain, dayRemain;
|
||||
|
||||
IoRtcTime.sec =
|
||||
(uchar)(((ulong)IoRtcOriginTime.sec + (IoRtcTicks / frequency) + 1) % 60);
|
||||
(uchar)(((ulong)IoRtcOriginTime.sec + (IoRtcTicks / frequency)) % 60);
|
||||
minRemain =
|
||||
(uchar)(((ulong)IoRtcOriginTime.sec + (IoRtcTicks / frequency) + 1) / 60);
|
||||
(uchar)(((ulong)IoRtcOriginTime.sec + (IoRtcTicks / frequency)) / 60);
|
||||
|
||||
IoRtcTime.min =
|
||||
(uchar)(((ulong)IoRtcOriginTime.min + minRemain) % 60);
|
||||
|
|
Loading…
Reference in New Issue