home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / gnu / mntinc16 / xbra.h < prev   
Encoding:
C/C++ Source or Header  |  1993-07-29  |  952 b   |  44 lines

  1. #ifndef _XBRA_H
  2. #define _XBRA_H
  3.  
  4. #ifndef _COMPILER_H
  5. #include <compiler.h>
  6. #endif
  7.  
  8. typedef struct __xbra    *xptr;
  9.  
  10. typedef struct __xbra
  11. {
  12.   long    xbra_magic;
  13.   long    gnuc_magic;
  14.   xptr    next;
  15.   short    jump;
  16.   void    (*this) __PROTO((void));
  17. }    xbra_struct;
  18.  
  19. #define _XBRA_MAGIC    0x58425241L /* "XBRA" */
  20. #define _GNUC_MAGIC    0x474E5543L /* "GNUC" */
  21. #define _JMP_OPCODE    0x4EF9
  22. #define _JSR_OPCODE    0x4EB9
  23.  
  24. #define _XBRA_VEC(x)    ((void (*) __PROTO((void))) &(x.jump))
  25.  
  26. #define _XBRA_INIT(fn)    {           \
  27.                _XBRA_MAGIC,    \
  28.                _GNUC_MAGIC,    \
  29.                (xptr) 0,       \
  30.                _JMP_OPCODE,    \
  31.                (void (*) __PROTO((void))) fn \
  32.             }
  33.  
  34. #define _TRAP_VEC(n,x)    ((void (*) __PROTO((void))) (((long) n << 24) | (long) &(x.jump)))
  35.  
  36. #define _TRAP_INIT(fn)    {           \
  37.                _XBRA_MAGIC,    \
  38.                _GNUC_MAGIC,    \
  39.                (xptr) 0,       \
  40.                _JSR_OPCODE,    \
  41.                (void (*) __PROTO((void))) fn \
  42.             }
  43. #endif /* _XBRA_H */
  44.