+// SPDX-License-Identifier: GPL-2.0-or-later
+
/***************************************************************************
* Copyright (C) 2011 by STEricsson *
* Heythem Bouhaja heythem.bouhaja@stericsson.com : creation *
* Michel JAOUEN michel.jaouen@stericsson.com : adaptation to rtos *
- * *
- * 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
#include "rtos.h"
#include "rtos_standard_stackings.h"
#include <target/register.h>
+#include <target/smp.h>
#include "server/gdb_server.h"
#define LINUX_USER_KERNEL_BORDER 0xc0000000
target->rtos->rtos_specific_params;
uint32_t pa = (address & linux_os->phys_mask) + linux_os->phys_base;
#endif
- if (address < 0xc000000) {
+ if (address < 0xc0000000) {
LOG_ERROR("linux awareness : address in user space");
return ERROR_FAIL;
}
/* search target to perform the access */
struct reg **gdb_reg_list;
struct target_list *head;
- head = target->head;
found = 0;
- do {
+ foreach_smp_target(head, target->smp_targets) {
if (head->target->coreid == next->core_id) {
-
target = head->target;
found = 1;
- } else
- head = head->next;
-
- } while ((head != (struct target_list *)NULL) && (found == 0));
+ break;
+ }
+ }
if (found == 0) {
LOG_ERROR
static int get_current(struct target *target, int create)
{
struct target_list *head;
- head = target->head;
uint8_t *buf;
uint32_t val;
uint32_t ti_addr;
ctt = ctt->next;
}
- while (head != (struct target_list *)NULL) {
+ foreach_smp_target(head, target->smp_targets) {
struct reg **reg_list;
int reg_list_size;
int retval;
}
free(reg_list);
- head = head->next;
}
free(buffer);
struct linux_os *os_linux =
(struct linux_os *)rtos->rtos_specific_params;
struct current_thread *ct;
- head = target->head;
- while (head != (struct target_list *)NULL) {
+ foreach_smp_target(head, target->smp_targets) {
if (head->target->rtos != rtos) {
struct linux_os *smp_os_linux =
(struct linux_os *)head->target->rtos->rtos_specific_params;
os_linux->nr_cpus++;
free(smp_os_linux);
}
-
- head = head->next;
}
return ERROR_OK;