mirror of
https://github.com/Oibaf66/uae-wii.git
synced 2024-06-03 00:58:47 +02:00
55 lines
1.0 KiB
C
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
|