1 /* 2 * Copyright IBM Corp. 2005 3 * 4 * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com> 5 * 6 */ 7 8 #ifndef _S390_KEXEC_H 9 #define _S390_KEXEC_H 10 11 #include <asm/processor.h> 12 #include <asm/page.h> 13 /* 14 * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. 15 * I.e. Maximum page that is mapped directly into kernel memory, 16 * and kmap is not required. 17 */ 18 19 /* Maximum physical address we can use pages from */ 20 #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) 21 22 /* Maximum address we can reach in physical address mode */ 23 #define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL) 24 25 /* Maximum address we can use for the control pages */ 26 /* Not more than 2GB */ 27 #define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31) 28 29 /* Maximum address we can use for the crash control pages */ 30 #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL) 31 32 /* Allocate one page for the pdp and the second for the code */ 33 #define KEXEC_CONTROL_PAGE_SIZE 4096 34 35 /* Alignment of crashkernel memory */ 36 #define KEXEC_CRASH_MEM_ALIGN HPAGE_SIZE 37 38 /* The native architecture */ 39 #define KEXEC_ARCH KEXEC_ARCH_S390 40 41 /* 42 * Size for s390x ELF notes per CPU 43 * 44 * Seven notes plus zero note at the end: prstatus, fpregset, timer, 45 * tod_cmp, tod_reg, control regs, and prefix 46 */ 47 #define KEXEC_NOTE_BYTES \ 48 (ALIGN(sizeof(struct elf_note), 4) * 8 + \ 49 ALIGN(sizeof("CORE"), 4) * 7 + \ 50 ALIGN(sizeof(struct elf_prstatus), 4) + \ 51 ALIGN(sizeof(elf_fpregset_t), 4) + \ 52 ALIGN(sizeof(u64), 4) + \ 53 ALIGN(sizeof(u64), 4) + \ 54 ALIGN(sizeof(u32), 4) + \ 55 ALIGN(sizeof(u64) * 16, 4) + \ 56 ALIGN(sizeof(u32), 4) \ 57 ) 58 59 /* Provide a dummy definition to avoid build failures. */ 60 static inline void crash_setup_regs(struct pt_regs *newregs, 61 struct pt_regs *oldregs) { } 62 63 #endif /*_S390_KEXEC_H */ 64