target: don't export local symbols
[fw/openocd] / src / target / arm.h
index 3450260f08c5243f8086716610caa2d7008cb991..de46ffb4b90b266fa042f26705e675450944714b 100644 (file)
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
 /*
  * Copyright (C) 2005 by Dominic Rath
  * Dominic.Rath@gmx.de
  *
  * Copyright (C) 2018 by Liviu Ionescu
  *   <ilg@livius.net>
- *
- * 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/>.
  */
 
 #ifndef OPENOCD_TARGET_ARM_H
@@ -60,6 +49,15 @@ enum arm_core_type {
        ARM_CORE_TYPE_M_PROFILE,
 };
 
+/** ARM Architecture specifying the version and the profile */
+enum arm_arch {
+       ARM_ARCH_UNKNOWN,
+       ARM_ARCH_V4,
+       ARM_ARCH_V6M,
+       ARM_ARCH_V7M,
+       ARM_ARCH_V8M,
+};
+
 /**
  * Represent state of an ARM core.
  *
@@ -157,7 +155,7 @@ enum arm_vfp_version {
        ARM_VFP_V3,
 };
 
-#define ARM_COMMON_MAGIC 0x0A450A45
+#define ARM_COMMON_MAGIC 0x0A450A45U
 
 /**
  * Represents a generic ARM core, with standard application registers.
@@ -167,7 +165,8 @@ enum arm_vfp_version {
  * registers as traditional ARM cores, and only support Thumb2 instructions.
  */
 struct arm {
-       int common_magic;
+       unsigned int common_magic;
+
        struct reg_cache *core_cache;
 
        /** Handle to the PC; valid in all core modes. */
@@ -191,11 +190,8 @@ struct arm {
        /** Record the current core state: ARM, Thumb, or otherwise. */
        enum arm_state core_state;
 
-       /** Flag reporting unavailability of the BKPT instruction. */
-       bool is_armv4;
-
-       /** Flag reporting armv6m based core. */
-       bool is_armv6m;
+       /** ARM architecture version */
+       enum arm_arch arch;
 
        /** Floating point or VFP version, 0 if disabled. */
        int arm_vfp_version;
@@ -225,13 +221,13 @@ struct arm {
        /** Read coprocessor register.  */
        int (*mrc)(struct target *target, int cpnum,
                        uint32_t op1, uint32_t op2,
-                       uint32_t CRn, uint32_t CRm,
+                       uint32_t crn, uint32_t crm,
                        uint32_t *value);
 
        /** Write coprocessor register.  */
        int (*mcr)(struct target *target, int cpnum,
                        uint32_t op1, uint32_t op2,
-                       uint32_t CRn, uint32_t CRm,
+                       uint32_t crn, uint32_t crm,
                        uint32_t value);
 
        void *arch_info;
@@ -246,18 +242,18 @@ struct arm {
 /** Convert target handle to generic ARM target state handle. */
 static inline struct arm *target_to_arm(struct target *target)
 {
-       assert(target != NULL);
+       assert(target);
        return target->arch_info;
 }
 
 static inline bool is_arm(struct arm *arm)
 {
-       assert(arm != NULL);
+       assert(arm);
        return arm->common_magic == ARM_COMMON_MAGIC;
 }
 
 struct arm_algorithm {
-       int common_magic;
+       unsigned int common_magic;
 
        enum arm_mode core_mode;
        enum arm_state core_state;
@@ -277,6 +273,7 @@ void arm_free_reg_cache(struct arm *arm);
 struct reg_cache *armv8_build_reg_cache(struct target *target);
 
 extern const struct command_registration arm_command_handlers[];
+extern const struct command_registration arm_all_profiles_command_handlers[];
 
 int arm_arch_state(struct target *target);
 const char *arm_get_gdb_arch(struct target *target);
@@ -313,7 +310,4 @@ void arm_set_cpsr(struct arm *arm, uint32_t cpsr);
 struct reg *arm_reg_current(struct arm *arm, unsigned regnum);
 struct reg *armv8_reg_current(struct arm *arm, unsigned regnum);
 
-extern struct reg arm_gdb_dummy_fp_reg;
-extern struct reg arm_gdb_dummy_fps_reg;
-
 #endif /* OPENOCD_TARGET_ARM_H */