| /* |
| * crt0.S -- startup file for D30V systems. |
| * |
| * Copyright (c) 1997 Cygnus Support |
| * |
| * The authors hereby grant permission to use, copy, modify, distribute, |
| * and license this software and its documentation for any purpose, provided |
| * that existing copyright notices are retained in all copies and that this |
| * notice is included verbatim in any distributions. No written agreement, |
| * license, or royalty fee is required for any of the authorized uses. |
| * Modifications to this software may be copyrighted by their authors |
| * and need not follow the licensing terms described here, provided that |
| * the new terms are clearly indicated on the first page of each file where |
| * they apply. |
| */ |
| |
| .file "crt0.S" |
| .text |
| .globl _start |
| .extern main |
| .extern exit |
| .extern __stack |
| .extern __sbss_start |
| .extern __sbss_end |
| .extern __ebss_start |
| .extern __ebss_end |
| .extern __bss_start |
| .extern __bss_end |
| .extern memset |
| .type _start,@function |
| |
| _start: or.l sp,r0,__stack |
| |
| /* Zero the .sbss area */ |
| or.l r2,r0,__sbss_start |
| or.l r4,r0,__sbss_end |
| sub r4,r4,r2 || or.s r3,r0,0 |
| bsrtnz.l r4,(memset) |
| |
| /* Zero the .ebss area */ |
| or.l r2,r0,__ebss_start |
| or.l r4,r0,__ebss_end |
| sub r4,r4,r2 || or.s r3,r0,0 |
| bsrtnz.l r4,(memset) |
| |
| /* Zero the .bss area */ |
| or.l r2,r0,__bss_start |
| or.l r4,r0,__bss_end |
| sub r4,r4,r2 || or.s r3,r0,0 |
| bsrtnz.l r4,(memset) |
| |
| or.s r2,r0,0 || or.s r3,r0,0 |
| or r4,r0,0 || nop |
| jsr.l (main) |
| jsr.l (exit) |
| .size _start,.-_start |