sim: iq2000: fix some missing prototypes warnings

Turns out some of these were hiding real bugs like not passing the
pc variable down.
diff --git a/sim/iq2000/Makefile.in b/sim/iq2000/Makefile.in
index c98fb78..64068ac 100644
--- a/sim/iq2000/Makefile.in
+++ b/sim/iq2000/Makefile.in
@@ -38,7 +38,7 @@
 SIM_EXTRA_CLEAN = iq2000-clean
 
 # Some modules don't build cleanly yet.
-cpu.o iq2000.o mloop.o sem.o: SIM_WERROR_CFLAGS =
+iq2000.o mloop.o: SIM_WERROR_CFLAGS =
 
 ## COMMON_POST_CONFIG_FRAG
 
diff --git a/sim/iq2000/sem-switch.c b/sim/iq2000/sem-switch.c
index fb3f232..4a5c8f9 100644
--- a/sim/iq2000/sem-switch.c
+++ b/sim/iq2000/sem-switch.c
@@ -1809,10 +1809,10 @@
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
 #define FLD(f) abuf->fields.sfmt_empty.f
   int UNUSED written = 0;
-  IADDR UNUSED pc = abuf->addr;
+  IADDR pc = abuf->addr;
   vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
 
-do_syscall (current_cpu);
+  do_syscall (current_cpu, pc);
 
 #undef FLD
 }
diff --git a/sim/iq2000/sem.c b/sim/iq2000/sem.c
index 53b2753..36bab60 100644
--- a/sim/iq2000/sem.c
+++ b/sim/iq2000/sem.c
@@ -1747,10 +1747,10 @@
 #define FLD(f) abuf->fields.sfmt_empty.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
-  IADDR UNUSED pc = abuf->addr;
+  IADDR pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
 
-do_syscall (current_cpu);
+  do_syscall (current_cpu, pc);
 
   return vpc;
 #undef FLD
diff --git a/sim/iq2000/sim-main.h b/sim/iq2000/sim-main.h
index 3615a71..bf06082 100644
--- a/sim/iq2000/sim-main.h
+++ b/sim/iq2000/sim-main.h
@@ -59,4 +59,9 @@
 #define IQ2000_INSN_MEM_SIZE (CPU2INSN(0x800000) - CPU2INSN(0x0000))
 #define IQ2000_DATA_MEM_SIZE (CPU2DATA(0x800000) - CPU2DATA(0x0000))
 
+PCADDR get_h_pc (SIM_CPU *);
+void set_h_pc (SIM_CPU *, PCADDR);
+void do_syscall (SIM_CPU *, PCADDR);
+void do_break (SIM_CPU *, PCADDR);
+
 #endif /* SIM_MAIN_H */