@@ -1,6 +1,5 @@
#include <xen/lib.h>
#include <xen/types.h>
-#include <xen/init.h>
#include <asm/byteorder.h>
/*
@@ -423,19 +422,6 @@ uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c)
#endif
}
-typedef void (*ctor_func_t)(void);
-extern const ctor_func_t __ctors_start[], __ctors_end[];
-
-void __init init_constructors(void)
-{
- const ctor_func_t *f;
- for ( f = __ctors_start; f < __ctors_end; ++f )
- (*f)();
-
- /* Putting this here seems as good (or bad) as any other place. */
- BUILD_BUG_ON(sizeof(size_t) != sizeof(ssize_t));
-}
-
/*
* Local variables:
* mode: C
@@ -1,3 +1,4 @@
+obj-y += ctors.o
obj-$(CONFIG_X86) += x86/
lib-y += ctype.o
new file mode 100644
@@ -0,0 +1,25 @@
+#include <xen/init.h>
+#include <xen/lib.h>
+
+typedef void (*ctor_func_t)(void);
+extern const ctor_func_t __ctors_start[], __ctors_end[];
+
+void __init init_constructors(void)
+{
+ const ctor_func_t *f;
+ for ( f = __ctors_start; f < __ctors_end; ++f )
+ (*f)();
+
+ /* Putting this here seems as good (or bad) as any other place. */
+ BUILD_BUG_ON(sizeof(size_t) != sizeof(ssize_t));
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
... into its own CU, for being unrelated to other things in common/lib.c. For now it gets compiled into built_in.o rather than lib.a, as it gets used unconditionally by Arm's as well as x86'es {,__}start_xen(). But this could be changed in principle, the more that there typically aren't any constructors anyway. Then again it's just __init code anyway. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- xen/common/lib.c | 14 -------------- xen/lib/Makefile | 1 + xen/lib/ctors.c | 25 +++++++++++++++++++++++++ 3 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 xen/lib/ctors.c