File:  [CSRG BSD Unix] / 3BSD / cmd / lisp / crt0.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:53 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, CSRG
CVS tags: HEAD, BSD3
BSD 3.0

# C runtime startoff

	.set	exit,1
.globl	_exit
.globl	start
.globl	_main
.globl	_environ
.globl	_xports
.globl _gstart
.globl _proflush


#
#	C language startup routine

#
#	special 512 byte area for nil (and possibly other atoms)
#	and special block of smallnums.
#
	.long	0
	.long	0
	.long	0
	.long	-4
	.long	20
	.byte	'n,'i,'l,0
	.long	0
	.long	0
	.long	-4
	.long	40
	.byte	'e,'o,'f,0
	.space 512-44
	.long	-128,-127,-126,-125,-124,-123,-122,-121
	.long	-120,-119,-118,-117,-116,-115,-114,-113
	.long	-112,-111,-110,-109,-108,-107,-106,-105
	.long	-104,-103,-102,-101,-100,-99,-98,-97
	.long	-96,-95,-94,-93,-92,-91,-90,-89
	.long	-88,-87,-86,-85,-84,-83,-82,-81
	.long	-80,-79,-78,-77,-76,-75,-74,-73
	.long	-72,-71,-70,-69,-68,-67,-66,-65
	.long	-64,-63,-62,-61,-60,-59,-58,-57
	.long	-56,-55,-54,-53,-52,-51,-50,-49
	.long	-48,-47,-46,-45,-44,-43,-42,-41
	.long	-40,-39,-38,-37,-36,-35,-34,-33
	.long	-32,-31,-30,-29,-28,-27,-26,-25
	.long	-24,-23,-22,-21,-20,-19,-18,-17
	.long	-16,-15,-14,-13,-12,-11,-10,-9
	.long	-8,-7,-6,-5,-4,-3,-2,-1
	.long	0,1,2,3,4,5,6,7
	.long	8,9,10,11,12,13,14,15
	.long	16,17,18,19,20,21,22,23
	.long	24,25,26,27,28,29,30,31
	.long	32,33,34,35,36,37,38,39
	.long	40,41,42,43,44,45,46,47
	.long	48,49,50,51,52,53,54,55
	.long	56,57,58,59,60,61,62,63
	.long	64,65,66,67,68,69,70,71
	.long	72,73,74,75,76,77,78,79
	.long	80,81,82,83,84,85,86,87
	.long	88,89,90,91,92,93,94,95
	.long	96,97,98,99,100,101,102,103
	.long	104,105,106,107,108,109,110,111
	.long	112,113,114,115,116,117,118,119
	.long	120,121,122,123,124,125,126,127
_xports:
	.long	__iob+0
	.long	__iob+16
	.long	__iob+32
	.long	__iob+48
	.long	__iob+64
	.long	__iob+80
	.long	__iob+96
	.long	__iob+112
	.long	__iob+128
	.long	__iob+144
	.long	__iob+160
	.long	__iob+176
	.long	__iob+192
	.long	__iob+208
	.long	__iob+224
	.long	__iob+240
	.long	__iob+256
	.long	__iob+272
	.long	__iob+288
	.long	__iob+304
	.space	512 - (20 * 4)

start:
	.word	0x0000
	subl2	$8,sp
	movl	8(sp),(sp)  #  argc
	movab	12(sp),r0
	movl	r0,4(sp)  #  argv
L1:
	tstl	(r0)+  #  null args term ?
	bneq	L1
	cmpl	r0,*4(sp)  #  end of 'env' or 'argv' ?
	blss	L2
	tstl	-(r0)  # envp's are in list
L2:
	movl	r0,8(sp)  #  env
	movl	r0,_environ  #  indir is 0 if no env ; not 0 if env
	calls	$3,_main
	pushl	r0
	calls	$1,_exit
	chmk	$exit
_gstart:
	.word	0
	moval	start,r0
	ret
_proflush:
	.word	0
	ret
#
	.data
_environ:	.space	4

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.