Beispiel #1
0
static char * test_array_create() {
    mem_initialize(200, 100);
    HANDLE *h1 = array_create(5, TYPE_LIST);

    mu_assert("test_array_create 111", h1->size == sizeof(Array) + 5*sizeof(HANDLE *));
    mu_assert("test_array_create 112", ((Array *) h1->data)->len == 5);

    array_map(count, h1);

    mu_assert("test_array_map 222", counter == 5);

    mem_destroy();
    return 0;
}
Beispiel #2
0
void main() {
  bt_initialize();
  trace_initialize();
  i386_initialize_descriptor_tables();
  i8259_initialize();
  exceptions_initialize();
  timer_initialize();
  mem_initialize();
  dma_initialize();
  keyboard_initialize();  
  floppy_initialize();  
  tty_initialize();  
  sys_initialize();   
  loader_initialize();  
  clear_display();
  printk("Start running processes!!!\nStartup Communications\n Press ALT-LSHIFT for next terminal\n");  
  i8259_start();
  while(1);  
}
Beispiel #3
0
void* _malloc(size_t size){
	if(!initialized)
		mem_initialize();

	void* cur = HEAP_START;
	void* end = HEAP_END;
	size += sizeof(header);

	do {
		if(IS_USED(cur) || BLOCK_SIZE(cur) < size)
			continue;

		return allocate_block(cur, size);

	} while(NEXT_BLOCK(cur) >= end);

	/* TODO:단편화 확인 및 재배열 코드 추가 */
	/* 또는 가상메모리 사용할지 고민 중 */

	return NULL;
}
/*
 * This is like mem_initialize
 */
void
dram_page_initialize(iter_t iterations, void* cookie)
{
	int i;
	struct mem_state* state = (struct mem_state*)cookie;
	struct dram_page_state*	dstate = (struct dram_page_state*)cookie;

	if (iterations) return; 

	mem_initialize(iterations, cookie);

	for (i = 0; i < state->npages; i += dstate->group) {
		int	groupsize = dstate->group;
		if (groupsize > state->npages - i) {
			groupsize = state->npages - i;
		}
		regroup(state->pages + i, groupsize, cookie);
	}

	benchmark_loads(1, cookie);
}
Beispiel #5
0
u32 _main(void *base)
{
	FRESULT fres;
	int res;
	u32 vector;
	(void)base;

	gecko_init();
	gecko_printf("mini %s loading\n", git_version);

	gecko_printf("Initializing exceptions...\n");
	exception_initialize();
	gecko_printf("Configuring caches and MMU...\n");
	mem_initialize();

	gecko_printf("IOSflags: %08x %08x %08x\n",
		read32(0xffffff00), read32(0xffffff04), read32(0xffffff08));
	gecko_printf("          %08x %08x %08x\n",
		read32(0xffffff0c), read32(0xffffff10), read32(0xffffff14));

	irq_initialize();
	irq_enable(IRQ_TIMER);
//	irq_enable(IRQ_GPIO1B);
	irq_enable(IRQ_GPIO1);
	irq_enable(IRQ_RESET);
	gecko_timer_initialize();
	gecko_printf("Interrupts initialized\n");

	crypto_initialize();
	gecko_printf("crypto support initialized\n");

	nand_initialize();
	gecko_printf("NAND initialized.\n");

	boot2_init();

	gecko_printf("Initializing IPC...\n");
	ipc_initialize();

	gecko_printf("Initializing SDHC...\n");
	sdhc_init();

	gecko_printf("Mounting SD...\n");
	fres = f_mount(0, &fatfs);

	//if (read32(0x0d800190) & 2)
	//{
	//	gecko_printf("GameCube compatibility mode detected...\n");
		vector = boot2_run(1, 2);
	//	goto shutdown;
	//}

	//if(fres != FR_OK)
	//{
	//	gecko_printf("Error %d while trying to mount SD\n", fres);
	//	panic2(0, PANIC_MOUNT);
	//}

	//gecko_printf("Trying to boot:" PPC_BOOT_FILE "\n");

	//res = powerpc_boot_file(PPC_BOOT_FILE);
	//if(res < 0) {
	//	gecko_printf("Failed to boot PPC: %d\n", res);
	//	gecko_printf("Continuing anyway\n");
	//}

	//gecko_printf("Going into IPC mainloop...\n");
	//vector = ipc_process_slow();
	//gecko_printf("IPC mainloop done!\n");
	gecko_printf("Shutting down IPC...\n");
	ipc_shutdown();

shutdown:
	gecko_printf("Shutting down interrupts...\n");
	irq_shutdown();
	gecko_printf("Shutting down caches and MMU...\n");
	mem_shutdown();

	gecko_printf("Vectoring to 0x%08x...\n", vector);
	return vector;
}