diff --git a/os/xhal/codegen/hal_spi.xml b/os/xhal/codegen/hal_spi.xml
index d1062b10c..945cdb9be 100644
--- a/os/xhal/codegen/hal_spi.xml
+++ b/os/xhal/codegen/hal_spi.xml
@@ -36,6 +36,15 @@
+
diff --git a/os/xhal/include/hal_spi.h b/os/xhal/include/hal_spi.h
index 37e44f648..558bc6f0d 100644
--- a/os/xhal/include/hal_spi.h
+++ b/os/xhal/include/hal_spi.h
@@ -100,6 +100,15 @@
#error "invalid SPI_SELECT_MODE value"
#endif
+/* Some modes have a dependency on the PAL driver, making the required
+ checks here.*/
+#if ((SPI_SELECT_MODE != SPI_SELECT_MODE_PAD) || \
+ (SPI_SELECT_MODE != SPI_SELECT_MODE_PORT) || \
+ (SPI_SELECT_MODE != SPI_SELECT_MODE_LINE)) && \
+ (HAL_USE_PAL != TRUE)
+#error "current SPI_SELECT_MODE requires HAL_USE_PAL"
+#endif
+
/*===========================================================================*/
/* Module macros. */
/*===========================================================================*/