diff --git a/epicardium/api/control.c b/epicardium/api/control.c
index b8987b43e8654fcf873a47a8e6024fda3b3c561e..9302eb5e6debc07cbd9cfa1ff4fc04c80ebcbf8c 100644
--- a/epicardium/api/control.c
+++ b/epicardium/api/control.c
@@ -45,9 +45,22 @@ static uintptr_t core1_initial_ivt[] = {
  */
 __attribute__((naked)) void __core1_reset(void)
 {
-	__asm volatile("mov	sp, %0\n\t"
-		       : /* No Outputs */
-		       : "r"(core1_initial_ivt[0]));
+	/* Reset stack to MSP and set it to 0x20080000 */
+	__asm volatile(
+		"mov	r0, #0\n\t"
+		"msr	control, r0\n\t"
+		"mov	sp, %0\n\t"
+		: /* No Outputs */
+		: "r"(core1_initial_ivt[0])
+		: "r0");
+
+	/* Reset FPU */
+	SCB->CPACR  = 0x00000000;
+	FPU->FPDSCR = 0x00000000;
+	FPU->FPCCR  = 0x00000000;
+	__DSB();
+	__ISB();
+
 	__core1_init();
 }