Annotation of uae/src/native2amiga.c, revision 1.1.1.7

1.1       root        1:  /*
                      2:   * UAE - The Un*x Amiga Emulator
                      3:   *
                      4:   * Call Amiga Exec functions outside the main UAE thread.
                      5:   *
                      6:   * Copyright 1999 Patrick Ohly
1.1.1.5   root        7:   *
1.1       root        8:   * Uses the EXTER interrupt that is setup in filesys.c
                      9:   * and needs thread support.
                     10:   */
                     11: 
                     12: #include "sysconfig.h"
                     13: #include "sysdeps.h"
                     14: 
1.1.1.4   root       15: #include "threaddep/thread.h"
1.1       root       16: #include "options.h"
                     17: #include "memory.h"
                     18: #include "custom.h"
                     19: #include "newcpu.h"
                     20: #include "disk.h"
1.1.1.7 ! root       21: #include "traps.h"
1.1       root       22: #include "autoconf.h"
                     23: #include "filesys.h"
                     24: #include "execlib.h"
                     25: #include "native2amiga.h"
                     26: 
                     27: smp_comm_pipe native2amiga_pending;
                     28: 
                     29: /*
                     30:  * to be called when setting up the hardware
                     31:  */
                     32: 
                     33: void native2amiga_install (void)
                     34: {
                     35:     init_comm_pipe (&native2amiga_pending, 10, 2);
                     36: }
                     37: 
                     38: /*
                     39:  * to be called when the Amiga boots, i.e. by filesys_diagentry()
                     40:  */
                     41: void native2amiga_startup (void)
                     42: {
                     43: }
                     44: 
                     45: #ifdef SUPPORT_THREADS
1.1.1.7 ! root       46: void uae_ReplyMsg (uaecptr msg)
1.1       root       47: {
                     48:     write_comm_pipe_int (&native2amiga_pending, 2, 0);
                     49:     write_comm_pipe_u32 (&native2amiga_pending, msg, 1);
                     50: 
                     51:     uae_int_requested = 1;
                     52: }
                     53: 
1.1.1.7 ! root       54: void uae_PutMsg (uaecptr port, uaecptr msg)
1.1       root       55: {
                     56:     uae_pt data;
                     57:     data.i = 1;
                     58:     write_comm_pipe_int (&native2amiga_pending, 1, 0);
                     59:     write_comm_pipe_u32 (&native2amiga_pending, port, 0);
                     60:     write_comm_pipe_u32 (&native2amiga_pending, msg, 1);
                     61: 
                     62:     uae_int_requested = 1;
                     63: }
                     64: 
1.1.1.7 ! root       65: void uae_Signal (uaecptr task, uae_u32 mask)
1.1       root       66: {
                     67:     write_comm_pipe_int (&native2amiga_pending, 0, 0);
                     68:     write_comm_pipe_u32 (&native2amiga_pending, task, 0);
                     69:     write_comm_pipe_int (&native2amiga_pending, mask, 1);
1.1.1.5   root       70: 
1.1       root       71:     uae_int_requested = 1;
                     72: }
                     73: #endif
                     74: 
1.1.1.7 ! root       75: void uae_NewList (uaecptr list)
1.1       root       76: {
                     77:     put_long (list, list + 4);
                     78:     put_long (list + 4, 0);
                     79:     put_long (list + 8, list);
                     80: }
                     81: 
1.1.1.7 ! root       82: uaecptr uae_AllocMem (TrapContext *ctx, uae_u32 size, uae_u32 flags)
1.1       root       83: {
                     84:     m68k_dreg (regs, 0) = size;
                     85:     m68k_dreg (regs, 1) = flags;
1.1.1.7 ! root       86:     return CallLib (ctx, get_long (4), -198); /* AllocMem */
1.1       root       87: }
1.1.1.4   root       88: 
1.1.1.7 ! root       89: void uae_FreeMem (TrapContext *ctx, uaecptr memory, uae_u32 size)
1.1.1.4   root       90: {
                     91:     m68k_dreg (regs, 0) = size;
                     92:     m68k_areg (regs, 1) = memory;
1.1.1.7 ! root       93:     CallLib (ctx, get_long (4), -0xD2); /* FreeMem */
1.1.1.4   root       94: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.