Changeset 00287cc in mainline for kernel/arch/arm32/src/mm


Ignore:
Timestamp:
2009-03-12T23:26:32Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
648c9d9
Parents:
3b122e9
Message:

arm32: update for the new scheme of device drivers and keyboard/serial modules
streamline arm32 port (as GXemul is still the only machine supported), more cleanup is needed

Location:
kernel/arch/arm32/src/mm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/src/mm/frame.c

    r3b122e9 r00287cc  
    3636#include <mm/frame.h>
    3737#include <arch/mm/frame.h>
    38 #include <arch/machine.h>
     38#include <arch/drivers/gxemul.h>
    3939#include <config.h>
    40 #include <arch/debug/print.h>
    4140
    4241/** Address of the last frame in the memory. */
     
    4645void frame_arch_init(void)
    4746{
    48         /* all memory as one zone */
    49         zone_create(0, ADDR2PFN(machine_get_memory_size()),
     47        last_frame = *((uintptr_t *) (GXEMUL_MP_ADDRESS + GXEMUL_MP_MEMSIZE_OFFSET));
     48       
     49        /* All memory as one zone */
     50        zone_create(0, ADDR2PFN(last_frame),
    5051            BOOT_PAGE_TABLE_START_FRAME + BOOT_PAGE_TABLE_SIZE_IN_FRAMES, 0);
    51         last_frame = machine_get_memory_size();
    5252       
    5353        /* blacklist boot page table */
     
    5959void boot_page_table_free(void)
    6060{
    61         int i;
    62         for (i = 0; i < BOOT_PAGE_TABLE_SIZE_IN_FRAMES; i++) {
     61        unsigned int i;
     62        for (i = 0; i < BOOT_PAGE_TABLE_SIZE_IN_FRAMES; i++)
    6363                frame_free(i * FRAME_SIZE + BOOT_PAGE_TABLE_ADDRESS);
    64         }
    6564}
    6665
  • kernel/arch/arm32/src/mm/page.c

    r3b122e9 r00287cc  
    5252void page_arch_init(void)
    5353{
     54        int flags = PAGE_CACHEABLE;
     55        page_mapping_operations = &pt_mapping_operations;
     56       
    5457        uintptr_t cur;
    55         int flags;
    56 
    57         page_mapping_operations = &pt_mapping_operations;
    58 
    59         flags = PAGE_CACHEABLE;
    60 
    61         /* PA2KA(identity) mapping for all frames until last_frame */
    62         for (cur = 0; cur < last_frame; cur += FRAME_SIZE) {
     58        /* Kernel identity mapping */
     59        for (cur = 0; cur < last_frame; cur += FRAME_SIZE)
    6360                page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
    64         }
    6561       
    66         /* create mapping for exception table at high offset */
     62        /* Create mapping for exception table at high offset */
    6763#ifdef HIGH_EXCEPTION_VECTORS
    6864        void *virtaddr = frame_alloc(ONE_FRAME, FRAME_KA);
     
    7167#error "Only high exception vector supported now"
    7268#endif
    73 
     69       
    7470        as_switch(NULL, AS_KERNEL);
    75 
     71       
    7672        boot_page_table_free();
    7773}
     
    9490                    physaddr, size)
    9591        }
    96 
     92       
    9793        uintptr_t virtaddr = PA2KA(last_frame);
    9894        pfn_t i;
     
    10298                    PAGE_NOT_CACHEABLE | PAGE_READ | PAGE_WRITE | PAGE_KERNEL);
    10399        }
    104 
     100       
    105101        last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE);
    106102        return virtaddr;
  • kernel/arch/arm32/src/mm/page_fault.c

    r3b122e9 r00287cc  
    3535#include <panic.h>
    3636#include <arch/exception.h>
    37 #include <arch/debug/print.h>
    3837#include <arch/mm/page_fault.h>
    3938#include <mm/as.h>
     
    183182        if (ret == AS_PF_FAULT) {
    184183                print_istate(istate);
    185                 dprintf("page fault - pc: %x, va: %x, status: %x(%x), "
     184                printf("page fault - pc: %x, va: %x, status: %x(%x), "
    186185                    "access:%d\n", istate->pc, badvaddr, fsr.status, fsr,
    187186                    access);
    188 
     187               
    189188                fault_if_from_uspace(istate, "Page fault: %#x.", badvaddr);
    190189                panic("Page fault.");
     
    202201
    203202        if (ret == AS_PF_FAULT) {
    204                 dprintf("prefetch_abort\n");
     203                printf("prefetch_abort\n");
    205204                print_istate(istate);
    206205                panic("page fault - prefetch_abort at address: %x.",
Note: See TracChangeset for help on using the changeset viewer.