Subversion Repositories HelenOS

Rev

Rev 267 | Rev 371 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 267 Rev 368
Line 30... Line 30...
30
#include <arch/mm/frame.h>
30
#include <arch/mm/frame.h>
31
#include <mm/vm.h>
31
#include <mm/vm.h>
32
#include <config.h>
32
#include <config.h>
33
#include <arch/boot/boot.h>
33
#include <arch/boot/boot.h>
34
#include <arch/boot/memmap.h>
34
#include <arch/boot/memmap.h>
-
 
35
#include <panic.h>
35
 
36
 
36
size_t hardcoded_unmapped_ktext_size = 0;
37
size_t hardcoded_unmapped_ktext_size = 0;
37
size_t hardcoded_unmapped_kdata_size = 0;
38
size_t hardcoded_unmapped_kdata_size = 0;
38
 
39
 
39
void frame_arch_init(void)
40
void frame_arch_init(void)
40
{
41
{
-
 
42
    zone_t *z;
41
    __u8 i;
43
    __u8 i;
42
   
44
   
43
    if (config.cpu_active == 1) {
45
    if (config.cpu_active == 1) {
44
        /* Reserve the NULL frame */
-
 
45
        frame_not_free(0x0);
-
 
46
       
-
 
47
        /* Reserve well-known memory regions */
-
 
48
        frame_region_not_free(0xa0000,0xff000);
-
 
49
        frame_region_not_free(0xfec00000,0xffffffff);
-
 
50
       
-
 
51
        /* 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--) {
46
        for (i=e820counter;i>0;i--) {
55
            if (e820table[i-1].type!=MEMMAP_MEMORY_AVAILABLE) {
47
            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);
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));
57
                }
51
                }
-
 
52
                zone_attach(z);
58
            }
53
            }
-
 
54
        }
-
 
55
       
-
 
56
        frame_not_free(0);
-
 
57
 
-
 
58
        /* Reserve real mode bootstrap memory */
-
 
59
                frame_region_not_free(BOOTSTRAP_OFFSET, BOOTSTRAP_OFFSET + hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size);
59
    }
60
    }
60
}
61
}