diff --git a/boards/pic32-clicker/clicker.c b/boards/pic32-clicker/clicker.c
index f67273e860ca90c4f4cc4471d46119982ffe2286..1146ff79b23e261388236374f5afe6f9c678001a 100644
--- a/boards/pic32-clicker/clicker.c
+++ b/boards/pic32-clicker/clicker.c
@@ -13,6 +13,7 @@
 #include "periph/uart.h"
 #include "bitarithm.h"
 #include "board.h"
+#include "cpu.h"
 
 extern void dummy(void);
 
@@ -36,6 +37,9 @@ void board_init(void)
     LED1_OFF;
     LED2_OFF;
 
+    /* initialize the CPU */
+    cpu_init();
+
     /* Stop the linker from throwing away the PIC32 config register settings */
     dummy();
 }
diff --git a/boards/pic32-wifire/wifire.c b/boards/pic32-wifire/wifire.c
index e373a34249e589891f5f371bd129f76ffb539ade..9fe3b221a8bf30925d579528b19831efa5ea6d8f 100644
--- a/boards/pic32-wifire/wifire.c
+++ b/boards/pic32-wifire/wifire.c
@@ -15,6 +15,7 @@
 #include "periph/uart.h"
 #include "bitarithm.h"
 #include "board.h"
+#include "cpu.h"
 
 extern void dummy(void);
 
@@ -32,8 +33,6 @@ void board_init(void)
     uart_init(DEBUG_VIA_UART, DEBUG_UART_BAUD, NULL, 0);
 #endif
 
-    hwrng_init();
-
     /* Turn off all LED's */
     gpio_init(LED1_PIN, GPIO_OUT);
     gpio_init(LED2_PIN, GPIO_OUT);
@@ -44,6 +43,9 @@ void board_init(void)
     LED3_OFF;
     LED4_OFF;
 
+    /* initialize the CPU */
+    cpu_init();
+
     /* Stop the linker from throwing away the PIC32 config register settings */
     dummy();
 }
diff --git a/cpu/mips32r2_common/cpu.c b/cpu/mips32r2_common/cpu.c
index 2cef4c9c404a2aee43f7f2e03def9bb62e0eb009..d2483cbc1cea4230564a6a208b0d871b4baa124c 100644
--- a/cpu/mips32r2_common/cpu.c
+++ b/cpu/mips32r2_common/cpu.c
@@ -15,11 +15,13 @@
 
 #include "periph/uart.h"
 #include "periph/timer.h"
+#include "periph/init.h"
 #include "panic.h"
 #include "kernel_init.h"
 #include "cpu.h"
 #include "board.h"
 
+
 void mips_start(void);
 
 extern void _fini(void);
@@ -71,3 +73,9 @@ void panic_arch(void)
     while (1) {
     }
 }
+
+void cpu_init(void)
+{
+    /* trigger static peripheral initialization */
+    periph_init();
+}
diff --git a/cpu/mips_pic32_common/Makefile.include b/cpu/mips_pic32_common/Makefile.include
index 7d26555c6731ab74f39c7496d9848a0a388223a2..e0582db5dd7edd4b17a2e72d2f32b2b82f47614f 100644
--- a/cpu/mips_pic32_common/Makefile.include
+++ b/cpu/mips_pic32_common/Makefile.include
@@ -6,4 +6,3 @@ USEMODULE += mips_pic32_common
 USEMODULE += mips_pic32_common_periph
 
 USEMODULE += periph_common
-USEMODULE += periph_hwrng
diff --git a/cpu/mips_pic32mx/include/cpu.h b/cpu/mips_pic32mx/include/cpu.h
index 45e64c4dbcec17f0e284aa467ec95eb1facc4a1c..3ebc445ed4d9948f3241de236a52997e7fd671f5 100644
--- a/cpu/mips_pic32mx/include/cpu.h
+++ b/cpu/mips_pic32mx/include/cpu.h
@@ -47,6 +47,11 @@ static inline void cpu_print_last_instruction(void)
     /* This function must exist else RIOT won't compile */
 }
 
+/**
+ * @brief Initialize the CPU, set IRQ priorities
+ */
+void cpu_init(void);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cpu/mips_pic32mz/include/cpu.h b/cpu/mips_pic32mz/include/cpu.h
index e2ca23db66bcbdee59da10e7b2acaa342fcd0134..963398c7ece5cb1d01a77dcd33c2850a26c57859 100644
--- a/cpu/mips_pic32mz/include/cpu.h
+++ b/cpu/mips_pic32mz/include/cpu.h
@@ -47,6 +47,11 @@ static inline void cpu_print_last_instruction(void)
     /* This function must exist else RIOT won't compile */
 }
 
+/**
+ * @brief Initialize the CPU, set IRQ priorities
+ */
+void cpu_init(void);
+
 #ifdef __cplusplus
 }
 #endif