Changeset c1982e45 in mainline for arch/amd64/src/mm/page.c


Ignore:
Timestamp:
2006-05-20T21:11:08Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
125e944
Parents:
1068f6a
Message:

make hardware memory mapping more generic

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/src/mm/page.c

    r1068f6a rc1982e45  
    7272        SET_FRAME_FLAGS_ARCH(ptl3, PTL3_INDEX_ARCH(page), PAGE_WRITE | PAGE_EXEC); \
    7373    }
     74
     75
    7476void page_arch_init(void)
    7577{
     
    108110        }
    109111}
     112
    110113
    111114/** Identity page mapper
     
    162165}
    163166
     167
    164168void page_fault(int n, istate_t *istate)
    165169{
     
    173177        }
    174178}
     179
     180
     181__address hw_map(__address physaddr, size_t size)
     182{
     183        if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH))
     184                panic("Unable to map physical memory %p (%d bytes)", physaddr, size)
     185       
     186        __address virtaddr = PA2KA(last_frame);
     187        pfn_t i;
     188        for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++)
     189                page_mapping_insert(AS_KERNEL, virtaddr + PFN2ADDR(i), physaddr + PFN2ADDR(i), PAGE_NOT_CACHEABLE);
     190       
     191        last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE);
     192       
     193        return virtaddr;
     194}
Note: See TracChangeset for help on using the changeset viewer.