Commit graph

245 commits

Author SHA1 Message Date
1ce6a27fc5 applied some bugfixes from eduOS 2014-06-30 00:37:05 +02:00
7d756306cf removed more 32 bit only paging code which is broken anyway 2014-06-14 17:57:52 +02:00
4f5e2ce13b heading towards merging the 32/64 paging code 2014-05-14 18:56:15 +02:00
1f641e440c simplified macros 2014-05-14 15:13:11 +02:00
c1e52dc8c2 updated PMC driver 2014-05-14 15:12:02 +02:00
9f7295672f fixed rdtsc on x86_64 (upper 32bits were missing) 2014-04-23 18:36:23 +02:00
cb26b6fe01 fixed typo 2014-04-22 16:59:54 +02:00
3203d53a83 another rewrite of the paging code without nested functions 2014-02-18 13:08:22 +01:00
eb0298fc2f moved some helper functions to page_helpers.h (mostly static inline address calculation) 2014-02-07 11:01:10 +01:00
a755ac5d5e implemented Performance Monitoring Counters and added a simple test benchmark 2014-01-30 14:36:22 +01:00
a3d621142a added paging and memory related CPUID feature flags 2014-01-28 11:09:00 +01:00
f0f3a6d4f6 added seperate x86 UART routines for HW debugging (115200 baud, 8N1) 2014-01-28 11:07:09 +01:00
5a20e0953f we do not need syncronization for virt_to_phys (atomic memory access) 2014-01-09 16:55:05 +01:00
d5f60ef542 fixed two smaller bugs and some compiler warnings 2014-01-09 16:12:13 +01:00
a00177ec09 adapted c runtime and syscalls to x86-64 ABI calling convention 2014-01-09 14:04:02 +01:00
d7644300a8 code cleanup of task creation and some additions to the previous commit 2014-01-09 13:59:01 +01:00
88a2e573c6 replaced old 32bit only page_copy by new generic one 2014-01-09 13:33:21 +01:00
494ee1299a unified and extended pagefault exception handler
some cleanup
2014-01-09 13:32:00 +01:00
d5ac6e6092 added macros for x86 control registers & some MSRs 2014-01-09 13:13:59 +01:00
066e29fde9 added NX bit support
renamed some CPP macros
2014-01-09 12:49:04 +01:00
c21ea42058 added page_dump() and page_stats() for testing and demonstration of page_iterate() 2013-12-03 16:40:14 +01:00
8fe165c162 added page_iterate(): a recursive page tree walker 2013-12-03 16:34:34 +01:00
443ffdf012 replaced PAGE_ALIGN macro by PAGE_CEIL, PAGE_FLOOR pair 2013-12-03 15:29:05 +01:00
2923b1a7ed cleanup of macros and comments, idention etc... 2013-12-03 15:26:21 +01:00
af5fa15d8d fixed possible wrap-around in tlb_flush functions 2013-11-20 12:04:55 +01:00
421e7ec66e added missing multiboot #defines 2013-11-20 11:20:52 +01:00
fca96e9851 unified paging preprocessor #defines and naming scheme 2013-10-24 12:36:05 +02:00
Steffen Vogel
9b47b3ef45 refactored paging code to be more universial and suitable for 64bit paging 2013-10-16 17:50:37 +02:00
f361783f4b Merge branch 'cleanup' into vogel 2013-10-16 17:34:18 +02:00
dac9b20c18 some comments cleaned up 2013-10-16 13:42:58 +02:00
5424397b47 debug kernel messages over virtual uart port in qemu
use 'telnet localhost 12346' to listen
2013-10-10 11:39:41 +02:00
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
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
7f7dd4585f add the support of ELF64 2012-07-22 20:12:24 +02:00
Stefan Lankes
84945aee64 add MSR and X2APIC support 2012-07-22 13:16:17 +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
09ec6dcc3a some code cleanups
=> simplify the handling of FPU exceptions
2012-07-18 20:56:23 +02: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
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
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
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
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
654e91b0a2 add LAPIC support of the 64bit kernel 2012-06-10 21:38:01 +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
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
b9b962ea73 revise software multitasking
=> remove hardware multitasking
2012-05-21 15:04:05 +02:00
Stefan Lankes
dceb8485d9 increasing the support of affinity-on-first-touch 2011-12-14 01:39:12 -08:00