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
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
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
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
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
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
72016236f1
Fixed two typos.
2012-04-02 14:55:29 +02:00
Jacek Galowicz
4e53aa6f95
Commented the PIT-initialization code to make it easier to understand.
2011-12-15 18:48:06 +01:00
Stefan Lankes
8551a9ea9a
use "nicer" function names
2011-10-10 06:23:00 +02:00
Stefan Lankes
8f4349ee51
minor optimizations
2011-10-09 21:03:31 -07:00
Stefan Lankes
8e6b00b42e
redesign of the interrupt handling
...
=> now, the eMAC device uses also LINT0
2011-10-09 13:04:13 -07:00
Stefan Lankes
5fe4f8895b
minor optimizations and additional output messages
2011-10-07 16:10:34 +02:00
Marian Ohligs
aecd3b1c8c
remove compiler warnings in drivers/char/stdio
2011-09-30 11:59:45 +02:00
Stefan Lankes
0285c6b6b7
remove obsolete debug messages
2011-09-22 21:37:57 +02:00
Stefan Lankes
e9ddfd0db2
dump current value of CR0
2011-09-22 21:36:29 +02:00
Stefan Lankes
50315a1d20
dump every minute the average cpu load
2011-09-22 10:58:03 +02:00
Marian Ohligs
df7d1cab87
- increase legibility (add kb_init & kb_finish)
2011-09-19 00:29:16 +02:00