Changeset 84dd253 in mainline for arch/ia32/src/mm/frame.c


Ignore:
Timestamp:
2005-09-21T13:37:50Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
aed4eca
Parents:
fcacfb7
Message:

Physical memory management work.
New frame allocator.
Some architectures need to have bigger heap.

File:
1 edited

Legend:

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

    rfcacfb7 r84dd253  
    3333#include <arch/boot/boot.h>
    3434#include <arch/boot/memmap.h>
     35#include <panic.h>
    3536
    3637size_t hardcoded_unmapped_ktext_size = 0;
     
    3940void frame_arch_init(void)
    4041{
     42        zone_t *z;
    4143        __u8 i;
    4244       
    4345        if (config.cpu_active == 1) {
    44                 /* Reserve the NULL frame */
    45                 frame_not_free(0x0);
     46                for (i=e820counter;i>0;i--) {
     47                        if (e820table[i-1].type==MEMMAP_MEMORY_AVAILABLE) {
     48                                z = zone_create(e820table[i-1].base_address, e820table[i-1].size & ~(FRAME_SIZE-1), 0);
     49                                if (!z) {
     50                                        panic("Cannot allocate zone (%dB).\n", e820table[i-1].size & ~(FRAME_SIZE-1));
     51                                }
     52                                zone_attach(z);
     53                        }
     54                }
    4655               
    47                 /* Reserve well-known memory regions */
    48                 frame_region_not_free(0xa0000,0xff000);
    49                 frame_region_not_free(0xfec00000,0xffffffff);
    50                
     56                frame_not_free(0);
     57
    5158                /* Reserve real mode bootstrap memory */
    52                 frame_region_not_free(BOOTSTRAP_OFFSET, BOOTSTRAP_OFFSET + hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size);
    53                
    54                 for (i=e820counter;i>0;i--) {
    55                         if (e820table[i-1].type!=MEMMAP_MEMORY_AVAILABLE) {
    56                                         frame_region_not_free(e820table[i-1].base_address, e820table[i-1].base_address+e820table[i-1].size);
    57                                 }
    58                         }
     59                frame_region_not_free(BOOTSTRAP_OFFSET, BOOTSTRAP_OFFSET + hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size);
    5960        }
    6061}
Note: See TracChangeset for help on using the changeset viewer.