diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 20bb9de54f0ae637cb43de1042fa3955c5b4c0b4..08ba0c26e139c31a8e9b26ba342f095083d5acd3 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -352,8 +352,6 @@ bool pin_is_protected(const int8_t pin) {
   return false;
 }
 
-#include "gcode/control/M400.h"
-
 #if HAS_BED_PROBE
   #include "gcode/probe/M401_M402.h"
 #endif
diff --git a/Marlin/src/gcode/control/M400.h b/Marlin/src/gcode/control/M400.cpp
similarity index 91%
rename from Marlin/src/gcode/control/M400.h
rename to Marlin/src/gcode/control/M400.cpp
index d785c865bf543198aef6551cc1b7c3e16c2d7747..0cd1049591e7b6b01f55a9094de778f36f7adfb7 100644
--- a/Marlin/src/gcode/control/M400.h
+++ b/Marlin/src/gcode/control/M400.cpp
@@ -20,10 +20,13 @@
  *
  */
 
+#include "../gcode.h"
+#include "../../module/stepper.h"
+
 /**
  * M400: Finish all moves
  */
-void gcode_M400() {
+void GcodeSuite::M400() {
 
   stepper.synchronize();
 
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 95b8bffcb56dbeff835cb34f536d04ae0c2d7299..e4923509a8e3089055d87009723d0070c5a54d20 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -122,7 +122,6 @@ extern void gcode_M165();
 extern void gcode_M350();
 extern void gcode_M351();
 extern void gcode_M355();
-extern void gcode_M400();
 extern void gcode_M401();
 extern void gcode_M402();
 extern void gcode_M428();
@@ -599,9 +598,7 @@ void GcodeSuite::process_next_command() {
         case 381: M381(); break;  // M381: Disable all solenoids
       #endif
 
-      case 400: // M400: Finish all moves
-        gcode_M400();
-        break;
+      case 400: M400(); break;    // M400: Finish all moves
 
       #if HAS_BED_PROBE
         case 401: // M401: Deploy probe