|
|
1.1 ! root 1: /* ! 2: * UAE - The Un*x Amiga Emulator ! 3: * ! 4: * Call (some) Amiga Exec functions outside the main UAE thread ! 5: * and without stack magic. ! 6: * ! 7: * Copyright 1999 Patrick Ohly ! 8: * ! 9: * Uses the EXTER interrupt that is setup in filesys.c ! 10: * and some of it needs thread support. ! 11: */ ! 12: ! 13: /* ! 14: * The following functions do exactly the same thing as their ! 15: * Amiga counterpart, but can be called in situation where calling ! 16: * the exec.library functions is impossible. ! 17: */ ! 18: #ifdef SUPPORT_THREADS ! 19: void ReplyMsg(uaecptr msg); ! 20: void PutMsg(uaecptr port, uaecptr msg); ! 21: void Signal(uaecptr task, uae_u32 mask); ! 22: #endif ! 23: void NewList(uaecptr list); ! 24: ! 25: /* ! 26: * The following functions are shortcuts for calling ! 27: * the exec.library function with CallLib(), so they ! 28: * are only available in a trap function. This trap ! 29: * function has to be setup with deftrap2() and ! 30: * TRAPFLAG_EXTRA_STACK and stack magic is required. ! 31: */ ! 32: uaecptr AllocMem (uae_u32 size, uae_u32 flags); ! 33: ! 34: ! 35: /* ! 36: * to be called when setting up the hardware ! 37: */ ! 38: void native2amiga_install (void); ! 39: ! 40: /* ! 41: * to be called when the Amiga boots, i.e. by filesys_diagentry() ! 42: */ ! 43: void native2amiga_startup (void); ! 44: ! 45: /**** internal stuff ****/ ! 46: #ifdef SUPPORT_THREADS ! 47: /* This pipe is filled by Signal() with pairs of ! 48: * (uae_u32)0/(uaecptr)task/(uae_u32)signal_set, ! 49: * by PutMsg() with (uae_u32)1/(uaecptr)port/(uaecptr)msg and by ! 50: * ReplyMsg() with (uae_u32)2/(uaecptr)msg. ! 51: * It's emptied via exter_int_helper by the EXTER interrupt. */ ! 52: extern smp_comm_pipe native2amiga_pending; ! 53: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.