Commit graph

45 commits

Author SHA1 Message Date
Stefan Lankes
4131221b9a By entering/leaving the kernel, DS and ES registers will be saved/restored. 2012-08-24 20:21:21 +02:00
Stefan Lankes
4775e5e11e use static stacks only for the idle tasks
=> all other stacks will be created on demand
2012-07-19 22:07:59 +02:00
Stefan Lankes
6462e2b0fd remove typo 2012-07-19 00:31:08 +02:00
Stefan Lankes
89c792cc03 fix bug in the calculation of esp0 2012-07-19 00:17:31 +02:00
Stefan Lankes
47fae3de67 some code cleanups 2012-07-17 14:06:48 -07:00
Stefan Lankes
c32a30726a some code cleanups 2012-07-17 12:44:18 -07:00
Stefan Lankes
6013c2ec4d add memory barriers to seralize load and store operations
=> required to clone a task
2012-07-16 23:05:46 +02:00
Stefan Lankes
6259892c00 initialize the kernel stack only for the boot task 2012-07-14 11:15:18 +02:00
Jacek Galowicz
49eb099b80 Reverted the removal of configure_gdt_entry()
Commit 227cc19890
"add alpha version of x64 support"
removed configure_gdt_entry(), but this is used within the
lguest branch.
2012-06-13 09:36:28 +02:00
Stefan Lankes
e230fdcf15 usage of 64bit TSS descriptors and some code cleanups 2012-06-11 16:16:35 +02:00
Stefan Lankes
1e275732c5 simplify the APIC and GDT code 2012-06-10 23:40:22 +02:00
Stefan Lankes
227cc19890 add alpha version of x64 support
New features:
- support of kernel tasks in 64bit mode
- support of LwIP in 64bit mode

Missing features in 64bit mode
- user-level support
- APIC support => SMP support

To create a 64bit version of the MetalSVM kernel, the compiler flags “-m64 -mno-red-zone” and the assembler flags “-felf64” has to be used. Please use qemu-system-x86_64 as test platform.

Notice, metalsvm.elf is a 32bit ELF file. However, it contains (beside the startup code) only 64bit code. This is required because GRUB doesn’t boot 64bit ELF kernels. Therefore, for disassembling via objdump the flag  “-M x86-64” has to be used.
2012-06-10 08:05:24 +02:00
Stefan Lankes
ed2186ee03 add init code, which jumps to 64bit mode and and calls main 2012-05-29 20:47:45 +02:00
Stefan Lankes
45313d47f2 add build environment for 64bit code
=> environment build 64bit kernel, but the kernel is not tested!
=> work in progess
2012-05-24 10:49:45 +02:00
Stefan Lankes
50b8068a78 fix bug in inline assembler 2012-05-21 12:16:19 -07:00
Stefan Lankes
b9b962ea73 revise software multitasking
=> remove hardware multitasking
2012-05-21 15:04:05 +02:00
Jacek Galowicz
0984eb593f Commented everything 2012-04-14 09:57:18 +02:00
Jacek Galowicz
43fc6c94e5 Removed DS, ES, FS and GS registers from task switch routines 2012-04-14 09:18:36 +02:00
Jacek Galowicz
f4a7d6bd3a The context is now switched by software.
- Cleanup to be done
- Arch_fork does NOT work in this state
- Multiprocessing support not yet implemented
2012-04-14 00:34:09 +02:00
Stefan Lankes
291aeabb8a Fix huge bug! Idle task could handle its stack pointer wrong!
=> depending on the config file and the started apps, we got different failure
2011-08-28 08:42:39 -07:00
Stefan Lankes
a179ded21b redesign of the timers, support of timeouts in mailboxes and semaphores 2011-08-06 15:55:34 +02:00
Stefan Lankes
d5bfc4f28c avoid races on SMP systems
=> signalizes with a new flag, that a task switch is finished
2011-08-01 22:01:39 +02:00
Stefan Lankes
ab37b024b0 simply the scheduler => move code from entry.asm to timer.c 2011-07-21 09:59:29 +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
root
7724b70d55 upgrade to newest metalsvm 2011-06-27 11:39:01 +02:00
Jacek Galowicz
a9c4b5ddc0 Encapsulated IDT-/GDT-descriptor configuring code into helper functions. 2011-04-21 07:31:45 +02:00
Stefan Lankes
4fc507bc6b fix bug in the TSS initialization for a new task, which is a copy of the current task 2011-04-18 12:18:59 -07:00
Stefan Lankes
68281c8ad0 cosmetic changes, minor code optimization 2011-04-18 15:10:24 +02:00
Stefan Lankes
ab78beb859 cosemtic changes 2011-04-08 16:02:28 +02:00
Stefan Lankes
de9fb1fc65 use for debugging the normal C callig convention!
=> no using of compiler flags -fomit-frame-pointer
=> definition of the macro WITH_FRAME_POINTER
2011-03-22 22:11:43 +01:00
Stefan Lankes
a27150b923 Fix bug in system call "fork"
- issues: memory leak
2011-03-02 23:08:01 +01:00
Stefan Lankes
5ce3ed9338 First steps to support the system calls "fork" and "wait"
- Currently, the system call "fork" doesn't work and has a memory leak
- However, it is a good starting point for further developments.
2011-03-02 13:49:36 +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 Lankes
c355adb300 create a new pgd for each process 2011-02-18 21:20:15 +01:00
stefan
23ed873c24 - define jump_to_user_code as line function
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@395 315a16e6-25f9-4109-90ae-ca3045a26c18
2011-02-08 19:47:49 +00:00
stefan
9a9df5ed2e - merge current eduOS branch to MetalSVM
=> add the support of "real" user-space applications, which could be loaded via initrd


git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@394 315a16e6-25f9-4109-90ae-ca3045a26c18
2011-02-08 18:37:56 +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
81df510743 - add comments
- use readable macros instead of constants
- use the same error number like newlib


git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@156 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-09-10 22:18:55 +00:00
stefan
ef1abb5612 - simplify the array intialization
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@151 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-09-08 12:07:42 +00:00
stefan
3c0a4afd43 - remove some obsolete debug messages
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@126 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-08-24 19:10:12 +00:00
stefan
6e0bbaf55e - increase the readability by using macros instead of some hard-coded numbers
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@123 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-08-24 05:43:39 +00:00
stefan
71188c92f9 - complete restart of the project
- support of TSS-based task switching
- add a mailbox template
- suport of user level task
- support of system calls


git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@47 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-08-09 11:47:51 +00:00
stefan
a9043ebf72 - create GDTs for user applications (ring 3)
- rename section osstart to multiboot


git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@43 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-08-05 12:41:38 +00:00
stefan
9778b7b790 - first steps to realize a SVM subsystem in a VM
git-svn-id: http://svn.lfbs.rwth-aachen.de/svn/scc/trunk/MetalSVM@2 315a16e6-25f9-4109-90ae-ca3045a26c18
2010-07-31 15:53:30 +00:00