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.c33
1 files changed, 3 insertions, 30 deletions
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index bf56eb337df1..d3941a7b0455 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -24,7 +24,6 @@
24#include <linux/interrupt.h> 24#include <linux/interrupt.h>
25#include <linux/smp.h> 25#include <linux/smp.h>
26#include <linux/fs.h> 26#include <linux/fs.h>
27#include <linux/kexec.h>
28 27
29#include <asm/cpu.h> 28#include <asm/cpu.h>
30#include <asm/elf.h> 29#include <asm/elf.h>
@@ -39,6 +38,7 @@
39#include <asm/mach/time.h> 38#include <asm/mach/time.h>
40 39
41#include "compat.h" 40#include "compat.h"
41#include "atags.h"
42 42
43#ifndef MEM_SIZE 43#ifndef MEM_SIZE
44#define MEM_SIZE (16*1024*1024) 44#define MEM_SIZE (16*1024*1024)
@@ -62,6 +62,7 @@ extern int root_mountflags;
62extern void _stext, _text, _etext, __data_start, _edata, _end; 62extern void _stext, _text, _etext, __data_start, _edata, _end;
63 63
64unsigned int processor_id; 64unsigned int processor_id;
65EXPORT_SYMBOL(processor_id);
65unsigned int __machine_arch_type; 66unsigned int __machine_arch_type;
66EXPORT_SYMBOL(__machine_arch_type); 67EXPORT_SYMBOL(__machine_arch_type);
67 68
@@ -784,23 +785,6 @@ static int __init customize_machine(void)
784} 785}
785arch_initcall(customize_machine); 786arch_initcall(customize_machine);
786 787
787#ifdef CONFIG_KEXEC
788
789/* Physical addr of where the boot params should be for this machine */
790extern unsigned long kexec_boot_params_address;
791
792/* Physical addr of the buffer into which the boot params are copied */
793extern unsigned long kexec_boot_params_copy;
794
795/* Pointer to the boot params buffer, for manipulation and display */
796unsigned long kexec_boot_params;
797EXPORT_SYMBOL(kexec_boot_params);
798
799/* The buffer itself - make sure it is sized correctly */
800static unsigned long kexec_boot_params_buf[(KEXEC_BOOT_PARAMS_SIZE + 3) / 4];
801
802#endif
803
804void __init setup_arch(char **cmdline_p) 788void __init setup_arch(char **cmdline_p)
805{ 789{
806 struct tag *tags = (struct tag *)&init_tags; 790 struct tag *tags = (struct tag *)&init_tags;
@@ -819,18 +803,6 @@ void __init setup_arch(char **cmdline_p)
819 else if (mdesc->boot_params) 803 else if (mdesc->boot_params)
820 tags = phys_to_virt(mdesc->boot_params); 804 tags = phys_to_virt(mdesc->boot_params);
821 805
822#ifdef CONFIG_KEXEC
823 kexec_boot_params_copy = virt_to_phys(kexec_boot_params_buf);
824 kexec_boot_params = (unsigned long)kexec_boot_params_buf;
825 if (__atags_pointer) {
826 kexec_boot_params_address = __atags_pointer;
827 memcpy((void *)kexec_boot_params, tags, KEXEC_BOOT_PARAMS_SIZE);
828 } else if (mdesc->boot_params) {
829 kexec_boot_params_address = mdesc->boot_params;
830 memcpy((void *)kexec_boot_params, tags, KEXEC_BOOT_PARAMS_SIZE);
831 }
832#endif
833
834 /* 806 /*
835 * If we have the old style parameters, convert them to 807 * If we have the old style parameters, convert them to
836 * a tag list. 808 * a tag list.
@@ -846,6 +818,7 @@ void __init setup_arch(char **cmdline_p)
846 if (tags->hdr.tag == ATAG_CORE) { 818 if (tags->hdr.tag == ATAG_CORE) {
847 if (meminfo.nr_banks != 0) 819 if (meminfo.nr_banks != 0)
848 squash_mem_tags(tags); 820 squash_mem_tags(tags);
821 save_atags(tags);
849 parse_tags(tags); 822 parse_tags(tags);
850 } 823 }
851 824