=================================================================== RCS file: /cvs/funnyos/kern/kern_main.c,v retrieving revision 1.1.1.1 retrieving revision 1.10 diff -u -r1.1.1.1 -r1.10 --- funnyos/kern/kern_main.c 2007/10/16 09:41:04 1.1.1.1 +++ funnyos/kern/kern_main.c 2008/01/11 10:54:50 1.10 @@ -1,10 +1,17 @@ /* - * $Id: kern_main.c,v 1.1.1.1 2007/10/16 08:41:04 init Exp $ + * $Id: kern_main.c,v 1.10 2008/01/11 10:54:50 nbrk Exp $ */ #include #include #include +#include +#include +#ifdef ARCH_SAM7S64 +#include /* XXX */ +#include /* XXX */ +#endif + #include extern void config_consinit(void); @@ -13,14 +20,43 @@ void main(void) { - /* set up boot console */ - config_consinit(); + uint8_t digit; + uint32_t i; + /* set up critical devices */ + config_machineinit(); + + printf("Welcome to FunnyOS!\n"); + /* initialize kmalloc */ kmem_init(); /* attach all devices described in arch/${ARCH}/config.c */ devconfig_recurse(); + +#ifndef ARCH_SAM7S64 + /* initialize scheduler before enabling system ticks */ + sched_init(); + + /* initialize system clock; this will start interrupts from timer */ + sysclock_init(); +#endif + +#ifdef ARCH_SAM7S64 +loop: + for(digit = 0; digit < 16; digit++) { + printf("kern_main: LED output: %d\n", digit); + + devctl("gpio7seg", 0, DCGPIO7SEG_SETDIGIT, &digit); + + /* dummy timeout */ + for (i = 0; i < 5000000; i++) + ; + } +goto loop; +#endif + + printf("Autoconfiguration completed.\n"); while(1) ;