target/arm: add cortex-m0 CPU model

Define a "cortex-m0" ARMv6-M CPU model.

Most of the register reset values set by other CPU models are not
relevant for the cut-down ARMv6-M architecture.

Backports commit 191776b96a381b5d2b8d3f90c1c02b3e4779e5f7 from qemu
This commit is contained in:
Stefan Hajnoczi 2018-08-17 14:00:52 -04:00 committed by Lioncash
parent cb11b3a6bd
commit d2f3a6c0d5
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -1007,6 +1007,15 @@ static void arm11mpcore_initfn(struct uc_struct *uc, Object *obj, void *opaque)
cpu->reset_auxcr = 1;
}
static void cortex_m0_initfn(struct uc_struct *uc, Object *obj, void *opaque)
{
ARMCPU *cpu = ARM_CPU(uc, obj);
set_feature(&cpu->env, ARM_FEATURE_V6);
set_feature(&cpu->env, ARM_FEATURE_M);
cpu->midr = 0x410cc200;
}
static void cortex_m3_initfn(struct uc_struct *uc, Object *obj, void *opaque)
{
ARMCPU *cpu = ARM_CPU(uc, obj);
@ -1589,6 +1598,7 @@ static const ARMCPUInfo arm_cpus[] = {
{ "arm1136", arm1136_initfn },
{ "arm1176", arm1176_initfn },
{ "arm11mpcore", arm11mpcore_initfn },
{ "cortex-m0", cortex_m0_initfn, arm_v7m_class_init },
{ "cortex-m3", cortex_m3_initfn, arm_v7m_class_init },
{ "cortex-m4", cortex_m4_initfn, arm_v7m_class_init },
{ "cortex-m33", cortex_m33_initfn, arm_v7m_class_init },