Changeset 59e4864 in mainline for kernel/arch/ia64/src/mm


Ignore:
Timestamp:
2008-11-11T08:00:42Z (17 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f3c4a26
Parents:
a2a5529
Message:

Alfa of SMP support on IA64

Location:
kernel/arch/ia64/src/mm
Files:
2 edited

Legend:

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

    ra2a5529 r59e4864  
    4343 */
    4444#define MEMORY_SIZE     (64 * 1024 * 1024)
    45 #define MEMORY_BASE     (64 * 1024 * 1024)
     45#define MEMORY_BASE     (0 * 64 * 1024 * 1024)
     46
     47#define ONE_TO_ONE_MAPPING_SIZE (256*1048576) // Mapped at start
    4648
    4749#define ROM_BASE        0xa0000               //For ski
    4850#define ROM_SIZE        (384 * 1024)          //For ski
    4951void poke_char(int x,int y,char ch, char c);
     52
     53uintptr_t last_frame;
     54
    5055void frame_arch_init(void)
    5156{
    52         zone_create(MEMORY_BASE >> FRAME_WIDTH, SIZE2FRAMES(MEMORY_SIZE), (MEMORY_SIZE) >> FRAME_WIDTH, 0);
     57
     58        if(config.cpu_active==1)
     59        {
     60                zone_create(MEMORY_BASE >> FRAME_WIDTH, SIZE2FRAMES(MEMORY_SIZE), (MEMORY_SIZE) >> FRAME_WIDTH, 0);
    5361       
    54         /*
    55          * Blacklist ROM regions.
    56          */
    57         frame_mark_unavailable(ADDR2PFN(ROM_BASE), SIZE2FRAMES(ROM_SIZE));
    58        
     62                /*
     63                * Blacklist ROM regions.
     64                */
     65                //frame_mark_unavailable(ADDR2PFN(ROM_BASE), SIZE2FRAMES(ROM_SIZE));
     66
     67                frame_mark_unavailable(ADDR2PFN(0), SIZE2FRAMES(1048576));
     68                last_frame=SIZE2FRAMES((VRN_KERNEL<<VRN_SHIFT)+ONE_TO_ONE_MAPPING_SIZE);       
     69        }       
    5970}
    6071
  • kernel/arch/ia64/src/mm/page.c

    ra2a5529 r59e4864  
    4848#include <arch/barrier.h>
    4949#include <memstr.h>
     50#include <align.h>
    5051
    5152static void set_environment(void);
     
    263264}
    264265
     266extern uintptr_t last_frame;
     267
     268
     269uintptr_t hw_map(uintptr_t physaddr, size_t size)
     270{
     271        if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH))
     272                panic("Unable to map physical memory %p (%d bytes)", physaddr, size)
     273       
     274        uintptr_t virtaddr = PA2KA(last_frame);
     275        pfn_t i;
     276        for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++) {
     277                uintptr_t addr = PFN2ADDR(i);
     278                page_mapping_insert(AS_KERNEL, virtaddr + addr, physaddr + addr, PAGE_NOT_CACHEABLE | PAGE_WRITE);
     279        }
     280       
     281        last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE);
     282       
     283        return virtaddr;
     284}
     285
     286
     287
    265288/** @}
    266289 */
Note: See TracChangeset for help on using the changeset viewer.