12345678910111213141516171819202122232425262728293031323334353637383940 |
- #ifndef _ASM_X86_TRAMPOLINE_H
- #define _ASM_X86_TRAMPOLINE_H
- #ifndef __ASSEMBLY__
- #include <linux/types.h>
- #include <asm/io.h>
- /*
- * Trampoline 80x86 program as an array. These are in the init rodata
- * segment, but that's okay, because we only care about the relative
- * addresses of the symbols.
- */
- extern const unsigned char x86_trampoline_start [];
- extern const unsigned char x86_trampoline_end [];
- extern unsigned char *x86_trampoline_base;
- extern unsigned long init_rsp;
- extern unsigned long initial_code;
- extern unsigned long initial_gs;
- extern void __init setup_trampolines(void);
- extern const unsigned char trampoline_data[];
- extern const unsigned char trampoline_status[];
- #define TRAMPOLINE_SYM(x) \
- ((void *)(x86_trampoline_base + \
- ((const unsigned char *)(x) - x86_trampoline_start)))
- /* Address of the SMP trampoline */
- static inline unsigned long trampoline_address(void)
- {
- return virt_to_phys(TRAMPOLINE_SYM(trampoline_data));
- }
- #endif /* __ASSEMBLY__ */
- #endif /* _ASM_X86_TRAMPOLINE_H */
|