+/* 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
[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",
};
/*
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;
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));
LOG_DEBUG("-");
- while (breakpoint != NULL) {
- if (breakpoint->set == 0)
+ while (breakpoint) {
+ if (!breakpoint->is_set)
esirisc_add_breakpoint(target, breakpoint);
breakpoint = breakpoint->next;
{
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;
}
esirisc->breakpoints_p[bp_index] = NULL;
- breakpoint->set = 0;
+ breakpoint->is_set = false;
return ERROR_OK;
}
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;
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));
LOG_DEBUG("-");
- while (watchpoint != NULL) {
- if (watchpoint->set == 0)
+ while (watchpoint) {
+ if (!watchpoint->is_set)
esirisc_add_watchpoint(target, watchpoint);
watchpoint = watchpoint->next;
{
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;
}
esirisc->watchpoints_p[wp_index] = NULL;
- watchpoint->set = 0;
+ watchpoint->is_set = false;
return ERROR_OK;
}
if (handle_breakpoints) {
breakpoint = breakpoint_find(target, address);
- if (breakpoint != NULL)
+ if (breakpoint)
esirisc_remove_breakpoint(target, breakpoint);
}
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;
* 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));
*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)
struct jtag_tap *tap = target->tap;
struct esirisc_common *esirisc;
- if (tap == NULL)
+ if (!tap)
return ERROR_FAIL;
if (tap->ir_length != INSTR_LENGTH) {
}
esirisc = calloc(1, sizeof(struct esirisc_common));
- if (esirisc == NULL)
+ if (!esirisc)
return ERROR_FAIL;
esirisc->target = target;
}
}
- command_print(CMD_CTX, "esirisc cache_arch %s", esirisc_cache_arch_name(esirisc));
+ command_print(CMD, "esirisc cache_arch %s", esirisc_cache_arch_name(esirisc));
return ERROR_OK;
}
retval = esirisc_flush_caches(target);
- command_print(CMD_CTX, "cache flush %s",
+ command_print(CMD, "cache flush %s",
(retval == ERROR_OK) ? "successful" : "failed");
return retval;
}
for (size_t i = 0; i < ARRAY_SIZE(esirisc_hwdc_masks); ++i)
- command_print(CMD_CTX, "%9s: %s", esirisc_hwdc_masks[i].name,
+ command_print(CMD, "%9s: %s", esirisc_hwdc_masks[i].name,
(esirisc->hwdc_save & esirisc_hwdc_masks[i].mask) ? "enabled" : "disabled");
return ERROR_OK;