/[gxemul]/upstream/0.4.2/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.2/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 18 by dpavlin, Mon Oct 8 16:19:11 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.65 2005/10/26 14:37:02 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          /*          /*
850           *  NOTE: The following code should not be CPU arch dependant!           *  NOTE/TODO: The following code should not be CPU arch dependent!
          *  (TODO)  
851           */           */
852    
853          switch (sysnr) {          switch (sysnr) {
# Line 1187  static void useremul__netbsd(struct cpu Line 1202  static void useremul__netbsd(struct cpu
1202    
1203    
1204          switch (cpu->machine->arch) {          switch (cpu->machine->arch) {
1205            case ARCH_ARM:
1206                    /*  NetBSD/arm return values:  */
1207                    cpu->cd.arm.r[0] = result_low;
1208                    cpu->cd.arm.cpsr &= ~ARM_FLAG_C;
1209                    if (error_flag) {
1210                            cpu->cd.arm.cpsr |= ARM_FLAG_C;
1211                            cpu->cd.arm.r[0] = error_code;
1212                    }
1213                    if (result_high_set)
1214                            cpu->cd.arm.r[1] = result_high;
1215                    break;
1216          case ARCH_MIPS:          case ARCH_MIPS:
1217                  /*                  /*
1218                   *  NetBSD/mips return values:                   *  NetBSD/mips return values:
# Line 1729  void useremul_init(void) Line 1755  void useremul_init(void)
1755          add_useremul("NetBSD/pmax", ARCH_MIPS, "R3000",          add_useremul("NetBSD/pmax", ARCH_MIPS, "R3000",
1756              useremul__netbsd, useremul__netbsd_setup);              useremul__netbsd, useremul__netbsd_setup);
1757    
1758          add_useremul("NetBSD/arm", ARCH_ARM, "ARM",          add_useremul("NetBSD/arm", ARCH_ARM, "SA1110",
1759              useremul__netbsd, useremul__netbsd_setup);              useremul__netbsd, useremul__netbsd_setup);
1760    
1761          add_useremul("NetBSD/amd64", ARCH_X86, "AMD64",          add_useremul("NetBSD/amd64", ARCH_X86, "AMD64",
1762              useremul__netbsd, useremul__netbsd_setup);              useremul__netbsd, useremul__netbsd_setup);
1763    
1764            add_useremul("NetBSD/alpha", ARCH_ALPHA, "Alpha",
1765                useremul__netbsd, useremul__netbsd_setup);
1766    
1767          add_useremul("Linux/PPC64", ARCH_PPC, "PPC970",          add_useremul("Linux/PPC64", ARCH_PPC, "PPC970",
1768              useremul__linux, useremul__linux_setup);              useremul__linux, useremul__linux_setup);
1769    

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

  ViewVC Help
Powered by ViewVC 1.1.26