Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 176 → Rev 177

/SPARTAN/trunk/src/main/main.c
97,13 → 97,28
{
config.cpu_count = 1;
config.cpu_active = 1;
size_t size, delta;
 
/*
* Calculate 'size' that kernel and heap occupies in memory.
*/
size = hardcoded_ktext_size + hardcoded_kdata_size + CONFIG_HEAP_SIZE;
/*
* We need the boot stack to start on page boundary.
* That is why 'delta' is calculated.
*/
delta = PAGE_SIZE - ((hardcoded_load_address + size) % PAGE_SIZE);
delta = (delta == PAGE_SIZE) ? 0 : delta;
size += delta;
 
config.base = hardcoded_load_address;
config.memory_size = get_memory_size();
config.kernel_size = hardcoded_ktext_size + hardcoded_kdata_size + CONFIG_HEAP_SIZE + CONFIG_STACK_SIZE;
config.kernel_size = size + CONFIG_STACK_SIZE;
 
context_save(&ctx);
context_set(&ctx, FADDR(main_bsp_separated_stack), config.base + hardcoded_ktext_size + hardcoded_kdata_size + CONFIG_HEAP_SIZE, CONFIG_STACK_SIZE);
context_set(&ctx, FADDR(main_bsp_separated_stack), config.base + size, CONFIG_STACK_SIZE);
context_restore(&ctx);
/* not reached */
}
/SPARTAN/trunk/src/preempt/preemption.c
28,13 → 28,19
 
#include <preemption.h>
#include <arch.h>
#include <arch/atomic.h>
#include <arch/asm.h>
#include <arch/barrier.h>
#include <debug.h>
 
void preemption_disable(void)
{
THE->preemption_disabled++;
memory_barrier();
}
 
void preemption_enable(void)
{
ASSERT(THE->preemption_disabled);
memory_barrier();
THE->preemption_disabled--;
}