Rev 1790 | Rev 1903 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1790 | Rev 1793 | ||
---|---|---|---|
Line 33... | Line 33... | ||
33 | */ |
33 | */ |
34 | 34 | ||
35 | #include <arch/mm/frame.h> |
35 | #include <arch/mm/frame.h> |
36 | #include <mm/frame.h> |
36 | #include <mm/frame.h> |
37 | #include <arch/boot/boot.h> |
37 | #include <arch/boot/boot.h> |
- | 38 | #include <arch/types.h> |
|
38 | #include <config.h> |
39 | #include <config.h> |
39 | #include <align.h> |
40 | #include <align.h> |
- | 41 | #include <macros.h> |
|
- | 42 | ||
- | 43 | uintptr_t last_frame = NULL; |
|
40 | 44 | ||
41 | /** Create memory zones according to information stored in bootinfo. |
45 | /** Create memory zones according to information stored in bootinfo. |
42 | * |
46 | * |
43 | * Walk the bootinfo memory map and create frame zones according to it. |
47 | * Walk the bootinfo memory map and create frame zones according to it. |
44 | * The first frame is not blacklisted here as it is done in generic |
48 | * The first frame is not blacklisted here as it is done in generic |
Line 48... | Line 52... | ||
48 | { |
52 | { |
49 | int i; |
53 | int i; |
50 | pfn_t confdata; |
54 | pfn_t confdata; |
51 | 55 | ||
52 | for (i = 0; i < bootinfo.memmap.count; i++) { |
56 | for (i = 0; i < bootinfo.memmap.count; i++) { |
- | 57 | uintptr_t start = bootinfo.memmap.zones[i].start; |
|
- | 58 | size_t size = bootinfo.memmap.zones[i].size; |
|
53 | 59 | ||
54 | /* |
60 | /* |
55 | * The memmap is created by HelenOS boot loader. |
61 | * The memmap is created by HelenOS boot loader. |
56 | * It already contains no holes. |
62 | * It already contains no holes. |
57 | */ |
63 | */ |
58 | 64 | ||
59 | confdata = ADDR2PFN(bootinfo.memmap.zones[i].start); |
65 | confdata = ADDR2PFN(start); |
60 | if (confdata == 0) |
66 | if (confdata == 0) |
61 | confdata = 2; |
67 | confdata = 2; |
62 | zone_create(ADDR2PFN(bootinfo.memmap.zones[i].start), |
68 | zone_create(ADDR2PFN(start), SIZE2FRAMES(ALIGN_DOWN(size, FRAME_SIZE)), confdata, 0); |
- | 69 | ||
63 | SIZE2FRAMES(ALIGN_DOWN(bootinfo.memmap.zones[i].size, PAGE_SIZE)), |
70 | last_frame = max(last_frame, start + ALIGN_UP(size, FRAME_SIZE)); |
64 | confdata, 0); |
- | |
65 | } |
71 | } |
66 | 72 | ||
67 | } |
73 | } |
68 | 74 | ||
69 | /** @} |
75 | /** @} |