|
@@ -5,6 +5,13 @@
|
|
|
#include <linux/compiler.h>
|
|
|
#include <linux/types.h>
|
|
|
|
|
|
+/* Built-in __init functions needn't be compiled with retpoline */
|
|
|
+#if defined(RETPOLINE) && !defined(MODULE)
|
|
|
+#define __noretpoline __attribute__((indirect_branch("keep")))
|
|
|
+#else
|
|
|
+#define __noretpoline
|
|
|
+#endif
|
|
|
+
|
|
|
/* These macros are used to mark some functions or
|
|
|
* initialized data (doesn't apply to uninitialized data)
|
|
|
* as `initialization' functions. The kernel can take this
|
|
@@ -40,7 +47,7 @@
|
|
|
|
|
|
/* These are for everybody (although not all archs will actually
|
|
|
discard it in modules) */
|
|
|
-#define __init __section(.init.text) __cold __latent_entropy
|
|
|
+#define __init __section(.init.text) __cold __latent_entropy __noretpoline
|
|
|
#define __initdata __section(.init.data)
|
|
|
#define __initconst __section(.init.rodata)
|
|
|
#define __exitdata __section(.exit.data)
|