mirror of
https://github.com/drasko/codezero.git
synced 2026-01-24 00:33:14 +01:00
Changed all pager hardcoded value assumptions, too.
Not tested.
This commit is contained in:
@@ -1,14 +1,11 @@
|
|||||||
#ifndef __INITTASK_ARCH_MM_H__
|
#ifndef __INITTASK_ARCH_MM_H__
|
||||||
#define __INITTASK_ARCH_MM_H__
|
#define __INITTASK_ARCH_MM_H__
|
||||||
|
|
||||||
#include <arch/offsets.h>
|
|
||||||
#include <l4/macros.h>
|
#include <l4/macros.h>
|
||||||
#include <l4/types.h>
|
#include <l4/types.h>
|
||||||
#include INC_GLUE(memory.h)
|
#include INC_GLUE(memory.h)
|
||||||
#include <vm_area.h>
|
#include <vm_area.h>
|
||||||
|
|
||||||
#define INITTASK_ADDR(x) ((x >= INITTASK_AREA_START) && (x < INITTASK_AREA_END))
|
|
||||||
|
|
||||||
struct fault_data;
|
struct fault_data;
|
||||||
unsigned int vm_prot_flags(pte_t pte);
|
unsigned int vm_prot_flags(pte_t pte);
|
||||||
void set_generic_fault_params(struct fault_data *fault);
|
void set_generic_fault_params(struct fault_data *fault);
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
#ifndef __INITTASK_ARCH_OFFSETS_H__
|
|
||||||
#define __INITTASK_ARCH_OFFSETS_H__
|
|
||||||
|
|
||||||
#define INITTASK_AREA_START 0xE0000000
|
|
||||||
#define INITTASK_AREA_END 0xF0000000
|
|
||||||
|
|
||||||
#define INITTASK_OFFSET INITTASK_AREA_START
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -113,8 +113,8 @@ int pager_setup_task(void)
|
|||||||
task->map_end = PAGER_MMAP_END;
|
task->map_end = PAGER_MMAP_END;
|
||||||
|
|
||||||
/* Task's total map boundaries */
|
/* Task's total map boundaries */
|
||||||
task->start = task->text_start;
|
task->start = __pfn_to_addr(cont_mem_regions.pager->start);
|
||||||
task->end = 0xF0000000;
|
task->end = __pfn_to_addr(cont_mem_regions.pager->end);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Map all regions as anonymous (since no real
|
* Map all regions as anonymous (since no real
|
||||||
@@ -142,7 +142,8 @@ int pager_setup_task(void)
|
|||||||
* microkernel for this pager. Ensure that we also get
|
* microkernel for this pager. Ensure that we also get
|
||||||
* the same from our internal utcb bookkeeping.
|
* the same from our internal utcb bookkeeping.
|
||||||
*/
|
*/
|
||||||
BUG_ON(task->utcb_address != __pfn_to_addr(cont_mem_regions.utcb->start));
|
BUG_ON(task->utcb_address !=
|
||||||
|
__pfn_to_addr(cont_mem_regions.utcb->start));
|
||||||
|
|
||||||
/* Pager must prefault its utcb */
|
/* Pager must prefault its utcb */
|
||||||
prefault_page(task, task->utcb_address,
|
prefault_page(task, task->utcb_address,
|
||||||
|
|||||||
@@ -57,10 +57,11 @@ static struct pager_virtual_address_id_pool {
|
|||||||
*/
|
*/
|
||||||
int pager_address_pool_init(void)
|
int pager_address_pool_init(void)
|
||||||
{
|
{
|
||||||
address_pool_init_with_idpool(&pager_vaddr_pool,
|
address_pool_init_with_idpool(&pager_vaddr_pool,
|
||||||
(struct id_pool *)
|
(struct id_pool *)
|
||||||
&pager_virtual_address_id_pool,
|
&pager_virtual_address_id_pool,
|
||||||
PAGER_MMAP_END, 0xF0000000);
|
PAGER_MMAP_END,
|
||||||
|
__pfn_to_addr(cont_mem_regions.pager->end));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user