int waitInt; char s[10]; void itoa(int v,char *s) { int i; int t=10000000; int ratio,c; int cpt=0; int b=1; for (i=0;i<8;i++) s[i]=0; while (t>0) { ratio=v/t; s[cpt++]=(char)ratio+'0'; v=v-ratio*t; t=t/10; } } void test (int i) { char s[2]; s[0] = procnum () + '0'; s[1] = '\0'; uputs (s,i); } void configure_timer (int proc) { int *timer=(int*)0xB0000000; enum{ // REGISTER OFFSET VALUE_ADDRESS = 0, MODE_ADDRESS = 1, PERIOD_ADDRESS = 2, RESETIRQ_ADDRESS = 3 }; // specific CPU MASK int CPU = proc << 2; // set timer timer[PERIOD_ADDRESS | CPU] = 0x00001000; // lancement du timer timer[MODE_ADDRESS | CPU ] = 0x00000003; // run timer } int main0(void) { uputs("Hello from processor 0",procnum()); configure_timer (0); while (1) ; } int main1(void) { uputs("Hello from processor 1",procnum()); configure_timer (1); while (1); return 0; } int main2(void) { uputs("Hello from processor 2",procnum()); configure_timer (2); while (1); return 0; } int main3(void) { uputs("Hello from processor 3",procnum()); configure_timer (3); while (1); return 0; }