Changeset 3fe58d3c in mainline for kernel/arch


Ignore:
Timestamp:
2012-01-20T22:35:26Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e86b8f0
Parents:
321052f7 (diff), 7943c43 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from lp:~jakub/helenos/mm.

Location:
kernel/arch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/include/mm/km.h

    r321052f7 r3fe58d3c  
    3939
    4040#define KM_ARM32_IDENTITY_START         UINT32_C(0x80000000)
    41 #define KM_ARM32_IDENTITY_SIZE          UINT32_C(0x40000000)
     41#define KM_ARM32_IDENTITY_SIZE          UINT32_C(0x70000000)
    4242
    43 #define KM_ARM32_NON_IDENTITY_START     UINT32_C(0xc0000000)
    44 #define KM_ARM32_NON_IDENTITY_SIZE      UINT32_C(0x40000000)
     43#define KM_ARM32_NON_IDENTITY_START     UINT32_C(0xf0000000)
     44/*
     45 * The last virtual megabyte contains the high exception vectors (0xFFFF0000).
     46 * Do not include this range into kernel non-identity.
     47 */
     48#define KM_ARM32_NON_IDENTITY_SIZE      UINT32_C(0x0ff00000)
    4549
    4650extern void km_identity_arch_init(void);
  • kernel/arch/arm32/src/mm/page.c

    r321052f7 r3fe58d3c  
    6565                page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
    6666       
     67#ifdef HIGH_EXCEPTION_VECTORS
    6768        /* Create mapping for exception table at high offset */
    68 #ifdef HIGH_EXCEPTION_VECTORS
    69         // XXX: fixme to use proper non-identity page
    70         void *virtaddr = frame_alloc(ONE_FRAME, FRAME_KA);
    71         page_mapping_insert(AS_KERNEL, EXC_BASE_ADDRESS, KA2PA(virtaddr),
    72             flags);
     69        uintptr_t ev_frame = (uintptr_t) frame_alloc(ONE_FRAME, FRAME_NONE);
     70        page_mapping_insert(AS_KERNEL, EXC_BASE_ADDRESS, ev_frame, flags);
    7371#else
    7472#error "Only high exception vector supported now"
    7573#endif
    76         cur = ALIGN_DOWN(0x50008010, FRAME_SIZE);
    77         page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags);
    7874
    7975        page_table_unlock(AS_KERNEL, true);
  • kernel/arch/ia32/src/mm/frame.c

    r321052f7 r3fe58d3c  
    5454       
    5555        for (i = 0; i < e820counter; i++) {
    56                 uintptr_t base = (uintptr_t) e820table[i].base_address;
    57                 size_t size = (size_t) e820table[i].size;
     56                uint64_t base64 = e820table[i].base_address;
     57                uint64_t size64 = e820table[i].size;
     58
     59#ifdef KARCH_ia32
     60                /*
     61                 * Restrict the e820 table entries to 32-bits.
     62                 */
     63                if (base64 >= 0x100000000ULL)
     64                        continue;
     65                if (base64 + size64 > 0x100000000ULL)
     66                        size64 -= base64 + size64 - 0x100000000ULL;
     67#endif
     68
     69                uintptr_t base = (uintptr_t) base64;
     70                size_t size = (size_t) size64;
    5871               
    5972                if (!frame_adjust_zone_bounds(low, &base, &size))
Note: See TracChangeset for help on using the changeset viewer.