Fix usage of timeval_ms()
First, fix the timeval_ms() implementation to not have K&R but ANSI argument semantics by adding a missing void. timeval_ms() returns an int64_t, not uint64_t or long long. Consistently use int64_t for variables and PRI*64 as format string. While at it, change a few related variables to bool for clarity. Note that timeval_ms() may return a negative error code, but not a single caller checks for that. Change-Id: I27cf83e75b3e9a8913f6c43e98a281bea77aac13 Signed-off-by: Andreas Färber <afaerber@suse.de> Reviewed-on: http://openocd.zylin.com/3499 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
parent
f4496b25e3
commit
f19ac83152
|
@ -371,7 +371,7 @@ static int aduc702x_check_flash_completion(struct target *target, unsigned int t
|
|||
{
|
||||
uint8_t v = 4;
|
||||
|
||||
long long endtime = timeval_ms() + timeout_ms;
|
||||
int64_t endtime = timeval_ms() + timeout_ms;
|
||||
while (1) {
|
||||
target_read_u8(target, ADUC702x_FLASH + ADUC702x_FLASH_FEESTA, &v);
|
||||
if ((v & 4) == 0)
|
||||
|
|
|
@ -551,7 +551,7 @@ static int aducm360_check_flash_completion(struct target *target, unsigned int t
|
|||
{
|
||||
uint32_t v = 1;
|
||||
|
||||
long long endtime = timeval_ms() + timeout_ms;
|
||||
int64_t endtime = timeval_ms() + timeout_ms;
|
||||
while (1) {
|
||||
target_read_u32(target, ADUCM360_FLASH_BASE+ADUCM360_FLASH_FEESTA, &v);
|
||||
if ((v & 0x00000001) == 0)
|
||||
|
|
|
@ -2175,7 +2175,7 @@ static int EFC_PerformCommand(struct sam3_bank_private *pPrivate,
|
|||
|
||||
int r;
|
||||
uint32_t v;
|
||||
long long ms_now, ms_end;
|
||||
int64_t ms_now, ms_end;
|
||||
|
||||
/* default */
|
||||
if (status)
|
||||
|
|
|
@ -1053,7 +1053,7 @@ static int EFC_PerformCommand(struct sam4_bank_private *pPrivate,
|
|||
|
||||
int r;
|
||||
uint32_t v;
|
||||
long long ms_now, ms_end;
|
||||
int64_t ms_now, ms_end;
|
||||
|
||||
/* default */
|
||||
if (status)
|
||||
|
|
|
@ -147,7 +147,7 @@ static int samv_efc_perform_command(struct target *target,
|
|||
{
|
||||
int r;
|
||||
uint32_t v;
|
||||
long long ms_now, ms_end;
|
||||
int64_t ms_now, ms_end;
|
||||
|
||||
if (status)
|
||||
*status = 0;
|
||||
|
|
|
@ -210,14 +210,14 @@ static void jtagspi_read_status(struct flash_bank *bank, uint32_t *status)
|
|||
static int jtagspi_wait(struct flash_bank *bank, int timeout_ms)
|
||||
{
|
||||
uint32_t status;
|
||||
long long t0 = timeval_ms();
|
||||
long long dt;
|
||||
int64_t t0 = timeval_ms();
|
||||
int64_t dt;
|
||||
|
||||
do {
|
||||
dt = timeval_ms() - t0;
|
||||
jtagspi_read_status(bank, &status);
|
||||
if ((status & SPIFLASH_BSY_BIT) == 0) {
|
||||
LOG_DEBUG("waited %lld ms", dt);
|
||||
LOG_DEBUG("waited %" PRId64 " ms", dt);
|
||||
return ERROR_OK;
|
||||
}
|
||||
alive_sleep(1);
|
||||
|
@ -244,14 +244,14 @@ static int jtagspi_bulk_erase(struct flash_bank *bank)
|
|||
{
|
||||
struct jtagspi_flash_bank *info = bank->driver_priv;
|
||||
int retval;
|
||||
long long t0 = timeval_ms();
|
||||
int64_t t0 = timeval_ms();
|
||||
|
||||
retval = jtagspi_write_enable(bank);
|
||||
if (retval != ERROR_OK)
|
||||
return retval;
|
||||
jtagspi_cmd(bank, info->dev->chip_erase_cmd, NULL, NULL, 0);
|
||||
retval = jtagspi_wait(bank, bank->num_sectors*JTAGSPI_MAX_TIMEOUT);
|
||||
LOG_INFO("took %lld ms", timeval_ms() - t0);
|
||||
LOG_INFO("took %" PRId64 " ms", timeval_ms() - t0);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -259,14 +259,14 @@ static int jtagspi_sector_erase(struct flash_bank *bank, int sector)
|
|||
{
|
||||
struct jtagspi_flash_bank *info = bank->driver_priv;
|
||||
int retval;
|
||||
long long t0 = timeval_ms();
|
||||
int64_t t0 = timeval_ms();
|
||||
|
||||
retval = jtagspi_write_enable(bank);
|
||||
if (retval != ERROR_OK)
|
||||
return retval;
|
||||
jtagspi_cmd(bank, info->dev->erase_cmd, &bank->sectors[sector].offset, NULL, 0);
|
||||
retval = jtagspi_wait(bank, JTAGSPI_MAX_TIMEOUT);
|
||||
LOG_INFO("sector %d took %lld ms", sector, timeval_ms() - t0);
|
||||
LOG_INFO("sector %d took %" PRId64 " ms", sector, timeval_ms() - t0);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ static int ssp_setcs(struct target *target, uint32_t io_base, unsigned int value
|
|||
* and the controller is idle. */
|
||||
static int poll_ssp_busy(struct target *target, uint32_t ssp_base, int timeout)
|
||||
{
|
||||
long long endtime;
|
||||
int64_t endtime;
|
||||
uint32_t value;
|
||||
int retval;
|
||||
|
||||
|
@ -325,7 +325,7 @@ static int wait_till_ready(struct flash_bank *bank, int timeout)
|
|||
{
|
||||
uint32_t status;
|
||||
int retval;
|
||||
long long endtime;
|
||||
int64_t endtime;
|
||||
|
||||
endtime = timeval_ms() + timeout;
|
||||
do {
|
||||
|
|
|
@ -160,7 +160,7 @@ FLASH_BANK_COMMAND_HANDLER(stmsmi_flash_bank_command)
|
|||
/* timeout in ms */
|
||||
static int poll_tff(struct target *target, uint32_t io_base, int timeout)
|
||||
{
|
||||
long long endtime;
|
||||
int64_t endtime;
|
||||
|
||||
if (SMI_READ_REG(SMI_SR) & SMI_TFF)
|
||||
return ERROR_OK;
|
||||
|
@ -211,7 +211,7 @@ static int wait_till_ready(struct flash_bank *bank, int timeout)
|
|||
{
|
||||
uint32_t status;
|
||||
int retval;
|
||||
long long endtime;
|
||||
int64_t endtime;
|
||||
|
||||
endtime = timeval_ms() + timeout;
|
||||
do {
|
||||
|
|
|
@ -1173,8 +1173,8 @@ COMMAND_HANDLER(handle_sleep_command)
|
|||
return retval;
|
||||
|
||||
if (!busy) {
|
||||
long long then = timeval_ms();
|
||||
while (timeval_ms() - then < (long long)duration) {
|
||||
int64_t then = timeval_ms();
|
||||
while (timeval_ms() - then < (int64_t)duration) {
|
||||
target_call_timer_callbacks_now();
|
||||
usleep(1000);
|
||||
}
|
||||
|
|
|
@ -45,10 +45,10 @@ int debug_level = -1;
|
|||
static FILE *log_output;
|
||||
static struct log_callback *log_callbacks;
|
||||
|
||||
static long long last_time;
|
||||
static long long current_time;
|
||||
static int64_t last_time;
|
||||
static int64_t current_time;
|
||||
|
||||
static long long start;
|
||||
static int64_t start;
|
||||
|
||||
static const char * const log_strings[5] = {
|
||||
"User : ",
|
||||
|
@ -134,12 +134,12 @@ static void log_puts(enum log_levels level,
|
|||
if (strlen(string) > 0) {
|
||||
if (debug_level >= LOG_LVL_DEBUG) {
|
||||
/* print with count and time information */
|
||||
int t = (int)(timeval_ms()-start);
|
||||
int64_t t = timeval_ms() - start;
|
||||
#ifdef _DEBUG_FREE_SPACE_
|
||||
struct mallinfo info;
|
||||
info = mallinfo();
|
||||
#endif
|
||||
fprintf(log_output, "%s%d %d %s:%d %s()"
|
||||
fprintf(log_output, "%s%d %" PRId64 " %s:%d %s()"
|
||||
#ifdef _DEBUG_FREE_SPACE_
|
||||
" %d"
|
||||
#endif
|
||||
|
@ -410,12 +410,12 @@ void keep_alive()
|
|||
if (gdb_actual_connections)
|
||||
LOG_WARNING("keep_alive() was not invoked in the "
|
||||
"1000ms timelimit. GDB alive packet not "
|
||||
"sent! (%lld). Workaround: increase "
|
||||
"sent! (%" PRId64 "). Workaround: increase "
|
||||
"\"set remotetimeout\" in GDB",
|
||||
current_time-last_time);
|
||||
else
|
||||
LOG_DEBUG("keep_alive() was not invoked in the "
|
||||
"1000ms timelimit (%lld). This may cause "
|
||||
"1000ms timelimit (%" PRId64 "). This may cause "
|
||||
"trouble with GDB connections.",
|
||||
current_time-last_time);
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
/* simple and low overhead fetching of ms counter. Use only
|
||||
* the difference between ms counters returned from this fn.
|
||||
*/
|
||||
int64_t timeval_ms()
|
||||
int64_t timeval_ms(void)
|
||||
{
|
||||
struct timeval now;
|
||||
int retval = gettimeofday(&now, NULL);
|
||||
|
|
|
@ -174,7 +174,7 @@ static int aice_pipe_write(const void *buffer, int count)
|
|||
static int aice_pipe_read(void *buffer, int count)
|
||||
{
|
||||
int n;
|
||||
long long then, cur;
|
||||
int64_t then, cur;
|
||||
|
||||
then = timeval_ms();
|
||||
|
||||
|
|
|
@ -1856,7 +1856,7 @@ static int aice_check_dbger(uint32_t coreid, uint32_t expect_status)
|
|||
if ((i % 30) == 0)
|
||||
keep_alive();
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
if (i == aice_count_to_check_dbger)
|
||||
then = timeval_ms();
|
||||
if (i >= aice_count_to_check_dbger) {
|
||||
|
@ -2997,7 +2997,7 @@ static int aice_usb_step(uint32_t coreid)
|
|||
if (AICE_TARGET_HALTED == state)
|
||||
break;
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
if (i == 30)
|
||||
then = timeval_ms();
|
||||
|
||||
|
|
|
@ -1247,7 +1247,7 @@ COMMAND_HANDLER(handle_wait_srst_deassert)
|
|||
|
||||
LOG_USER("Waiting for srst assert + deassert for at most %dms", timeout_ms);
|
||||
int asserted_yet;
|
||||
long long then = timeval_ms();
|
||||
int64_t then = timeval_ms();
|
||||
while (jtag_srst_asserted(&asserted_yet) == ERROR_OK) {
|
||||
if ((timeval_ms() - then) > timeout_ms) {
|
||||
LOG_ERROR("Timed out");
|
||||
|
|
|
@ -145,8 +145,8 @@ static int zy1000_power_dropout(int *dropout)
|
|||
static void waitSRST(bool asserted)
|
||||
{
|
||||
bool first = true;
|
||||
long long start = 0;
|
||||
long total = 0;
|
||||
int64_t start = 0;
|
||||
int64_t total = 0;
|
||||
const char *mode = asserted ? "assert" : "deassert";
|
||||
|
||||
for (;; ) {
|
||||
|
@ -167,7 +167,7 @@ static void waitSRST(bool asserted)
|
|||
keep_alive();
|
||||
|
||||
if (total > 5000) {
|
||||
LOG_ERROR("SRST took too long to %s: %dms", mode, (int)total);
|
||||
LOG_ERROR("SRST took too long to %s: %" PRId64 "ms", mode, total);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -361,7 +361,7 @@ COMMAND_HANDLER(handle_svf_command)
|
|||
#define SVF_MAX_NUM_OF_OPTIONS 5
|
||||
int command_num = 0;
|
||||
int ret = ERROR_OK;
|
||||
long long time_measure_ms;
|
||||
int64_t time_measure_ms;
|
||||
int time_measure_s, time_measure_m;
|
||||
|
||||
/* use NULL to indicate a "plain" svf file which accounts for
|
||||
|
@ -535,7 +535,7 @@ COMMAND_HANDLER(handle_svf_command)
|
|||
time_measure_s %= 60;
|
||||
if (time_measure_ms < 1000)
|
||||
command_print(CMD_CTX,
|
||||
"\r\nTime used: %dm%ds%lldms ",
|
||||
"\r\nTime used: %dm%ds%" PRId64 "ms ",
|
||||
time_measure_m,
|
||||
time_measure_s,
|
||||
time_measure_ms);
|
||||
|
|
|
@ -357,7 +357,7 @@ static int jtagdp_overrun_check(struct adiv5_dap *dap)
|
|||
int retval;
|
||||
struct dap_cmd *el, *tmp, *prev = NULL;
|
||||
int found_wait = 0;
|
||||
uint64_t time_now;
|
||||
int64_t time_now;
|
||||
LIST_HEAD(replay_list);
|
||||
|
||||
/* make sure all queued transactions are complete */
|
||||
|
|
|
@ -390,7 +390,7 @@ static int arm11_halt(struct target *target)
|
|||
break;
|
||||
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
if (i == 1000)
|
||||
then = timeval_ms();
|
||||
if (i >= 1000) {
|
||||
|
@ -512,7 +512,7 @@ static int arm11_resume(struct target *target, int current,
|
|||
break;
|
||||
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
if (i == 1000)
|
||||
then = timeval_ms();
|
||||
if (i >= 1000) {
|
||||
|
|
|
@ -408,7 +408,7 @@ int arm11_run_instr_no_data(struct arm11_common *arm11,
|
|||
if (flag)
|
||||
break;
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
|
||||
if (i == 1000)
|
||||
then = timeval_ms();
|
||||
|
@ -491,7 +491,7 @@ int arm11_run_instr_data_to_core(struct arm11_common *arm11,
|
|||
|
||||
JTAG_DEBUG("DTR Ready %d nRetry %d", Ready, nRetry);
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
|
||||
if (i == 1000)
|
||||
then = timeval_ms();
|
||||
|
@ -523,7 +523,7 @@ int arm11_run_instr_data_to_core(struct arm11_common *arm11,
|
|||
JTAG_DEBUG("DTR Data %08x Ready %d nRetry %d",
|
||||
(unsigned) Data, Ready, nRetry);
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
|
||||
if (i == 1000)
|
||||
then = timeval_ms();
|
||||
|
@ -787,7 +787,7 @@ int arm11_run_instr_data_from_core(struct arm11_common *arm11,
|
|||
JTAG_DEBUG("DTR Data %08x Ready %d nRetry %d",
|
||||
(unsigned) Data, Ready, nRetry);
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
|
||||
if (i == 1000)
|
||||
then = timeval_ms();
|
||||
|
@ -922,7 +922,7 @@ int arm11_sc7_run(struct arm11_common *arm11, struct arm11_sc7_action *actions,
|
|||
if (Ready)
|
||||
break;
|
||||
|
||||
long long then = 0;
|
||||
int64_t then = 0;
|
||||
|
||||
if (i_n == 1000)
|
||||
then = timeval_ms();
|
||||
|
|
|
@ -336,7 +336,7 @@ static int arm720t_soft_reset_halt(struct target *target)
|
|||
if (retval != ERROR_OK)
|
||||
return retval;
|
||||
|
||||
long long then = timeval_ms();
|
||||
int64_t then = timeval_ms();
|
||||
int timeout;
|
||||
while (!(timeout = ((timeval_ms()-then) > 1000))) {
|
||||
if (buf_get_u32(dbg_stat->value, EICE_DBG_STATUS_DBGACK, 1) == 0) {
|
||||
|
|
|
@ -634,8 +634,8 @@ int arm7_9_execute_sys_speed(struct target *target)
|
|||
if (retval != ERROR_OK)
|
||||
return retval;
|
||||
|
||||
long long then = timeval_ms();
|
||||
int timeout;
|
||||
int64_t then = timeval_ms();
|
||||
bool timeout;
|
||||
while (!(timeout = ((timeval_ms()-then) > 1000))) {
|
||||
/* read debug status register */
|
||||
embeddedice_read_reg(dbg_stat);
|
||||
|
|
|
@ -751,8 +751,8 @@ int arm920t_soft_reset_halt(struct target *target)
|
|||
if (retval != ERROR_OK)
|
||||
return retval;
|
||||
|
||||
long long then = timeval_ms();
|
||||
int timeout;
|
||||
int64_t then = timeval_ms();
|
||||
bool timeout;
|
||||
while (!(timeout = ((timeval_ms()-then) > 1000))) {
|
||||
if (buf_get_u32(dbg_stat->value, EICE_DBG_STATUS_DBGACK, 1) == 0) {
|
||||
embeddedice_read_reg(dbg_stat);
|
||||
|
|
|
@ -87,7 +87,7 @@ static int arm926ejs_cp15_read(struct target *target, uint32_t op1, uint32_t op2
|
|||
|
||||
jtag_add_dr_scan(jtag_info->tap, 4, fields, TAP_IDLE);
|
||||
|
||||
long long then = timeval_ms();
|
||||
int64_t then = timeval_ms();
|
||||
|
||||
for (;;) {
|
||||
/* rescan with NOP, to wait for the access to complete */
|
||||
|
@ -173,7 +173,7 @@ static int arm926ejs_cp15_write(struct target *target, uint32_t op1, uint32_t op
|
|||
|
||||
jtag_add_dr_scan(jtag_info->tap, 4, fields, TAP_IDLE);
|
||||
|
||||
long long then = timeval_ms();
|
||||
int64_t then = timeval_ms();
|
||||
|
||||
for (;;) {
|
||||
/* rescan with NOP, to wait for the access to complete */
|
||||
|
@ -546,7 +546,7 @@ int arm926ejs_soft_reset_halt(struct target *target)
|
|||
if (retval != ERROR_OK)
|
||||
return retval;
|
||||
|
||||
long long then = timeval_ms();
|
||||
int64_t then = timeval_ms();
|
||||
int timeout;
|
||||
while (!(timeout = ((timeval_ms()-then) > 1000))) {
|
||||
if (buf_get_u32(dbg_stat->value, EICE_DBG_STATUS_DBGACK, 1) == 0) {
|
||||
|
|
|
@ -86,7 +86,7 @@ struct mips32_pracc_context {
|
|||
static int wait_for_pracc_rw(struct mips_ejtag *ejtag_info, uint32_t *ctrl)
|
||||
{
|
||||
uint32_t ejtag_ctrl;
|
||||
long long then = timeval_ms();
|
||||
int64_t then = timeval_ms();
|
||||
|
||||
/* wait for the PrAcc to become "1" */
|
||||
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL);
|
||||
|
@ -100,7 +100,7 @@ static int wait_for_pracc_rw(struct mips_ejtag *ejtag_info, uint32_t *ctrl)
|
|||
if (ejtag_ctrl & EJTAG_CTRL_PRACC)
|
||||
break;
|
||||
|
||||
int timeout = timeval_ms() - then;
|
||||
int64_t timeout = timeval_ms() - then;
|
||||
if (timeout > 1000) {
|
||||
LOG_DEBUG("DEBUGMODULE: No memory access in progress!");
|
||||
return ERROR_JTAG_DEVICE_ERROR;
|
||||
|
|
|
@ -532,7 +532,7 @@ int target_poll(struct target *target)
|
|||
if (target->state == TARGET_HALTED)
|
||||
target->halt_issued = false;
|
||||
else {
|
||||
long long t = timeval_ms() - target->halt_issued_time;
|
||||
int64_t t = timeval_ms() - target->halt_issued_time;
|
||||
if (t > DEFAULT_HALT_TIMEOUT) {
|
||||
target->halt_issued = false;
|
||||
LOG_INFO("Halt timed out, wake up GDB.");
|
||||
|
@ -2446,9 +2446,9 @@ static int sense_handler(void)
|
|||
if (powerRestored)
|
||||
runPowerRestore = 1;
|
||||
|
||||
long long current = timeval_ms();
|
||||
static long long lastPower;
|
||||
int waitMore = lastPower + 2000 > current;
|
||||
int64_t current = timeval_ms();
|
||||
static int64_t lastPower;
|
||||
bool waitMore = lastPower + 2000 > current;
|
||||
if (powerDropout && !waitMore) {
|
||||
runPowerDropout = 1;
|
||||
lastPower = current;
|
||||
|
@ -2461,7 +2461,7 @@ static int sense_handler(void)
|
|||
int srstDeasserted;
|
||||
srstDeasserted = prevSrstAsserted && !srstAsserted;
|
||||
|
||||
static long long lastSrst;
|
||||
static int64_t lastSrst;
|
||||
waitMore = lastSrst + 2000 > current;
|
||||
if (srstDeasserted && !waitMore) {
|
||||
runSrstDeasserted = 1;
|
||||
|
@ -2771,8 +2771,8 @@ COMMAND_HANDLER(handle_wait_halt_command)
|
|||
int target_wait_state(struct target *target, enum target_state state, int ms)
|
||||
{
|
||||
int retval;
|
||||
long long then = 0, cur;
|
||||
int once = 1;
|
||||
int64_t then = 0, cur;
|
||||
bool once = true;
|
||||
|
||||
for (;;) {
|
||||
retval = target_poll(target);
|
||||
|
@ -2782,7 +2782,7 @@ int target_wait_state(struct target *target, enum target_state state, int ms)
|
|||
break;
|
||||
cur = timeval_ms();
|
||||
if (once) {
|
||||
once = 0;
|
||||
once = false;
|
||||
then = timeval_ms();
|
||||
LOG_DEBUG("waiting for target %s...",
|
||||
Jim_Nvp_value2name_simple(nvp_target_state, state)->name);
|
||||
|
@ -5664,7 +5664,7 @@ COMMAND_HANDLER(handle_fast_load_command)
|
|||
return ERROR_FAIL;
|
||||
}
|
||||
int i;
|
||||
int ms = timeval_ms();
|
||||
int64_t ms = timeval_ms();
|
||||
int size = 0;
|
||||
int retval = ERROR_OK;
|
||||
for (i = 0; i < fastload_num; i++) {
|
||||
|
@ -5678,7 +5678,7 @@ COMMAND_HANDLER(handle_fast_load_command)
|
|||
size += fastload[i].length;
|
||||
}
|
||||
if (retval == ERROR_OK) {
|
||||
int after = timeval_ms();
|
||||
int64_t after = timeval_ms();
|
||||
command_print(CMD_CTX, "Loaded image %f kBytes/s", (float)(size/1024.0)/((float)(after-ms)/1000.0));
|
||||
}
|
||||
return retval;
|
||||
|
|
|
@ -175,7 +175,7 @@ struct target {
|
|||
int display; /* display async info in telnet session. Do not display
|
||||
* lots of halted/resumed info when stepping in debugger. */
|
||||
bool halt_issued; /* did we transition to halted state? */
|
||||
long long halt_issued_time; /* Note time when halt was issued */
|
||||
int64_t halt_issued_time; /* Note time when halt was issued */
|
||||
|
||||
bool dbgbase_set; /* By default the debug base is not set */
|
||||
uint32_t dbgbase; /* Really a Cortex-A specific option, but there is no
|
||||
|
|
Loading…
Reference in New Issue