28 lines
530 B
C
28 lines
530 B
C
#include <process.h>
|
|
#include <stdint.h>
|
|
#include <system.h>
|
|
|
|
extern volatile uint8_t __bss_start[];
|
|
extern volatile uint8_t __bss_end[];
|
|
|
|
extern void app_main(void);
|
|
|
|
static size_t premain_memset(void* dst, uint8_t b, size_t n) {
|
|
uint8_t* dst1 = dst;
|
|
size_t i;
|
|
for (i = 0; i < n; i++)
|
|
dst1[i] = b;
|
|
return i;
|
|
}
|
|
|
|
static void clear_bss(void) {
|
|
premain_memset((void*)__bss_start, 0, (uintptr_t)__bss_end - (uintptr_t)__bss_end);
|
|
}
|
|
|
|
void __premain(void) {
|
|
clear_bss();
|
|
process_self_init();
|
|
app_main();
|
|
quit();
|
|
}
|