]> git.sur5r.net Git - openocd/blob - src/target/stm8.h
tcl/target/stm32f0x: Allow overriding the Flash bank size
[openocd] / src / target / stm8.h
1 /*
2     OpenOCD STM8 target driver
3     Copyright (C) 2017  Ake Rehnman
4     ake.rehnman(at)gmail.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 3 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 #ifndef OPENOCD_TARGET_STM8_H
21 #define OPENOCD_TARGET_STM8_H
22
23 struct target;
24
25 #define STM8_COMMON_MAGIC       0x53544D38
26 #define STM8_NUM_CORE_REGS 6
27
28 struct stm8_common {
29         uint32_t common_magic;
30         void *arch_info;
31         struct reg_cache *core_cache;
32         uint32_t core_regs[STM8_NUM_CORE_REGS];
33
34         /* working area for fastdata access */
35         struct working_area *fast_data_area;
36
37         bool swim_configured;
38         bool bp_scanned;
39         uint8_t num_hw_bpoints;
40         uint8_t num_hw_bpoints_avail;
41         struct stm8_comparator *hw_break_list;
42         uint32_t blocksize;
43         uint32_t flashstart;
44         uint32_t flashend;
45         uint32_t eepromstart;
46         uint32_t eepromend;
47         uint32_t optionstart;
48         uint32_t optionend;
49         bool enable_step_irq;
50
51         bool enable_stm8l;
52         uint32_t flash_cr2;
53         uint32_t flash_ncr2;
54         uint32_t flash_iapsr;
55         uint32_t flash_dukr;
56         uint32_t flash_pukr;
57
58         /* cc value used for interrupt flags restore */
59         uint32_t cc;
60         bool cc_valid;
61
62         /* register cache to processor synchronization */
63         int (*read_core_reg)(struct target *target, unsigned int num);
64         int (*write_core_reg)(struct target *target, unsigned int num);
65 };
66
67 static inline struct stm8_common *
68 target_to_stm8(struct target *target)
69 {
70         return target->arch_info;
71 }
72
73 const struct command_registration stm8_command_handlers[];
74
75 #endif /* OPENOCD_TARGET_STM8_H */