/kernel/trunk/generic/include/config.h |
---|
40,15 → 40,20 |
#define CONFIG_STACK_SIZE STACK_SIZE |
struct config { |
count_t cpu_count; |
volatile count_t cpu_active; |
__address base; |
size_t memory_size; |
size_t kernel_size; |
__address init_addr; |
size_t init_size; |
count_t cpu_count; |
volatile count_t cpu_active; |
__address heap_addr; |
size_t heap_size; |
size_t heap_delta; /**< Extra space between heap and stack (enforced by alignment requirements) */ |
size_t kernel_size; /**< Size of memory in bytes taken by kernel, heap and stack */ |
}; |
extern config_t config; |
/kernel/trunk/generic/include/arch.h |
---|
42,10 → 42,6 |
#define VM THE->vm |
#define PREEMPTION_DISABLED THE->preemption_disabled |
#ifndef early_mapping |
#define early_mapping(stack, size) |
#endif /* early_mapping */ |
/** |
* For each possible kernel stack, structure |
* of the following type will be placed at |
/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); |
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.kernel_size = kernel_size + CONFIG_STACK_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,7 → 172,7 |
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(); |
/kernel/trunk/Makefile |
---|
178,7 → 178,6 |
depend: archlinks |
-makedepend $(DEFS) $(CFLAGS) -f - $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) >Makefile.depend 2>/dev/null |
#$(CC) $(DEFS) $(CFLAGS) -M $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > Makefile.depend |
arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in |
$(CC) $(DEFS) $(CFLAGS) -E -x c $< | grep -v "^\#" > $@ |
195,7 → 194,6 |
$(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > kernel.objdump |
tools/genmap.py kernel.map.pre kernel.objdump generic/src/debug/real_map.bin |
generic/src/debug/real_map.o: generic/src/debug/real_map.bin |
$(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) --prefix-sections=symtab $< $@ |
206,7 → 204,7 |
$(OBJCOPY) -O $(BFD) kernel.raw kernel.bin |
boot: kernel.bin |
$(MAKE) -C arch/$(ARCH)/boot build KERNEL_SIZE="`cat kernel.bin | wc -c`" CC=$(CC) AS=$(AS) LD=$(LD) |
if [ -d arch/$(ARCH)/boot ] ; then $(MAKE) -C arch/$(ARCH)/boot build KERNEL_SIZE="`cat kernel.bin | wc -c`" CC=$(CC) AS=$(AS) LD=$(LD) ; fi |
disasm: kernel.raw |
$(OBJDUMP) -d kernel.raw > kernel.disasm |
/kernel/trunk/arch/sparc64/boot/Makefile |
---|
File deleted |
/kernel/trunk/arch/ppc32/include/arch.h |
---|
31,11 → 31,4 |
#include <genarch/ofw/ofw.h> |
#ifdef early_mapping |
#undef early_mapping |
#endif |
#define early_mapping(stack, size) \ |
ofw_claim((void *) stack, size, 0); |
#endif |
/kernel/trunk/arch/ia32/boot/Makefile |
---|
File deleted |