Cross Reference: linuxprefix.S
xref
: /
vbox
/
src
/
VBox
/
Devices
/
PC
/
ipxe
/
src
/
arch
/
i386
/
core
/
linux
/
linuxprefix.S
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
#
include
<
linux
/
unistd.h
>
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
.
section
".text"
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
.
code32
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
.
globl
_linux_start
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
.
type
_linux_start
, @
function
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
_linux_start
:
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
xorl
%
ebp
, %
ebp
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
popl
%
esi
// save argc
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
movl
%
esp
, %
edi
// save argv
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
andl
$~
15
, %
esp
// 16-byte align the stack
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
pushl
%
edi
// argv -> C arg2
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
pushl
%
esi
// argc -> C arg1
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
call
save_args
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
/* Our main doesn't use any arguments */
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
call
main
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
movl
%
eax
, %
ebx
// rc -> syscall arg1
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
movl
$
__NR_exit
, %
eax
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
int
$
0x80
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync
.
size
_linux_start
, . -
_linux_start
b9a21c3c91c47e090316e28d759194e46628ed49
vboxsync