/[gxemul]/upstream/0.4.4/src/useremul.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /upstream/0.4.4/src/useremul.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 12 by dpavlin, Mon Oct 8 16:18:38 2007 UTC revision 14 by dpavlin, Mon Oct 8 16:18:51 2007 UTC
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *   *
27   *   *
28   *  $Id: useremul.c,v 1.62 2005/08/16 06:49:26 debug Exp $   *  $Id: useremul.c,v 1.64 2005/08/27 17:29:06 debug Exp $
29   *   *
30   *  Userland (syscall) emulation.   *  Userland (syscall) emulation.
31   *   *
32   *  TODO:   *  TODO:
33   *   *
34   *      NetBSD/pmax:   *      environment passing for most emulation modes
35   *              environment passing   *
36   *              more syscalls   *      implement more syscalls
37   *   *
38   *      32-bit vs 64-bit problems? MIPS n32, o32, n64?   *      32-bit vs 64-bit problems? MIPS n32, o32, n64?
39   *   *
# Line 232  void useremul__netbsd_setup(struct cpu * Line 232  void useremul__netbsd_setup(struct cpu *
232                  }                  }
233                  break;                  break;
234    
235            case ARCH_ALPHA:
236                    debug("useremul__netbsd_setup(): ALPHA: TODO\n");
237                    break;
238    
239          case ARCH_ARM:          case ARCH_ARM:
240                  debug("useremul__netbsd_setup(): ARM: TODO\n");                  debug("useremul__netbsd_setup(): ARM: TODO\n");
241                  break;                  break;
# Line 828  static void useremul__netbsd(struct cpu Line 832  static void useremul__netbsd(struct cpu
832                  arg3 = cpu->cd.ppc.gpr[6];                  arg3 = cpu->cd.ppc.gpr[6];
833                  /*  TODO:  More arguments? Stack arguments?  */                  /*  TODO:  More arguments? Stack arguments?  */
834                  break;                  break;
835    
836            case ARCH_ARM:
837                    sysnr = code & 0xfffff;
838                    arg0 = cpu->cd.arm.r[0];
839                    arg1 = cpu->cd.arm.r[1];
840                    arg2 = cpu->cd.arm.r[2];
841                    arg3 = cpu->cd.arm.r[3];
842                    /*  TODO:  More arguments? Stack arguments?  */
843                    break;
844    
845            default:fatal("netbsd syscall for this arch: TODO\n");
846                    exit(1);
847          }          }
848    
849          /*          /*
# Line 1187  static void useremul__netbsd(struct cpu Line 1203  static void useremul__netbsd(struct cpu
1203    
1204    
1205          switch (cpu->machine->arch) {          switch (cpu->machine->arch) {
1206            case ARCH_ARM:
1207                    /*  NetBSD/arm return values:  */
1208                    cpu->cd.arm.r[0] = result_low;
1209                    cpu->cd.arm.cpsr &= ~ARM_FLAG_C;
1210                    if (error_flag) {
1211                            cpu->cd.arm.cpsr |= ARM_FLAG_C;
1212                            cpu->cd.arm.r[0] = error_code;
1213                    }
1214                    if (result_high_set)
1215                            cpu->cd.arm.r[1] = result_high;
1216                    break;
1217          case ARCH_MIPS:          case ARCH_MIPS:
1218                  /*                  /*
1219                   *  NetBSD/mips return values:                   *  NetBSD/mips return values:
# Line 1729  void useremul_init(void) Line 1756  void useremul_init(void)
1756          add_useremul("NetBSD/pmax", ARCH_MIPS, "R3000",          add_useremul("NetBSD/pmax", ARCH_MIPS, "R3000",
1757              useremul__netbsd, useremul__netbsd_setup);              useremul__netbsd, useremul__netbsd_setup);
1758    
1759          add_useremul("NetBSD/arm", ARCH_ARM, "ARM",          add_useremul("NetBSD/arm", ARCH_ARM, "SA1110",
1760              useremul__netbsd, useremul__netbsd_setup);              useremul__netbsd, useremul__netbsd_setup);
1761    
1762          add_useremul("NetBSD/amd64", ARCH_X86, "AMD64",          add_useremul("NetBSD/amd64", ARCH_X86, "AMD64",
1763              useremul__netbsd, useremul__netbsd_setup);              useremul__netbsd, useremul__netbsd_setup);
1764    
1765            add_useremul("NetBSD/alpha", ARCH_ALPHA, "Alpha",
1766                useremul__netbsd, useremul__netbsd_setup);
1767    
1768          add_useremul("Linux/PPC64", ARCH_PPC, "PPC970",          add_useremul("Linux/PPC64", ARCH_PPC, "PPC970",
1769              useremul__linux, useremul__linux_setup);              useremul__linux, useremul__linux_setup);
1770    

Legend:
Removed from v.12  
changed lines
  Added in v.14

  ViewVC Help
Powered by ViewVC 1.1.26