Ignore:
File:
1 edited

Legend:

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

    r142084b2 r64f6ef04  
    131131                        if (last_frame < ALIGN_UP(new_base + new_size, FRAME_SIZE))
    132132                                last_frame = ALIGN_UP(new_base + new_size, FRAME_SIZE);
    133                 } else if ((e820table[i].type == MEMMAP_MEMORY_ACPI) ||
    134                     (e820table[i].type == MEMMAP_MEMORY_NVS)) {
     133                }
     134               
     135                if (e820table[i].type == MEMMAP_MEMORY_RESERVED) {
     136                        /* To be safe, make the reserved zone possibly larger */
     137                        uint64_t new_base = ALIGN_DOWN(base, FRAME_SIZE);
     138                        uint64_t new_size = ALIGN_UP(size + (base - new_base),
     139                            FRAME_SIZE);
     140                       
     141                        zone_create(ADDR2PFN(new_base), SIZE2FRAMES(new_size), 0,
     142                            ZONE_RESERVED);
     143                }
     144               
     145                if (e820table[i].type == MEMMAP_MEMORY_ACPI) {
    135146                        /* To be safe, make the firmware zone possibly larger */
    136147                        uint64_t new_base = ALIGN_DOWN(base, FRAME_SIZE);
     
    140151                        zone_create(ADDR2PFN(new_base), SIZE2FRAMES(new_size), 0,
    141152                            ZONE_FIRMWARE);
    142                 } else {
    143                         /* To be safe, make the reserved zone possibly larger */
    144                         uint64_t new_base = ALIGN_DOWN(base, FRAME_SIZE);
    145                         uint64_t new_size = ALIGN_UP(size + (base - new_base),
    146                             FRAME_SIZE);
    147                        
    148                         zone_create(ADDR2PFN(new_base), SIZE2FRAMES(new_size), 0,
    149                             ZONE_RESERVED);
    150153                }
    151154        }
     
    200203#ifdef CONFIG_SMP
    201204                /* Reserve AP real mode bootstrap memory */
    202                 frame_mark_unavailable(AP_BOOT_OFFSET >> FRAME_WIDTH,
     205                frame_mark_unavailable(AP_BOOT_OFFSET >> FRAME_WIDTH, 
    203206                    (hardcoded_unmapped_ktext_size +
    204207                    hardcoded_unmapped_kdata_size) >> FRAME_WIDTH);
Note: See TracChangeset for help on using the changeset viewer.