tinycc/win32/lib/chkstk.S
2005-04-14 23:49:21 +00:00

30 lines
578 B
ArmAsm

// =================================================
// 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