blob: 837d8af2b3d9f6a1c356d7e5ea919de84eaf879e (
plain) (
tree)
|
|
// =================================================
// chkstk.s
.text
.globl __chkstk
__chkstk:
xchg (%esp), %ebp // store ebp, get ret.addr
push %ebp // push ret.addr
lea 4(%esp), %ebp // setup frame ptr
push %ecx // save ecx
mov %ebp, %ecx
P0:
sub $4096,%ecx
test %eax,(%ecx)
sub $4096,%eax
cmp $4096,%eax
jge P0
sub %eax,%ecx
mov %esp,%eax
test %eax,(%ecx)
mov %ecx,%esp
mov (%eax),%ecx // restore ecx
mov 4(%eax),%eax
push %eax
ret
|