diff options
Diffstat (limited to 'arch/arm/kernel/setup.c')
-rw-r--r-- | arch/arm/kernel/setup.c | 33 |
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; | |||
62 | extern void _stext, _text, _etext, __data_start, _edata, _end; | 62 | extern void _stext, _text, _etext, __data_start, _edata, _end; |
63 | 63 | ||
64 | unsigned int processor_id; | 64 | unsigned int processor_id; |
65 | EXPORT_SYMBOL(processor_id); | ||
65 | unsigned int __machine_arch_type; | 66 | unsigned int __machine_arch_type; |
66 | EXPORT_SYMBOL(__machine_arch_type); | 67 | EXPORT_SYMBOL(__machine_arch_type); |
67 | 68 | ||
@@ -784,23 +785,6 @@ static int __init customize_machine(void) | |||
784 | } | 785 | } |
785 | arch_initcall(customize_machine); | 786 | arch_initcall(customize_machine); |
786 | 787 | ||
787 | #ifdef CONFIG_KEXEC | ||
788 | |||
789 | /* Physical addr of where the boot params should be for this machine */ | ||
790 | extern unsigned long kexec_boot_params_address; | ||
791 | |||
792 | /* Physical addr of the buffer into which the boot params are copied */ | ||
793 | extern unsigned long kexec_boot_params_copy; | ||
794 | |||
795 | /* Pointer to the boot params buffer, for manipulation and display */ | ||
796 | unsigned long kexec_boot_params; | ||
797 | EXPORT_SYMBOL(kexec_boot_params); | ||
798 | |||
799 | /* The buffer itself - make sure it is sized correctly */ | ||
800 | static unsigned long kexec_boot_params_buf[(KEXEC_BOOT_PARAMS_SIZE + 3) / 4]; | ||
801 | |||
802 | #endif | ||
803 | |||
804 | void __init setup_arch(char **cmdline_p) | 788 | void __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 | ||