#include #include #include #include #include #include #include #include #include extern void main(void); extern uint8_t _bss_start[]; extern uint8_t _bss_end[]; void clearbss(void) { uint8_t *p = _bss_start; while (p < _bss_end) { *p++ = 0; } } #define MAX_ARGS 25 static char *_args[MAX_ARGS]; size_t _argslen; char **args(void) { return (char **)_args; } size_t argslen(void) { return _argslen; } // ulib initialization goes here void _premain(void) { clearbss(); for (size_t i = 0; i < ARRLEN(_args); i++) { _args[i] = umalloc(PROC_ARG_MAX); } processctl(-1, PCTL_ARGV, (uint64_t)&_argslen, (uint64_t)_args, MAX_ARGS); main(); }