OpenOCD
esp_xtensa.c
Go to the documentation of this file.
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 
3 /***************************************************************************
4  * Espressif Xtensa target API for OpenOCD *
5  * Copyright (C) 2019 Espressif Systems Ltd. *
6  ***************************************************************************/
7 
8 #ifdef HAVE_CONFIG_H
9 #include <config.h>
10 #endif
11 
12 #include <stdbool.h>
13 #include <stdint.h>
14 #include <target/smp.h>
15 #include <target/register.h>
16 #include "esp_xtensa.h"
17 #include "esp_semihosting.h"
18 
20  struct esp_xtensa_common *esp_xtensa,
21  struct xtensa_debug_module_config *dm_cfg,
22  const struct esp_semihost_ops *semihost_ops)
23 {
24  int ret = xtensa_init_arch_info(target, &esp_xtensa->xtensa, dm_cfg);
25  if (ret != ERROR_OK)
26  return ret;
27  esp_xtensa->semihost.ops = (struct esp_semihost_ops *)semihost_ops;
28  return ERROR_OK;
29 }
30 
31 int esp_xtensa_target_init(struct command_context *cmd_ctx, struct target *target)
32 {
33  return xtensa_target_init(cmd_ctx, target);
34 }
35 
37 {
38  LOG_DEBUG("start");
39 
41  free(target_to_esp_xtensa(target)); /* same as free(xtensa) */
42 }
43 
45 {
46  return ERROR_OK;
47 }
48 
50 {
51  return xtensa_poll(target);
52 }
53 
55 {
57  /* flash breakpoints will be handled in another patch */
58 }
59 
61 {
63  /* flash breakpoints will be handled in another patch */
64 }
int esp_xtensa_init_arch_info(struct target *target, struct esp_xtensa_common *esp_xtensa, struct xtensa_debug_module_config *dm_cfg, const struct esp_semihost_ops *semihost_ops)
Definition: esp_xtensa.c:19
int esp_xtensa_poll(struct target *target)
Definition: esp_xtensa.c:49
int esp_xtensa_arch_state(struct target *target)
Definition: esp_xtensa.c:44
void esp_xtensa_target_deinit(struct target *target)
Definition: esp_xtensa.c:36
int esp_xtensa_target_init(struct command_context *cmd_ctx, struct target *target)
Definition: esp_xtensa.c:31
int esp_xtensa_breakpoint_remove(struct target *target, struct breakpoint *breakpoint)
Definition: esp_xtensa.c:60
int esp_xtensa_breakpoint_add(struct target *target, struct breakpoint *breakpoint)
Definition: esp_xtensa.c:54
static struct esp_xtensa_common * target_to_esp_xtensa(struct target *target)
Definition: esp_xtensa.h:21
#define LOG_DEBUG(expr ...)
Definition: log.h:109
#define ERROR_OK
Definition: log.h:155
struct esp_semihost_ops * ops
Semihost calls handling operations.
struct esp_semihost_data semihost
Definition: esp_xtensa.h:18
struct xtensa xtensa
Definition: esp_xtensa.h:17
Definition: target.h:120
int xtensa_breakpoint_add(struct target *target, struct breakpoint *breakpoint)
Definition: xtensa.c:2254
void xtensa_target_deinit(struct target *target)
Definition: xtensa.c:2961
int xtensa_poll(struct target *target)
Definition: xtensa.c:2022
int xtensa_breakpoint_remove(struct target *target, struct breakpoint *breakpoint)
Definition: xtensa.c:2298
int xtensa_target_init(struct command_context *cmd_ctx, struct target *target)
Definition: xtensa.c:2895
int xtensa_init_arch_info(struct target *target, struct xtensa *xtensa, const struct xtensa_debug_module_config *dm_cfg)
Definition: xtensa.c:2851