1 #ifndef __LUNAIX_SECTIONS_H
2 #define __LUNAIX_SECTIONS_H
4 #include <lunaix/types.h>
6 #define __mark_name(n, s) __##n##_##s
7 #define __section_mark(name, suffix) \
8 ({ extern unsigned long __mark_name(name,suffix)[]; \
9 __ptr(__mark_name(name,suffix)); })
12 /* Auto-generated data */
14 #define extern_autogen(name) \
15 weak unsigned long __mark_name(autogen,name)[] = {}; \
16 extern unsigned long __mark_name(autogen,name)[];
18 #define autogen_name(name) __mark_name(autogen,name)
20 #define autogen(type, name) \
21 ((type*)__mark_name(autogen,name))
24 /* Common section definitions */
26 #define reclaimable __section(".bss.reclaim")
27 #define reclaimable_start __section_mark(bssreclaim, start)
28 #define reclaimable_end __section_mark(bssreclaim, end)
30 #define boot_start __section_mark(kboot, start)
31 #define boot_end __section_mark(kboot, end)
33 #define kernel_start __section_mark(kexec, start)
34 #define kernel_load_end __section_mark(kexec, end)
35 #define kernel_end __section_mark(kimg, end)
37 #ifdef CONFIG_USE_DEVICETREE
38 #define dtb_start __section_mark(dtb, start)
42 /* kernel section mapping info */
56 struct ksection secs[0];
59 #endif /* __LUNAIX_SECTIONS_H */