openocd: fix SPDX tag format for files .c
[fw/openocd] / src / target / fa526.c
index d9d5d43b51b22ce2c6c61025c16343e8133c1338..38b7ab2e9df8eb63f672bee09fb9508b85f33136 100644 (file)
@@ -1,21 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2009 by Paulius Zaleckas                                *
  *   paulius.zaleckas@gmail.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.             *
  ***************************************************************************/
 
 /*
@@ -41,7 +28,7 @@ static void fa526_change_to_arm(struct target *target, uint32_t *r0, uint32_t *p
 }
 
 static void fa526_read_core_regs(struct target *target,
-               uint32_t mask, uint32_tcore_regs[16])
+               uint32_t mask, uint32_t *core_regs[16])
 {
        int i;
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
@@ -59,8 +46,7 @@ static void fa526_read_core_regs(struct target *target,
        /* fetch NOP, STM in EXECUTE stage (1st cycle) */
        arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, 0, NULL, 0);
 
-       for (i = 0; i <= 15; i++)
-       {
+       for (i = 0; i <= 15; i++) {
                if (mask & (1 << i))
                        /* nothing fetched, STM in MEMORY (i'th cycle) */
                        arm9tdmi_clock_data_in(jtag_info, core_regs[i]);
@@ -68,7 +54,7 @@ static void fa526_read_core_regs(struct target *target,
 }
 
 static void fa526_read_core_regs_target_buffer(struct target *target,
-               uint32_t mask, voidbuffer, int size)
+               uint32_t mask, void *buffer, int size)
 {
        int i;
        struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
@@ -90,12 +76,10 @@ static void fa526_read_core_regs_target_buffer(struct target *target,
        /* fetch NOP, STM in EXECUTE stage (1st cycle) */
        arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, 0, NULL, 0);
 
-       for (i = 0; i <= 15; i++)
-       {
+       for (i = 0; i <= 15; i++) {
                if (mask & (1 << i))
                        /* nothing fetched, STM in MEMORY (i'th cycle) */
-                       switch (size)
-                       {
+                       switch (size) {
                                case 4:
                                        arm9tdmi_clock_data_in_endianness(jtag_info, buf_u32++, 4, be);
                                        break;
@@ -188,8 +172,7 @@ static void fa526_write_xpsr_im8(struct target *target,
        arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, 0, NULL, 0);
 
        /* rot == 4 writes flags, which takes only one cycle */
-       if (rot != 4)
-       {
+       if (rot != 4) {
                /* nothing fetched, MSR in EXECUTE (2) */
                arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, 0, NULL, 0);
                /* nothing fetched, MSR in EXECUTE (3) */
@@ -216,8 +199,7 @@ static void fa526_write_core_regs(struct target *target,
        /* fetch NOP, LDM in EXECUTE stage (1st cycle) */
        arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, 0, NULL, 0);
 
-       for (i = 0; i <= 15; i++)
-       {
+       for (i = 0; i <= 15; i++) {
                if (mask & (1 << i))
                        /* nothing fetched, LDM still in EXECUTE (1 + i cycle) */
                        arm9tdmi_clock_out(jtag_info, ARMV4_5_NOP, core_regs[i], NULL, 0);
@@ -289,6 +271,9 @@ static int fa526_init_arch_info_2(struct target *target,
        arm7_9->enable_single_step = arm9tdmi_enable_single_step;
        arm7_9->disable_single_step = arm9tdmi_disable_single_step;
 
+       arm7_9->write_memory = arm920t_write_memory;
+       arm7_9->bulk_write_memory = arm7_9_bulk_write_memory;
+
        arm7_9->post_debug_entry = NULL;
 
        arm7_9->pre_restore_context = NULL;
@@ -346,14 +331,23 @@ static int fa526_init_arch_info(struct target *target,
 
 static int fa526_target_create(struct target *target, Jim_Interp *interp)
 {
-       struct arm920t_common *arm920t = calloc(1,sizeof(struct arm920t_common));
+       struct arm920t_common *arm920t = calloc(1, sizeof(struct arm920t_common));
 
        return fa526_init_arch_info(target, arm920t, target->tap);
 }
 
-/** Holds methods for FA526 targets. */
-struct target_type fa526_target =
+static void fa526_deinit_target(struct target *target)
 {
+       struct arm *arm = target_to_arm(target);
+       struct arm920t_common *arm920t = target_to_arm920(target);
+
+       arm7_9_deinit(target);
+       arm_free_reg_cache(arm);
+       free(arm920t);
+}
+
+/** Holds methods for FA526 targets. */
+struct target_type fa526_target = {
        .name = "fa526",
 
        .poll = arm7_9_poll,
@@ -369,11 +363,11 @@ struct target_type fa526_target =
        .deassert_reset = arm7_9_deassert_reset,
        .soft_reset_halt = arm920t_soft_reset_halt,
 
+       .get_gdb_arch = arm_get_gdb_arch,
        .get_gdb_reg_list = arm_get_gdb_reg_list,
 
        .read_memory = arm920t_read_memory,
-       .write_memory = arm920t_write_memory,
-       .bulk_write_memory = arm7_9_bulk_write_memory,
+       .write_memory = arm7_9_write_memory_opt,
 
        .checksum_memory = arm_checksum_memory,
        .blank_check_memory = arm_blank_check_memory,
@@ -388,6 +382,7 @@ struct target_type fa526_target =
        .commands = arm920t_command_handlers,
        .target_create = fa526_target_create,
        .init_target = arm9tdmi_init_target,
+       .deinit_target = fa526_deinit_target,
        .examine = arm7_9_examine,
        .check_reset = arm7_9_check_reset,
 };