X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=sim%2Fmoxie%2Finterp.c;h=fe770093e533d3ede553191c91584f2e8abab602;hb=fb46334198d8d4f82133033758cb75f086d864ad;hp=ecea5b42f38f629ee98ce62a8ad574e8e431f2b5;hpb=ff8577f64987a898e1dc5eb6afb66a404fb7bb16;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/moxie/interp.c b/sim/moxie/interp.c index ecea5b42f3..fe770093e5 100644 --- a/sim/moxie/interp.c +++ b/sim/moxie/interp.c @@ -32,6 +32,7 @@ along with this program. If not, see . */ #include "sim-main.h" #include "sim-base.h" #include "sim-options.h" +#include "sim-io.h" typedef int word; typedef unsigned int uword; @@ -942,9 +943,10 @@ sim_engine_run (SIM_DESC sd, char fname[1024]; int mode = (int) convert_target_flags ((unsigned) cpu.asregs.regs[3]); int perm = (int) cpu.asregs.regs[4]; - int fd = open (fname, mode, perm); + int fd; sim_core_read_buffer (sd, scpu, read_map, fname, cpu.asregs.regs[2], 1024); + fd = sim_io_open (sd, fname, mode); /* FIXME - set errno */ cpu.asregs.regs[2] = fd; break; @@ -954,7 +956,7 @@ sim_engine_run (SIM_DESC sd, int fd = cpu.asregs.regs[2]; unsigned len = (unsigned) cpu.asregs.regs[4]; char *buf = malloc (len); - cpu.asregs.regs[2] = read (fd, buf, len); + cpu.asregs.regs[2] = sim_io_read (sd, fd, buf, len); sim_core_write_buffer (sd, scpu, write_map, buf, cpu.asregs.regs[3], len); free (buf); @@ -968,11 +970,22 @@ sim_engine_run (SIM_DESC sd, str = malloc (len); sim_core_read_buffer (sd, scpu, read_map, str, cpu.asregs.regs[3], len); - count = write (cpu.asregs.regs[2], str, len); + count = sim_io_write (sd, cpu.asregs.regs[2], str, len); free (str); cpu.asregs.regs[2] = count; break; } + case 0x7: /* SYS_unlink */ + { + char fname[1024]; + int fd; + sim_core_read_buffer (sd, scpu, read_map, fname, + cpu.asregs.regs[2], 1024); + fd = sim_io_unlink (sd, fname); + /* FIXME - set errno */ + cpu.asregs.regs[2] = fd; + break; + } case 0xffffffff: /* Linux System Call */ { unsigned int handler = cpu.asregs.sregs[1];