diff options
Diffstat (limited to 'include/asm-x86_64/kexec.h')
-rw-r--r-- | include/asm-x86_64/kexec.h | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/include/asm-x86_64/kexec.h b/include/asm-x86_64/kexec.h deleted file mode 100644 index 738e581b67f8..000000000000 --- a/include/asm-x86_64/kexec.h +++ /dev/null | |||
@@ -1,94 +0,0 @@ | |||
1 | #ifndef _X86_64_KEXEC_H | ||
2 | #define _X86_64_KEXEC_H | ||
3 | |||
4 | #define PA_CONTROL_PAGE 0 | ||
5 | #define VA_CONTROL_PAGE 1 | ||
6 | #define PA_PGD 2 | ||
7 | #define VA_PGD 3 | ||
8 | #define PA_PUD_0 4 | ||
9 | #define VA_PUD_0 5 | ||
10 | #define PA_PMD_0 6 | ||
11 | #define VA_PMD_0 7 | ||
12 | #define PA_PTE_0 8 | ||
13 | #define VA_PTE_0 9 | ||
14 | #define PA_PUD_1 10 | ||
15 | #define VA_PUD_1 11 | ||
16 | #define PA_PMD_1 12 | ||
17 | #define VA_PMD_1 13 | ||
18 | #define PA_PTE_1 14 | ||
19 | #define VA_PTE_1 15 | ||
20 | #define PA_TABLE_PAGE 16 | ||
21 | #define PAGES_NR 17 | ||
22 | |||
23 | #ifndef __ASSEMBLY__ | ||
24 | |||
25 | #include <linux/string.h> | ||
26 | |||
27 | #include <asm/page.h> | ||
28 | #include <asm/ptrace.h> | ||
29 | |||
30 | /* | ||
31 | * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. | ||
32 | * I.e. Maximum page that is mapped directly into kernel memory, | ||
33 | * and kmap is not required. | ||
34 | * | ||
35 | * So far x86_64 is limited to 40 physical address bits. | ||
36 | */ | ||
37 | |||
38 | /* Maximum physical address we can use pages from */ | ||
39 | #define KEXEC_SOURCE_MEMORY_LIMIT (0xFFFFFFFFFFUL) | ||
40 | /* Maximum address we can reach in physical address mode */ | ||
41 | #define KEXEC_DESTINATION_MEMORY_LIMIT (0xFFFFFFFFFFUL) | ||
42 | /* Maximum address we can use for the control pages */ | ||
43 | #define KEXEC_CONTROL_MEMORY_LIMIT (0xFFFFFFFFFFUL) | ||
44 | |||
45 | /* Allocate one page for the pdp and the second for the code */ | ||
46 | #define KEXEC_CONTROL_CODE_SIZE (4096UL + 4096UL) | ||
47 | |||
48 | /* The native architecture */ | ||
49 | #define KEXEC_ARCH KEXEC_ARCH_X86_64 | ||
50 | |||
51 | /* | ||
52 | * Saving the registers of the cpu on which panic occured in | ||
53 | * crash_kexec to save a valid sp. The registers of other cpus | ||
54 | * will be saved in machine_crash_shutdown while shooting down them. | ||
55 | */ | ||
56 | |||
57 | static inline void crash_setup_regs(struct pt_regs *newregs, | ||
58 | struct pt_regs *oldregs) | ||
59 | { | ||
60 | if (oldregs) | ||
61 | memcpy(newregs, oldregs, sizeof(*newregs)); | ||
62 | else { | ||
63 | __asm__ __volatile__("movq %%rbx,%0" : "=m"(newregs->rbx)); | ||
64 | __asm__ __volatile__("movq %%rcx,%0" : "=m"(newregs->rcx)); | ||
65 | __asm__ __volatile__("movq %%rdx,%0" : "=m"(newregs->rdx)); | ||
66 | __asm__ __volatile__("movq %%rsi,%0" : "=m"(newregs->rsi)); | ||
67 | __asm__ __volatile__("movq %%rdi,%0" : "=m"(newregs->rdi)); | ||
68 | __asm__ __volatile__("movq %%rbp,%0" : "=m"(newregs->rbp)); | ||
69 | __asm__ __volatile__("movq %%rax,%0" : "=m"(newregs->rax)); | ||
70 | __asm__ __volatile__("movq %%rsp,%0" : "=m"(newregs->rsp)); | ||
71 | __asm__ __volatile__("movq %%r8,%0" : "=m"(newregs->r8)); | ||
72 | __asm__ __volatile__("movq %%r9,%0" : "=m"(newregs->r9)); | ||
73 | __asm__ __volatile__("movq %%r10,%0" : "=m"(newregs->r10)); | ||
74 | __asm__ __volatile__("movq %%r11,%0" : "=m"(newregs->r11)); | ||
75 | __asm__ __volatile__("movq %%r12,%0" : "=m"(newregs->r12)); | ||
76 | __asm__ __volatile__("movq %%r13,%0" : "=m"(newregs->r13)); | ||
77 | __asm__ __volatile__("movq %%r14,%0" : "=m"(newregs->r14)); | ||
78 | __asm__ __volatile__("movq %%r15,%0" : "=m"(newregs->r15)); | ||
79 | __asm__ __volatile__("movl %%ss, %%eax;" :"=a"(newregs->ss)); | ||
80 | __asm__ __volatile__("movl %%cs, %%eax;" :"=a"(newregs->cs)); | ||
81 | __asm__ __volatile__("pushfq; popq %0" :"=m"(newregs->eflags)); | ||
82 | |||
83 | newregs->rip = (unsigned long)current_text_addr(); | ||
84 | } | ||
85 | } | ||
86 | |||
87 | NORET_TYPE void | ||
88 | relocate_kernel(unsigned long indirection_page, | ||
89 | unsigned long page_list, | ||
90 | unsigned long start_address) ATTRIB_NORET; | ||
91 | |||
92 | #endif /* __ASSEMBLY__ */ | ||
93 | |||
94 | #endif /* _X86_64_KEXEC_H */ | ||