|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/4] xen/arm: introduce Cortex-A7 support
Ian Campbell wrote:
> On Fri, 2013-05-31 at 20:53 +0800, Bamvor Jian Zhang wrote:
>> diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
>> index 0588d54..d3b849b 100644
>> --- a/xen/arch/arm/arm32/head.S
>> +++ b/xen/arch/arm/arm32/head.S
>> @@ -20,6 +20,7 @@
>> #include <asm/config.h>
>> #include <asm/page.h>
>> #include <asm/processor-ca15.h>
>> +#include <asm/processor-ca7.h>
>> #include <asm/asm_defns.h>
>>
>> #define ZIMAGE_MAGIC_NUMBER 0x016f2818
>> @@ -195,8 +196,18 @@ skip_bss:
>> /* Is this a Cortex A15? */
>> ldr r1, =(CORTEX_A15_ID)
>> teq r0, r1
>> + bne test_ca7
>> bleq cortex_a15_init
>> + PRINT("- cortex-a15 init done -\r\n")
>> + b cpu_init_done
>> + /* Is this a Cortex A7? */
>> +test_ca7:
>> + ldr r1, =(CORTEX_A7_ID)
>> + teq r0, r1
>> + bleq cortex_a7_init
>> + PRINT("- cortex-a7 init done -\r\n")
>
> I think now that we have a second processor here it is time to go for a
> more scalable approach. A linker table driven thing, similar to what
> Julien did for the platform (PLATFORM_START et al) or the Linux proc
> table thing seems like the right answer. At the moment it would just
> contain the MIDR mask and match values plus an optional init function
> pointer, in time I suspect it will grow other functionality.
got it. how about add something like __lookup_processor_type and proc-xxx.S
like linux kernel.
>
>> +cpu_init_done:
>> /* Set up memory attribute type tables */
>> ldr r0, =MAIR0VAL
>> ldr r1, =MAIR1VAL
>> diff --git a/xen/arch/arm/arm32/proc-ca7.S b/xen/arch/arm/arm32/proc-ca7.S
>> new file mode 100644
>> index 0000000..e0c1bc2
>> --- /dev/null
>> +++ b/xen/arch/arm/arm32/proc-ca7.S
>> @@ -0,0 +1,36 @@
>> +/*
>> + * xen/arch/arm/proc-ca7.S
>> + *
>> + * Cortex A7 specific initializations
>> + *
>> + * Bamvor Jian Zhang <bjzhang@xxxxxxxx>
>> + * Copyright (c) 2013 SUSE
>> + *
>> + * 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.
>> + */
>> +
>> +#include <asm/asm_defns.h>
>> +#include <asm/processor-ca7.h>
>> +
>> +.globl cortex_a7_init
>> +cortex_a7_init:
>> + /* Set up the SMP bit in ACTLR */
>> + mrc CP32(r0, ACTLR)
>> + orr r0, r0, #(ACTLR_CA7_SMP) /* enable SMP bit */
>> + mcr CP32(r0, ACTLR)
>> + mov pc, lr
>> +
>> +/*
>> + * Local variables:
>> + * mode: ASM
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>> diff --git a/xen/include/asm-arm/processor-ca7.h
>> b/xen/include/asm-arm/processor-ca7.h
>> new file mode 100644
>> index 0000000..b773c34
>> --- /dev/null
>> +++ b/xen/include/asm-arm/processor-ca7.h
>> @@ -0,0 +1,25 @@
>> +#ifndef __ASM_ARM_PROCESSOR_CA7_H
>> +#define __ASM_ARM_PROCESSOR_CA7_H
>> +
>> +
>> +#define CORTEX_A7_ID (0x410FC070)
>> +
>> +/* ACTLR Auxiliary Control Register, Cortex A7 */
>> +#define ACTLR_CA7_DDI (1<<28)
>> +#define ACTLR_CA7_DDVM (1<<15)
>> +/* 2 bits */
>> +#define ACTLR_CA7_L1PCTL (1<<13)
>> +#define ACTLR_CA7_L1RADIS (1<<12)
>> +#define ACTLR_CA7_L2RADIS (1<<11)
>> +#define ACTLR_CA7_DODMBS (1<<10)
>> +#define ACTLR_CA7_SMP (1<<6)
>
> Is the content of this register really different between A7 and A15?
only SMP bit is same. ACTLR is a implementation defined register.
> At least CA7_SMP is the same as CA15_SMP, which suggests we could share
> the init function (to set the SMP bit) and have both a7 and a15 in the
> same proc-v7.S file.
Ok. i will add proc-v7.S. although i do not know whether a12 is same or not.
we could deal with that later.
>> +
>> +#endif /* __ASM_ARM_PROCESSOR_CA7_H */
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |