openocd: fix SPDX tag format for files .c
[fw/openocd] / src / target / esirisc.c
index c928445ccf240f1a250851de5fbb5716fde45324..f86d28d5830a0a2c77cb03266ee715172e1514bf 100644 (file)
@@ -1,20 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2018 by Square, Inc.                                    *
  *   Steven Stallion <stallion@squareup.com>                               *
  *   James Zhao <hjz@squareup.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, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -56,38 +45,38 @@ static const char * const esirisc_exception_strings[] = {
        [EID_SYSTEM_CALL]                       = "SystemCall",
        [EID_MEMORY_MANAGEMENT]         = "MemoryManagement",
        [EID_UNRECOVERABLE]                     = "Unrecoverable",
-       [EID_INTERRUPTn+0]                      = "Interrupt0",
-       [EID_INTERRUPTn+1]                      = "Interrupt1",
-       [EID_INTERRUPTn+2]                      = "Interrupt2",
-       [EID_INTERRUPTn+3]                      = "Interrupt3",
-       [EID_INTERRUPTn+4]                      = "Interrupt4",
-       [EID_INTERRUPTn+5]                      = "Interrupt5",
-       [EID_INTERRUPTn+6]                      = "Interrupt6",
-       [EID_INTERRUPTn+7]                      = "Interrupt7",
-       [EID_INTERRUPTn+8]                      = "Interrupt8",
-       [EID_INTERRUPTn+9]                      = "Interrupt9",
-       [EID_INTERRUPTn+10]                     = "Interrupt10",
-       [EID_INTERRUPTn+11]                     = "Interrupt11",
-       [EID_INTERRUPTn+12]                     = "Interrupt12",
-       [EID_INTERRUPTn+13]                     = "Interrupt13",
-       [EID_INTERRUPTn+14]                     = "Interrupt14",
-       [EID_INTERRUPTn+15]                     = "Interrupt15",
-       [EID_INTERRUPTn+16]                     = "Interrupt16",
-       [EID_INTERRUPTn+17]                     = "Interrupt17",
-       [EID_INTERRUPTn+18]                     = "Interrupt18",
-       [EID_INTERRUPTn+19]                     = "Interrupt19",
-       [EID_INTERRUPTn+20]                     = "Interrupt20",
-       [EID_INTERRUPTn+21]                     = "Interrupt21",
-       [EID_INTERRUPTn+22]                     = "Interrupt22",
-       [EID_INTERRUPTn+23]                     = "Interrupt23",
-       [EID_INTERRUPTn+24]                     = "Interrupt24",
-       [EID_INTERRUPTn+25]                     = "Interrupt25",
-       [EID_INTERRUPTn+26]                     = "Interrupt26",
-       [EID_INTERRUPTn+27]                     = "Interrupt27",
-       [EID_INTERRUPTn+28]                     = "Interrupt28",
-       [EID_INTERRUPTn+29]                     = "Interrupt29",
-       [EID_INTERRUPTn+30]                     = "Interrupt30",
-       [EID_INTERRUPTn+31]                     = "Interrupt31",
+       [EID_INTERRUPT_N+0]                     = "Interrupt0",
+       [EID_INTERRUPT_N+1]                     = "Interrupt1",
+       [EID_INTERRUPT_N+2]                     = "Interrupt2",
+       [EID_INTERRUPT_N+3]                     = "Interrupt3",
+       [EID_INTERRUPT_N+4]                     = "Interrupt4",
+       [EID_INTERRUPT_N+5]                     = "Interrupt5",
+       [EID_INTERRUPT_N+6]                     = "Interrupt6",
+       [EID_INTERRUPT_N+7]                     = "Interrupt7",
+       [EID_INTERRUPT_N+8]                     = "Interrupt8",
+       [EID_INTERRUPT_N+9]                     = "Interrupt9",
+       [EID_INTERRUPT_N+10]                    = "Interrupt10",
+       [EID_INTERRUPT_N+11]                    = "Interrupt11",
+       [EID_INTERRUPT_N+12]                    = "Interrupt12",
+       [EID_INTERRUPT_N+13]                    = "Interrupt13",
+       [EID_INTERRUPT_N+14]                    = "Interrupt14",
+       [EID_INTERRUPT_N+15]                    = "Interrupt15",
+       [EID_INTERRUPT_N+16]                    = "Interrupt16",
+       [EID_INTERRUPT_N+17]                    = "Interrupt17",
+       [EID_INTERRUPT_N+18]                    = "Interrupt18",
+       [EID_INTERRUPT_N+19]                    = "Interrupt19",
+       [EID_INTERRUPT_N+20]                    = "Interrupt20",
+       [EID_INTERRUPT_N+21]                    = "Interrupt21",
+       [EID_INTERRUPT_N+22]                    = "Interrupt22",
+       [EID_INTERRUPT_N+23]                    = "Interrupt23",
+       [EID_INTERRUPT_N+24]                    = "Interrupt24",
+       [EID_INTERRUPT_N+25]                    = "Interrupt25",
+       [EID_INTERRUPT_N+26]                    = "Interrupt26",
+       [EID_INTERRUPT_N+27]                    = "Interrupt27",
+       [EID_INTERRUPT_N+28]                    = "Interrupt28",
+       [EID_INTERRUPT_N+29]                    = "Interrupt29",
+       [EID_INTERRUPT_N+30]                    = "Interrupt30",
+       [EID_INTERRUPT_N+31]                    = "Interrupt31",
 };
 
 /*
@@ -472,7 +461,7 @@ static int esirisc_next_breakpoint(struct target *target)
        LOG_DEBUG("-");
 
        for (int bp_index = 0; breakpoints_p < breakpoints_e; ++breakpoints_p, ++bp_index)
-               if (*breakpoints_p == NULL)
+               if (!*breakpoints_p)
                        return bp_index;
 
        return -1;
@@ -504,11 +493,11 @@ static int esirisc_add_breakpoint(struct target *target, struct breakpoint *brea
                return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
        }
 
-       breakpoint->set = bp_index + 1;
+       breakpoint_hw_set(breakpoint, bp_index);
        esirisc->breakpoints_p[bp_index] = breakpoint;
 
        /* specify instruction breakpoint address */
