Commit graph

574 commits

Author SHA1 Message Date
Stefan Lankes
e2550fbdb2 avoid deadlock by disabling interrupts in map_region
- the page_fault handler uses also map_region and implicitly its spinlock
- risk of a deadlock
2012-08-01 21:12:55 +02:00
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
b49f2ef08a determine all six IO base addresses 2012-08-01 09:50:07 +02:00
Stefan Lankes
3e01fbad68 add a more flexible interface to determine PCI information
=> now, we determine also the size of the IO address space
2012-07-26 09:07: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
7f7dd4585f add the support of ELF64 2012-07-22 20:12:24 +02:00
Stefan Lankes
8b91ff3fff remove some compiler warnings 2012-07-22 20:10:16 +02:00
Stefan Lankes
84945aee64 add MSR and X2APIC support 2012-07-22 13:16:17 +02:00
Stefan Lankes
e0a112bc2a remove obsolete check for APIC support 2012-07-22 13:13:46 +02:00
Stefan Lankes
c0a96953b4 only if CONFIG_VGA is defined, VGA will be mapped into the kernel space 2012-07-22 10:56:03 +02:00
Stefan Lankes
cbd5b5be83 disable the cache for VGA 2012-07-22 10:46:07 +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
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
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
09ec6dcc3a some code cleanups
=> simplify the handling of FPU exceptions
2012-07-18 20:56:23 +02:00
Stefan Lankes
dadc4ce7ed set task switched flag to support applications, which require FPU support 2012-07-18 20:54:04 +02:00
Stefan Lankes
47fae3de67 some code cleanups 2012-07-17 14:06:48 -07:00
Stefan Lankes
f83f29abb7 add automatic detection of fence instructions 2012-07-17 22:33:29 +02: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
9d422ed700 define the function shmalloc to allocate a shared page
caution, the function returns the physical address
2012-07-15 05:57:39 -07:00
Stefan Lankes
4ebfbdf63d Merge branch 'master' into tickless 2012-07-14 13:28:08 -07:00
Stefan Lankes
1c4c51ae50 port esp0-patch to x86_64 2012-07-14 12:15:01 +02:00
Stefan Lankes
3c1b270160 fix bug in the calculation of esp0 2012-07-14 11:16:29 +02:00
Stefan Lankes
6259892c00 initialize the kernel stack only for the boot task 2012-07-14 11:15:18 +02:00
Stefan Lankes
764134bd18 remove bug by searching lapci on a 64bit system 2012-07-10 22:43:02 +02:00
Stefan Lankes
32aee76655 remove obsolete symbols in a single environment 2012-07-10 21:48:23 +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
d9f311877c Merge branch 'x64_new' 2012-06-13 11:24:10 +02:00
Stefan Lankes
be3eed681e use the correct data type for the CR4 register 2012-06-13 11:23:05 +02:00
Stefan Lankes
ab27285843 disable obsolete 64bit code 2012-06-13 11:22:38 +02:00
Jacek Galowicz
ecb3fb5af2 Reverted the removal of configure_idt_entry()
Commit 227cc19890
"add alpha version of x64 support"
removed configure_idt_entry(), but this is used within the
lguest branch.
2012-06-13 09:57:01 +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
e06d910514 enable SMP support for 64bit systems 2012-06-12 23:42:02 +02:00
Stefan Lankes
531556f53c remove warnings, optimize vm_alloc 2012-06-12 09:24:38 +02:00
Stefan Lankes
a1f07c8027 map also mp_config into the address space 2012-06-12 09:20:54 +02:00
Stefan Lankes
08bcc19626 enable full (64bit) APIC support
- no SMP support
2012-06-11 21:49:17 +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
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
9d843a5e09 reduce obsolete lines and additional output messages 2012-06-10 08:54:08 +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
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
fc0c903de3 reduce overhead to determine TSS 2012-05-23 11:19:46 -07:00