Ignore:
File:
1 edited

Legend:

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

    r7852625 r9117ef9b  
    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))
     
    7992                        } else {
    8093                                conf = zone_external_conf_alloc(count);
    81                                 if (conf != 0)
    82                                         zone_create(pfn, count, conf,
    83                                             ZONE_AVAILABLE | ZONE_HIGHMEM);
     94                                zone_create(pfn, count, conf,
     95                                    ZONE_AVAILABLE | ZONE_HIGHMEM);
    8496                        }
    8597                } else if ((e820table[i].type == MEMMAP_MEMORY_ACPI) ||
Note: See TracChangeset for help on using the changeset viewer.