|
|
1.1 root 1: "
2: |
3: | Lisp startup program.
4: | insert two new parameters on the argv[] list and re-exec lisp
5: |
6: .globl exece
7: start:
8: movl sp@, d1 | get argc (# of parameters on stack)
9: lea sp@(4),a3 | save the address of argv[]
10: asll #2,d1 | multiply argc by 4 to get # of bytes of argv ptrs on stack
11: lea a3@(4,d1:l),a4 | save the address of arge[] (it's after all of the argv's)
12: movl #flag,a3@- | insert (push) the address of the flag string on to top of argv stack
13: movl #lisp,a3@- | insert (push) the address of the lisp string on to top of argv stack
14: movl a3,sp | set the stack to point to the new stack head.
15: |
16: | Set up a call to exece
17: pea a4@ | push the address of arge on the stack
18: pea a3@ | push the address of argv on the stack
19: movl #lisp,sp@- | push the name of the program on the stack
20: jsr exece | now call exece, you've got the right parameters
21: exece:
22: moveq #0x3b,d0
23: movl a7@(4),d1
24: movl a7@(8),a0
25: movl a7@(12),a1
26: trap #0
27: movl #0,d0
28: movl d0,d1
29: trap #0 | exit if exec fails
30: |
31: | call exit on a exec failure without losing the return code.
32: | we should NEVER return from _exit
33: |
34: flag: .asciz \"-f\"
35: lisp: .asciz \"/usr/ucb/lisp\"
36: .even
37: "
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.