11977e40bc
implemented userspace task loading and userpsace heap management with the new vma_list
2014-01-09 14:06:09 +01:00
d7644300a8
code cleanup of task creation and some additions to the previous commit
2014-01-09 13:59:01 +01:00
ab67350783
thats a huge commit: reimplemented all remaining page map functions according to the new page_iterate()
2014-01-09 13:44:20 +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
4514080014
enable global pages for the kernelspace
2013-12-03 15:54:58 +01:00
fff2708c5a
move page map setup to arch_paging_init()
2013-12-03 15:52:16 +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
edf178f39a
Merge branch 'vogel' into x64_paging
2013-11-26 17:25:53 +01:00
a972efe288
Merge branch 'vma_kernel' into vogel
...
Conflicts:
kernel/tasks.c
2013-11-20 14:00:04 +01:00
9db28ec380
using PAGE_ALIGN macro to calc pages
2013-11-20 13:43:18 +01:00
de33962e9d
removed old vm_alloc()/vm_free() which have been replaced by vma_alloc()/vma_free()
2013-11-20 13:22:09 +01:00
aa1730919e
standardized comment format and code cleanup
2013-11-20 12:03:24 +01:00
ec171dfcce
implemented map_region() (more testing needed; will propably replaced by a iterative solution)
2013-11-14 13:12:35 +01:00
892154c9f1
implemented drop_page_map() (more testing needed)
2013-11-14 13:09:56 +01:00
bbb8c5c186
implemented copy_page_frame() (more testing needed)
2013-11-14 13:09:31 +01:00
92b2badf71
implemented copy_page_map() (more testing needed)
2013-11-14 13:08:56 +01:00
cdcd9e7d20
implemented create_page_map()
2013-11-14 12:25:52 +01:00
14938ef7e1
added some helper functions to for the recursive mapping structures
2013-11-14 12:25:07 +01:00
4b485f5733
implemented virt_to_phys()
2013-11-14 12:23:42 +01:00
9441d21d89
more cleanup of old 32bit code relicts, typos and indention
2013-11-14 12:22: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
1fc3e40c4e
fixed some typos, added comments and some code cleanup
2013-10-10 11:09:36 +02:00
Stefan Lankes
941a7006a4
backport of the 32bit code
2012-09-10 15:37:45 +02:00
Stefan Lankes
e1c3ddbc8d
use irqsave page directory lock to avoid deadlocks
2012-09-10 13:41:00 +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
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
8b91ff3fff
remove some compiler warnings
2012-07-22 20:10:16 +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
531556f53c
remove warnings, optimize vm_alloc
2012-06-12 09:24:38 +02:00
Stefan Lankes
1e275732c5
simplify the APIC and GDT code
2012-06-10 23:40:22 +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
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
ee4e23bff0
Merge branch 'master' into experiments
2012-04-24 00:38:42 -07:00
Jacek Galowicz
72016236f1
Fixed two typos.
2012-04-02 14:55:29 +02:00
Stefan Lankes
bfbd560f70
this fixes booting with initrd on qemu 1.0
...
patch submitted by Niels Ole Salscheider <niels_ole@salscheider-online.de>
2012-02-02 22:54:09 +01:00
Stefan Lankes
4148da6571
fine tuning
2011-12-19 12:26:22 -08:00
Stefan Lankes
dceb8485d9
increasing the support of affinity-on-first-touch
2011-12-14 01:39:12 -08:00
Stefan Lankes
1d5ad1c917
use response mail per default
2011-12-05 00:19:47 -08:00
Stefan Lankes
fae93b4304
support an approach without response mail
2011-12-04 04:47:40 -08:00
Stefan Lankes
feaf615724
align address to page boundary, cosmetic changes
2011-12-03 12:06:36 -08:00
Stefan Lankes
3acdf72b88
remove obsolete debug message
2011-12-01 06:52:04 -08:00