From 4821702fb49c72216c307341dc3dfd5a3984cf83 Mon Sep 17 00:00:00 2001 From: bellard Date: Thu, 14 Apr 2005 23:49:21 +0000 Subject: win32 merge --- win32/lib/chkstk.S | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 win32/lib/chkstk.S (limited to 'win32/lib/chkstk.S') diff --git a/win32/lib/chkstk.S b/win32/lib/chkstk.S new file mode 100644 index 0000000..8e16d74 --- /dev/null +++ b/win32/lib/chkstk.S @@ -0,0 +1,29 @@ +// ================================================= +// 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 + -- cgit v1.3.1