diff --git a/kern/drivers/net/bnx2x/bnx2x_dev.c b/kern/drivers/net/bnx2x/bnx2x_dev.c
index eb031a4..b4b0722 100644
--- a/kern/drivers/net/bnx2x/bnx2x_dev.c
+++ b/kern/drivers/net/bnx2x/bnx2x_dev.c
@@ -451,7 +451,8 @@
 	return 0;
 }
 
-linker_func_3(etherbnx2x_link)
+static void __init etherbnx2x_link(void)
 {
 	addethercard("bnx2x", bnx2x_pnp);
 }
+init_func_3(etherbnx2x_link);
diff --git a/kern/drivers/net/ether8139.c b/kern/drivers/net/ether8139.c
index f5761df..199a0c6 100644
--- a/kern/drivers/net/ether8139.c
+++ b/kern/drivers/net/ether8139.c
@@ -801,7 +801,8 @@
 	return 0;
 }
 
-linker_func_3(ether8139link)
+static void __init ether8139link(void)
 {
 	addethercard("rtl8139", rtl8139pnp);
 }
+init_func_3(ether8139link);
diff --git a/kern/drivers/net/ether82563.c b/kern/drivers/net/ether82563.c
index c4c48fc..5a2e1c3 100644
--- a/kern/drivers/net/ether82563.c
+++ b/kern/drivers/net/ether82563.c
@@ -2297,7 +2297,7 @@
 	return pnp(e, i218);
 }
 
-linker_func_3(ether82563link)
+static void __init ether82563link(void)
 {
 	/* recognise lots of model numbers for debugging assistance */
 	addethercard("i82563", i82563pnp);
@@ -2312,3 +2312,4 @@
 	addethercard("i218", i218pnp);
 	addethercard("igbepcie", anypnp);
 }
+init_func_3(ether82563link);
diff --git a/kern/drivers/net/etherigbe.c b/kern/drivers/net/etherigbe.c
index f29869f..13d5463 100644
--- a/kern/drivers/net/etherigbe.c
+++ b/kern/drivers/net/etherigbe.c
@@ -2040,8 +2040,9 @@
 	return 0;
 }
 
-linker_func_3(etherigbelink)
+static void __init etherigbelink()
 {
 	addethercard("i82543", igbepnp);
 	addethercard("igbe", igbepnp);
 }
+init_func_3(etherigbelink);
diff --git a/kern/drivers/net/mlx4/main.c b/kern/drivers/net/mlx4/main.c
index bd8217e..2309a21 100644
--- a/kern/drivers/net/mlx4/main.c
+++ b/kern/drivers/net/mlx4/main.c
@@ -3979,8 +3979,9 @@
 	return 0;
 }
 
-linker_func_3(ethermlx4_link)
+static void __init ethermlx4_link(void)
 {
 	addethercard("mlx4", mlx4_pnp);
 }
+init_func_3(ethermlx4_link);
 #endif
diff --git a/kern/drivers/net/r8169.c b/kern/drivers/net/r8169.c
index b9924e1..4f57342 100644
--- a/kern/drivers/net/r8169.c
+++ b/kern/drivers/net/r8169.c
@@ -8867,7 +8867,8 @@
 	return 0;
 }
 
-linker_func_3(ether_rtl8169_link)
+static void __init ether_rtl8169_link(void)
 {
 	addethercard("r8169", rtl8169_pnp);
 }
+init_func_3(ether_rtl8169_link);
diff --git a/kern/include/linker_func.h b/kern/include/linker_func.h
index 72e3e68..8dd4abb 100644
--- a/kern/include/linker_func.h
+++ b/kern/include/linker_func.h
@@ -9,19 +9,20 @@
  * higher levels.  There is no guarantee of ordering of functions within a
  * level.
  *
- * To use, change your function definition to use the appropriate macro, e.g.
+ * To use, simply add the __init tag and the appropriate init_func_X(func);
  *
- * 		void foo(void)
+ * 		static void foo(void)
  * 		{
  * 			bar();
  * 		}
  *
  * becomes
  *
- * 		linker_func_3(foo)
+ * 		static void __init foo(void)
  * 		{
  * 			bar();
  * 		}
+ * 		init_func_3(foo);
  *
  * And foo() will run during the third level of functions.
  *
@@ -29,6 +30,8 @@
 
 #pragma once
 
+#define __init
+
 #define __linkerfunc1  __attribute__((__section__(".linkerfunc1")))
 #define __linkerfunc2  __attribute__((__section__(".linkerfunc2")))
 #define __linkerfunc3  __attribute__((__section__(".linkerfunc3")))
@@ -36,25 +39,11 @@
 
 typedef void (*linker_func_t)(void);
 
