Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 650 → Rev 651

/kernel/trunk/generic/src/main/main.c
82,7 → 82,6
char *timestamp = "";
#endif
 
 
config_t config;
context_t ctx;
 
98,23 → 97,6
__address init_addr = 0;
size_t init_size = 0;
 
/**
* Size of memory in bytes taken by kernel and heap.
*/
static size_t kernel_size;
 
/**
* Size of heap.
*/
static size_t heap_size;
 
 
/**
* Extra space between heap and stack
* enforced by alignment requirements.
*/
static size_t heap_delta;
 
void main_bsp(void);
void main_ap(void);
 
140,20 → 122,25
{
config.cpu_count = 1;
config.cpu_active = 1;
config.base = hardcoded_load_address;
config.memory_size = get_memory_size();
config.init_addr = init_addr;
config.init_size = init_size;
 
heap_size = CONFIG_HEAP_SIZE + (config.memory_size/FRAME_SIZE)*sizeof(frame_t);
kernel_size = ALIGN_UP(hardcoded_ktext_size + hardcoded_kdata_size + heap_size, PAGE_SIZE);
heap_delta = kernel_size - (hardcoded_ktext_size + hardcoded_kdata_size + heap_size);
config.kernel_size = kernel_size + CONFIG_STACK_SIZE;
if (init_size > 0)
config.heap_addr = init_addr + init_size;
else
config.heap_addr = hardcoded_load_address + hardcoded_ktext_size + hardcoded_kdata_size;
config.heap_size = CONFIG_HEAP_SIZE + (config.memory_size / FRAME_SIZE) * sizeof(frame_t);
config.kernel_size = ALIGN_UP(config.heap_addr - hardcoded_load_address + config.heap_size, PAGE_SIZE);
config.heap_delta = config.kernel_size - (config.heap_addr - hardcoded_load_address + config.heap_size);
config.kernel_size = config.kernel_size + CONFIG_STACK_SIZE;
context_save(&ctx);
early_mapping(config.base + hardcoded_ktext_size + hardcoded_kdata_size, CONFIG_STACK_SIZE + heap_size + heap_delta);
context_set(&ctx, FADDR(main_bsp_separated_stack), config.base + kernel_size, CONFIG_STACK_SIZE);
context_set(&ctx, FADDR(main_bsp_separated_stack), config.base + config.kernel_size, CONFIG_STACK_SIZE);
context_restore(&ctx);
/* not reached */
}
185,12 → 172,12
exc_init();
arch_pre_mm_init();
early_heap_init(config.base + hardcoded_ktext_size + hardcoded_kdata_size, heap_size + heap_delta);
early_heap_init(config.heap_addr, config.heap_size + config.heap_delta);
frame_init();
page_init();
tlb_init();
arch_post_mm_init();
 
printf("%s, release %s (%s)%s\nBuilt%s for %s\n%s\n", project, release, name, revision, timestamp, arch, copyright);
printf("%P: hardcoded_ktext_size=%dK, hardcoded_kdata_size=%dK\n",
config.base, hardcoded_ktext_size/1024, hardcoded_kdata_size/1024);