darwin-asm.S - vx32 - Local 9vx git repository for patches.
 (HTM) git clone git://r-36.net/vx32
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       darwin-asm.S (751B)
       ---
            1 // Context routines for OS X
            2 
            3 // vx32_getcontext(struct i386_thread_state *ss);  
            4 // see /usr/include/mach/i386/thread_status.h for layout.
            5 // not traditional intel layout!
            6 
            7 .globl _vx32_getcontext
            8 _vx32_getcontext:
            9         movl 4(%esp), %eax
           10         
           11         movl $1, 0(%eax) /* %eax */
           12         movl %ebx, 4(%eax)
           13         movl %ecx, 8(%eax)
           14         movl %edx, 12(%eax)
           15         movl %edi, 16(%eax)
           16         movl %esi, 20(%eax)
           17         movl %ebp, 24(%eax)
           18         /* 28(%eax) is esp */
           19         movl %ss, 32(%eax)
           20         pushfl
           21         popl 36(%eax)
           22         /* 40(%eax) is eip */
           23         movl %cs, 44(%eax)
           24         movl %ds, 48(%eax)
           25         movl %es, 52(%eax)
           26         movl %fs, 56(%eax)
           27         movl %gs, 60(%eax)
           28         
           29         movl 0(%esp), %ecx                /* %eip */
           30         movl %ecx, 40(%eax)
           31         leal 4(%esp), %ecx                /* %esp */
           32         movl %ecx, 28(%eax)
           33         
           34         movl 8(%eax), %ecx                /* restore %ecx */
           35         movl $0, %eax
           36         ret
           37