Commit graph

1571 commits

Author SHA1 Message Date
Stefan Lankes
44ea32c241 remove wrong alignment 2012-06-11 21:44:53 +02:00
Stefan Lankes
5759b57cb0 on 64bit systems, LwIP uses an alignment of 8 bytes 2012-06-11 19:39:08 +02:00
Stefan Lankes
e8ec97923f remove typo 2012-06-11 17:41:04 +02:00
Stefan Lankes
e230fdcf15 usage of 64bit TSS descriptors and some code cleanups 2012-06-11 16:16:35 +02:00
Stefan Lankes
4fb03cde20 fix bug in the initialization of the stack pointer 2012-06-11 16:15:26 +02:00
Stefan Lankes
1e275732c5 simplify the APIC and GDT code 2012-06-10 23:40:22 +02:00
Stefan Lankes
f5f6163589 usage of the compiler flag -ffreestanding instead of -nostdinc and -fno-builtin 2012-06-10 21:59:08 +02:00
Stefan Lankes
654e91b0a2 add LAPIC support of the 64bit kernel 2012-06-10 21:38:01 +02:00
Stefan Lankes
609500a6d8 add additional output messages 2012-06-10 12:10:54 +02:00
Stefan Lankes
c2935e2f66 remove "unsecure" usage of get_page in page_init 2012-06-10 11:53:33 +02:00
Stefan Lankes
a929feb257 nicer code style 2012-06-10 09:00:02 +02:00
Stefan Lankes
9d843a5e09 reduce obsolete lines and additional output messages 2012-06-10 08:54:08 +02:00
Stefan Lankes
be4cfaf413 Merge remote-tracking branch 'origin/master' into x64_new 2012-06-10 08:07:50 +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
Florian Zeitz
5a70cbbd75 Make it easier to change the number of used cores
This commit uses the CORENUM Makefile variable to
generate scc_bootinfo.asm. This enables easier use of
more than one core.
2012-06-06 05:06:41 -07:00
Florian Zeitz
c19916db0d Update scc_bootinfo.asm when the initrd changed 2012-06-06 05:06:18 -07: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
d21e707024 Merge remote-tracking branch 'origin/master' into x64_new 2012-05-24 12:05:14 +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
3d1facb657 Merge branch 'sw_switch' 2012-05-23 11:21:38 -07:00
Stefan Lankes
fc0c903de3 reduce overhead to determine TSS 2012-05-23 11:19:46 -07:00
Stefan Lankes
83bd8ea677 add 64bit version of link.ld 2012-05-23 08:09:08 +02:00
Stefan Lankes
07a981a028 prepare newlib to support x86_64 2012-05-23 08:03:06 +02:00
Jacek Galowicz
181ae30e2c Changed the .gitignore file to make git ignore config.inc 2012-05-22 13:44:33 +02:00
Jacek Galowicz
f8058bbee2 Made the makescript generate config.inc automatically. 2012-05-22 13:38:41 +02:00
Marian Ohligs
884dd08641 fix memory leak 2012-05-22 13:24:00 +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
Stefan Lankes
b39a84e07f Merge remote-tracking branch 'origin/ctx_switch' into x64_new 2012-05-17 14:45:34 +02:00
Jacek Galowicz
0a577b9f7e Fixed the pageframe allocation error introduced by
d641f5a211

This did only occur on the SCC: If someone allocated much memory and
wrote over it, it did affect the initrd...
2012-05-03 04:16:41 -07:00
Stefan Lankes
b1bf768341 temporary disabling the support of reentrant functions 2012-04-27 22:25:54 +02:00
Stefan Lankes
702bc7dfcd minor improvements 2012-04-24 21:02:47 +02:00
Stefan Lankes
71a1502489 add support of pid caching 2012-04-24 20:47:36 +02:00
Stefan Lankes
e6816bb0bd add test case for the system call "getpid" 2012-04-24 20:44:25 +02:00
Stefan Lankes
21e113c53a avoid compiling of SCC features on non-SCC systems 2012-04-24 10:35:24 +02:00
Stefan Lankes
c52d457b08 switch to the default apps 2012-04-24 01:29:24 -07:00
Stefan Lankes
ee4e23bff0 Merge branch 'master' into experiments 2012-04-24 00:38:42 -07:00
Stefan Lankes
86687fdd6f disable the support of operations on large files (sseek64 etc.) 2012-04-23 13:39:17 -07:00
Stefan Lankes
0c4e177c1f switch to a reentrant version of newlib and uses correct values for O_CREAT & Co
=> see include/metalsvm/fs.h and newlib/examples/hello.c
2012-04-23 21:23:49 +02:00
Stefan Lankes
dafa1f813e upgrade to newlib 1.2.0 2012-04-23 15:29:51 +02:00
Stefan Lankes
ee5597df15 increasing the readability 2012-04-22 21:40:17 +02:00
Jacek Galowicz
9b36a72f5f Wrote a benchmark for measuring the context switch time. 2012-04-15 19:40:51 +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
Jacek Galowicz
49533df72e Made the interrupt entry also safe the registers DS to GS.
This may be removed in the future for speed purposes.
2012-04-11 08:41:58 +02:00
Jacek Galowicz
f4950981b2 Added a define constant for task switching modes. 2012-04-09 20:02:21 +02:00
Jacek Galowicz
17106b7a74 Added a context switch measurement scenario from the operating systems
lecture
2012-04-09 20:01:39 +02:00
Stefan Lankes
bc6a55a696 Merge branch 'master' of git.lfbs.rwth-aachen.de:metalsvm 2012-04-03 16:17:46 +02:00
Jacek Galowicz
72016236f1 Fixed two typos. 2012-04-02 14:55:29 +02:00