blob: 90f06c25221d792dab33f662c25012b7d0c39f59 [file] [log] [blame]
H. Peter Anvin1965aae2008-10-22 22:26:29 -07001#ifndef _ASM_X86_TRAMPOLINE_H
2#define _ASM_X86_TRAMPOLINE_H
Pavel Macheke44b7b72008-04-10 23:28:10 +02003
4#ifndef __ASSEMBLY__
5
Rafael J. Wysocki3e1e9002008-12-08 00:50:22 +01006#ifdef CONFIG_X86_TRAMPOLINE
Pavel Macheke44b7b72008-04-10 23:28:10 +02007/*
8 * Trampoline 80x86 program as an array.
9 */
10extern const unsigned char trampoline_data [];
11extern const unsigned char trampoline_end [];
12extern unsigned char *trampoline_base;
13
14extern unsigned long init_rsp;
15extern unsigned long initial_code;
Tejun Heof32ff532009-01-13 20:41:35 +090016extern unsigned long initial_gs;
Pavel Macheke44b7b72008-04-10 23:28:10 +020017
Rafael J. Wysocki3e1e9002008-12-08 00:50:22 +010018#define TRAMPOLINE_SIZE roundup(trampoline_end - trampoline_data, PAGE_SIZE)
Pavel Macheke44b7b72008-04-10 23:28:10 +020019#define TRAMPOLINE_BASE 0x6000
Rafael J. Wysocki3e1e9002008-12-08 00:50:22 +010020
Pavel Macheke44b7b72008-04-10 23:28:10 +020021extern unsigned long setup_trampoline(void);
Rafael J. Wysocki3e1e9002008-12-08 00:50:22 +010022extern void __init reserve_trampoline_memory(void);
23#else
24static inline void reserve_trampoline_memory(void) {};
25#endif /* CONFIG_X86_TRAMPOLINE */
Pavel Macheke44b7b72008-04-10 23:28:10 +020026
27#endif /* __ASSEMBLY__ */
28
H. Peter Anvin1965aae2008-10-22 22:26:29 -070029#endif /* _ASM_X86_TRAMPOLINE_H */