uae-wii/src/include/traps.h
2009-05-05 15:36:48 +00:00

55 lines
1.0 KiB
C

/*
* E-UAE - The portable Amiga Emulator
*
* Support for traps
*
* Copyright Richard Drummond 2005
*
* Based on code:
* Copyright 1995, 1996 Bernd Schmidt
* Copyright 1996 Ed Hanway
*/
#ifndef TRAPS_H
#define TRAPS_H
/*
* Data passed to a trap handler
*/
typedef struct TrapContext
{
struct regstruct regs;
} TrapContext;
#define TRAPFLAG_NO_REGSAVE 1
#define TRAPFLAG_NO_RETVAL 2
#define TRAPFLAG_EXTRA_STACK 4
#define TRAPFLAG_DORET 8
/*
* A function which handles a 68k trap
*/
typedef uae_u32 (*TrapHandler) (TrapContext *) REGPARAM;
/*
* Interface with 68k interpreter
*/
extern void m68k_handle_trap (unsigned int trap_num, struct regstruct *) REGPARAM;
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);
#endif