target: add Espressif ESP32-S2 basic support
[fw/openocd] / src / target / espressif / esp_xtensa.c
1 /***************************************************************************
2  *   Espressif Xtensa target API for OpenOCD                               *
3  *   Copyright (C) 2019 Espressif Systems Ltd.                             *
4  *   Author: Alexey Gerenkov <alexey@espressif.com>                        *
5  *                                                                         *
6  *   This program is free software; you can redistribute it and/or modify  *
7  *   it under the terms of the GNU General Public License as published by  *
8  *   the Free Software Foundation; either version 2 of the License, or     *
9  *   (at your option) any later version.                                   *
10  *                                                                         *
11  *   This program is distributed in the hope that it will be useful,       *
12  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
13  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
14  *   GNU General Public License for more details.                          *
15  *                                                                         *
16  *   You should have received a copy of the GNU General Public License     *
17  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
18  ***************************************************************************/
19
20 #ifdef HAVE_CONFIG_H
21 #include <config.h>
22 #endif
23
24 #include <stdbool.h>
25 #include <stdint.h>
26 #include <target/smp.h>
27 #include "esp_xtensa.h"
28 #include <target/register.h>
29
30 int esp_xtensa_init_arch_info(struct target *target,
31         struct esp_xtensa_common *esp_xtensa,
32         const struct xtensa_config *xtensa_cfg,
33         struct xtensa_debug_module_config *dm_cfg)
34 {
35         return xtensa_init_arch_info(target, &esp_xtensa->xtensa, xtensa_cfg, dm_cfg);
36 }
37
38 int esp_xtensa_target_init(struct command_context *cmd_ctx, struct target *target)
39 {
40         return xtensa_target_init(cmd_ctx, target);
41 }
42
43 void esp_xtensa_target_deinit(struct target *target)
44 {
45         LOG_DEBUG("start");
46
47         xtensa_target_deinit(target);
48         free(target_to_esp_xtensa(target));     /* same as free(xtensa) */
49 }
50
51 int esp_xtensa_arch_state(struct target *target)
52 {
53         return ERROR_OK;
54 }
55
56 int esp_xtensa_poll(struct target *target)
57 {
58         return xtensa_poll(target);
59 }
60
61 int esp_xtensa_breakpoint_add(struct target *target, struct breakpoint *breakpoint)
62 {
63         return xtensa_breakpoint_add(target, breakpoint);
64         /* flash breakpoints will be handled in another patch */
65 }
66
67 int esp_xtensa_breakpoint_remove(struct target *target, struct breakpoint *breakpoint)
68 {
69         return xtensa_breakpoint_remove(target, breakpoint);
70         /* flash breakpoints will be handled in another patch */
71 }