mirror of
https://github.com/frida/tinycc
synced 2024-12-24 22:16:49 +03:00
30 lines
578 B
ArmAsm
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
|
|
|