home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Headers / ansi / m68k / setjmp.h < prev    next >
C/C++ Source or Header  |  1996-08-26  |  3KB  |  137 lines

  1. /* Copyright (c) 1992, NeXT Computer, Inc.  All rights reserved.
  2.  *
  3.  *    File:    setjmp.h
  4.  *
  5.  *    Declaration of setjmp routines and data structures.
  6.  */
  7.  
  8. #ifndef _ANSI_M68K_SETJMP_H
  9.     #define _ANSI_M68K_SETJMP_H
  10.  
  11.     #include <standards.h>
  12.  
  13.     #if !defined(__STRICT_ANSI__) && !defined(_POSIX_SOURCE)
  14.         /*
  15.          * WARNING: the first portion of this must match a
  16.          *          struct sigcontext
  17.          */
  18.         #define    JB_ONSTACK    0
  19.         #define    JB_SIGMASK    1
  20.         #define    JB_SP        2
  21.         #define    JB_PC        3
  22.         #define    JB_PS        4
  23.         #define JB_D0        5
  24.         /* from here on down, independent of struct sigcontext */
  25.         #define    JB_D2        6
  26.         #define    JB_D3        7
  27.         #define    JB_D4        8
  28.         #define    JB_D5        9
  29.         #define    JB_D6        10
  30.         #define    JB_D7        11
  31.         #define    JB_A2        12
  32.         #define    JB_A3        13
  33.         #define    JB_A4        14
  34.         #define    JB_A5        15
  35.         #define    JB_A6        16
  36.         #define    JB_FP2        17
  37.         #define    JB_FP3        20
  38.         #define    JB_FP4        21
  39.         #define    JB_FP5        26
  40.         #define    JB_FP6        29
  41.         #define    JB_FP7        32
  42.         #define    JB_FPCR        35
  43.         #define    JB_FPSR        36
  44.         #define    JB_FPIAR    37
  45.         #define    JB_MAGIC    38
  46.         #define    JB_NREGS    (JB_MAGIC+1)
  47.  
  48.         #define    JB_MAGICNUM    0xbeeffeed
  49.  
  50.         #if !defined(LOCORE) && !defined(ASSEMBLER)
  51.             typedef int jmp_buf[JB_NREGS];
  52.  
  53.             #ifndef __STRICT_BSD__
  54.                 extern int setjmp(jmp_buf env);
  55.                 extern int _setjmp(jmp_buf env);
  56.                 #ifdef    __GNUC__
  57.                     extern volatile void \
  58.                         longjmp(jmp_buf env, int val);
  59.                     extern volatile void \
  60.                         _longjmp(jmp_buf env, int val);
  61.                 #else
  62.                     extern void \
  63.                         longjmp(jmp_buf env, int val);
  64.                     extern void \
  65.                         _longjmp(jmp_buf env, int val);
  66.                 #endif /* __GNUC__ */
  67.             #endif /* __STRICT_BSD__ */
  68.         #endif /* !LOCORE && !ASSEMBLER */
  69.     #else /* ! __STRICT_ANSI__ && ! _POSIX_SOURCE */
  70.         /*
  71.          * WARNING: the first portion of this must match a struct
  72.          *        sigcontext
  73.          */
  74.         #define    _SJB_ONSTACK    0
  75.         #define    _SJB_SIGMASK    1
  76.         #define    _SJB_SP        2
  77.         #define    _SJB_PC        3
  78.         #define    _SJB_PS        4
  79.         #define _SJB_D0        5
  80.         /* from here on down, independent of struct sigcontext */
  81.         #define    _SJB_D2            6
  82.         #define    _SJB_D3            7
  83.         #define    _SJB_D4            8
  84.         #define    _SJB_D5            9
  85.         #define    _SJB_D6            10
  86.         #define    _SJB_D7            11
  87.         #define    _SJB_A2            12
  88.         #define    _SJB_A3            13
  89.         #define    _SJB_A4            14
  90.         #define    _SJB_A5            15
  91.         #define    _SJB_A6            16
  92.         #define    _SJB_FP2        17
  93.         #define    _SJB_FP3        20
  94.         #define    _SJB_FP4        21
  95.         #define    _SJB_FP5        26
  96.         #define    _SJB_FP6        29
  97.         #define    _SJB_FP7        32
  98.         #define    _SJB_FPCR        35
  99.         #define    _SJB_FPSR        36
  100.         #define    _SJB_FPIAR        37
  101.         #define _SJB_USE_SIGMASK    38
  102.         #define    _SJB_MAGIC        39
  103.         #define    _SJB_NREGS    (_SJB_MAGIC+1)
  104.  
  105.         #define    _SJB_MAGICNUM    0xdeafbeef
  106.         #if !defined(LOCORE) && !defined(ASSEMBLER)
  107.             typedef int jmp_buf[39];
  108.  
  109.             #ifdef __STDC__
  110.                 extern int setjmp(jmp_buf env);
  111.                 extern int _setjmp(jmp_buf env);
  112.                 extern void longjmp(jmp_buf env, int val);
  113.                 extern void _longjmp(jmp_buf env, int val);
  114.             #else
  115.                 extern int setjmp();
  116.                 extern int _setjmp();
  117.                 extern void longjmp();
  118.                 extern void _longjmp();
  119.             #endif /* __STDC__ */
  120.  
  121.             #ifdef _POSIX_SOURCE
  122.                 typedef int sigjmp_buf[_SJB_NREGS];
  123.                 #ifdef __STDC__
  124.                     extern void \
  125.                         siglongjmp(sigjmp_buf env, int val);
  126.                     extern int \
  127.                     sigsetjmp(sigjmp_buf env, int savemask);
  128.                 #else
  129.                     extern void siglongjmp();
  130.                     extern int sigsetjmp();
  131.                 #endif /* __STDC__ */
  132.             #endif /* _POSIX_SOURCE */
  133.             
  134.         #endif /* !LOCORE && !ASSEMBLER */
  135.     #endif /* ! __STRICT_ANSI__ && ! _POSIX_SOURCE */
  136. #endif /* _ANSI_M68K_SETJMP_H */
  137.