aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/setup.c')
-rw-r--r--arch/arm/kernel/setup.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 3448a3f9cc8c..5c7094e8f6e9 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -31,6 +31,7 @@
31#include <linux/memblock.h> 31#include <linux/memblock.h>
32#include <linux/bug.h> 32#include <linux/bug.h>
33#include <linux/compiler.h> 33#include <linux/compiler.h>
34#include <linux/sort.h>
34 35
35#include <asm/unified.h> 36#include <asm/unified.h>
36#include <asm/cpu.h> 37#include <asm/cpu.h>
@@ -890,6 +891,12 @@ static struct machine_desc * __init setup_machine_tags(unsigned int nr)
890 return mdesc; 891 return mdesc;
891} 892}
892 893
894static int __init meminfo_cmp(const void *_a, const void *_b)
895{
896 const struct membank *a = _a, *b = _b;
897 long cmp = bank_pfn_start(a) - bank_pfn_start(b);
898 return cmp < 0 ? -1 : cmp > 0 ? 1 : 0;
899}
893 900
894void __init setup_arch(char **cmdline_p) 901void __init setup_arch(char **cmdline_p)
895{ 902{
@@ -904,8 +911,8 @@ void __init setup_arch(char **cmdline_p)
904 machine_desc = mdesc; 911 machine_desc = mdesc;
905 machine_name = mdesc->name; 912 machine_name = mdesc->name;
906 913
907 if (mdesc->soft_reboot) 914 if (mdesc->restart_mode)
908 reboot_setup("s"); 915 reboot_setup(&mdesc->restart_mode);
909 916
910 init_mm.start_code = (unsigned long) _text; 917 init_mm.start_code = (unsigned long) _text;
911 init_mm.end_code = (unsigned long) _etext; 918 init_mm.end_code = (unsigned long) _etext;
@@ -918,12 +925,16 @@ void __init setup_arch(char **cmdline_p)
918 925
919 parse_early_param(); 926 parse_early_param();
920 927
928 sort(&meminfo.bank, meminfo.nr_banks, sizeof(meminfo.bank[0]), meminfo_cmp, NULL);
921 sanity_check_meminfo(); 929 sanity_check_meminfo();
922 arm_memblock_init(&meminfo, mdesc); 930 arm_memblock_init(&meminfo, mdesc);
923 931
924 paging_init(mdesc); 932 paging_init(mdesc);
925 request_standard_resources(mdesc); 933 request_standard_resources(mdesc);
926 934
935 if (mdesc->restart)
936 arm_pm_restart = mdesc->restart;
937
927 unflatten_device_tree(); 938 unflatten_device_tree();
928 939
929#ifdef CONFIG_SMP 940#ifdef CONFIG_SMP