All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@codeaurora.org>
To: Will Deacon <will.deacon@arm.com>
Cc: "linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
	Stepan Moskovchenko <stepanm@codeaurora.org>
Subject: Re: [PATCH 2/3] ARM: Detect support for SDIV/UDIV from ISAR0 register
Date: Mon, 18 Mar 2013 10:13:16 -0700	[thread overview]
Message-ID: <51474B2C.6030508@codeaurora.org> (raw)
In-Reply-To: <20130317143624.GE19071@mudshark.cambridge.arm.com>

On 03/17/13 07:36, Will Deacon wrote:
> On Wed, Mar 13, 2013 at 01:32:00AM +0000, Stephen Boyd wrote:
>> The ISAR0 register indicates support for the SDIV and UDIV
>> instructions in both the Thumb and ARM instruction set. Read the
>> register to detect the supported instructions and update the
>> elf_hwcap mask as appropriate. This is better than adding more
>> and more cpuid checks in proc-v7.S for each new cpu variant that
>> supports these instructions.
>>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Cc: Stepan Moskovchenko <stepanm@codeaurora.org>
>> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
>> ---
>>  arch/arm/kernel/setup.c | 20 ++++++++++++++++++++
>>  arch/arm/mm/proc-v7.S   |  4 ++--
>>  2 files changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
>> index e2c8bbf..bd27a70 100644
>> --- a/arch/arm/kernel/setup.c
>> +++ b/arch/arm/kernel/setup.c
>> @@ -353,6 +353,23 @@ void __init early_print(const char *str, ...)
>>  	printk("%s", buf);
>>  }
>>  
>> +static void __init idiv_setup(void)
>> +{
>> +	unsigned int divide_instrs;
>> +
>> +	if (cpu_architecture() < CPU_ARCH_ARMv7)
>> +		return;
>> +
>> +	divide_instrs = (read_cpuid_ext(CPUID_EXT_ISAR0) & 0x0f000000) >> 24;
>> +
>> +	switch (divide_instrs) {
>> +	case 2:
>> +		elf_hwcap |= HWCAP_IDIVA;
>> +	case 1:
>> +		elf_hwcap |= HWCAP_IDIVT;
>> +	}
>> +}
>> +
>>  static void __init feat_v6_fixup(void)
>>  {
>>  	int id = read_cpuid_id();
>> @@ -483,6 +500,9 @@ static void __init setup_processor(void)
>>  	snprintf(elf_platform, ELF_PLATFORM_SIZE, "%s%c",
>>  		 list->elf_name, ENDIANNESS);
>>  	elf_hwcap = list->elf_hwcap;
>> +
>> +	idiv_setup();
> Perhaps give this a more generic name (cpuid_init_hwcaps) so we can add more
> probing later on (we could probe swp, for example).

No problem. Thanks for the review.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/3] ARM: Detect support for SDIV/UDIV from ISAR0 register
Date: Mon, 18 Mar 2013 10:13:16 -0700	[thread overview]
Message-ID: <51474B2C.6030508@codeaurora.org> (raw)
In-Reply-To: <20130317143624.GE19071@mudshark.cambridge.arm.com>

On 03/17/13 07:36, Will Deacon wrote:
> On Wed, Mar 13, 2013 at 01:32:00AM +0000, Stephen Boyd wrote:
>> The ISAR0 register indicates support for the SDIV and UDIV
>> instructions in both the Thumb and ARM instruction set. Read the
>> register to detect the supported instructions and update the
>> elf_hwcap mask as appropriate. This is better than adding more
>> and more cpuid checks in proc-v7.S for each new cpu variant that
>> supports these instructions.
>>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Cc: Stepan Moskovchenko <stepanm@codeaurora.org>
>> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
>> ---
>>  arch/arm/kernel/setup.c | 20 ++++++++++++++++++++
>>  arch/arm/mm/proc-v7.S   |  4 ++--
>>  2 files changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
>> index e2c8bbf..bd27a70 100644
>> --- a/arch/arm/kernel/setup.c
>> +++ b/arch/arm/kernel/setup.c
>> @@ -353,6 +353,23 @@ void __init early_print(const char *str, ...)
>>  	printk("%s", buf);
>>  }
>>  
>> +static void __init idiv_setup(void)
>> +{
>> +	unsigned int divide_instrs;
>> +
>> +	if (cpu_architecture() < CPU_ARCH_ARMv7)
>> +		return;
>> +
>> +	divide_instrs = (read_cpuid_ext(CPUID_EXT_ISAR0) & 0x0f000000) >> 24;
>> +
>> +	switch (divide_instrs) {
>> +	case 2:
>> +		elf_hwcap |= HWCAP_IDIVA;
>> +	case 1:
>> +		elf_hwcap |= HWCAP_IDIVT;
>> +	}
>> +}
>> +
>>  static void __init feat_v6_fixup(void)
>>  {
>>  	int id = read_cpuid_id();
>> @@ -483,6 +500,9 @@ static void __init setup_processor(void)
>>  	snprintf(elf_platform, ELF_PLATFORM_SIZE, "%s%c",
>>  		 list->elf_name, ENDIANNESS);
>>  	elf_hwcap = list->elf_hwcap;
>> +
>> +	idiv_setup();
> Perhaps give this a more generic name (cpuid_init_hwcaps) so we can add more
> probing later on (we could probe swp, for example).

No problem. Thanks for the review.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

  reply	other threads:[~2013-03-18 17:13 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-13  1:31 [PATCH 0/3] Detect UDIV/SDIV support from ISAR0 Stephen Boyd
2013-03-13  1:31 ` Stephen Boyd
2013-03-13  1:31 ` [PATCH 1/3] ARM: Clear IDIVT hwcap if CONFIG_ARM_THUMB=n Stephen Boyd
2013-03-13  1:31   ` Stephen Boyd
2013-03-13  1:31   ` Stephen Boyd
2013-03-17 14:29   ` Will Deacon
2013-03-17 14:29     ` Will Deacon
2013-03-13  1:32 ` [PATCH 2/3] ARM: Detect support for SDIV/UDIV from ISAR0 register Stephen Boyd
2013-03-13  1:32   ` Stephen Boyd
2013-03-17 14:36   ` Will Deacon
2013-03-17 14:36     ` Will Deacon
2013-03-18 17:13     ` Stephen Boyd [this message]
2013-03-18 17:13       ` Stephen Boyd
2013-03-13  1:32 ` [PATCH 3/3] ARM: Work around faulty ISAR0 register in some Krait CPUs Stephen Boyd
2013-03-13  1:32   ` Stephen Boyd
2013-03-17 14:28   ` Will Deacon
2013-03-17 14:28     ` Will Deacon
2013-03-18 17:03     ` Stephen Boyd
2013-03-18 17:03       ` Stephen Boyd
2013-03-18 18:19       ` Will Deacon
2013-03-18 18:19         ` Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51474B2C.6030508@codeaurora.org \
    --to=sboyd@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stepanm@codeaurora.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.