X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Fnds32.h;h=141dbf4cb9bd10c2497a58173df8ff0bddbef1b9;hb=29c81a80510aa82b1842b15a9b091a3062cb51dc;hp=f585c2d30539b18fd24fcf0df22e98b24629d01a;hpb=cf8a3c3d7075abad3c88cd604f8add4d06898abc;p=openocd.git diff --git a/src/target/nds32.h b/src/target/nds32.h index f585c2d305..141dbf4cb9 100644 --- a/src/target/nds32.h +++ b/src/target/nds32.h @@ -13,13 +13,11 @@ * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * + * along with this program. If not, see . * ***************************************************************************/ -#ifndef __NDS32_H__ -#define __NDS32_H__ +#ifndef OPENOCD_TARGET_NDS32_H +#define OPENOCD_TARGET_NDS32_H #include #include "target.h" @@ -284,6 +282,20 @@ 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; + + struct breakpoint syscall_break; + /** Flag reporting whether global stop is active. */ bool global_stop; @@ -297,6 +309,9 @@ struct nds32 { * handler, it should be true. */ bool keep_target_edm_ctl; + /* Value of $EDM_CTL before target enters debug mode */ + uint32_t backup_edm_ctl; + /** always use word-aligned address to access memory */ bool word_access_mem; @@ -334,6 +349,9 @@ struct nds32 { * hardware breakpoints or not in ROM */ bool auto_convert_hw_bp; + /* Flag to indicate the target is attached by debugger or not */ + bool attached; + /** Backpointer to the target. */ struct target *target; @@ -341,9 +359,8 @@ struct nds32 { }; struct nds32_reg { - uint32_t num; - uint32_t value; - uint64_t value_64; + int32_t num; + uint8_t value[8]; struct target *target; struct nds32 *nds32; bool enable; @@ -364,14 +381,13 @@ extern int nds32_remove_software_breakpoint(struct target *target, struct breakpoint *breakpoint); extern int nds32_get_gdb_reg_list(struct target *target, - struct reg **reg_list[], int *reg_list_size); + struct reg **reg_list[], int *reg_list_size, + enum target_register_class reg_class); extern int nds32_write_buffer(struct target *target, uint32_t address, uint32_t size, const uint8_t *buffer); extern int nds32_read_buffer(struct target *target, uint32_t address, uint32_t size, uint8_t *buffer); -extern int nds32_bulk_write_memory(struct target *target, - uint32_t address, uint32_t count, const uint8_t *buffer); extern int nds32_read_memory(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer); extern int nds32_write_memory(struct target *target, uint32_t address, @@ -384,27 +400,33 @@ extern int nds32_get_mapped_reg(struct nds32 *nds32, unsigned regnum, uint32_t * extern int nds32_set_mapped_reg(struct nds32 *nds32, unsigned regnum, uint32_t value); extern int nds32_edm_config(struct nds32 *nds32); -extern int nds32_cache_sync(struct target *target, uint32_t address, uint32_t length); +extern int nds32_cache_sync(struct target *target, target_addr_t address, uint32_t length); extern int nds32_mmu(struct target *target, int *enabled); -extern int nds32_virtual_to_physical(struct target *target, uint32_t address, - uint32_t *physical); -extern int nds32_read_phys_memory(struct target *target, uint32_t address, +extern int nds32_virtual_to_physical(struct target *target, target_addr_t address, + target_addr_t *physical); +extern int nds32_read_phys_memory(struct target *target, target_addr_t address, uint32_t size, uint32_t count, uint8_t *buffer); -extern int nds32_write_phys_memory(struct target *target, uint32_t address, +extern int nds32_write_phys_memory(struct target *target, target_addr_t address, uint32_t size, uint32_t count, const uint8_t *buffer); extern uint32_t nds32_nextpc(struct nds32 *nds32, int current, uint32_t address); extern int nds32_examine_debug_reason(struct nds32 *nds32); extern int nds32_step(struct target *target, int current, - uint32_t address, int handle_breakpoints); + target_addr_t address, int handle_breakpoints); extern int nds32_target_state(struct nds32 *nds32, enum target_state *state); extern int nds32_halt(struct target *target); extern int nds32_poll(struct target *target); extern int nds32_resume(struct target *target, int current, - uint32_t address, int handle_breakpoints, int debug_execution); + target_addr_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); +extern int nds32_profiling(struct target *target, uint32_t *samples, + uint32_t max_num_samples, uint32_t *num_samples, uint32_t seconds); /** Convert target handle to generic Andes target state handle. */ static inline struct nds32 *target_to_nds32(struct target *target) @@ -432,4 +454,4 @@ static inline bool nds32_reach_max_interrupt_level(struct nds32 *nds32) return nds32->max_interrupt_level == nds32->current_interrupt_level; } -#endif /* __NDS32_H__ */ +#endif /* OPENOCD_TARGET_NDS32_H */