Commit graph

152 commits

Author SHA1 Message Date
0948c0cc46 Use NonSpecificEOI instead of NOPEOI 2016-03-13 19:19:39 -04:00
10d006eb90 Move exception dispatch to InterruptHandler 2016-03-13 19:18:55 -04:00
3e1993084d Read the scancode from the keyboard buffer when keyboard interrupt received
*This* is why I couldn't get more that one keyboard interrupt.
2016-03-13 19:14:37 -04:00
cd39d95a1c Move interrupt dispatch to InterruptHandler; make individual handlers private 2016-03-13 18:44:13 -04:00
683b79fa07 Make PIC::endOfInterrupt const 2016-03-13 18:41:34 -04:00
4e715c10af More #define magic for ISRs 2016-03-13 18:40:45 -04:00
2424ecaa30 Send EOI to PIC when we're done with a hardware interrupt 2016-03-13 15:55:40 -04:00
5e2c89e588 OMG INTERRUPTS ARE WORKING
The segment selector that you put in the interrupt table is a byte offset, and
*not* an index into the table. Now interrupts work!

But only one. And I think I know how to fix this...
2016-03-13 15:54:25 -04:00
1f6ce53e08 Add method to post an interrupt in software 2016-03-13 15:47:50 -04:00
cf8047f7be Print descriptor table information when loading 2016-03-13 15:47:11 -04:00
fdc7232079 Code formatting 2016-03-13 15:06:05 -04:00
2e262df414 Getting too fancy with my CString::length() 2016-03-13 15:05:53 -04:00
d62bc7f9d4 Console::printFormat is a printf() style function 2016-03-13 13:56:21 -04:00
d5c7ded8c9 Fixed up Console::printFormat 2016-03-13 13:53:19 -04:00
af8a3c379e Add CString utilities to kstd 2016-03-13 13:51:13 -04:00
0027a8adb7 Rename and fix up ASCII.hh 2016-03-13 13:39:31 -04:00
2aa443bf0b Some small functions for dealing with ASCII 2016-03-13 13:35:50 -04:00
1bbd99aeee Rename writeChar, writeString -> printChar, printString 2016-03-13 13:32:52 -04:00
46d18b97d5 Basic framework for getting interrupts to go, but alas nothing yet... 2016-03-13 13:17:08 -04:00
c9c64b154a Make IDT size public 2016-03-13 13:14:45 -04:00
c581d1b99a Initialize PICs instead of remapping -- masks all interrupts 2016-03-13 12:53:28 -04:00
4f2c2a9150 Enable interrupts and loop forever 2016-03-13 12:52:47 -04:00
dfe85fd8e0 Use full 0xFFFFFFFF address for segment limits 2016-03-13 12:52:32 -04:00
d57bf8cf8c Add exceptionHandler static method for generation IDT DescriptorSpecs 2016-03-13 12:52:05 -04:00
6e2de52aa9 Clean up descriptor generation code 2016-03-13 12:51:42 -04:00
b3c7b28cda Add new PIC::initialize method to clear interrupts after initialization 2016-03-13 12:43:09 -04:00
18d7dbb927 Implement hardware interrupt enable/disable 2016-03-13 04:44:22 -04:00
9bb7e91b66 auto& instead of just auto
Grrr... I hate C++ sometimes.
Thanks Aimee~.
2016-03-12 19:14:48 -05:00
d098bac16c Cannot copy/assign Console objects 2016-03-12 19:14:07 -05:00
e2edde2ee4 Documentation for Console 2016-03-12 18:56:39 -05:00
3a144749df Add .init, .fini, .ctor*, and .dtor* sections to linker script 2016-03-10 12:18:52 -05:00
c579d57531 Some tweaks to the local static ABI functions
Cast to char *
Print an OOPS if initialization fails
2016-03-10 12:18:25 -05:00
ff2ef8b1ac Once guard around Console.hh 2016-03-10 12:17:54 -05:00
a320e103d2 Rename GDT::table -> mTable 2016-03-09 01:26:35 -05:00
75afe66362 Formatting 2016-03-09 01:23:14 -05:00
3e973716f8 Create a system interrupt handler and call initialize()
Loads interrupt table and programs PIC chips
2016-03-09 01:23:06 -05:00
6677af27f6 Rough outline of InterruptHandler 2016-03-09 01:17:13 -05:00
3879b3c324 Move descriptor classes to x86 namespace 2016-03-09 01:12:05 -05:00
0238e44efc Remove kernel namespace from PIC 2016-03-09 00:28:19 -05:00
867b89f65a Define the x86 exceptions 2016-03-09 00:21:22 -05:00
3722867e6d Add See Also to PIC programming comment 2016-03-09 00:09:10 -05:00
01b5737bd7 Just use full namespace specifiers instead of "using" 2016-03-06 13:01:02 -05:00
49afcdfadf Initialize hardware interrupts 2016-03-06 13:00:38 -05:00
1d9766b319 ++ instead of -- 2016-03-06 12:58:25 -05:00
c4b3d8e05c PIC class which manages the PIC chips 2016-03-06 11:49:30 -05:00
70d53827d2 Load an empty IDT 2016-03-02 02:57:35 -05:00
ccc7eeff60 Add low-level I/O functions 2016-03-02 02:48:25 -05:00
19693d62e3 Documentation for GDT and IDT 2016-03-02 02:07:44 -05:00
fcae11348d Clean up the GDT class 2016-03-02 02:02:34 -05:00
00e961435e Add IDT class for managing the interrupt table 2016-03-02 02:02:01 -05:00