#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; } } char **_args; size_t _argslen; char **args(void) { return _args; } size_t argslen(void) { return _argslen; } // ulib initialization goes here void _premain(void) { clearbss(); #define MAX_ARGS 30 _args = (char **)dlmalloc(MAX_ARGS * sizeof(char *)); for (size_t i = 0; i < MAX_ARGS; i++) { _args[i] = dlmalloc(PROC_ARG_MAX); } processctl(-1, PCTL_ARGV, (uint64_t)&_argslen, (uint64_t)_args, MAX_ARGS); main(); }