home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / GCC 1.37.1r14 / BSD #includes / (include) / setjmp.h.think < prev    next >
Encoding:
Text File  |  1992-09-10  |  1.4 KB  |  68 lines  |  [TEXT/KAHL]

  1. /*
  2.  *  setjmp.h
  3.  *
  4.  *  Copyright (c) 1991 Symantec Corporation.  All rights reserved.
  5.  *
  6.  */
  7.  
  8. #pragma once
  9.  
  10.  
  11.     /* ----- setjmp ----- */
  12.  
  13. #pragma parameter D0 setjmp(A0)
  14.  
  15. #if !__option(mc68881)
  16.     
  17.     typedef long jmp_buf[11];
  18.     
  19.     int setjmp(jmp_buf) = {
  20.         0x7000,                        /*        moveq    #0,d0                        */
  21.         0x43FA, 0x0006,                /*        lea        @1,a1                        */
  22.         0x48D0, 0xDEF8,                /*        movem.l    d3-d7/a1-a4/a6-a7,(a0)        */
  23.     };                                /*  @1                                        */
  24.     
  25. #else
  26.     
  27.     typedef long jmp_buf[23];
  28.     
  29.     int setjmp(jmp_buf) = {
  30.         0x7000,                        /*        moveq    #0,d0                        */
  31.         0x43FA, 0x000E,                /*        lea        @1,a1                        */
  32.         0x48D0, 0xDEF8,                /*        movem.l    d3-d7/a1-a4/a6-a7,(a0)        */
  33.         0xF228, 0xF00F, 0x002C,        /*        fmovem    fp4-fp7,44(a0)                */
  34.         0x6004,                        /*        bra.s    @2                            */
  35.         0xF210, 0xD00F,                /*  @1    fmovem    (a0),fp4-fp7                */
  36.     };                                /*  @2                                        */
  37.     
  38. #endif
  39.  
  40. #pragma nooptimize(setjmp)
  41.  
  42.  
  43.     /* ----- longjmp ----- */
  44.  
  45. #pragma parameter longjmp(A0,D0)
  46.  
  47. #if !__option(int_4)
  48.  
  49.     void longjmp(jmp_buf, int) = {
  50.         0x4A40,                        /*        tst.w    d0                            */
  51.         0x6602,                        /*        bne.s    @1                            */
  52.         0x7001,                        /*        moveq    #1,d0                        */
  53.         0x4CD8, 0xDEF8,                /*  @1    movem.l    (a0)+,d3-d7/a1-a4/a6-a7        */
  54.         0x4ED1,                        /*        jmp        (a1)                        */
  55.     };
  56.  
  57. #else
  58.  
  59.     void longjmp(jmp_buf, int) = {
  60.         0x4A80,                        /*        tst.l    d0                            */
  61.         0x6602,                        /*        bne.s    @1                            */
  62.         0x7001,                        /*        moveq    #1,d0                        */
  63.         0x4CD8, 0xDEF8,                /*  @1    movem.l    (a0)+,d3-d7/a1-a4/a6-a7        */
  64.         0x4ED1,                        /*        jmp        (a1)                        */
  65.     };
  66.  
  67. #endif
  68.