kernel: simplify init code

This commit is contained in:
Giacomo Tesio 2017-05-20 14:06:26 +02:00
parent aedc31e925
commit 4b7957a28f
2 changed files with 4 additions and 45 deletions

View File

@ -1,39 +1,7 @@
extern void startboot(char*, char**);
typedef union NativeTypes
{
char c;
unsigned char uc;
short s;
unsigned short us;
int i;
unsigned int ui;
long l;
unsigned long ul;
void* p;
} NativeTypes;
extern volatile NativeTypes* _sysargs;
extern void startboot(int, char**);
void
main(char* argv0)
main(int argc, char**argv)
{
/* TODO: why do we need this on GCC?
*/
char **argv;
argv = &argv0;
/* since crt0.s has not been included, we initialize _sysargs
* manually, keeping it on the stack
*/
NativeTypes __sysargs[6] = {
{ .l = -1 },
{ .l = -1 },
{ .l = -1 },
{ .l = -1 },
{ .l = -1 },
{ .l = -1 }
};
_sysargs = __sysargs;
startboot(argv0, argv);
_sysargs = (void*)0;
startboot(argc, argv);
}

View File

@ -88,7 +88,7 @@ initboot(void)
}
void
startboot(char *argv0, char **argv)
startboot(int argc, char **argv)
{
/* Initialize per process structures on the stack */
int i;
@ -98,15 +98,6 @@ startboot(char *argv0, char **argv)
nil
};
void *privates[NPRIVATES];
NativeTypes sysargs[6];
_nprivates = NPRIVATES;
for(_nprivates = 0; _nprivates < NPRIVATES; ++_nprivates)
privates[_nprivates] = nil;
_privates = privates;
_sysargs = &sysargs[0];
for(i = 0; i < sizeof buf; ++i)
buf[i] = '\0';