BSD 3 development
[unix-history] / usr / src / cmd / lisp / crt0.s
CommitLineData
8cd657f4
JF
1# C runtime startoff
2
3 .set exit,1
4.globl _exit
5.globl start
6.globl _main
7.globl _environ
8.globl _xports
9.globl _gstart
10.globl _proflush
11
12
13#
14# C language startup routine
15
16#
17# special 512 byte area for nil (and possibly other atoms)
18# and special block of smallnums.
19#
20 .long 0
21 .long 0
22 .long 0
23 .long -4
24 .long 20
25 .byte 'n,'i,'l,0
26 .long 0
27 .long 0
28 .long -4
29 .long 40
30 .byte 'e,'o,'f,0
31 .space 512-44
32 .long -128,-127,-126,-125,-124,-123,-122,-121
33 .long -120,-119,-118,-117,-116,-115,-114,-113
34 .long -112,-111,-110,-109,-108,-107,-106,-105
35 .long -104,-103,-102,-101,-100,-99,-98,-97
36 .long -96,-95,-94,-93,-92,-91,-90,-89
37 .long -88,-87,-86,-85,-84,-83,-82,-81
38 .long -80,-79,-78,-77,-76,-75,-74,-73
39 .long -72,-71,-70,-69,-68,-67,-66,-65
40 .long -64,-63,-62,-61,-60,-59,-58,-57
41 .long -56,-55,-54,-53,-52,-51,-50,-49
42 .long -48,-47,-46,-45,-44,-43,-42,-41
43 .long -40,-39,-38,-37,-36,-35,-34,-33
44 .long -32,-31,-30,-29,-28,-27,-26,-25
45 .long -24,-23,-22,-21,-20,-19,-18,-17
46 .long -16,-15,-14,-13,-12,-11,-10,-9
47 .long -8,-7,-6,-5,-4,-3,-2,-1
48 .long 0,1,2,3,4,5,6,7
49 .long 8,9,10,11,12,13,14,15
50 .long 16,17,18,19,20,21,22,23
51 .long 24,25,26,27,28,29,30,31
52 .long 32,33,34,35,36,37,38,39
53 .long 40,41,42,43,44,45,46,47
54 .long 48,49,50,51,52,53,54,55
55 .long 56,57,58,59,60,61,62,63
56 .long 64,65,66,67,68,69,70,71
57 .long 72,73,74,75,76,77,78,79
58 .long 80,81,82,83,84,85,86,87
59 .long 88,89,90,91,92,93,94,95
60 .long 96,97,98,99,100,101,102,103
61 .long 104,105,106,107,108,109,110,111
62 .long 112,113,114,115,116,117,118,119
63 .long 120,121,122,123,124,125,126,127
64_xports:
65 .long __iob+0
66 .long __iob+16
67 .long __iob+32
68 .long __iob+48
69 .long __iob+64
70 .long __iob+80
71 .long __iob+96
72 .long __iob+112
73 .long __iob+128
74 .long __iob+144
75 .long __iob+160
76 .long __iob+176
77 .long __iob+192
78 .long __iob+208
79 .long __iob+224
80 .long __iob+240
81 .long __iob+256
82 .long __iob+272
83 .long __iob+288
84 .long __iob+304
85 .space 512 - (20 * 4)
86
87start:
88 .word 0x0000
89 subl2 $8,sp
90 movl 8(sp),(sp) # argc
91 movab 12(sp),r0
92 movl r0,4(sp) # argv
93L1:
94 tstl (r0)+ # null args term ?
95 bneq L1
96 cmpl r0,*4(sp) # end of 'env' or 'argv' ?
97 blss L2
98 tstl -(r0) # envp's are in list
99L2:
100 movl r0,8(sp) # env
101 movl r0,_environ # indir is 0 if no env ; not 0 if env
102 calls $3,_main
103 pushl r0
104 calls $1,_exit
105 chmk $exit
106_gstart:
107 .word 0
108 moval start,r0
109 ret
110_proflush:
111 .word 0
112 ret
113#
114 .data
115_environ: .space 4