139165Srnordier#
239165Srnordier# Copyright (c) 1998 Robert Nordier
339165Srnordier# All rights reserved.
439165Srnordier#
539165Srnordier# Redistribution and use in source and binary forms are freely
639165Srnordier# permitted provided that the above copyright notice and this
739165Srnordier# paragraph and the following disclaimer are duplicated in all
839165Srnordier# such forms.
939165Srnordier#
1039165Srnordier# This software is provided "AS IS" and without any express or
1139165Srnordier# implied warranties, including, without limitation, the implied
1239165Srnordier# warranties of merchantability and fitness for a particular
1339165Srnordier# purpose.
1439165Srnordier#
1539165Srnordier
1650477Speter# $FreeBSD: stable/11/stand/i386/btx/lib/btxcsu.S 235154 2012-05-09 08:04:29Z avg $
1739165Srnordier
18235154Savg#include <bootargs.h>
19235154Savg
2039165Srnordier#
2139165Srnordier# BTX C startup code (ELF).
2239165Srnordier#
2339165Srnordier
2439165Srnordier#
2539165Srnordier# Globals.
2639165Srnordier#
2739165Srnordier		.global _start
2839165Srnordier#
2939165Srnordier# Client entry point.
3039165Srnordier#
31133154Skan_start: 	cld
32133154Skan		pushl %eax
33133154Skan		movl $_edata,%edi
34133154Skan		movl $_end,%ecx
35133154Skan		subl %edi, %ecx
36133154Skan		xorb %al, %al
37133154Skan		rep
38133154Skan		stosb
39133154Skan		popl __base
4039962Srnordier		movl %esp,%eax			# Set
4139962Srnordier		addl $ARGADJ,%eax		#  argument
4239962Srnordier		movl %eax,__args		#  pointer
4339165Srnordier		call main			# Invoke client main()
4439165Srnordier		call exit			# Invoke client exit()
4539165Srnordier#
4639165Srnordier# Data.
4739165Srnordier#
4839165Srnordier		.comm __base,4			# Client base address
4939165Srnordier		.comm __args,4			# Client arguments
50