Stefan Lankes
8a7463883a
disable IOAPIC's timer and add helper function to determine the version of the IOAPIC
2012-08-01 09:51:20 +02:00
Stefan Lankes
bb467767d0
enable the SMP support on systems with a X2APIC
2012-07-22 22:19:50 +02:00
Stefan Lankes
84945aee64
add MSR and X2APIC support
2012-07-22 13:16:17 +02:00
Stefan Lankes
ae1216f757
user a read barrier instead of a normal barrier to serialize calls of rdtsc
2012-07-19 08:28:23 +02:00
Stefan Lankes
4ebfbdf63d
Merge branch 'master' into tickless
2012-07-14 13:28:08 -07:00
Stefan Lankes
764134bd18
remove bug by searching lapci on a 64bit system
2012-07-10 22:43:02 +02:00
Stefan Lankes
24914fcb4f
add prototype of a tickless kernel
...
only by entering the kernel, the tick counter will be updated
=> by using this feature, MetalSVM supports only LwIP's raw interface,
because we have no guarantee that the tcpip thread will get computation time
=> no NETCONN & BSD socket support
=> no load balancing support
2012-07-03 16:46:54 +02:00
Stefan Lankes
ab27285843
disable obsolete 64bit code
2012-06-13 11:22:38 +02:00
Stefan Lankes
e06d910514
enable SMP support for 64bit systems
2012-06-12 23:42:02 +02:00
Stefan Lankes
08bcc19626
enable full (64bit) APIC support
...
- no SMP support
2012-06-11 21:49:17 +02:00
Stefan Lankes
1e275732c5
simplify the APIC and GDT code
2012-06-10 23:40:22 +02:00
Stefan Lankes
654e91b0a2
add LAPIC support of the 64bit kernel
2012-06-10 21:38:01 +02:00
Stefan Lankes
e9ddfd0db2
dump current value of CR0
2011-09-22 21:36:29 +02:00
Stefan Lankes
35621d72d1
first try to realize task stealing
2011-08-18 12:16:31 +02:00
Stefan Lankes
387ef0ea9b
cosmetic changes
2011-08-04 16:48:04 +02:00
Stefan Lankes
452aa3b1d1
cosmetic changes and add some scheduling statistics
2011-08-03 19:37:05 +02:00
Stefan Lankes
577300919c
fix bug in search_apic and uses function to find the MP Config Table
2011-08-03 07:37:57 +02:00
Stefan Lankes
d91b0d49c2
minor bug fix
...
=> search the MP Config Table below 1MB
2011-08-02 18:29:20 +02:00
Stefan Lankes
27ee238684
search MP table on all systems
2011-07-31 19:15:06 +02:00
Stefan Lankes
ff2b9da103
do not longer search a MP table, if MAX_CORES is set to 1
2011-07-22 21:17:15 +02:00
Stefan Lankes
a422926dda
cosmetic changes
2011-07-19 09:23:55 +02:00
Stefan Lankes
b1c5bf67c2
use a more robust method to find the MP table
2011-07-19 07:36:24 +02:00
Stefan Lankes
d203a070f4
add IPI support to flush the TLB on the other cores
2011-07-19 07:16:49 +02:00
Stefan Lankes
85768e6f58
fix bug in APIC code
...
=> before we enable the interrupts, we map the APIC registers
2011-07-18 15:51:26 +02:00
Stefan Lankes
e595fae384
add SMP support
...
- this is experimental version
- by setting MAX_CORES to 1, you are to disable the SMP support
2011-07-18 09:14:28 +02:00
Stefan Lankes
47f37e3b00
use memory barriers instead of read memory barriers to determine the current TSC
...
=> more accurate caclculation of the timer frequency
+ minor cosmetic changes
2011-04-18 15:07:45 +02:00
Stefan Lankes
e3e06fe523
set APICID of the boot processor to 0
2011-04-08 16:02:29 +02:00
Stefan Lankes
ea5b7e4930
reset APIC before timer initialization
2011-04-08 16:02:01 +02:00
Stefan Lankes
e599063dd2
cosmetic changes
2011-04-05 11:37:20 +02:00
Stefan Lankes
b46664b375
increasing the readability
2011-04-05 11:33:41 +02:00
Stefan Lankes
e8abd6f336
minor improvements and cosmetic changes to increase the readability
2011-04-05 02:00:02 -07:00
Stefan Lankes
f14c693e10
fix bug in the routine, which calculates the apic timer frequecy
2011-04-01 00:24:03 -07:00
Stefan Lankes
f9ec7ccadc
redesign of the SCC's init routines
2011-03-25 20:28:43 +01:00
Stefan Lankes
ec5c78fbb3
remove compiler warnings
2011-03-04 23:33:58 +01:00
Stefan Lankes
c21b1bf8a2
remove compiler warnings
2011-03-04 22:42:41 +01:00
Stefan Lankes
56ee331596
add nested spinlocks
...
- required to avoid deadlocks
2011-03-04 11:38:40 +01:00
Stefan Lankes
16efb49204
remove obsolete function arguments
2011-02-24 10:15:58 +01:00
Stefan Lankes
31ad08b7ae
Remap lapic and ioapic to the kernel space + some cosmetic changes
2011-02-21 08:36:06 +01:00
stefan
810b13f37e
- use the function lapic_read instead of direct memory access to the apic entries
...
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@370 315a16e6-25f9-4109-90ae-ca3045a26c18
2011-01-07 05:37:42 +00:00
stefan
9d2b73c6cb
- add a workaround to use paging and the apic at the same time
...
(we don't use __attribute__((optimize(0))))
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@366 315a16e6-25f9-4109-90ae-ca3045a26c18
2011-01-05 20:12:07 +00:00
stefan
8646b56a63
- minor changes to support APIC
...
(currently, we got page fault by entering apic_calibration)
- first steps to realize a loader
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@365 315a16e6-25f9-4109-90ae-ca3045a26c18
2011-01-05 10:16:53 +00:00
stefan
45219bce2e
- huge commit
...
- enable the paging support
- redesign of the APIC code
TODO:
- Currently, we are not able to start user-level applications.
- The RTL8139 driver does not longer work. Perhaps, a bug in the output function.
- The APIC codes doesn't work on all systems. Therefore, the code is currently disabled.
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@326 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-12-10 06:16:58 +00:00
stefan
f28fd84c68
- redesign of the apic code
...
- add ioapic support
- currently, all irq will forwarded to the boot processor
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@293 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-11-29 02:39:10 +00:00
stefan
7871ef692a
- add workaround to run the apic code correctly on qemu 12.5
...
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@290 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-11-26 18:15:09 +00:00
stefan
aec80ba9e4
- remove typo
...
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@274 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-11-26 05:38:01 +00:00
stefan
bc67c946af
- add APIC support for the SCC
...
- seems to work, only the APIC timer doesn't work!
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@273 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-11-26 05:33:02 +00:00
stefan
6346f54594
- redesign of the function cpuid to avoid unintentional overriding of registers
...
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@268 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-11-24 19:05:04 +00:00
stefan
c8c3035a4d
- complete redesign of the APIC code
...
- MetalSVM detects the APIC and initializes the APIC timer
- If an a APIC is available, the PIC timer will be disabled
- SMP is currently not supported
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@233 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-11-04 20:15:39 +00:00
stefan
08cbc0a257
- add the first steps to support the (local and IO) APIC
...
- remove some typos in the comments
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@196 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-10-25 16:58:31 +00:00