ARMv7-M: start using "struct arm"
This sets up a few of the core "struct arm" data structures so they can be used with ARMv7-M cores. Specifically, it: - defines new ARM core_modes to match the microcontroller modes (e.g. HANDLER not IRQ, and two types of thread mode); - Establishes a new microcontroller "core_type", which can be used to make sure v7-M (and v6-M) cores are handled right; - adds "struct arm" to "struct armv7m" and arranges for the target_to_armv7m() converter to use it; - sets up the arm.core_cache and arm.cpsr values - makes the Cortex-M3 code maintain arm.map and arm.core_mode. This is currently set up as a parallel data structure, primarily to minimize special cases for the semihosting support with microcontroller profile cores. Later patches can rip out the duplicative ARMv7-M support and start reusing core ARM code. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
@@ -100,6 +100,8 @@ enum
|
||||
|
||||
struct armv7m_common
|
||||
{
|
||||
struct arm arm;
|
||||
|
||||
int common_magic;
|
||||
struct reg_cache *core_cache;
|
||||
enum armv7m_mode core_mode;
|
||||
@@ -128,7 +130,7 @@ struct armv7m_common
|
||||
static inline struct armv7m_common *
|
||||
target_to_armv7m(struct target *target)
|
||||
{
|
||||
return target->arch_info;
|
||||
return container_of(target->arch_info, struct armv7m_common, arm);
|
||||
}
|
||||
|
||||
static inline bool is_armv7m(struct armv7m_common *armv7m)
|
||||
|
||||
Reference in New Issue
Block a user