BSD 4_3_Tahoe development
[unix-history] / usr / src / ucb / lisp / lisplib / autorun / mc500
"
|
| Lisp startup program.
| insert two new parameters on the argv[] list and re-exec lisp
|
.globl exece
start:
movl sp@, d1 | get argc (# of parameters on stack)
lea sp@(4),a3 | save the address of argv[]
asll #2,d1 | multiply argc by 4 to get # of bytes of argv ptrs on stack
lea a3@(4,d1:l),a4 | save the address of arge[] (it's after all of the argv's)
movl #flag,a3@- | insert (push) the address of the flag string on to top of argv stack
movl #lisp,a3@- | insert (push) the address of the lisp string on to top of argv stack
movl a3,sp | set the stack to point to the new stack head.
|
| Set up a call to exece
pea a4@ | push the address of arge on the stack
pea a3@ | push the address of argv on the stack
movl #lisp,sp@- | push the name of the program on the stack
jsr exece | now call exece, you've got the right parameters
exece:
moveq #0x3b,d0
movl a7@(4),d1
movl a7@(8),a0
movl a7@(12),a1
trap #0
movl #0,d0
movl d0,d1
trap #0 | exit if exec fails
|
| call exit on a exec failure without losing the return code.
| we should NEVER return from _exit
|
flag: .asciz \"-f\"
lisp: .asciz \"/usr/ucb/lisp\"
.even
"