X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Ftarget%2Farm7_9_common.h;h=805fbc918e878c93c37051d5dc49556dd483bd56;hb=057e566097b41f9bfeee50e97ba6ef624189ae6a;hp=6f1b51f919bbf458230adc08cbb0e7bf9f1709c3;hpb=374127301ec1d72033b9d573b72c7abdfd61990d;p=fw%2Fopenocd diff --git a/src/target/arm7_9_common.h b/src/target/arm7_9_common.h index 6f1b51f91..805fbc918 100644 --- a/src/target/arm7_9_common.h +++ b/src/target/arm7_9_common.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + /*************************************************************************** * Copyright (C) 2005 by Dominic Rath * * Dominic.Rath@gmx.de * @@ -10,25 +12,10 @@ * * * Copyright (C) 2008 by Hongtao Zheng * * hontor@126.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * 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., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef ARM7_9_COMMON_H -#define ARM7_9_COMMON_H +#ifndef OPENOCD_TARGET_ARM7_9_COMMON_H +#define OPENOCD_TARGET_ARM7_9_COMMON_H #include "arm.h" #include "arm_jtag.h" @@ -118,6 +105,20 @@ struct arm7_9_common { void (*pre_restore_context)(struct target *target); /**< Callback function called before restoring the processor context */ + + /** + * Variant specific memory write function that does not dispatch to bulk_write_memory. + * Used as a fallback when bulk writes are unavailable, or for writing data needed to + * do the bulk writes. + */ + int (*write_memory)(struct target *target, target_addr_t address, + uint32_t size, uint32_t count, const uint8_t *buffer); + /** + * Write target memory in multiples of 4 bytes, optimized for + * writing large quantities of data. + */ + int (*bulk_write_memory)(struct target *target, target_addr_t address, + uint32_t count, const uint8_t *buffer); }; static inline struct arm7_9_common *target_to_arm7_9(struct target *target) @@ -141,18 +142,21 @@ int arm7_9_deassert_reset(struct target *target); int arm7_9_reset_request_halt(struct target *target); int arm7_9_early_halt(struct target *target); int arm7_9_soft_reset_halt(struct target *target); -int arm7_9_prepare_reset_halt(struct target *target); int arm7_9_halt(struct target *target); -int arm7_9_resume(struct target *target, int current, uint32_t address, +int arm7_9_resume(struct target *target, int current, target_addr_t address, int handle_breakpoints, int debug_execution); -int arm7_9_step(struct target *target, int current, uint32_t address, +int arm7_9_step(struct target *target, int current, target_addr_t address, int handle_breakpoints); -int arm7_9_read_memory(struct target *target, uint32_t address, +int arm7_9_read_memory(struct target *target, target_addr_t address, uint32_t size, uint32_t count, uint8_t *buffer); -int arm7_9_write_memory(struct target *target, uint32_t address, +int arm7_9_write_memory(struct target *target, target_addr_t address, + uint32_t size, uint32_t count, const uint8_t *buffer); +int arm7_9_write_memory_opt(struct target *target, target_addr_t address, uint32_t size, uint32_t count, const uint8_t *buffer); -int arm7_9_bulk_write_memory(struct target *target, uint32_t address, +int arm7_9_write_memory_no_opt(struct target *target, uint32_t address, + uint32_t size, uint32_t count, const uint8_t *buffer); +int arm7_9_bulk_write_memory(struct target *target, target_addr_t address, uint32_t count, const uint8_t *buffer); int arm7_9_run_algorithm(struct target *target, int num_mem_params, @@ -171,6 +175,11 @@ int arm7_9_execute_sys_speed(struct target *target); int arm7_9_init_arch_info(struct target *target, struct arm7_9_common *arm7_9); int arm7_9_examine(struct target *target); +void arm7_9_deinit(struct target *target); int arm7_9_check_reset(struct target *target); -#endif /* ARM7_9_COMMON_H */ +int arm7_9_endianness_callback(jtag_callback_data_t pu8_in, + jtag_callback_data_t i_size, jtag_callback_data_t i_be, + jtag_callback_data_t i_flip); + +#endif /* OPENOCD_TARGET_ARM7_9_COMMON_H */