|
|
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
1.1.1.2 root 19: void uae_ReplyMsg(uaecptr msg);
20: void uae_PutMsg(uaecptr port, uaecptr msg);
21: void uae_Signal(uaecptr task, uae_u32 mask);
1.1 root 22: #endif
1.1.1.2 root 23: void uae_NewList(uaecptr list);
1.1 root 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: */
1.1.1.2 root 32: uaecptr uae_AllocMem (uae_u32 size, uae_u32 flags);
1.1 root 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
1.1.1.3 ! root 54:
! 55: STATIC_INLINE do_uae_int_requested(void)
! 56: {
! 57: uae_int_requested = 1;
! 58: set_uae_int_flag ();
! 59: INTREQ (0x8000 | 0x0008);
! 60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.