From d33c43ac185e2921e0f541872719588c3d491c60 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Tue, 15 Apr 2014 15:38:39 +0200 Subject: ARM: make xscale iwmmxt code multiplatform aware In a multiplatform configuration, we may end up building a kernel for both Marvell PJ1 and an ARMv4 CPU implementation. In that case, the xscale-cp0 code is built with gcc -march=armv4{,t}, which results in a build error from the coprocessor instructions. Since we know this code will only have to run on an actual xscale processor, we can simply build the entire file for ARMv5TE. Related to this, we need to handle the iWMMXT initialization sequence differently during boot, to ensure we don't try to touch xscale specific registers on other CPUs from the xscale_cp0_init initcall. cpu_is_xscale() used to be hardcoded to '1' in any configuration that enables any XScale-compatible core, but this breaks once we can have a combined kernel with MMP1 and something else. In this patch, I replace the existing cpu_is_xscale() macro with a new cpu_is_xscale_family() macro that evaluates true for xscale, xsc3 and mohawk, which makes the behavior more deterministic. The two existing users of cpu_is_xscale() are modified accordingly, but slightly change behavior for kernels that enable CPU_MOHAWK without also enabling CPU_XSCALE or CPU_XSC3. Previously, these would leave leave PMD_BIT4 in the page tables untouched, now they clear it as we've always done for kernels that enable both MOHAWK and the support for the older CPU types. Since the previous behavior was inconsistent, I assume it was unintentional. Signed-off-by: Arnd Bergmann --- arch/arm/kernel/xscale-cp0.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'arch/arm/kernel') diff --git a/arch/arm/kernel/xscale-cp0.c b/arch/arm/kernel/xscale-cp0.c index bdbb8853a19b..77a2eef72115 100644 --- a/arch/arm/kernel/xscale-cp0.c +++ b/arch/arm/kernel/xscale-cp0.c @@ -15,6 +15,9 @@ #include #include #include +#include + +asm(" .arch armv5te\n"); static inline void dsp_save_state(u32 *state) { @@ -152,6 +155,10 @@ static int __init xscale_cp0_init(void) { u32 cp_access; + /* do not attempt to probe iwmmxt on non-xscale family CPUs */ + if (!cpu_is_xscale_family()) + return 0; + cp_access = xscale_cp_access_read() & ~3; xscale_cp_access_write(cp_access | 1); -- cgit v1.2.3 From 75305275a721d33ae9abfaeed2817cec8b2fee9a Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Sun, 15 Nov 2015 10:39:53 +0900 Subject: ARM: use const and __initconst for smp_operations These smp_operations structures are not over-written, so add "const" qualifier and replace __initdata with __initconst. Also, add "static" where it is possible. Signed-off-by: Masahiro Yamada Acked-by: Krzysztof Kozlowski Acked-by: Maxime Ripard Acked-by: Moritz Fischer Acked-by: Stephen Boyd # qcom part Acked-by: Viresh Kumar Acked-by: Patrice Chotard Acked-by: Heiko Stuebner Acked-by: Wei Xu Acked-by: Florian Fainelli Acked-by: Sebastian Hesselbarth Acked-by: Gregory CLEMENT Acked-by: Shawn Guo Acked-by: Matthias Brugger Acked-by: Thierry Reding Acked-by: Nicolas Pitre Acked-by: Liviu Dudau Acked-by: Linus Walleij Signed-off-by: Arnd Bergmann --- arch/arm/common/mcpm_platsmp.c | 2 +- arch/arm/include/asm/psci.h | 2 +- arch/arm/kernel/psci_smp.c | 2 +- arch/arm/mach-alpine/platsmp.c | 2 +- arch/arm/mach-axxia/platsmp.c | 2 +- arch/arm/mach-bcm/bcm63xx_smp.c | 2 +- arch/arm/mach-bcm/kona_smp.c | 2 +- arch/arm/mach-bcm/platsmp-brcmstb.c | 2 +- arch/arm/mach-berlin/platsmp.c | 2 +- arch/arm/mach-exynos/common.h | 2 +- arch/arm/mach-exynos/platsmp.c | 2 +- arch/arm/mach-hisi/platmcpm.c | 2 +- arch/arm/mach-hisi/platsmp.c | 6 +++--- arch/arm/mach-imx/common.h | 4 ++-- arch/arm/mach-imx/platsmp.c | 4 ++-- arch/arm/mach-keystone/keystone.h | 2 +- arch/arm/mach-keystone/platsmp.c | 2 +- arch/arm/mach-mediatek/platsmp.c | 4 ++-- arch/arm/mach-mvebu/armada-370-xp.h | 2 +- arch/arm/mach-mvebu/platsmp-a9.c | 4 ++-- arch/arm/mach-mvebu/platsmp.c | 2 +- arch/arm/mach-omap2/common.h | 2 +- arch/arm/mach-omap2/omap-smp.c | 2 +- arch/arm/mach-prima2/common.h | 2 +- arch/arm/mach-prima2/platsmp.c | 2 +- arch/arm/mach-qcom/platsmp.c | 6 +++--- arch/arm/mach-realview/core.h | 2 +- arch/arm/mach-realview/platsmp.c | 2 +- arch/arm/mach-rockchip/platsmp.c | 2 +- arch/arm/mach-shmobile/r8a7779.h | 2 +- arch/arm/mach-shmobile/r8a7790.h | 2 +- arch/arm/mach-shmobile/r8a7791.h | 2 +- arch/arm/mach-shmobile/setup-emev2.c | 2 +- arch/arm/mach-shmobile/sh73a0.h | 2 +- arch/arm/mach-shmobile/smp-emev2.c | 2 +- arch/arm/mach-shmobile/smp-r8a7779.c | 2 +- arch/arm/mach-shmobile/smp-r8a7790.c | 2 +- arch/arm/mach-shmobile/smp-r8a7791.c | 2 +- arch/arm/mach-shmobile/smp-sh73a0.c | 2 +- arch/arm/mach-socfpga/platsmp.c | 4 ++-- arch/arm/mach-spear/generic.h | 2 +- arch/arm/mach-spear/platsmp.c | 2 +- arch/arm/mach-sti/platsmp.c | 2 +- arch/arm/mach-sti/smp.h | 2 +- arch/arm/mach-sunxi/platsmp.c | 4 ++-- arch/arm/mach-tegra/common.h | 2 +- arch/arm/mach-tegra/platsmp.c | 2 +- arch/arm/mach-uniphier/platsmp.c | 2 +- arch/arm/mach-ux500/platsmp.c | 2 +- arch/arm/mach-vexpress/core.h | 2 +- arch/arm/mach-vexpress/platsmp.c | 2 +- arch/arm/mach-zx/platsmp.c | 2 +- arch/arm/mach-zynq/common.h | 2 +- arch/arm/mach-zynq/platsmp.c | 2 +- 54 files changed, 64 insertions(+), 64 deletions(-) (limited to 'arch/arm/kernel') diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c index 2b25b6038f66..c773157646d3 100644 --- a/arch/arm/common/mcpm_platsmp.c +++ b/arch/arm/common/mcpm_platsmp.c @@ -83,7 +83,7 @@ static void mcpm_cpu_die(unsigned int cpu) #endif -static struct smp_operations __initdata mcpm_smp_ops = { +static const struct smp_operations mcpm_smp_ops __initconst = { .smp_boot_secondary = mcpm_boot_secondary, .smp_secondary_init = mcpm_secondary_init, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h index 68ee3ce17b82..97735a8ff451 100644 --- a/arch/arm/include/asm/psci.h +++ b/arch/arm/include/asm/psci.h @@ -14,7 +14,7 @@ #ifndef __ASM_ARM_PSCI_H #define __ASM_ARM_PSCI_H -extern struct smp_operations psci_smp_ops; +extern const struct smp_operations psci_smp_ops; #ifdef CONFIG_ARM_PSCI bool psci_smp_available(void); diff --git a/arch/arm/kernel/psci_smp.c b/arch/arm/kernel/psci_smp.c index 9d479b2ea40d..cb3fcaeb2233 100644 --- a/arch/arm/kernel/psci_smp.c +++ b/arch/arm/kernel/psci_smp.c @@ -120,7 +120,7 @@ bool __init psci_smp_available(void) return (psci_ops.cpu_on != NULL); } -struct smp_operations __initdata psci_smp_ops = { +const struct smp_operations psci_smp_ops __initconst = { .smp_boot_secondary = psci_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU .cpu_disable = psci_cpu_disable, diff --git a/arch/arm/mach-alpine/platsmp.c b/arch/arm/mach-alpine/platsmp.c index f78429f48bd6..dd77ea25e7ca 100644 --- a/arch/arm/mach-alpine/platsmp.c +++ b/arch/arm/mach-alpine/platsmp.c @@ -42,7 +42,7 @@ static void __init alpine_smp_prepare_cpus(unsigned int max_cpus) alpine_cpu_pm_init(); } -static struct smp_operations alpine_smp_ops __initdata = { +static const struct smp_operations alpine_smp_ops __initconst = { .smp_prepare_cpus = alpine_smp_prepare_cpus, .smp_boot_secondary = alpine_boot_secondary, }; diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c index 959d4df3d2b6..ffbd71d45008 100644 --- a/arch/arm/mach-axxia/platsmp.c +++ b/arch/arm/mach-axxia/platsmp.c @@ -82,7 +82,7 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus) } } -static struct smp_operations axxia_smp_ops __initdata = { +static const struct smp_operations axxia_smp_ops __initconst = { .smp_prepare_cpus = axxia_smp_prepare_cpus, .smp_boot_secondary = axxia_boot_secondary, }; diff --git a/arch/arm/mach-bcm/bcm63xx_smp.c b/arch/arm/mach-bcm/bcm63xx_smp.c index 19be90421f4d..9b6727ed68cd 100644 --- a/arch/arm/mach-bcm/bcm63xx_smp.c +++ b/arch/arm/mach-bcm/bcm63xx_smp.c @@ -161,7 +161,7 @@ static void __init bcm63138_smp_prepare_cpus(unsigned int max_cpus) } } -struct smp_operations bcm63138_smp_ops __initdata = { +static const struct smp_operations bcm63138_smp_ops __initconst = { .smp_prepare_cpus = bcm63138_smp_prepare_cpus, .smp_boot_secondary = bcm63138_smp_boot_secondary, }; diff --git a/arch/arm/mach-bcm/kona_smp.c b/arch/arm/mach-bcm/kona_smp.c index 66a0465528a5..da8328b97b7d 100644 --- a/arch/arm/mach-bcm/kona_smp.c +++ b/arch/arm/mach-bcm/kona_smp.c @@ -194,7 +194,7 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle) return -ENOSYS; } -static struct smp_operations bcm_smp_ops __initdata = { +static const struct smp_operations bcm_smp_ops __initconst = { .smp_prepare_cpus = bcm_smp_prepare_cpus, .smp_boot_secondary = bcm_boot_secondary, }; diff --git a/arch/arm/mach-bcm/platsmp-brcmstb.c b/arch/arm/mach-bcm/platsmp-brcmstb.c index 44d6bddf7a4e..40dc8448445e 100644 --- a/arch/arm/mach-bcm/platsmp-brcmstb.c +++ b/arch/arm/mach-bcm/platsmp-brcmstb.c @@ -356,7 +356,7 @@ static int brcmstb_boot_secondary(unsigned int cpu, struct task_struct *idle) return 0; } -static struct smp_operations brcmstb_smp_ops __initdata = { +static const struct smp_operations brcmstb_smp_ops __initconst = { .smp_prepare_cpus = brcmstb_cpu_ctrl_setup, .smp_boot_secondary = brcmstb_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-berlin/platsmp.c b/arch/arm/mach-berlin/platsmp.c index 405cd37e4fba..93f90688db18 100644 --- a/arch/arm/mach-berlin/platsmp.c +++ b/arch/arm/mach-berlin/platsmp.c @@ -119,7 +119,7 @@ static int berlin_cpu_kill(unsigned int cpu) } #endif -static struct smp_operations berlin_smp_ops __initdata = { +static const struct smp_operations berlin_smp_ops __initconst = { .smp_prepare_cpus = berlin_smp_prepare_cpus, .smp_boot_secondary = berlin_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index 153492513c40..e349a038976d 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h @@ -149,7 +149,7 @@ static inline void exynos_pm_init(void) {} extern void exynos_cpu_resume(void); extern void exynos_cpu_resume_ns(void); -extern struct smp_operations exynos_smp_ops; +extern const struct smp_operations exynos_smp_ops; extern void exynos_cpu_power_down(int cpu); extern void exynos_cpu_power_up(int cpu); diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c index 98a2c0cbb833..5bd9559786ba 100644 --- a/arch/arm/mach-exynos/platsmp.c +++ b/arch/arm/mach-exynos/platsmp.c @@ -479,7 +479,7 @@ static void exynos_cpu_die(unsigned int cpu) } #endif /* CONFIG_HOTPLUG_CPU */ -struct smp_operations exynos_smp_ops __initdata = { +const struct smp_operations exynos_smp_ops __initconst = { .smp_init_cpus = exynos_smp_init_cpus, .smp_prepare_cpus = exynos_smp_prepare_cpus, .smp_secondary_init = exynos_secondary_init, diff --git a/arch/arm/mach-hisi/platmcpm.c b/arch/arm/mach-hisi/platmcpm.c index b5f8f5ffda79..4b653a8cb75c 100644 --- a/arch/arm/mach-hisi/platmcpm.c +++ b/arch/arm/mach-hisi/platmcpm.c @@ -239,7 +239,7 @@ err: } #endif -static struct smp_operations __initdata hip04_smp_ops = { +static const struct smp_operations hip04_smp_ops __initconst = { .smp_boot_secondary = hip04_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU .cpu_die = hip04_cpu_die, diff --git a/arch/arm/mach-hisi/platsmp.c b/arch/arm/mach-hisi/platsmp.c index 3c5237d9cd1e..47ed32cf57cc 100644 --- a/arch/arm/mach-hisi/platsmp.c +++ b/arch/arm/mach-hisi/platsmp.c @@ -89,7 +89,7 @@ static int hi3xxx_boot_secondary(unsigned int cpu, struct task_struct *idle) return 0; } -static struct smp_operations hi3xxx_smp_ops __initdata = { +static const struct smp_operations hi3xxx_smp_ops __initconst = { .smp_prepare_cpus = hi3xxx_smp_prepare_cpus, .smp_boot_secondary = hi3xxx_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU @@ -126,7 +126,7 @@ static int hix5hd2_boot_secondary(unsigned int cpu, struct task_struct *idle) } -static struct smp_operations hix5hd2_smp_ops __initdata = { +static const struct smp_operations hix5hd2_smp_ops __initconst = { .smp_prepare_cpus = hisi_common_smp_prepare_cpus, .smp_boot_secondary = hix5hd2_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU @@ -176,7 +176,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle) return 0; } -static struct smp_operations hip01_smp_ops __initdata = { +static const struct smp_operations hip01_smp_ops __initconst = { .smp_prepare_cpus = hisi_common_smp_prepare_cpus, .smp_boot_secondary = hip01_boot_secondary, }; diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index e2d53839fceb..32b83f09da18 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h @@ -153,7 +153,7 @@ void imx_init_l2cache(void); static inline void imx_init_l2cache(void) {} #endif -extern struct smp_operations imx_smp_ops; -extern struct smp_operations ls1021a_smp_ops; +extern const struct smp_operations imx_smp_ops; +extern const struct smp_operations ls1021a_smp_ops; #endif diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c index 7f270015fe58..711dbbd5badd 100644 --- a/arch/arm/mach-imx/platsmp.c +++ b/arch/arm/mach-imx/platsmp.c @@ -88,7 +88,7 @@ static void __init imx_smp_prepare_cpus(unsigned int max_cpus) sync_cache_w(&g_diag_reg); } -struct smp_operations imx_smp_ops __initdata = { +const struct smp_operations imx_smp_ops __initconst = { .smp_init_cpus = imx_smp_init_cpus, .smp_prepare_cpus = imx_smp_prepare_cpus, .smp_boot_secondary = imx_boot_secondary, @@ -123,7 +123,7 @@ static void __init ls1021a_smp_prepare_cpus(unsigned int max_cpus) iounmap(dcfg_base); } -struct smp_operations ls1021a_smp_ops __initdata = { +const struct smp_operations ls1021a_smp_ops __initconst = { .smp_prepare_cpus = ls1021a_smp_prepare_cpus, .smp_boot_secondary = ls1021a_boot_secondary, }; diff --git a/arch/arm/mach-keystone/keystone.h b/arch/arm/mach-keystone/keystone.h index cd04a1c14de8..33eaa037af5a 100644 --- a/arch/arm/mach-keystone/keystone.h +++ b/arch/arm/mach-keystone/keystone.h @@ -15,7 +15,7 @@ #ifndef __ASSEMBLER__ -extern struct smp_operations keystone_smp_ops; +extern const struct smp_operations keystone_smp_ops; extern void secondary_startup(void); extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr); extern int keystone_pm_runtime_init(void); diff --git a/arch/arm/mach-keystone/platsmp.c b/arch/arm/mach-keystone/platsmp.c index 4bbb18463bfd..5665276972ec 100644 --- a/arch/arm/mach-keystone/platsmp.c +++ b/arch/arm/mach-keystone/platsmp.c @@ -39,6 +39,6 @@ static int keystone_smp_boot_secondary(unsigned int cpu, return error; } -struct smp_operations keystone_smp_ops __initdata = { +const struct smp_operations keystone_smp_ops __initconst = { .smp_boot_secondary = keystone_smp_boot_secondary, }; diff --git a/arch/arm/mach-mediatek/platsmp.c b/arch/arm/mach-mediatek/platsmp.c index 8141f3f8afed..a1b07eeaaf5b 100644 --- a/arch/arm/mach-mediatek/platsmp.c +++ b/arch/arm/mach-mediatek/platsmp.c @@ -128,13 +128,13 @@ static void __init mtk_smp_prepare_cpus(unsigned int max_cpus) __mtk_smp_prepare_cpus(max_cpus, 0); } -static struct smp_operations mt81xx_tz_smp_ops __initdata = { +static const struct smp_operations mt81xx_tz_smp_ops __initconst = { .smp_prepare_cpus = mtk_tz_smp_prepare_cpus, .smp_boot_secondary = mtk_boot_secondary, }; CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops); -static struct smp_operations mt6589_smp_ops __initdata = { +static const struct smp_operations mt6589_smp_ops __initconst = { .smp_prepare_cpus = mtk_smp_prepare_cpus, .smp_boot_secondary = mtk_boot_secondary, }; diff --git a/arch/arm/mach-mvebu/armada-370-xp.h b/arch/arm/mach-mvebu/armada-370-xp.h index c55bbf81de0e..09413b678409 100644 --- a/arch/arm/mach-mvebu/armada-370-xp.h +++ b/arch/arm/mach-mvebu/armada-370-xp.h @@ -17,7 +17,7 @@ #ifdef CONFIG_SMP void armada_xp_secondary_startup(void); -extern struct smp_operations armada_xp_smp_ops; +extern const struct smp_operations armada_xp_smp_ops; #endif #endif /* __MACH_ARMADA_370_XP_H */ diff --git a/arch/arm/mach-mvebu/platsmp-a9.c b/arch/arm/mach-mvebu/platsmp-a9.c index 3d5000481c11..d715dec1c197 100644 --- a/arch/arm/mach-mvebu/platsmp-a9.c +++ b/arch/arm/mach-mvebu/platsmp-a9.c @@ -93,11 +93,11 @@ static int armada_38x_cpu_kill(unsigned int cpu) } #endif -static struct smp_operations mvebu_cortex_a9_smp_ops __initdata = { +static const struct smp_operations mvebu_cortex_a9_smp_ops __initconst = { .smp_boot_secondary = mvebu_cortex_a9_boot_secondary, }; -static struct smp_operations armada_38x_smp_ops __initdata = { +static const struct smp_operations armada_38x_smp_ops __initconst = { .smp_boot_secondary = mvebu_cortex_a9_boot_secondary, .smp_secondary_init = armada_38x_secondary_init, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-mvebu/platsmp.c b/arch/arm/mach-mvebu/platsmp.c index 58cc8c1575eb..f9597b701028 100644 --- a/arch/arm/mach-mvebu/platsmp.c +++ b/arch/arm/mach-mvebu/platsmp.c @@ -170,7 +170,7 @@ static int armada_xp_cpu_kill(unsigned int cpu) } #endif -struct smp_operations armada_xp_smp_ops __initdata = { +const struct smp_operations armada_xp_smp_ops __initconst = { .smp_init_cpus = armada_xp_smp_init_cpus, .smp_prepare_cpus = armada_xp_smp_prepare_cpus, .smp_boot_secondary = armada_xp_boot_secondary, diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 0cba9575d2ca..f7666b9f3b21 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h @@ -270,7 +270,7 @@ extern u32 omap_read_auxcoreboot0(void); extern void omap4_cpu_die(unsigned int cpu); -extern struct smp_operations omap4_smp_ops; +extern const struct smp_operations omap4_smp_ops; extern void omap5_secondary_startup(void); extern void omap5_secondary_hyp_startup(void); diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c index 79e1f876d1c9..c625cc10d9f9 100644 --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c @@ -241,7 +241,7 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus) } -struct smp_operations omap4_smp_ops __initdata = { +const struct smp_operations omap4_smp_ops __initconst = { .smp_init_cpus = omap4_smp_init_cpus, .smp_prepare_cpus = omap4_smp_prepare_cpus, .smp_secondary_init = omap4_secondary_init, diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h index 3916a6665100..6d77b622d168 100644 --- a/arch/arm/mach-prima2/common.h +++ b/arch/arm/mach-prima2/common.h @@ -15,7 +15,7 @@ #include #include -extern struct smp_operations sirfsoc_smp_ops; +extern const struct smp_operations sirfsoc_smp_ops; extern void sirfsoc_secondary_startup(void); extern void sirfsoc_cpu_die(unsigned int cpu); diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c index e46c91094dde..0875b99add18 100644 --- a/arch/arm/mach-prima2/platsmp.c +++ b/arch/arm/mach-prima2/platsmp.c @@ -112,7 +112,7 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle) return pen_release != -1 ? -ENOSYS : 0; } -struct smp_operations sirfsoc_smp_ops __initdata = { +const struct smp_operations sirfsoc_smp_ops __initconst = { .smp_secondary_init = sirfsoc_secondary_init, .smp_boot_secondary = sirfsoc_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-qcom/platsmp.c b/arch/arm/mach-qcom/platsmp.c index 9b00123a315d..5494c9e0c909 100644 --- a/arch/arm/mach-qcom/platsmp.c +++ b/arch/arm/mach-qcom/platsmp.c @@ -332,7 +332,7 @@ static void __init qcom_smp_prepare_cpus(unsigned int max_cpus) } } -static struct smp_operations smp_msm8660_ops __initdata = { +static const struct smp_operations smp_msm8660_ops __initconst = { .smp_prepare_cpus = qcom_smp_prepare_cpus, .smp_secondary_init = qcom_secondary_init, .smp_boot_secondary = msm8660_boot_secondary, @@ -342,7 +342,7 @@ static struct smp_operations smp_msm8660_ops __initdata = { }; CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops); -static struct smp_operations qcom_smp_kpssv1_ops __initdata = { +static const struct smp_operations qcom_smp_kpssv1_ops __initconst = { .smp_prepare_cpus = qcom_smp_prepare_cpus, .smp_secondary_init = qcom_secondary_init, .smp_boot_secondary = kpssv1_boot_secondary, @@ -352,7 +352,7 @@ static struct smp_operations qcom_smp_kpssv1_ops __initdata = { }; CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops); -static struct smp_operations qcom_smp_kpssv2_ops __initdata = { +static const struct smp_operations qcom_smp_kpssv2_ops __initconst = { .smp_prepare_cpus = qcom_smp_prepare_cpus, .smp_secondary_init = qcom_secondary_init, .smp_boot_secondary = kpssv2_boot_secondary, diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h index 868ece221978..670ee0eb844a 100644 --- a/arch/arm/mach-realview/core.h +++ b/arch/arm/mach-realview/core.h @@ -54,7 +54,7 @@ extern int realview_usb_register(struct resource *res); extern void realview_init_early(void); extern void realview_fixup(struct tag *tags, char **from); -extern struct smp_operations realview_smp_ops; +extern const struct smp_operations realview_smp_ops; extern void realview_cpu_die(unsigned int cpu); #endif diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c index 98e3052b7933..dc2902911dce 100644 --- a/arch/arm/mach-realview/platsmp.c +++ b/arch/arm/mach-realview/platsmp.c @@ -75,7 +75,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus) __io_address(REALVIEW_SYS_FLAGSSET)); } -struct smp_operations realview_smp_ops __initdata = { +const struct smp_operations realview_smp_ops __initconst = { .smp_init_cpus = realview_smp_init_cpus, .smp_prepare_cpus = realview_smp_prepare_cpus, .smp_secondary_init = versatile_secondary_init, diff --git a/arch/arm/mach-rockchip/platsmp.c b/arch/arm/mach-rockchip/platsmp.c index 3e7a4b761a95..938888fc55a1 100644 --- a/arch/arm/mach-rockchip/platsmp.c +++ b/arch/arm/mach-rockchip/platsmp.c @@ -340,7 +340,7 @@ static void rockchip_cpu_die(unsigned int cpu) } #endif -static struct smp_operations rockchip_smp_ops __initdata = { +static const struct smp_operations rockchip_smp_ops __initconst = { .smp_prepare_cpus = rockchip_smp_prepare_cpus, .smp_boot_secondary = rockchip_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-shmobile/r8a7779.h b/arch/arm/mach-shmobile/r8a7779.h index e1aaa2ef9376..2a5f7730a03c 100644 --- a/arch/arm/mach-shmobile/r8a7779.h +++ b/arch/arm/mach-shmobile/r8a7779.h @@ -3,6 +3,6 @@ extern void r8a7779_pm_init(void); -extern struct smp_operations r8a7779_smp_ops; +extern const struct smp_operations r8a7779_smp_ops; #endif /* __ASM_R8A7779_H__ */ diff --git a/arch/arm/mach-shmobile/r8a7790.h b/arch/arm/mach-shmobile/r8a7790.h index 1a46d026052c..136f3455e9c7 100644 --- a/arch/arm/mach-shmobile/r8a7790.h +++ b/arch/arm/mach-shmobile/r8a7790.h @@ -1,6 +1,6 @@ #ifndef __ASM_R8A7790_H__ #define __ASM_R8A7790_H__ -extern struct smp_operations r8a7790_smp_ops; +extern const struct smp_operations r8a7790_smp_ops; #endif /* __ASM_R8A7790_H__ */ diff --git a/arch/arm/mach-shmobile/r8a7791.h b/arch/arm/mach-shmobile/r8a7791.h index 7ca0b7d0f59b..cf7a8405bd7f 100644 --- a/arch/arm/mach-shmobile/r8a7791.h +++ b/arch/arm/mach-shmobile/r8a7791.h @@ -1,6 +1,6 @@ #ifndef __ASM_R8A7791_H__ #define __ASM_R8A7791_H__ -extern struct smp_operations r8a7791_smp_ops; +extern const struct smp_operations r8a7791_smp_ops; #endif /* __ASM_R8A7791_H__ */ diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c index 37f7b15c01bc..10b7cb5dcb3a 100644 --- a/arch/arm/mach-shmobile/setup-emev2.c +++ b/arch/arm/mach-shmobile/setup-emev2.c @@ -42,7 +42,7 @@ static const char *const emev2_boards_compat_dt[] __initconst = { NULL, }; -extern struct smp_operations emev2_smp_ops; +extern const struct smp_operations emev2_smp_ops; DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)") .smp = smp_ops(emev2_smp_ops), diff --git a/arch/arm/mach-shmobile/sh73a0.h b/arch/arm/mach-shmobile/sh73a0.h index 39646806cf64..50ef24f780b3 100644 --- a/arch/arm/mach-shmobile/sh73a0.h +++ b/arch/arm/mach-shmobile/sh73a0.h @@ -1,6 +1,6 @@ #ifndef __ASM_SH73A0_H__ #define __ASM_SH73A0_H__ -extern struct smp_operations sh73a0_smp_ops; +extern const struct smp_operations sh73a0_smp_ops; #endif /* __ASM_SH73A0_H__ */ diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c index baff3b5efed8..adbac6963f2b 100644 --- a/arch/arm/mach-shmobile/smp-emev2.c +++ b/arch/arm/mach-shmobile/smp-emev2.c @@ -49,7 +49,7 @@ static void __init emev2_smp_prepare_cpus(unsigned int max_cpus) shmobile_smp_scu_prepare_cpus(max_cpus); } -struct smp_operations emev2_smp_ops __initdata = { +const struct smp_operations emev2_smp_ops __initconst = { .smp_prepare_cpus = emev2_smp_prepare_cpus, .smp_boot_secondary = emev2_boot_secondary, }; diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c index 353562b8a5ee..b854fe2095ad 100644 --- a/arch/arm/mach-shmobile/smp-r8a7779.c +++ b/arch/arm/mach-shmobile/smp-r8a7779.c @@ -117,7 +117,7 @@ static int r8a7779_cpu_kill(unsigned int cpu) } #endif /* CONFIG_HOTPLUG_CPU */ -struct smp_operations r8a7779_smp_ops __initdata = { +const struct smp_operations r8a7779_smp_ops __initconst = { .smp_prepare_cpus = r8a7779_smp_prepare_cpus, .smp_boot_secondary = r8a7779_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-shmobile/smp-r8a7790.c b/arch/arm/mach-shmobile/smp-r8a7790.c index 4b33d432a364..f6426c6fdefc 100644 --- a/arch/arm/mach-shmobile/smp-r8a7790.c +++ b/arch/arm/mach-shmobile/smp-r8a7790.c @@ -60,7 +60,7 @@ static void __init r8a7790_smp_prepare_cpus(unsigned int max_cpus) rcar_sysc_power_up(&r8a7790_ca7_scu); } -struct smp_operations r8a7790_smp_ops __initdata = { +const struct smp_operations r8a7790_smp_ops __initconst = { .smp_prepare_cpus = r8a7790_smp_prepare_cpus, .smp_boot_secondary = shmobile_smp_apmu_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-shmobile/smp-r8a7791.c b/arch/arm/mach-shmobile/smp-r8a7791.c index b2508c0d276b..2d6417af73b5 100644 --- a/arch/arm/mach-shmobile/smp-r8a7791.c +++ b/arch/arm/mach-shmobile/smp-r8a7791.c @@ -54,7 +54,7 @@ static int r8a7791_smp_boot_secondary(unsigned int cpu, return shmobile_smp_apmu_boot_secondary(cpu, idle); } -struct smp_operations r8a7791_smp_ops __initdata = { +const struct smp_operations r8a7791_smp_ops __initconst = { .smp_prepare_cpus = r8a7791_smp_prepare_cpus, .smp_boot_secondary = r8a7791_smp_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c index bc2824a036e1..ee1a4b70604b 100644 --- a/arch/arm/mach-shmobile/smp-sh73a0.c +++ b/arch/arm/mach-shmobile/smp-sh73a0.c @@ -56,7 +56,7 @@ static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus) shmobile_smp_scu_prepare_cpus(max_cpus); } -struct smp_operations sh73a0_smp_ops __initdata = { +const struct smp_operations sh73a0_smp_ops __initconst = { .smp_prepare_cpus = sh73a0_smp_prepare_cpus, .smp_boot_secondary = sh73a0_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c index 15c8ce8965f4..cbb0a54df80a 100644 --- a/arch/arm/mach-socfpga/platsmp.c +++ b/arch/arm/mach-socfpga/platsmp.c @@ -117,7 +117,7 @@ static int socfpga_cpu_kill(unsigned int cpu) return 1; } -static struct smp_operations socfpga_smp_ops __initdata = { +static const struct smp_operations socfpga_smp_ops __initconst = { .smp_prepare_cpus = socfpga_smp_prepare_cpus, .smp_boot_secondary = socfpga_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU @@ -126,7 +126,7 @@ static struct smp_operations socfpga_smp_ops __initdata = { #endif }; -static struct smp_operations socfpga_a10_smp_ops __initdata = { +static const struct smp_operations socfpga_a10_smp_ops __initconst = { .smp_prepare_cpus = socfpga_smp_prepare_cpus, .smp_boot_secondary = socfpga_a10_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-spear/generic.h b/arch/arm/mach-spear/generic.h index 06640914d9a0..909b97c0b237 100644 --- a/arch/arm/mach-spear/generic.h +++ b/arch/arm/mach-spear/generic.h @@ -39,7 +39,7 @@ void spear_restart(enum reboot_mode, const char *); void spear13xx_secondary_startup(void); void spear13xx_cpu_die(unsigned int cpu); -extern struct smp_operations spear13xx_smp_ops; +extern const struct smp_operations spear13xx_smp_ops; #ifdef CONFIG_MACH_SPEAR1310 void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base); diff --git a/arch/arm/mach-spear/platsmp.c b/arch/arm/mach-spear/platsmp.c index fd4297713d67..8d1e2d551786 100644 --- a/arch/arm/mach-spear/platsmp.c +++ b/arch/arm/mach-spear/platsmp.c @@ -120,7 +120,7 @@ static void __init spear13xx_smp_prepare_cpus(unsigned int max_cpus) __raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION); } -struct smp_operations spear13xx_smp_ops __initdata = { +const struct smp_operations spear13xx_smp_ops __initconst = { .smp_init_cpus = spear13xx_smp_init_cpus, .smp_prepare_cpus = spear13xx_smp_prepare_cpus, .smp_secondary_init = spear13xx_secondary_init, diff --git a/arch/arm/mach-sti/platsmp.c b/arch/arm/mach-sti/platsmp.c index c4ad6eae67fa..ea5a2277ee46 100644 --- a/arch/arm/mach-sti/platsmp.c +++ b/arch/arm/mach-sti/platsmp.c @@ -156,7 +156,7 @@ static void __init sti_smp_prepare_cpus(unsigned int max_cpus) } } -struct smp_operations __initdata sti_smp_ops = { +const struct smp_operations sti_smp_ops __initconst = { .smp_prepare_cpus = sti_smp_prepare_cpus, .smp_secondary_init = sti_secondary_init, .smp_boot_secondary = sti_boot_secondary, diff --git a/arch/arm/mach-sti/smp.h b/arch/arm/mach-sti/smp.h index ae22707d301f..d8a2f8758490 100644 --- a/arch/arm/mach-sti/smp.h +++ b/arch/arm/mach-sti/smp.h @@ -12,7 +12,7 @@ #ifndef __MACH_STI_SMP_H #define __MACH_STI_SMP_H -extern struct smp_operations sti_smp_ops; +extern const struct smp_operations sti_smp_ops; void sti_secondary_startup(void); diff --git a/arch/arm/mach-sunxi/platsmp.c b/arch/arm/mach-sunxi/platsmp.c index e8483ec79d67..6642267812c9 100644 --- a/arch/arm/mach-sunxi/platsmp.c +++ b/arch/arm/mach-sunxi/platsmp.c @@ -116,7 +116,7 @@ static int sun6i_smp_boot_secondary(unsigned int cpu, return 0; } -static struct smp_operations sun6i_smp_ops __initdata = { +static const struct smp_operations sun6i_smp_ops __initconst = { .smp_prepare_cpus = sun6i_smp_prepare_cpus, .smp_boot_secondary = sun6i_smp_boot_secondary, }; @@ -185,7 +185,7 @@ static int sun8i_smp_boot_secondary(unsigned int cpu, return 0; } -struct smp_operations sun8i_smp_ops __initdata = { +static const struct smp_operations sun8i_smp_ops __initconst = { .smp_prepare_cpus = sun8i_smp_prepare_cpus, .smp_boot_secondary = sun8i_smp_boot_secondary, }; diff --git a/arch/arm/mach-tegra/common.h b/arch/arm/mach-tegra/common.h index 5900cc44f780..1f6fb808e236 100644 --- a/arch/arm/mach-tegra/common.h +++ b/arch/arm/mach-tegra/common.h @@ -1,4 +1,4 @@ -extern struct smp_operations tegra_smp_ops; +extern const struct smp_operations tegra_smp_ops; extern int tegra_cpu_kill(unsigned int cpu); extern void tegra_cpu_die(unsigned int cpu); diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c index b45086666648..f3f61dbbda97 100644 --- a/arch/arm/mach-tegra/platsmp.c +++ b/arch/arm/mach-tegra/platsmp.c @@ -192,7 +192,7 @@ static void __init tegra_smp_prepare_cpus(unsigned int max_cpus) scu_enable(IO_ADDRESS(scu_a9_get_base())); } -struct smp_operations tegra_smp_ops __initdata = { +const struct smp_operations tegra_smp_ops __initconst = { .smp_prepare_cpus = tegra_smp_prepare_cpus, .smp_secondary_init = tegra_secondary_init, .smp_boot_secondary = tegra_boot_secondary, diff --git a/arch/arm/mach-uniphier/platsmp.c b/arch/arm/mach-uniphier/platsmp.c index f0577664611c..e1cfc1d6e2f4 100644 --- a/arch/arm/mach-uniphier/platsmp.c +++ b/arch/arm/mach-uniphier/platsmp.c @@ -201,7 +201,7 @@ static int __init uniphier_smp_boot_secondary(unsigned int cpu, return 0; } -static struct smp_operations uniphier_smp_ops __initdata = { +static const struct smp_operations uniphier_smp_ops __initconst = { .smp_prepare_cpus = uniphier_smp_prepare_cpus, .smp_boot_secondary = uniphier_smp_boot_secondary, }; diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c index 70766b963758..88b8ab4f300c 100644 --- a/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c @@ -98,7 +98,7 @@ static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle) return 0; } -struct smp_operations ux500_smp_ops __initdata = { +static const struct smp_operations ux500_smp_ops __initconst = { .smp_prepare_cpus = ux500_smp_prepare_cpus, .smp_boot_secondary = ux500_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h index 2a11d3ac8c68..a162ab46ee02 100644 --- a/arch/arm/mach-vexpress/core.h +++ b/arch/arm/mach-vexpress/core.h @@ -1,5 +1,5 @@ bool vexpress_smp_init_ops(void); -extern struct smp_operations vexpress_smp_dt_ops; +extern const struct smp_operations vexpress_smp_dt_ops; extern void vexpress_cpu_die(unsigned int cpu); diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c index 83188cf1875d..8b8d0724f6c6 100644 --- a/arch/arm/mach-vexpress/platsmp.c +++ b/arch/arm/mach-vexpress/platsmp.c @@ -64,7 +64,7 @@ static void __init vexpress_smp_dt_prepare_cpus(unsigned int max_cpus) vexpress_flags_set(virt_to_phys(versatile_secondary_startup)); } -struct smp_operations __initdata vexpress_smp_dt_ops = { +const struct smp_operations vexpress_smp_dt_ops __initconst = { .smp_prepare_cpus = vexpress_smp_dt_prepare_cpus, .smp_secondary_init = versatile_secondary_init, .smp_boot_secondary = versatile_boot_secondary, diff --git a/arch/arm/mach-zx/platsmp.c b/arch/arm/mach-zx/platsmp.c index a3693982d65d..0297f92084e0 100644 --- a/arch/arm/mach-zx/platsmp.c +++ b/arch/arm/mach-zx/platsmp.c @@ -176,7 +176,7 @@ static void zx_secondary_init(unsigned int cpu) scu_power_mode(scu_base, SCU_PM_NORMAL); } -struct smp_operations zx_smp_ops __initdata = { +static const struct smp_operations zx_smp_ops __initconst = { .smp_prepare_cpus = zx_smp_prepare_cpus, .smp_secondary_init = zx_secondary_init, .smp_boot_secondary = zx_boot_secondary, diff --git a/arch/arm/mach-zynq/common.h b/arch/arm/mach-zynq/common.h index 79cda2e5fa4e..e771933db7e8 100644 --- a/arch/arm/mach-zynq/common.h +++ b/arch/arm/mach-zynq/common.h @@ -30,7 +30,7 @@ extern char zynq_secondary_trampoline; extern char zynq_secondary_trampoline_jump; extern char zynq_secondary_trampoline_end; extern int zynq_cpun_start(u32 address, int cpu); -extern struct smp_operations zynq_smp_ops __initdata; +extern const struct smp_operations zynq_smp_ops; #endif extern void __iomem *zynq_scu_base; diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c index f66816c49186..7cd9865bdeb7 100644 --- a/arch/arm/mach-zynq/platsmp.c +++ b/arch/arm/mach-zynq/platsmp.c @@ -157,7 +157,7 @@ static void zynq_cpu_die(unsigned int cpu) } #endif -struct smp_operations zynq_smp_ops __initdata = { +const struct smp_operations zynq_smp_ops __initconst = { .smp_init_cpus = zynq_smp_init_cpus, .smp_prepare_cpus = zynq_smp_prepare_cpus, .smp_boot_secondary = zynq_boot_secondary, -- cgit v1.2.3 From 70722803de91a7670979dcb5748631b4e3c1b219 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Thu, 17 Dec 2015 17:45:47 +0100 Subject: ARM: make default platform work for NOMMU Moving ARCH_VERSATILE into ARCH_MULTIPLATFORM means that it no longer works as the default target for MMU-less kernels. While we might want to get that working again in the future, it's also a rather bad default, and it makes sense to make ARM_SINGLE_V7M the default because that is what realistically all NOMMU users on ARM are using, and it actually is what gets selected by default in the absence of versatile in the choice statement. Related to this, 'allnoconfig' kernels fail to link with the new default, as they do not include a machine record: arm-linux-gnueabi-ld: no machine record defined For ARCH_MULTIPLATFORM kernels, we avoid this error by using a default machine descriptor that works for all trivial platforms, like ARCH_VIRT. The same reasoning applies for ARM_SINGLE_V7M, as that can also boot with empty machine descriptors both on qemu and on real hardware, as long as all the drivers are present. We could also follow up with a patch to remove the existing machine descriptors for the ARMv7M platforms, the only callback pointer the four platforms contain today is the armv7m_restart handler and we can simply make that the default for v7M with an add-on patch. Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 2 +- arch/arm/kernel/devtree.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'arch/arm/kernel') diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 72c1df041ae8..a0fda44551ec 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -313,7 +313,7 @@ config MMU # choice prompt "ARM system type" - default ARCH_VERSATILE if !MMU + default ARM_SINGLE_ARMV7M if !MMU default ARCH_MULTIPLATFORM if MMU config ARCH_MULTIPLATFORM diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c index 65addcbf5b30..2e26016a91a5 100644 --- a/arch/arm/kernel/devtree.c +++ b/arch/arm/kernel/devtree.c @@ -211,7 +211,7 @@ const struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys) { const struct machine_desc *mdesc, *mdesc_best = NULL; -#ifdef CONFIG_ARCH_MULTIPLATFORM +#if defined(CONFIG_ARCH_MULTIPLATFORM) || defined(CONFIG_ARM_SINGLE_ARMV7M) DT_MACHINE_START(GENERIC_DT, "Generic DT based system") MACHINE_END -- cgit v1.2.3 From 03590cb56d5df7367ccb9e6e0127593254401c42 Mon Sep 17 00:00:00 2001 From: Russell King Date: Wed, 27 Jan 2016 18:14:13 +0000 Subject: ARM: wire up copy_file_range() syscall Add the copy_file_range() syscall to ARM. Signed-off-by: Russell King --- arch/arm/include/uapi/asm/unistd.h | 1 + arch/arm/kernel/calls.S | 1 + 2 files changed, 2 insertions(+) (limited to 'arch/arm/kernel') diff --git a/arch/arm/include/uapi/asm/unistd.h b/arch/arm/include/uapi/asm/unistd.h index ede692ffa32e..5dd2528e9e45 100644 --- a/arch/arm/include/uapi/asm/unistd.h +++ b/arch/arm/include/uapi/asm/unistd.h @@ -417,6 +417,7 @@ #define __NR_userfaultfd (__NR_SYSCALL_BASE+388) #define __NR_membarrier (__NR_SYSCALL_BASE+389) #define __NR_mlock2 (__NR_SYSCALL_BASE+390) +#define __NR_copy_file_range (__NR_SYSCALL_BASE+391) /* * The following SWIs are ARM private. diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index ac368bb068d1..dfc7cd6851ad 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S @@ -400,6 +400,7 @@ CALL(sys_userfaultfd) CALL(sys_membarrier) CALL(sys_mlock2) + CALL(sys_copy_file_range) #ifndef syscalls_counted .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls #define syscalls_counted -- cgit v1.2.3