--- uae/src/include/traps.h 2018/04/24 17:17:04 1.1 +++ uae/src/include/traps.h 2018/04/24 17:18:54 1.1.1.2 @@ -9,10 +9,16 @@ * Copyright 1995, 1996 Bernd Schmidt * Copyright 1996 Ed Hanway */ - +#define TRACE_TRAPS #ifndef TRAPS_H #define TRAPS_H +/* + * Data passed to a trap handler. Opaque to callees, but can be passed + * to CallLib. + */ +typedef struct TrapContext TrapContext; + #define TRAPFLAG_NO_REGSAVE 1 #define TRAPFLAG_NO_RETVAL 2 #define TRAPFLAG_EXTRA_STACK 4 @@ -21,15 +27,36 @@ /* * A function which handles a 68k trap */ -typedef uae_u32 (*TrapFunction) (void); +typedef uae_u32 (*TrapHandler) (TrapContext *); -extern int deftrap2 (TrapFunction func, int mode, const char *str); -extern int deftrap (TrapFunction); -extern uae_u32 CallLib (uaecptr base, uae_s16 offset); -extern void call_calltrap (int nr) REGPARAM; +/* + * Interface with 68k interpreter + */ +extern void m68k_handle_trap (unsigned int trap_num); -extern uaecptr libemu_InstallFunction (TrapFunction, uaecptr, int, const char *); -extern uaecptr libemu_InstallFunctionFlags (TrapFunction, uaecptr, int, int, const char *); +unsigned int define_trap (TrapHandler handler_func, int flags, const char *name); +/* + * Call a 68k Library function from an extended trap + */ +extern uae_u32 CallLib (TrapContext *context, uaecptr library_base, uae_s16 func_offset); + +/* + * Initialization + */ +void init_traps (void); +void init_extended_traps (void); + +#define deftrap(f) define_trap((f), 0, "") +#ifdef TRACE_TRAPS +# define deftrap2(f, mode, str) define_trap((f), (mode), (str)) +#else +# define deftrap2(f, mode, str) define_trap((f), (mode), "") #endif + +#endif + +/* Declare here so we don't have to pull in traps.h from everywhere that wants + * inputdevice.h. */ +extern uae_u32 mousehack_helper (TrapContext *);