36 lines
607 B
ArmAsm
36 lines
607 B
ArmAsm
# $Id: exit.S,v 1.2 2004/12/17 19:40:41 hpa Exp $
|
|
#
|
|
# Implementation of _exit() for com32 based on c32entry.S
|
|
#
|
|
.text
|
|
.globl _exit
|
|
.type _exit, @function
|
|
_exit:
|
|
#ifdef REGPARM
|
|
pushl %eax
|
|
#endif
|
|
|
|
# Run any destructors
|
|
movl $__dtors_start, %esi
|
|
2:
|
|
cmpl $__dtors_end, %esi
|
|
jae 1f
|
|
call *(%esi)
|
|
addl $4,%esi
|
|
jmp 2b
|
|
|
|
1:
|
|
#ifdef REGPARM
|
|
popl %eax
|
|
#else
|
|
movl 4(%esp),%eax # Exit code in %eax = return value
|
|
#endif
|
|
movl (__entry_esp),%esp # Return stack pointer to entry value
|
|
ret # Return to termination address
|
|
.size _exit, .-_exit
|
|
|
|
.data
|
|
__exit_handler:
|
|
.globl __exit_handler
|
|
.long _exit
|