tinycc/win32/lib/chkstk.S

30 lines
549 B
ArmAsm
Raw Normal View History

2005-04-17 17:10:37 +04:00
// =================================================
// 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