1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#
# 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
|