home *** CD-ROM | disk | FTP | other *** search
/ Shareware 1 2 the Maxx / sw_1.zip / sw_1 / PROGRAM / DJLSR106.ZIP / LIBSRC / C / SYS / SETJMP.S < prev    next >
Text File  |  1992-03-02  |  1KB  |  52 lines

  1. /* This is file SETJMP.S */
  2. /*
  3. ** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
  4. **
  5. ** This file is distributed under the terms listed in the document
  6. ** "copying.dj", available from DJ Delorie at the address above.
  7. ** A copy of "copying.dj" should accompany this file; if not, a copy
  8. ** should be available from where this file was obtained.  This file
  9. ** may not be distributed without a verbatim copy of "copying.dj".
  10. **
  11. ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
  12. ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. */
  14.  
  15. /*
  16. **    jmp_buf:
  17. **     eax ebx ecx edx esi edi ebp esp eip
  18. **     0   4   8   12  16  20  24  28  32
  19. */
  20.  
  21.     .globl    _setjmp /* jmp_buf */
  22. _setjmp:
  23.     pushl    %ebp
  24.     movl    %esp,%ebp
  25.  
  26.     pushl    %edi
  27.     movl    8(%ebp),%edi
  28.  
  29.     movl    %eax,0(%edi)
  30.     movl    %ebx,4(%edi)
  31.     movl    %ecx,8(%edi)
  32.     movl    %edx,12(%edi)
  33.     movl    %esi,16(%edi)
  34.  
  35.     movl    -4(%ebp),%eax
  36.     movl    %eax,20(%edi)
  37.  
  38.     movl    0(%ebp),%eax
  39.     movl    %eax,24(%edi)
  40.  
  41.     movl    %esp,%eax
  42.     addl    $12,%eax
  43.     movl    %eax,28(%edi)
  44.     
  45.     movl    4(%ebp),%eax
  46.     movl    %eax,32(%edi)
  47.  
  48.     popl    %edi
  49.     movl    $0,%eax
  50.     leave
  51.     ret
  52.