Changeset 085d973 in mainline for generic/src/main/main.c
- Timestamp:
- 2006-02-08T12:34:05Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5e3757d
- Parents:
- eb1b8b6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/src/main/main.c
reb1b8b6 r085d973 44 44 #include <interrupt.h> 45 45 #include <arch/mm/memory_init.h> 46 #include <mm/heap.h>47 46 #include <mm/frame.h> 48 47 #include <mm/page.h> … … 104 103 void main_bsp(void) 105 104 { 105 __address stackaddr; 106 106 107 config.cpu_count = 1; 107 108 config.cpu_active = 1; … … 112 113 config.init_size = init_size; 113 114 114 if (init_size > 0) 115 config.heap_addr = init_addr + init_size; 116 else 117 config.heap_addr = hardcoded_load_address + hardcoded_ktext_size + hardcoded_kdata_size; 118 119 config.heap_size = CONFIG_HEAP_SIZE + (config.memory_size / FRAME_SIZE) * sizeof(frame_t); 120 121 config.kernel_size = ALIGN_UP(config.heap_addr - hardcoded_load_address + config.heap_size, PAGE_SIZE); 122 config.heap_delta = config.kernel_size - (config.heap_addr - hardcoded_load_address + config.heap_size); 123 config.kernel_size = config.kernel_size + CONFIG_STACK_SIZE; 115 config.kernel_size = ALIGN_UP(hardcoded_ktext_size + hardcoded_kdata_size, PAGE_SIZE); 116 stackaddr = config.base + config.kernel_size; 117 /* Avoid placing kernel on top of init */ 118 if (overlaps(stackaddr,stackaddr+CONFIG_STACK_SIZE, 119 config.init_addr, config.init_addr+config.init_size)) { 120 121 stackaddr = ALIGN_UP(config.init_addr+config.init_size, 122 CONFIG_STACK_SIZE); 123 config.init_size = ALIGN_UP(config.init_size,CONFIG_STACK_SIZE) + CONFIG_STACK_SIZE; 124 } else { 125 config.kernel_size += CONFIG_STACK_SIZE; 126 } 124 127 125 128 context_save(&ctx); 126 context_set(&ctx, FADDR(main_bsp_separated_stack), config.base + config.kernel_size - CONFIG_STACK_SIZE, CONFIG_STACK_SIZE); 129 context_set(&ctx, FADDR(main_bsp_separated_stack), 130 stackaddr, CONFIG_STACK_SIZE); 127 131 context_restore(&ctx); 128 132 /* not reached */ … … 141 145 142 146 the_initialize(THE); 143 144 147 /* 145 148 * kconsole data structures must be initialized very early … … 159 162 */ 160 163 arch_pre_mm_init(); 161 early_heap_init(config.heap_addr, config.heap_size + config.heap_delta);164 /* Initialize at least 1 memory segment big enough for slab to work */ 162 165 frame_init(); 163 166 slab_cache_init(); … … 165 168 page_init(); 166 169 tlb_init(); 167 arch_post_mm_init(); 168 170 arch_post_mm_init(); 169 171 version_print(); 170 172 … … 179 181 printf("config.memory_size=%dM\n", config.memory_size/(1024*1024)); 180 182 printf("config.cpu_count=%d\n", config.cpu_count); 181 182 183 cpu_init(); 183 184 184 185 calibrate_delay_loop(); 185 186 186 timeout_init(); 187 187 scheduler_init();
Note:
See TracChangeset
for help on using the changeset viewer.