xref: /freebsd/stand/i386/btx/lib/btxcsu.S (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1*ca987d46SWarner Losh#
2*ca987d46SWarner Losh# Copyright (c) 1998 Robert Nordier
3*ca987d46SWarner Losh# All rights reserved.
4*ca987d46SWarner Losh#
5*ca987d46SWarner Losh# Redistribution and use in source and binary forms are freely
6*ca987d46SWarner Losh# permitted provided that the above copyright notice and this
7*ca987d46SWarner Losh# paragraph and the following disclaimer are duplicated in all
8*ca987d46SWarner Losh# such forms.
9*ca987d46SWarner Losh#
10*ca987d46SWarner Losh# This software is provided "AS IS" and without any express or
11*ca987d46SWarner Losh# implied warranties, including, without limitation, the implied
12*ca987d46SWarner Losh# warranties of merchantability and fitness for a particular
13*ca987d46SWarner Losh# purpose.
14*ca987d46SWarner Losh#
15*ca987d46SWarner Losh
16*ca987d46SWarner Losh#include <bootargs.h>
17*ca987d46SWarner Losh
18*ca987d46SWarner Losh#
19*ca987d46SWarner Losh# BTX C startup code (ELF).
20*ca987d46SWarner Losh#
21*ca987d46SWarner Losh
22*ca987d46SWarner Losh#
23*ca987d46SWarner Losh# Globals.
24*ca987d46SWarner Losh#
25*ca987d46SWarner Losh		.global _start
26*ca987d46SWarner Losh#
27*ca987d46SWarner Losh# Client entry point.
28*ca987d46SWarner Losh#
29*ca987d46SWarner Losh_start: 	cld
30*ca987d46SWarner Losh		pushl %eax
31*ca987d46SWarner Losh		movl $_edata,%edi
32*ca987d46SWarner Losh		movl $_end,%ecx
33*ca987d46SWarner Losh		subl %edi, %ecx
34*ca987d46SWarner Losh		xorb %al, %al
35*ca987d46SWarner Losh		rep
36*ca987d46SWarner Losh		stosb
37*ca987d46SWarner Losh		popl __base
38*ca987d46SWarner Losh		movl %esp,%eax			# Set
39*ca987d46SWarner Losh		addl $ARGADJ,%eax		#  argument
40*ca987d46SWarner Losh		movl %eax,__args		#  pointer
41*ca987d46SWarner Losh		call main			# Invoke client main()
42*ca987d46SWarner Losh		call exit			# Invoke client exit()
43*ca987d46SWarner Losh#
44*ca987d46SWarner Losh# Data.
45*ca987d46SWarner Losh#
46*ca987d46SWarner Losh		.comm __base,4			# Client base address
47*ca987d46SWarner Losh		.comm __args,4			# Client arguments
48