.global __start .global __main .global _end .global __data_start .bss .global environ environ: .long 0 .text __start: nop nop movea.l %d5, %a5 lea __bss_start(%a5), %a0 lea end(%a5), %a1 /* Copy 0 to %a0 until %a0 == %a1 */ L1: movel #0, %a0@+ cmpal %a0, %a1 bhi L1 move.l 8(%sp), %d5 move.l %d5, environ(%a5) lea main-.-8,%a0 jsr 0(%pc,%a0) move.l %d0,%sp@- lea exit-.-8,%a0 jsr 0(%pc,%a0) /* Invoke exit() routine */ #ifdef NO_LIBGCC /* If that didn't kill us, ... */ _exit: move.l %sp@+,%d1 moveq #1,%d0 /* SYS_exit */ trap #0 __main: rts #else #endif /* NO_LIBGCC */