Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v3.2-rc1 39 lines 1.0 kB view raw
1#ifndef _ASM_X86_TRAMPOLINE_H 2#define _ASM_X86_TRAMPOLINE_H 3 4#ifndef __ASSEMBLY__ 5 6#include <linux/types.h> 7#include <asm/io.h> 8 9/* 10 * Trampoline 80x86 program as an array. These are in the init rodata 11 * segment, but that's okay, because we only care about the relative 12 * addresses of the symbols. 13 */ 14extern const unsigned char x86_trampoline_start []; 15extern const unsigned char x86_trampoline_end []; 16extern unsigned char *x86_trampoline_base; 17 18extern unsigned long init_rsp; 19extern unsigned long initial_code; 20extern unsigned long initial_gs; 21 22extern void __init setup_trampolines(void); 23 24extern const unsigned char trampoline_data[]; 25extern const unsigned char trampoline_status[]; 26 27#define TRAMPOLINE_SYM(x) \ 28 ((void *)(x86_trampoline_base + \ 29 ((const unsigned char *)(x) - x86_trampoline_start))) 30 31/* Address of the SMP trampoline */ 32static inline unsigned long trampoline_address(void) 33{ 34 return virt_to_phys(TRAMPOLINE_SYM(trampoline_data)); 35} 36 37#endif /* __ASSEMBLY__ */ 38 39#endif /* _ASM_X86_TRAMPOLINE_H */