gcc is rather over-aggressive about optimising out static data structures
[people/asdlkf/gpxe.git] / src / arch / i386 / include / relocate.h
1 #ifndef RELOCATE_H
2 #define RELOCATE_H
3
4 /* relocate() is conceptually impossible with KEEP_IT_REAL */
5 #ifndef KEEP_IT_REAL
6
7 #include <gpxe/tables.h>
8
9 /* An entry in the post-relocation function table */
10 struct post_reloc_fn {
11         void ( *post_reloc ) ( void );
12 };
13
14 /* Use double digits to avoid problems with "10" < "9" on alphabetic sort */
15 #define POST_RELOC_LIBRM        00
16
17 /* Macro for creating a post-relocation function table entry */
18 #define POST_RELOC_FN( order, post_reloc_func )                 \
19         struct post_reloc_fn PREFIX_OBJECT(post_reloc_fn__)     \
20             __table ( post_reloc_fn, order ) = {                \
21                 .post_reloc = post_reloc_func,                  \
22         };
23
24 #endif
25
26 #endif /* RELOCATE_H */