#ifndef _XBRA_H #define _XBRA_H typedef struct __xbra *xptr; typedef struct __xbra { int xbra_magic; int prog_magic; xptr next; short jump; void (*this)(); } xbra_struct; #define _XBRA_MAGIC 0x58425241L /* "XBRA" */ #define _JMP_OPCODE 0x4EF9 #define _JSR_OPCODE 0x4EB9 #define _XBRA_VEC(x) ((void (*)()) &(x.jump)) #define _XBRA_INIT(fn) { \ _XBRA_MAGIC, \ _GNUC_MAGIC, \ (xptr) 0, \ _JMP_OPCODE, \ (void (*)()) fn \ } #define _TRAP_VEC(n,x) ((void (*)()) (((long) n << 24) | (long) &(x.jump))) #define _TRAP_INIT(fn) { \ _XBRA_MAGIC, \ _GNUC_MAGIC, \ (xptr) 0, \ _JSR_OPCODE, \ (void (*)()) fn \ } #endif /* _XBRA_H */