home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / MAILBOX.ZIP / MPVAXSJ.H < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-27  |  2.0 KB  |  41 lines

  1. /****************************************************************************/
  2. /* mpvaxsj.h -- REPLACEMENT setjmp & longjmp FUNCTIONS FOR VAX (INTERFACE)  */
  3. /* Created:  12/2/87        Release:  0.7        Version:  12/3/87   */
  4. /****************************************************************************
  5. (c) Copyright 1987 by Michael Benjamin Parker           (USA SS# 557-49-4130)
  6.  
  7. All Rights Reserved unless specified in the following include files: */
  8. #include "mptsk.cpy" /*
  9.  
  10. DO NOT REMOVE OR ALTER THIS NOTICE AND ITS PROVISIONS.
  11. ****************************************************************************/
  12. /* OVERVIEW:
  13. These are the C functions setjmp and longjmp reimplemented in vax assembly
  14. for the thread cluster.  The BSD 4.3 equivalent of this file, setjmp.s,
  15. does its longjmp's by restoring each stack frame individually.
  16. This complex method of storing the environment will not work to change
  17. contexts.  Therefore, a more traditional setjmp and longjmp are implemented
  18. here that simply save/restore the entire processor state except for
  19. one register, r0, used for the return value.
  20. WARNING:  THIS CODE WON'T WORK NOW.  STILL HAS BUGS
  21. */
  22. /****************************************************************************/
  23. /****************************************************************************/
  24. /****************************************************************************/
  25. #ifndef    SETJMP_H
  26. #define    SETJMP_H
  27. /****************************************************************************/
  28. /****************************************************************************/
  29. typedef    int    MPVAXSJ[17];    /* HOLDS VAX REGISTERS psl AND r1..r15
  30.                    RESPECTIVELY (r14 IS STACK POINTER) */
  31. /****************************************************************************/
  32. /****************************************************************************/
  33. int    mpvaxsj_setjmp();
  34. /*    MPVAXSJ    env; */
  35. int    mpvaxsj_longjmp();
  36. /*    MPVAXSJ    env;
  37.     int    ret; */
  38. /****************************************************************************/
  39. #endif    /* SETJMP_H */
  40.  
  41.