From patchwork Fri Aug 19 16:58:35 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dave Martin X-Patchwork-Id: 3574 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 8450723F22 for ; Fri, 19 Aug 2011 16:58:53 +0000 (UTC) Received: from mail-gw0-f52.google.com (mail-gw0-f52.google.com [74.125.83.52]) by fiordland.canonical.com (Postfix) with ESMTP id 4B7A2A183D1 for ; Fri, 19 Aug 2011 16:58:53 +0000 (UTC) Received: by gwj15 with SMTP id 15so2587915gwj.11 for ; Fri, 19 Aug 2011 09:58:52 -0700 (PDT) Received: by 10.150.47.2 with SMTP id u2mr2551560ybu.162.1313773132605; Fri, 19 Aug 2011 09:58:52 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.150.157.17 with SMTP id f17cs107286ybe; Fri, 19 Aug 2011 09:58:52 -0700 (PDT) Received: by 10.227.202.9 with SMTP id fc9mr894519wbb.93.1313773130032; Fri, 19 Aug 2011 09:58:50 -0700 (PDT) Received: from mail-ww0-f42.google.com (mail-ww0-f42.google.com [74.125.82.42]) by mx.google.com with ESMTPS id m11si8935037wbh.51.2011.08.19.09.58.49 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 19 Aug 2011 09:58:50 -0700 (PDT) Received-SPF: neutral (google.com: 74.125.82.42 is neither permitted nor denied by best guess record for domain of dave.martin@linaro.org) client-ip=74.125.82.42; Authentication-Results: mx.google.com; spf=neutral (google.com: 74.125.82.42 is neither permitted nor denied by best guess record for domain of dave.martin@linaro.org) smtp.mail=dave.martin@linaro.org Received: by wwe5 with SMTP id 5so630390wwe.1 for ; Fri, 19 Aug 2011 09:58:49 -0700 (PDT) Received: by 10.227.12.18 with SMTP id v18mr1942780wbv.89.1313773129226; Fri, 19 Aug 2011 09:58:49 -0700 (PDT) Received: from e200948.peterhouse.linaro.org (fw-lnat.cambridge.arm.com [217.140.96.63]) by mx.google.com with ESMTPS id eq21sm2719605wbb.52.2011.08.19.09.58.47 (version=SSLv3 cipher=OTHER); Fri, 19 Aug 2011 09:58:48 -0700 (PDT) From: Dave Martin To: patches@arm.linux.org.uk Cc: patches@linaro.org, Dave Martin Subject: [PATCH 1/3] ARM: Make cpu_architecture into a global variable Date: Fri, 19 Aug 2011 17:58:35 +0100 Message-Id: <1313773115-18992-1-git-send-email-dave.martin@linaro.org> X-Mailer: git-send-email 1.7.4.1 The CPU architecture really should not be changing at runtime, so make it a global variable instead of a function. The cpu_architecture() function declared in remains the correct way to read this variable from C code. Signed-off-by: Dave Martin Reviewed-by: Jon Medhurst --- KernelVersion: v3.1-rc1 diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 832888d..4adf71b 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -57,6 +57,7 @@ #ifndef __ASSEMBLY__ +#include #include #include @@ -104,7 +105,7 @@ struct mm_struct; extern void show_pte(struct mm_struct *mm, unsigned long addr); extern void __show_regs(struct pt_regs *); -extern int cpu_architecture(void); +extern int __pure cpu_architecture(void); extern void cpu_init(void); void arm_machine_restart(char mode, const char *cmd); diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 70bca64..1f11472 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include #include @@ -42,6 +44,7 @@ #include #include #include +#include #include #include @@ -115,6 +118,13 @@ struct outer_cache_fns outer_cache __read_mostly; EXPORT_SYMBOL(outer_cache); #endif +/* + * Cached cpu_architecture() result for use by assembler code. + * C code should use the cpu_architecture() function instead of accessing this + * variable directly. + */ +int __cpu_architecture __read_mostly = CPU_ARCH_UNKNOWN; + struct stack { u32 irq[3]; u32 abt[3]; @@ -210,7 +220,7 @@ static const char *proc_arch[] = { "?(17)", }; -int cpu_architecture(void) +static int __get_cpu_architecture(void) { int cpu_arch; @@ -243,6 +253,13 @@ int cpu_architecture(void) return cpu_arch; } +int __pure cpu_architecture(void) +{ + BUG_ON(__cpu_architecture == CPU_ARCH_UNKNOWN); + + return __cpu_architecture; +} + static int cpu_has_aliasing_icache(unsigned int arch) { int aliasing_icache; @@ -413,6 +430,7 @@ static void __init setup_processor(void) } cpu_name = list->cpu_name; + __cpu_architecture = __get_cpu_architecture(); #ifdef MULTI_CPU processor = *list->proc;