-#define linker_func_1(x)                                                       \
-	void (x)(void);                                                        \
-	linker_func_t __linkerfunc1 __##x = (x);                               \
-	void (x)(void)
-
-#define linker_func_2(x)                                                       \
-	void (x)(void);                                                        \
-	linker_func_t __linkerfunc2 __##x = (x);                               \
-	void (x)(void)
-
-#define linker_func_3(x)                                                       \
-	void (x)(void);                                                        \
-	linker_func_t __linkerfunc3 __##x = (x);                               \
-	void (x)(void)
-
-#define linker_func_4(x)                                                       \
-	void (x)(void);                                                        \
-	linker_func_t __linkerfunc4 __##x = (x);                               \
-	void (x)(void)
+/* Casting for the sake of Linux functions, which return an int. */
+#define init_func_1(x) linker_func_t __linkerfunc1 __##x = (linker_func_t)(x);
+#define init_func_2(x) linker_func_t __linkerfunc2 __##x = (linker_func_t)(x);
+#define init_func_3(x) linker_func_t __linkerfunc3 __##x = (linker_func_t)(x);
+#define init_func_4(x) linker_func_t __linkerfunc4 __##x = (linker_func_t)(x);
 
 extern linker_func_t __linkerfunc1start[];
 extern linker_func_t __linkerfunc1end[];
diff --git a/kern/include/linux_compat.h b/kern/include/linux_compat.h
index 0d9232c..c645057 100644
--- a/kern/include/linux_compat.h
+++ b/kern/include/linux_compat.h
@@ -312,7 +312,6 @@
 #define MODULE_DEVICE_TABLE(...)
 #define THIS_MODULE ((void*)0)
 #define EXPORT_SYMBOL(...)
-#define __init
 #define __exit
 #define module_init(...)
 #define module_exit(...)
diff --git a/kern/src/ktest/net_ktests.c b/kern/src/ktest/net_ktests.c
index 19ef811..ef33ded 100644
--- a/kern/src/ktest/net_ktests.c
+++ b/kern/src/ktest/net_ktests.c
@@ -88,7 +88,8 @@
 
 static int num_ktests = sizeof(ktests) / sizeof(struct ktest);
 
-linker_func_1(register_net_ktests)
+static void __init register_net_ktests(void)
 {
 	REGISTER_KTESTS(ktests, num_ktests);
 }
+init_func_1(register_net_ktests);
diff --git a/kern/src/ktest/pb_ktests.c b/kern/src/ktest/pb_ktests.c
index 9049d16..05d22ea 100644
--- a/kern/src/ktest/pb_ktests.c
+++ b/kern/src/ktest/pb_ktests.c
@@ -2097,110 +2097,9 @@
 	KTEST_REG(percpu_increment,   CONFIG_TEST_percpu_increment),
 };
 static int num_ktests = sizeof(ktests) / sizeof(struct ktest);
-linker_func_1(register_pb_ktests)
+
+static void __init register_pb_ktests(void)
 {
 	REGISTER_KTESTS(ktests, num_ktests);
 }
-
-/* Linker function tests.  Keep them commented, etc. */
-#if 0
-linker_func_1(xme11)
-{
-	printk("xme11\n");
-}
-
-linker_func_1(xme12)
-{
-	printk("xme12\n");
-}
-
-linker_func_1(xme13)
-{
-	printk("xme13\n");
-}
-
-linker_func_1(xme14)
-{
-	printk("xme14\n");
-}
-
-linker_func_1(xme15)
-{
-	printk("xme15\n");
-}
-
-linker_func_2(xme21)
-{
-	printk("xme21\n");
-}
-
-linker_func_2(xme22)
-{
-	printk("xme22\n");
-}
-
-linker_func_2(xme23)
-{
-	printk("xme23\n");
-}
-
-linker_func_2(xme24)
-{
-	printk("xme24\n");
-}
-
-linker_func_2(xme25)
-{
-	printk("xme25\n");
-}
-
-linker_func_3(xme31)
-{
-	printk("xme31\n");
-}
-
-linker_func_3(xme32)
-{
-	printk("xme32\n");
-}
-
-linker_func_3(xme33)
-{
-	printk("xme33\n");
-}
-
-linker_func_3(xme34)
-{
-	printk("xme34\n");
-}
-
-linker_func_3(xme35)
-{
-	printk("xme35\n");
-}
-
-linker_func_4(xme41)
-{
-	printk("xme41\n");
-}
-
-linker_func_4(xme42)
-{
-	printk("xme42\n");
-}
-
-linker_func_4(xme43)
-{
-	printk("xme43\n");
-}
-
-linker_func_4(xme44)
-{
-	printk("xme44\n");
-}
-
-linker_func_4(xme45)
-{
-	printk("xme45\n");
-}
-#endif /* linker func tests */
+init_func_1(register_pb_ktests);
diff --git a/kern/src/net/ethermedium.c b/kern/src/net/ethermedium.c
index c96f463..bb39564 100644
--- a/kern/src/net/ethermedium.c
+++ b/kern/src/net/ethermedium.c
@@ -859,11 +859,12 @@
 	return NULL;
 }
 
-linker_func_4(ethermediumlink)
+static void __init ethermediumlink(void)
 {
 	addipmedium(&ethermedium);
 	addipmedium(&trexmedium);
 }
+init_func_4(ethermediumlink);
 
 static void etherpref2addr(uint8_t * pref, uint8_t * ea)
 {
diff --git a/kern/src/net/loopbackmedium.c b/kern/src/net/loopbackmedium.c
index 4cdf617..25918d5 100644
--- a/kern/src/net/loopbackmedium.c
+++ b/kern/src/net/loopbackmedium.c
@@ -149,7 +149,8 @@
 	.bwrite = loopbackbwrite,
 };
 
-linker_func_4(loopbackmediumlink)
+static void __init loopbackmediumlink(void)
 {
 	addipmedium(&loopbackmedium);
 }
+init_func_4(loopbackmediumlink);
