NanoPayload

stage2/stage2.c

143:d323b7b05424
2016-02-27 Paul Boddie Put the page tables and the stacks in unmapped space, with the stacks occupying distinct virtual addresses and thus not employing the page tables.
     1 /*     2  * Ben NanoNote stage 2 payload test.     3  *     4  * Copyright (C) Wolfgang Spraul <wolfgang@sharism.cc>     5  * Copyright (C) 2015, 2016 Paul Boddie <paul@boddie.org.uk>     6  *     7  * This program is free software: you can redistribute it and/or modify     8  * it under the terms of the GNU General Public License as published by     9  * the Free Software Foundation, either version 3 of the License, or    10  * (at your option) any later version.    11  *    12  * This program is distributed in the hope that it will be useful,    13  * but WITHOUT ANY WARRANTY; without even the implied warranty of    14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    15  * GNU General Public License for more details.    16  *    17  * You should have received a copy of the GNU General Public License    18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.    19  */    20     21 #include "board-specific.h"    22     23 #include "irq.h"    24 #include "lcd.h"    25 #include "cpu.h"    26     27 void c_main(void)    28 {    29 	volatile int started;    30     31 	init_tlb();    32 	flush_cache_all();    33     34 	/* The actual work. */    35     36 	started = is_started();    37     38 	if (!started)    39 	{    40 		gpio_init2();    41 		cpm_init();    42 		rtc_init();    43 		timer_init();    44 	}    45     46 	lcd_init();    47 	irq_init();    48     49 	/* Start the tasks. */    50     51 	start_task(1);    52 	start_task(2);    53     54 	/* Now, wait for the tasks to be selected as interrupts occur. */    55     56 	enable_interrupts();    57 	while (1) asm volatile("wait");    58 }