#if !defined (REMOTE_SIM_H)
#define REMOTE_SIM_H 1
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* This file is used when building stand-alone simulators, so isolate this
file from gdb. */
int sim_write PARAMS ((SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length));
-/* Fetch register REGNO and store the raw (target endian) value in
- BUF. */
+/* Fetch register REGNO storing its raw (target endian) value in the
+ LENGTH byte buffer BUF. Return the actual size of the register or
+ zero if REGNO is not applicable.
+
+ Legacy implementations ignore LENGTH and always return -1.
+
+ If LENGTH does not match the size of REGNO no data is transfered
+ (the actual register size is still returned). */
-void sim_fetch_register PARAMS ((SIM_DESC sd, int regno, unsigned char *buf));
+int sim_fetch_register PARAMS ((SIM_DESC sd, int regno, unsigned char *buf, int length));
-/* Store register REGNO from the raw (target endian) value in BUF. */
+/* Store register REGNO from the raw (target endian) value in BUF.
+ Return the actual size of the register or zero if REGNO is not
+ applicable.
-void sim_store_register PARAMS ((SIM_DESC sd, int regno, unsigned char *buf));
+ Legacy implementations ignore LENGTH and always return -1.
+
+ If LENGTH does not match the size of REGNO no data is transfered
+ (the actual register size is still returned). */
+
+int sim_store_register PARAMS ((SIM_DESC sd, int regno, unsigned char *buf, int length));
/* Print whatever statistics the simulator has collected.
undefined memory region (SIGSEGV); Mis-aligned memory access
(SIGBUS).
- SIM_SIGNALLED: The simulator encountered target code that requires
- the signal SIGRC to be delivered to the simulated program.
+ SIM_SIGNALLED: The program has stopped. The simulator has
+ encountered target code that requires the (HOST) signal SIGRC to be
+ delivered to the simulated program. Ex: `kill (getpid (),
+ TARGET_SIGxxx)'. Where TARGET_SIGxxx has been translated into a
+ host signal. FIXME: This is not always possible..
SIM_RUNNING, SIM_POLLING: The return of one of these values
indicates a problem internal to the simulator. */
void sim_kill PARAMS ((SIM_DESC sd));
+#ifdef __cplusplus
+}
+#endif
+
#endif /* !defined (REMOTE_SIM_H) */