8026de23287fd5c23f86dd4a7054efd59c653e1d
[fw/openocd] / src / target / mips_m4k.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2
3 /***************************************************************************
4  *   Copyright (C) 2008 by Spencer Oliver                                  *
5  *   spen@spen-soft.co.uk                                                  *
6  *                                                                         *
7  *   Copyright (C) 2008 by David T.L. Wong                                 *
8  *                                                                         *
9  *   Copyright (C) 2011 by Drasko DRASKOVIC                                *
10  *   drasko.draskovic@gmail.com                                            *
11  ***************************************************************************/
12
13 #ifndef OPENOCD_TARGET_MIPS_M4K_H
14 #define OPENOCD_TARGET_MIPS_M4K_H
15
16 struct target;
17
18 #define MIPSM4K_COMMON_MAGIC    0xB321B321U
19
20 struct mips_m4k_common {
21         unsigned int common_magic;
22
23         struct mips32_common mips32;
24
25         bool is_pic32mx;
26 };
27
28 static inline struct mips_m4k_common *
29 target_to_m4k(struct target *target)
30 {
31         return container_of(target->arch_info,
32                         struct mips_m4k_common, mips32);
33 }
34
35 static inline void mips_m4k_isa_filter(enum mips32_isa_imp isa_imp, target_addr_t  *addr)
36 {
37         if (isa_imp <= 1) {     /* if only one isa implemented */
38                 target_addr_t address = (*addr & ~1) | isa_imp;
39
40                 if (address != *addr) {
41                         LOG_USER("Warning: isa bit changed due to isa not implemented");
42                         *addr = address;
43                 }
44         }
45 }
46 extern const struct command_registration mips_m4k_command_handlers[];
47
48 #endif /* OPENOCD_TARGET_MIPS_M4K_H */