|
|
1.1 root 1: /*
2: * E-UAE - The portable Amiga Emulator
3: *
4: * Support for traps
5: *
6: * Copyright Richard Drummond 2005
7: *
8: * Based on code:
9: * Copyright 1995, 1996 Bernd Schmidt
10: * Copyright 1996 Ed Hanway
11: */
1.1.1.2 ! root 12: #define TRACE_TRAPS
1.1 root 13: #ifndef TRAPS_H
14: #define TRAPS_H
15:
1.1.1.2 ! root 16: /*
! 17: * Data passed to a trap handler. Opaque to callees, but can be passed
! 18: * to CallLib.
! 19: */
! 20: typedef struct TrapContext TrapContext;
! 21:
1.1 root 22: #define TRAPFLAG_NO_REGSAVE 1
23: #define TRAPFLAG_NO_RETVAL 2
24: #define TRAPFLAG_EXTRA_STACK 4
25: #define TRAPFLAG_DORET 8
26:
27: /*
28: * A function which handles a 68k trap
29: */
1.1.1.2 ! root 30: typedef uae_u32 (*TrapHandler) (TrapContext *);
1.1 root 31:
32:
1.1.1.2 ! root 33: /*
! 34: * Interface with 68k interpreter
! 35: */
! 36: extern void m68k_handle_trap (unsigned int trap_num);
1.1 root 37:
1.1.1.2 ! root 38: unsigned int define_trap (TrapHandler handler_func, int flags, const char *name);
1.1 root 39:
1.1.1.2 ! root 40: /*
! 41: * Call a 68k Library function from an extended trap
! 42: */
! 43: extern uae_u32 CallLib (TrapContext *context, uaecptr library_base, uae_s16 func_offset);
! 44:
! 45: /*
! 46: * Initialization
! 47: */
! 48: void init_traps (void);
! 49: void init_extended_traps (void);
! 50:
! 51: #define deftrap(f) define_trap((f), 0, "")
! 52: #ifdef TRACE_TRAPS
! 53: # define deftrap2(f, mode, str) define_trap((f), (mode), (str))
! 54: #else
! 55: # define deftrap2(f, mode, str) define_trap((f), (mode), "")
1.1 root 56: #endif
1.1.1.2 ! root 57:
! 58: #endif
! 59:
! 60: /* Declare here so we don't have to pull in traps.h from everywhere that wants
! 61: * inputdevice.h. */
! 62: extern uae_u32 mousehack_helper (TrapContext *);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.