diff options
Diffstat (limited to 'wirish')
-rw-r--r-- | wirish/start.S | 26 | ||||
-rw-r--r-- | wirish/start_c.c | 57 |
2 files changed, 42 insertions, 41 deletions
diff --git a/wirish/start.S b/wirish/start.S index cb87d62..2488895 100644 --- a/wirish/start.S +++ b/wirish/start.S @@ -40,18 +40,18 @@ * they apply. */ - .text - .code 16 - .thumb_func + .text + .code 16 + .thumb_func - .globl _start - .type _start, %function + .globl _start + .type _start, %function _start: - .fnstart - ldr r1,=__msp_init - mov sp,r1 - ldr r1,=start_c - bx r1 - .pool - .cantunwind - .fnend + .fnstart + ldr r1,=__msp_init + mov sp,r1 + ldr r1,=start_c + bx r1 + .pool + .cantunwind + .fnend diff --git a/wirish/start_c.c b/wirish/start_c.c index a80334d..ae42087 100644 --- a/wirish/start_c.c +++ b/wirish/start_c.c @@ -44,49 +44,50 @@ #include <stddef.h> -extern void __libc_init_array (void); +extern void __libc_init_array(void); -extern int main (int, char **, char **); +extern int main(int, char**, char**); -extern void exit (int) __attribute__ ((noreturn, weak)); +extern void exit(int) __attribute__((noreturn, weak)); extern char _data, _edata; extern char _bss, _ebss; struct rom_img_cfg { - long long *img_start; + long long *img_start; }; extern char _lm_rom_img_cfgp; void __attribute__((noreturn)) start_c(void) { - struct rom_img_cfg *img_cfg = (struct rom_img_cfg*)&_lm_rom_img_cfgp; - long long *src; - long long *dst; - int exit_code; + struct rom_img_cfg *img_cfg = (struct rom_img_cfg*)&_lm_rom_img_cfgp; + long long *src; + long long *dst; + int exit_code; - /* Initialize .data, if necessary. */ - src = img_cfg->img_start; - dst = (long long*)&_data; - if (src != dst) { - while (dst < (long long*)&_edata) { - *dst++ = *src++; + /* Initialize .data, if necessary. */ + src = img_cfg->img_start; + dst = (long long*)&_data; + if (src != dst) { + while (dst < (long long*)&_edata) { + *dst++ = *src++; + } } - } - /* Zero .bss. */ - dst = (long long*)&_bss; - while (dst < (long long*)&_ebss) { - *dst++ = 0; - } + /* Zero .bss. */ + dst = (long long*)&_bss; + while (dst < (long long*)&_ebss) { + *dst++ = 0; + } - /* Run initializers. */ - __libc_init_array (); + /* Run initializers. */ + __libc_init_array(); - exit_code = main (0, NULL, NULL); - if (exit) - exit (exit_code); - /* If exit is NULL, make sure we don't return. */ - for (;;) - continue; + exit_code = main(0, NULL, NULL); + if (exit) { + exit(exit_code); + } + /* If exit is NULL, make sure we don't return. */ + for (;;) + continue; } |