aboutsummaryrefslogtreecommitdiff
path: root/src/target/nds32.h
diff options
context:
space:
mode:
authorHsiangkai Wang <hsiangkai@gmail.com>2013-01-02 12:02:00 +0800
committerSpencer Oliver <spen@spen-soft.co.uk>2013-08-07 21:01:25 +0000
commit0a4c8990c29e61fd0c2796486519cdb256b8da3b (patch)
tree56a4d7b47b392b7da4fa1ad08a4d5261c3619a0e /src/target/nds32.h
parent80d412bafc03ce9a0418a2b98de2668b0f8de0e6 (diff)
downloadriscv-openocd-0a4c8990c29e61fd0c2796486519cdb256b8da3b.zip
riscv-openocd-0a4c8990c29e61fd0c2796486519cdb256b8da3b.tar.gz
riscv-openocd-0a4c8990c29e61fd0c2796486519cdb256b8da3b.tar.bz2
gdb_server: support File-I/O Remote Protocol Extension
The File I/O remote protocol extension allows the target to use the host's file system and console I/O to perform various system calls. To use the function, targets need to prepare two callback functions: * get_gdb_finish_info: to get file I/O parameters from target * gdb_fileio_end: pass file I/O response to target As target is halted, gdb_server will try to get file-I/O information from target through target_get_gdb_fileio_info(). If the callback function returns ERROR_OK, gdb_server will initiate a file-I/O request to gdb. After gdb finishes system call, gdb will pass response of the system call to target through target_gdb_fileio_end() and continue to run(continue or step). To implement the function, I add a new data structure in struct target, called struct gdb_fileio_info, to record file I/O name and parameters. Details refer to GDB manual "File-I/O Remote Protocol Extension" Change-Id: I7f4d45e7c9e967b6d898dc79ba01d86bc46315d3 Signed-off-by: Hsiangkai Wang <hsiangkai@gmail.com> Reviewed-on: http://openocd.zylin.com/1102 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/target/nds32.h')
-rw-r--r--src/target/nds32.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/target/nds32.h b/src/target/nds32.h
index b7e787c..8acd915 100644
--- a/src/target/nds32.h
+++ b/src/target/nds32.h
@@ -284,6 +284,18 @@ struct nds32 {
/** Flag reporting whether virtual hosting is active. */
bool virtual_hosting;
+ /** Flag reporting whether continue/step hits syscall or not */
+ bool hit_syscall;
+
+ /** Value to be returned by virtual hosting SYS_ERRNO request. */
+ int virtual_hosting_errno;
+
+ /** Flag reporting whether syscall is aborted */
+ bool virtual_hosting_ctrl_c;
+
+ /** Record syscall ID for other operations to do special processing for target */
+ int active_syscall_id;
+
/** Flag reporting whether global stop is active. */
bool global_stop;
@@ -404,6 +416,10 @@ extern int nds32_resume(struct target *target, int current,
uint32_t address, int handle_breakpoints, int debug_execution);
extern int nds32_assert_reset(struct target *target);
extern int nds32_init(struct nds32 *nds32);
+extern int nds32_get_gdb_fileio_info(struct target *target, struct gdb_fileio_info *fileio_info);
+extern int nds32_gdb_fileio_write_memory(struct nds32 *nds32, uint32_t address,
+ uint32_t size, const uint8_t *buffer);
+extern int nds32_gdb_fileio_end(struct target *target, int retcode, int fileio_errno, bool ctrl_c);
extern int nds32_reset_halt(struct nds32 *nds32);
extern int nds32_login(struct nds32 *nds32);