-       retval = esirisc_jtag_write_csr(jtag_info, CSR_DEBUG, CSR_DEBUG_IBAn + bp_index,
+       retval = esirisc_jtag_write_csr(jtag_info, CSR_DEBUG, CSR_DEBUG_IBA_N + bp_index,
                        breakpoint->address);
        if (retval != ERROR_OK) {
                LOG_ERROR("%s: failed to write Debug CSR: IBA", target_name(target));
@@ -539,8 +528,8 @@ static int esirisc_add_breakpoints(struct target *target)
 
        LOG_DEBUG("-");
 
-       while (breakpoint != NULL) {
-               if (breakpoint->set == 0)
+       while (breakpoint) {
+               if (!breakpoint->is_set)
                        esirisc_add_breakpoint(target, breakpoint);
 
                breakpoint = breakpoint->next;
@@ -553,7 +542,7 @@ static int esirisc_remove_breakpoint(struct target *target, struct breakpoint *b
 {
        struct esirisc_common *esirisc = target_to_esirisc(target);
        struct esirisc_jtag *jtag_info = &esirisc->jtag_info;
-       int bp_index = breakpoint->set - 1;
+       unsigned int bp_index = breakpoint->number;
        uint32_t ibc;
        int retval;
 
@@ -575,7 +564,7 @@ static int esirisc_remove_breakpoint(struct target *target, struct breakpoint *b
        }
 
        esirisc->breakpoints_p[bp_index] = NULL;
-       breakpoint->set = 0;
+       breakpoint->is_set = false;
 
        return ERROR_OK;
 }
@@ -608,7 +597,7 @@ static int esirisc_next_watchpoint(struct target *target)
        LOG_DEBUG("-");
 
        for (int wp_index = 0; watchpoints_p < watchpoints_e; ++watchpoints_p, ++wp_index)
-               if (*watchpoints_p == NULL)
+               if (!*watchpoints_p)
                        return wp_index;
 
        return -1;
@@ -630,11 +619,11 @@ static int esirisc_add_watchpoint(struct target *target, struct watchpoint *watc
                return ERROR_FAIL;
        }
 
-       watchpoint->set = wp_index + 1;
+       watchpoint_set(watchpoint, wp_index);
        esirisc->watchpoints_p[wp_index] = watchpoint;
 
        /* specify data breakpoint address */
-       retval = esirisc_jtag_write_csr(jtag_info, CSR_DEBUG, CSR_DEBUG_DBAn + wp_index,
+       retval = esirisc_jtag_write_csr(jtag_info, CSR_DEBUG, CSR_DEBUG_DBA_N + wp_index,
                        watchpoint->address);
        if (retval != ERROR_OK) {
                LOG_ERROR("%s: failed to write Debug CSR: DBA", target_name(target));
@@ -723,8 +712,8 @@ static int esirisc_add_watchpoints(struct target *target)
 
        LOG_DEBUG("-");
 
-       while (watchpoint != NULL) {
-               if (watchpoint->set == 0)
+       while (watchpoint) {
+               if (!watchpoint->is_set)
                        esirisc_add_watchpoint(target, watchpoint);
 
                watchpoint = watchpoint->next;
@@ -737,7 +726,7 @@ static int esirisc_remove_watchpoint(struct target *target, struct watchpoint *w
 {
        struct esirisc_common *esirisc = target_to_esirisc(target);
        struct esirisc_jtag *jtag_info = &esirisc->jtag_info;
-       int wp_index = watchpoint->set - 1;
+       unsigned int wp_index = watchpoint->number;
        uint32_t dbc;
        int retval;
 
@@ -759,7 +748,7 @@ static int esirisc_remove_watchpoint(struct target *target, struct watchpoint *w
        }
 
        esirisc->watchpoints_p[wp_index] = NULL;
-       watchpoint->set = 0;
+       watchpoint->is_set = false;
 
        return ERROR_OK;
 }
@@ -890,7 +879,7 @@ static int esirisc_resume_or_step(struct target *target, int current, target_add
 
        if (handle_breakpoints) {
                breakpoint = breakpoint_find(target, address);
-               if (breakpoint != NULL)
+               if (breakpoint)
                        esirisc_remove_breakpoint(target, breakpoint);
        }
 
@@ -1061,7 +1050,7 @@ static int esirisc_debug_entry(struct target *target)
                        case EID_INST_BREAKPOINT:
                                breakpoint = breakpoint_find(target,
                                                buf_get_u32(esirisc->epc->value, 0, esirisc->epc->size));
-                               target->debug_reason = (breakpoint != NULL) ?
+                               target->debug_reason = (breakpoint) ?
                                                DBG_REASON_BREAKPOINT : DBG_REASON_DBGRQ;
                                break;
 
@@ -1267,7 +1256,7 @@ static const char *esirisc_get_gdb_arch(struct target *target)
         * requires additional configuration to properly interact with these
         * targets in GDB (also see: `esirisc cache_arch`).
         */
-       if (esirisc->gdb_arch == NULL && target_was_examined(target))
+       if (!esirisc->gdb_arch && target_was_examined(target))
                esirisc->gdb_arch = alloc_printf("esirisc:%d_bit_%d_reg_%s",
                                esirisc->num_bits, esirisc->num_regs, esirisc_cache_arch_name(esirisc));
 
@@ -1284,7 +1273,7 @@ static int esirisc_get_gdb_reg_list(struct target *target, struct reg **reg_list
        *reg_list_size = ESIRISC_NUM_REGS;
 
        *reg_list = calloc(*reg_list_size, sizeof(struct reg *));
-       if (*reg_list == NULL)
+       if (!*reg_list)
                return ERROR_FAIL;
 
        if (reg_class == REG_CLASS_ALL)
@@ -1561,7 +1550,7 @@ static int esirisc_target_create(struct target *target, Jim_Interp *interp)
        struct jtag_tap *tap = target->tap;
        struct esirisc_common *esirisc;
 
-       if (tap == NULL)
+       if (!tap)
                return ERROR_FAIL;
 
        if (tap->ir_length != INSTR_LENGTH) {
@@ -1571,7 +1560,7 @@ static int esirisc_target_create(struct target *target, Jim_Interp *interp)
        }
 
        esirisc = calloc(1, sizeof(struct esirisc_common));
-       if (esirisc == NULL)
+       if (!esirisc)
                return ERROR_FAIL;
 
        esirisc->target = target;