diff --git a/Makefile b/Makefile index 3d4de79..104a40c 100644 --- a/Makefile +++ b/Makefile @@ -265,7 +265,7 @@ OS/K: $(dep) ./ProjectTree $(BINDIR)/kaleid ## QEMU/DEBUG RELATED test: all install - @qemu-system-x86_64 -vga std -cpu core2duo -soundhw pcspk -s \ + @qemu-system-x86_64 -vga std -cpu core2duo -enable-kvm -soundhw pcspk -s \ -rtc base=localtime -m $(ram) -hda $(installdisk) \ -d cpu_reset,guest_errors,pcall,int 2> $(BUILDDIR)/qemu.log & diff --git a/kaleid/kernel/init/init.c b/kaleid/kernel/init/init.c index cf2f92f..92934f1 100644 --- a/kaleid/kernel/init/init.c +++ b/kaleid/kernel/init/init.c @@ -68,12 +68,14 @@ noreturn void BtStartKern(multiboot_info_t *mbInfo, uint mbMagic, void *codeSeg) // Interrupts launching KeSetupIDT(); KeEnableIRQs(); - KeGetCpuInfos(); MmInitGdt(); - // Start drivers + // Clocks KeEnableRTC(); KeEnablePIT(); + + // Start drivers + KeGetCpuInfos(); IoEnableKeyb(); MmActivatePageHandler(); diff --git a/kaleid/kernel/ke/pit.c b/kaleid/kernel/ke/pit.c index 182ce28..816a1d8 100644 --- a/kaleid/kernel/ke/pit.c +++ b/kaleid/kernel/ke/pit.c @@ -121,10 +121,10 @@ static void UpdateCurTime(void) uchar minRemain, hourRemain, dayRemain; CurTime.sec = - (uchar)(((ulong)KeGetOriginTime()->sec + (Ticks / frequency)) % 60); + (uchar)(((ulong)KeGetOriginTime()->sec * frequency + Ticks) / frequency % 60); minRemain = - (uchar)(((ulong)KeGetOriginTime()->sec + (Ticks / frequency)) / 60); + (uchar)(((ulong)KeGetOriginTime()->sec * frequency + Ticks) / (60 * frequency)); CurTime.min = (uchar)(((ulong)KeGetOriginTime()->min + minRemain) % 60);