Ignore:
File:
1 edited

Legend:

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

    r9d58539 r8f9d70b  
    5252void page_arch_init(void)
    5353{
    54         int flags = PAGE_CACHEABLE;
     54        int flags = PAGE_CACHEABLE | PAGE_EXEC;
    5555        page_mapping_operations = &pt_mapping_operations;
    5656
     57#ifdef PROCESSOR_ARCH_armv6
     58        /* Select ARMv6 and ARMv7 memory model */
     59        SCTLR_write(SCTLR_read() | SCTLR_EXTENDED_PT_EN_FLAG);
     60#endif
    5761        page_table_lock(AS_KERNEL, true);
    5862       
    59         uintptr_t cur;
    60 
    6163        /* Kernel identity mapping */
    62         for (cur = PHYSMEM_START_ADDR;
    63             cur < min(config.identity_size, config.physmem_end);
     64        //FIXME: We need to consider the possibility that
     65        //identity_base > identity_size and physmem_end.
     66        //This might lead to overflow if identity_size is too big.
     67        for (uintptr_t cur = PHYSMEM_START_ADDR;
     68            cur < min(KA2PA(config.identity_base) +
     69                config.identity_size, config.physmem_end);
    6470            cur += FRAME_SIZE)
    6571                page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
Note: See TracChangeset for help on using the changeset viewer.