Rev 4342 | Rev 4344 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4342 | Rev 4343 | ||
|---|---|---|---|
| Line 63... | Line 63... | ||
| 63 | } phys_region_t; |
63 | } phys_region_t; |
| 64 | 64 | ||
| 65 | static count_t phys_regions_count = 0; |
65 | static count_t phys_regions_count = 0; |
| 66 | static phys_region_t phys_regions[MAX_REGIONS]; |
66 | static phys_region_t phys_regions[MAX_REGIONS]; |
| 67 | 67 | ||
| - | 68 | uintptr_t end_frame = 0; |
|
| - | 69 | ||
| 68 | 70 | ||
| 69 | /** Check whether frame is available |
71 | /** Check whether frame is available |
| 70 | * |
72 | * |
| 71 | * Returns true if given frame is generally available for use. |
73 | * Returns true if given frame is generally available for use. |
| 72 | * Returns false if given frame is used for physical memory |
74 | * Returns false if given frame is used for physical memory |
| 73 | * mapped devices and cannot be used. |
75 | * mapped devices and cannot be used. |
| 74 | * |
76 | * |
| 75 | */ |
77 | */ |
| 76 | static bool frame_available(pfn_t frame) |
78 | static bool frame_available(pfn_t frame) |
| 77 | { |
79 | { |
| 78 | #ifdef msim |
80 | #ifdef MACHINE_msim |
| 79 | /* MSIM device (dprinter) */ |
81 | /* MSIM device (dprinter) */ |
| 80 | if (frame == (KA2PA(MSIM_VIDEORAM) >> ZERO_PAGE_WIDTH)) |
82 | if (frame == (KA2PA(MSIM_VIDEORAM) >> ZERO_PAGE_WIDTH)) |
| 81 | return false; |
83 | return false; |
| 82 | 84 | ||
| 83 | /* MSIM device (dkeyboard) */ |
85 | /* MSIM device (dkeyboard) */ |
| 84 | if (frame == (KA2PA(MSIM_KBD_ADDRESS) >> ZERO_PAGE_WIDTH)) |
86 | if (frame == (KA2PA(MSIM_KBD_ADDRESS) >> ZERO_PAGE_WIDTH)) |
| 85 | return false; |
87 | return false; |
| 86 | #endif |
88 | #endif |
| 87 | 89 | ||
| 88 | #ifdef simics |
90 | #ifdef MACHINE_simics |
| 89 | /* Simics device (serial line) */ |
91 | /* Simics device (serial line) */ |
| 90 | if (frame == (KA2PA(SERIAL_ADDRESS) >> ZERO_PAGE_WIDTH)) |
92 | if (frame == (KA2PA(SERIAL_ADDRESS) >> ZERO_PAGE_WIDTH)) |
| 91 | return false; |
93 | return false; |
| 92 | #endif |
94 | #endif |
| 93 | 95 | ||
| 94 | #if defined(lgxemul) || defined(bgxemul) |
96 | #if defined(MACHINE_lgxemul) || defined(MACHINE_bgxemul) |
| 95 | /* gxemul devices */ |
97 | /* gxemul devices */ |
| 96 | if (overlaps(frame << ZERO_PAGE_WIDTH, ZERO_PAGE_SIZE, |
98 | if (overlaps(frame << ZERO_PAGE_WIDTH, ZERO_PAGE_SIZE, |
| 97 | 0x10000000, MB2SIZE(256))) |
99 | 0x10000000, MB2SIZE(256))) |
| 98 | return false; |
100 | return false; |
| 99 | #endif |
101 | #endif |
| Line 234... | Line 236... | ||
| 234 | start_frame = frame + 1; |
236 | start_frame = frame + 1; |
| 235 | avail = true; |
237 | avail = true; |
| 236 | } |
238 | } |
| 237 | } |
239 | } |
| 238 | 240 | ||
| - | 241 | end_frame = frame; |
|
| - | 242 | ||
| 239 | frame_add_region(start_frame, frame); |
243 | frame_add_region(start_frame, end_frame); |
| 240 | 244 | ||
| 241 | /* Blacklist interrupt vector frame */ |
245 | /* Blacklist interrupt vector frame */ |
| 242 | frame_mark_unavailable(0, 1); |
246 | frame_mark_unavailable(0, 1); |
| 243 | 247 | ||
| 244 | /* Cleanup */ |
248 | /* Cleanup */ |