/* * arch/s390/kernel/machine_kexec.c * * (C) Copyright IBM Corp. 2005 * * Author(s): Rolf Adelsberger * */ /* * s390_machine_kexec.c - handle the transition of Linux booting another kernel * on the S390 architecture. */ #include #include #include #include #include #include #include #include #include #include static void kexec_halt_all_cpus(void *); typedef void (*relocate_kernel_t) (kimage_entry_t *, unsigned long); extern const unsigned char relocate_kernel[]; extern const unsigned long long relocate_kernel_len; int machine_kexec_prepare(struct kimage *image) { unsigned long reboot_code_buffer; /* We don't support anything but the default image type for now. */ if (image->type != KEXEC_TYPE_DEFAULT) return -EINVAL; /* Get the destination where the assembler code should be copied to.*/ reboot_code_buffer = page_to_pfn(image->control_code_page)<control_code_page) << PAGE_SHIFT); /* Call the moving routine */ (*data_mover) (&image->head, image->start); }