/branches/arm/kernel/arch/arm32/include/types.h |
---|
68,6 → 68,9 |
typedef int32_t inr_t; |
typedef int32_t devno_t; |
typedef uint32_t __address; |
/** Page table entry. |
* |
* We have different structs for level 0 and level 1 page table entries. |
/branches/arm/kernel/arch/arm32/include/mm/frame.h |
---|
41,6 → 41,10 |
#ifdef KERNEL |
#ifndef __ASM__ |
#include <arch/types.h> |
extern __address last_frame; |
extern void frame_arch_init(void); |
#endif /* __ASM__ */ |
/branches/arm/kernel/arch/arm32/src/mm/frame.c |
---|
36,16 → 36,20 |
#include <config.h> |
#include "../aux_print/printf.h" |
__address last_frame = 0; |
/** Create memory zones. */ |
void frame_arch_init(void) |
{ |
aux_printf("frame_arch_init ... begin\n"); |
// all memory as one zone |
zone_create(0, ADDR2PFN(config.memory_size), 11, 0); |
/* |
* Blacklist interrupt vector + Kernels from boot loader page table |
*/ |
last_frame = config.memory_size; |
/* Blacklist interrupt vector + Kernels from boot loader page table */ |
frame_mark_unavailable(0, 10); |
aux_printf("frame_arch_init ... end\n"); |
} |
/branches/arm/kernel/arch/arm32/src/mm/page.c |
---|
47,13 → 47,17 |
page_mapping_operations = &pt_mapping_operations; |
flags = PAGE_CACHEABLE; |
const unsigned maxmem = ALIGN_DOWN(config.memory_size, FRAME_SIZE); |
for (cur = 0; cur < maxmem; cur += FRAME_SIZE) { |
//page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags); |
} |
//TODO set page fault routines |
// no problem no ... kernel doesn't do page faults |
/* PA2KA(identity) mapping for all frames until last_frame */ |
for (cur = 0; cur < last_frame; cur += FRAME_SIZE) { |
page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags); |
} |
//SET_PTL0_ADDRESS_ARCH(AS_KERNEL->genarch.page_table); |
// note for Alf: kernel part of page table is copied in generic/mm/as_pt.c/ptl0_create |
// TODO: register fault routine |
} |
/** Map device into kernel space. */ |