Changeset 6b781c0 in mainline for kernel/genarch


Ignore:
Timestamp:
2007-06-08T15:02:49Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c03ee1c
Parents:
3ee8a075
Message:

Merge arm32 into trunk.

Location:
kernel/genarch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/include/mm/page_pt.h

    r3ee8a075 r6b781c0  
    5555#define PTL2_ENTRIES                    PTL2_ENTRIES_ARCH
    5656#define PTL3_ENTRIES                    PTL3_ENTRIES_ARCH
     57
     58/* Table sizes in each level */
     59#define PTL0_SIZE                       PTL0_SIZE_ARCH
     60#define PTL1_SIZE                       PTL1_SIZE_ARCH
     61#define PTL2_SIZE                       PTL2_SIZE_ARCH
     62#define PTL3_SIZE                       PTL3_SIZE_ARCH
    5763
    5864/*
  • kernel/genarch/src/mm/as_pt.c

    r3ee8a075 r6b781c0  
    9898        pte_t *src_ptl0, *dst_ptl0;
    9999        ipl_t ipl;
     100        int table_size;
    100101
    101         dst_ptl0 = (pte_t *) frame_alloc(ONE_FRAME, FRAME_KA);
     102        dst_ptl0 = (pte_t *) frame_alloc(PTL0_SIZE, FRAME_KA);
     103        table_size = FRAME_SIZE << PTL0_SIZE;
    102104
    103105        if (flags & FLAG_AS_KERNEL) {
    104                 memsetb((uintptr_t) dst_ptl0, PAGE_SIZE, 0);
     106                memsetb((uintptr_t) dst_ptl0, table_size, 0);
    105107        } else {
    106108                uintptr_t src, dst;
     
    117119                dst = (uintptr_t) &dst_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)];
    118120
    119                 memsetb((uintptr_t) dst_ptl0, PAGE_SIZE, 0);
    120                 memcpy((void *) dst, (void *) src, PAGE_SIZE - (src - (uintptr_t) src_ptl0));
     121                memsetb((uintptr_t) dst_ptl0, table_size, 0);
     122                memcpy((void *) dst, (void *) src, table_size - (src - (uintptr_t) src_ptl0));
    121123                mutex_unlock(&AS_KERNEL->lock);
    122124                interrupts_restore(ipl);
  • kernel/genarch/src/mm/page_pt.c

    r3ee8a075 r6b781c0  
    7676
    7777        if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) {
    78                 newpt = (pte_t *)frame_alloc(ONE_FRAME, FRAME_KA);
    79                 memsetb((uintptr_t)newpt, PAGE_SIZE, 0);
     78                newpt = (pte_t *)frame_alloc(PTL1_SIZE, FRAME_KA);
     79                memsetb((uintptr_t)newpt, FRAME_SIZE << PTL1_SIZE, 0);
    8080                SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page), KA2PA(newpt));
    8181                SET_PTL1_FLAGS(ptl0, PTL0_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE);
     
    8585
    8686        if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) {
    87                 newpt = (pte_t *)frame_alloc(ONE_FRAME, FRAME_KA);
    88                 memsetb((uintptr_t)newpt, PAGE_SIZE, 0);
     87                newpt = (pte_t *)frame_alloc(PTL2_SIZE, FRAME_KA);
     88                memsetb((uintptr_t)newpt, FRAME_SIZE << PTL2_SIZE, 0);
    8989                SET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page), KA2PA(newpt));
    9090                SET_PTL2_FLAGS(ptl1, PTL1_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE);
     
    9494
    9595        if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) {
    96                 newpt = (pte_t *)frame_alloc(ONE_FRAME, FRAME_KA);
    97                 memsetb((uintptr_t)newpt, PAGE_SIZE, 0);
     96                newpt = (pte_t *)frame_alloc(PTL3_SIZE, FRAME_KA);
     97                memsetb((uintptr_t)newpt, FRAME_SIZE << PTL3_SIZE, 0);
    9898                SET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page), KA2PA(newpt));
    9999                SET_PTL3_FLAGS(ptl2, PTL2_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE);
Note: See TracChangeset for help on using the changeset viewer.