From ac32ed74b4529dbd496713e3f2d75315d8aeebaa Mon Sep 17 00:00:00 2001
From: Lino Barreca <linobarreca@hotmail.com>
Date: Thu, 2 Jan 2020 04:13:43 +0100
Subject: [PATCH] Return from loop() on non-AVR boards (#16390)

---
 Marlin/src/Marlin.cpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index a03d1f3963..5dbb914863 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -1128,10 +1128,9 @@ void setup() {
  *  - Call inactivity manager
  */
 void loop() {
+  do {
 
-  for (;;) {
-
-    idle(); // Do an idle first so boot is slightly faster
+    idle();
 
     #if ENABLED(SDSUPPORT)
       card.checkautostart();
@@ -1141,5 +1140,10 @@ void loop() {
     queue.advance();
 
     endstops.event_handler();
-  }
+
+  } while (false        // Return to caller for best compatibility
+    #ifdef __AVR__
+      || true           // Loop forever on slower (AVR) boards
+    #endif
+  );
 }