diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 7d5cb060b99..70601c3158a 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -1587,6 +1587,15 @@
 #if _HAS_STOP(Z,MAX)
   #define HAS_Z_MAX 1
 #endif
+#if _HAS_STOP(X,STOP)
+  #define HAS_X_STOP 1
+#endif
+#if _HAS_STOP(Y,STOP)
+  #define HAS_Y_STOP 1
+#endif
+#if _HAS_STOP(Z,STOP)
+  #define HAS_Z_STOP 1
+#endif
 #if PIN_EXISTS(X2_MIN)
   #define HAS_X2_MIN 1
 #endif
diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp
index 092043b59c5..5cfd7771a0c 100644
--- a/Marlin/src/module/endstops.cpp
+++ b/Marlin/src/module/endstops.cpp
@@ -742,7 +742,8 @@ void Endstops::update() {
     }
   #endif
 
-  // Now, we must signal, after validation, if an endstop limit is pressed or not
+  // Signal, after validation, if an endstop limit is pressed or not
+
   if (stepper.axis_is_moving(X_AXIS)) {
     if (stepper.motor_direction(X_AXIS_HEAD)) { // -direction
       #if HAS_X_MIN || (X_SPI_SENSORLESS && X_HOME_DIR < 0)
@@ -804,19 +805,37 @@ void Endstops::update() {
   bool Endstops::tmc_spi_homing_check() {
     bool hit = false;
     #if X_SPI_SENSORLESS
-      if (tmc_spi_homing.x && stepperX.test_stall_status()) {
+      if (tmc_spi_homing.x && (stepperX.test_stall_status()
+        #if CORE_IS_XY && Y_SPI_SENSORLESS
+          || stepperY.test_stall_status()
+        #elif CORE_IS_XZ && Z_SPI_SENSORLESS
+          || stepperZ.test_stall_status()
+        #endif
+      )) {
         SBI(live_state, X_STOP);
         hit = true;
       }
     #endif
     #if Y_SPI_SENSORLESS
-      if (tmc_spi_homing.y && stepperY.test_stall_status()) {
+      if (tmc_spi_homing.y && (stepperY.test_stall_status()
+        #if CORE_IS_XY && X_SPI_SENSORLESS
+          || stepperX.test_stall_status()
+        #elif CORE_IS_YZ && Z_SPI_SENSORLESS
+          || stepperZ.test_stall_status()
+        #endif
+      )) {
         SBI(live_state, Y_STOP);
         hit = true;
       }
     #endif
     #if Z_SPI_SENSORLESS
-      if (tmc_spi_homing.z && stepperZ.test_stall_status()) {
+      if (tmc_spi_homing.z && (stepperZ.test_stall_status()
+        #if CORE_IS_XZ && X_SPI_SENSORLESS
+          || stepperX.test_stall_status()
+        #elif CORE_IS_YZ && Y_SPI_SENSORLESS
+          || stepperY.test_stall_status()
+        #endif
+      )) {
         SBI(live_state, Z_STOP);
         hit = true;
       }
diff --git a/buildroot/share/tests/teensy35-tests b/buildroot/share/tests/teensy35-tests
index f2a098e7cd1..6ea8bd3c1c4 100755
--- a/buildroot/share/tests/teensy35-tests
+++ b/buildroot/share/tests/teensy35-tests
@@ -83,13 +83,14 @@ exec_test $1 $2 "Mixing Extruder"
 # opt_set NUM_SERVOS 1
 # opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
 # exec_test $1 $2 "SWITCHING_EXTRUDER"
+
 #
 # Enable COREXY
 #
 restore_configs
 opt_set MOTHERBOARD BOARD_TEENSY35_36
 opt_enable COREXY
-exec_test $1 $2 "COREXY"
+exec_test $1 $2 "Teensy 3.5/3.6 COREXY"
 
 #
 # Enable COREXZ
@@ -97,7 +98,7 @@ exec_test $1 $2 "COREXY"
 restore_configs
 opt_set MOTHERBOARD BOARD_TEENSY35_36
 opt_enable COREXZ
-exec_test $1 $2 "COREXZ"
+exec_test $1 $2 "Teensy 3.5/3.6 COREXZ"
 
 #
 # Enable Dual Z with Dual Z endstops