Merge remote branch 'origin/sparc-dev'
[akaros.git] / kern / arch / sparc / init.c
1 /* See COPYRIGHT for copyright information. */
2
3 #ifdef __SHARC__
4 #pragma nosharc
5 #endif
6
7 #include <smp.h>
8 #include <arch/init.h>
9
10 size_t argc;
11 char** argv;
12 // dummy values to avoid putting this in the BSS section
13 void* __args[(4096+8)/sizeof(void*)] __attribute__((aligned(8))) = {(void*)1};
14
15 static void
16 init_argc_argv()
17 {
18         argc = (size_t)__args[2];
19         argv = (char**)&__args[3];
20
21         //argv[0] should be "none" for ROS.  we'll ignore it.
22         if(argc > 0)
23         {
24                 argc--;
25                 argv++;
26         }
27
28         for(size_t i = 0; i < argc; i++)
29                 argv[i] += (char*)(&__args[2])-(char*)NULL;
30 }
31
32 void arch_init()
33 {               
34         // this returns when all other cores are done and ready to receive IPIs
35         init_argc_argv();
36         smp_boot();
37         proc_init();
38 }