aelius.git
5 years agoHopefully fixed the SMP timing issue. master
ethereal [Sat, 31 May 2014 06:10:25 +0000 (00:10 -0600)]
Hopefully fixed the SMP timing issue.

The new GDT was not loaded on APs, so the TR wasn't set to anything valid;
hence the ISTs were not reset appropriately.

5 years agoHacked together a solution by spinlocking the AP boot process.
ethereal [Mon, 26 May 2014 01:02:07 +0000 (19:02 -0600)]
Hacked together a solution by spinlocking the AP boot process.

Now, onto more interesting things.

5 years agoFixed several very embarrasing mistakes.
ethereal [Sun, 25 May 2014 16:46:19 +0000 (10:46 -0600)]
Fixed several very embarrasing mistakes.

Still a couple more bugs to take care of, though.

5 years agoVarious cleanups.
ethereal [Sun, 25 May 2014 06:39:03 +0000 (00:39 -0600)]
Various cleanups.

5 years agoTrying to debug timing error somewhere in AP booting.
ethereal [Sun, 18 May 2014 03:43:06 +0000 (21:43 -0600)]
Trying to debug timing error somewhere in AP booting.

5 years agoFixed race condition with a thread deleting itself.
ethereal [Fri, 16 May 2014 03:06:20 +0000 (21:06 -0600)]
Fixed race condition with a thread deleting itself.

5 years agoVarious small cleanups.
ethereal [Thu, 15 May 2014 03:48:40 +0000 (21:48 -0600)]
Various small cleanups.

5 years agoSignificant code cleanups.
ethereal [Wed, 14 May 2014 23:19:35 +0000 (17:19 -0600)]
Significant code cleanups.

kmain() is no longer a huge mess; now SMP::initBSP is instead. Progress!

5 years agoAdded support for local APIC timer, now used as scheduler tick source.
ethereal [Wed, 14 May 2014 22:30:22 +0000 (16:30 -0600)]
Added support for local APIC timer, now used as scheduler tick source.

5 years agoCode cleanups, trying to get scheduler working on APs.
ethereal [Mon, 12 May 2014 21:38:13 +0000 (15:38 -0600)]
Code cleanups, trying to get scheduler working on APs.

5 years agoAPs now in 64-bit realm.
ethereal [Mon, 12 May 2014 20:27:12 +0000 (14:27 -0600)]
APs now in 64-bit realm.

5 years agoAPs are now booted, but not in long mode yet.
ethereal [Mon, 12 May 2014 19:23:33 +0000 (13:23 -0600)]
APs are now booted, but not in long mode yet.

Time to get them there.

5 years agoImplemented beginning of ACPI tables parser.
ethereal [Mon, 12 May 2014 08:12:10 +0000 (02:12 -0600)]
Implemented beginning of ACPI tables parser.

5 years agoThread sleeping "works" (with a hack).
ethereal [Mon, 12 May 2014 07:26:23 +0000 (01:26 -0600)]
Thread sleeping "works" (with a hack).

The hack is the dual swapgs around the CPULocal call.

5 years agoAdded hack-ish solution to previous bug.
ethereal [Mon, 12 May 2014 05:44:14 +0000 (23:44 -0600)]
Added hack-ish solution to previous bug.

Need to find a good way to let kernel threads access CPU-local gs.

5 years agoTrying to get thread sleeping working.
ethereal [Mon, 12 May 2014 05:18:28 +0000 (23:18 -0600)]
Trying to get thread sleeping working.

Something's wrong with the progress condition code, however. Not sure what yet.

5 years agoSimple thread scheduler implemented and working.
ethereal [Sun, 11 May 2014 23:17:21 +0000 (17:17 -0600)]
Simple thread scheduler implemented and working.

5 years agoKernel thread creation streamlined.
ethereal [Sun, 11 May 2014 22:24:29 +0000 (16:24 -0600)]
Kernel thread creation streamlined.

5 years agoFixed some small bugs in context-switching system.
ethereal [Sun, 11 May 2014 22:09:22 +0000 (16:09 -0600)]
Fixed some small bugs in context-switching system.

Idle thread is now entered appropriately.

5 years agoImplemented context-switching system.
ethereal [Sun, 11 May 2014 20:42:19 +0000 (14:42 -0600)]
Implemented context-switching system.

5 years agoAdded interrupt routing functionality; simple keyboard IRQ handler installed.
ethereal [Wed, 7 May 2014 22:57:01 +0000 (16:57 -0600)]
Added interrupt routing functionality; simple keyboard IRQ handler installed.

5 years agoAdd note to GDTRegistry about W bit for data segments.
ethereal [Wed, 7 May 2014 20:02:00 +0000 (14:02 -0600)]
Add note to GDTRegistry about W bit for data segments.

5 years agoAdded interrupt handling functionality.
ethereal [Wed, 7 May 2014 19:59:05 +0000 (13:59 -0600)]
Added interrupt handling functionality.

Also added CD image generation to buildsystem.

5 years agoMake everything clang-compatible.
ethereal [Mon, 5 May 2014 05:04:52 +0000 (23:04 -0600)]
Make everything clang-compatible.

This also means the use of AT&T syntax for inline assembly.

5 years agoStarted adding support for interrupts and hardware interfacing.
ethereal [Fri, 2 May 2014 19:06:36 +0000 (13:06 -0600)]
Started adding support for interrupts and hardware interfacing.

5 years agoFix documentation comment. notes-2-finished
ethereal [Fri, 2 May 2014 16:56:07 +0000 (10:56 -0600)]
Fix documentation comment.

5 years agoFix bug in GDTRegistry.
ethereal [Fri, 2 May 2014 16:52:50 +0000 (10:52 -0600)]
Fix bug in GDTRegistry.

5 years agoFixed various bugs, introduced GDTRegistry.
ethereal [Fri, 2 May 2014 16:49:41 +0000 (10:49 -0600)]
Fixed various bugs, introduced GDTRegistry.

5 years agoFixed bug in physical registry.
ethereal [Fri, 2 May 2014 05:39:08 +0000 (23:39 -0600)]
Fixed bug in physical registry.

5 years agoStarted implementing pool allocator.
ethereal [Fri, 2 May 2014 04:50:33 +0000 (22:50 -0600)]
Started implementing pool allocator.

There's a bug somewhere; it works out-of-kernel but not in-kernel.

5 years agoImplemented simple virtual memory manager.
ethereal [Fri, 2 May 2014 03:35:23 +0000 (21:35 -0600)]
Implemented simple virtual memory manager.

5 years agoStarted implementing virtual memory manager.
ethereal [Fri, 2 May 2014 01:32:34 +0000 (19:32 -0600)]
Started implementing virtual memory manager.

5 years agoChanged to CMake-based buildsystem.
ethereal [Fri, 2 May 2014 00:25:06 +0000 (18:25 -0600)]
Changed to CMake-based buildsystem.

5 years agoImport reference skeleton kernel.
ethereal [Thu, 1 May 2014 23:40:11 +0000 (17:40 -0600)]
Import reference skeleton kernel.