diff --git a/include/env.h b/include/env.h
index b59c3c36f20238ccd61f38cb1a3772c45e925b24..271cb3e88838cdafcbbde03c2ec73d776f766014 100644
--- a/include/env.h
+++ b/include/env.h
@@ -21,6 +21,40 @@ enum env_valid {
 	ENV_REDUND,	/* Redundant environment is valid */
 };
 
+/** enum env_op - environment callback operation */
+enum env_op {
+	env_op_create,
+	env_op_delete,
+	env_op_overwrite,
+};
+
+/** struct env_clbk_tbl - declares a new callback */
+struct env_clbk_tbl {
+	const char *name;		/* Callback name */
+	int (*callback)(const char *name, const char *value, enum env_op op,
+			int flags);
+};
+
+/*
+ * Define a callback that can be associated with variables.
+ * when associated through the ".callbacks" environment variable, the callback
+ * will be executed any time the variable is inserted, overwritten, or deleted.
+ *
+ * For SPL these are silently dropped to reduce code size, since environment
+ * callbacks are not supported with SPL.
+ */
+#ifdef CONFIG_SPL_BUILD
+#define U_BOOT_ENV_CALLBACK(name, callback) \
+	static inline __maybe_unused void _u_boot_env_noop_##name(void) \
+	{ \
+		(void)callback; \
+	}
+#else
+#define U_BOOT_ENV_CALLBACK(name, callback) \
+	ll_entry_declare(struct env_clbk_tbl, name, env_clbk) = \
+	{#name, callback}
+#endif
+
 /**
  * env_get_id() - Gets a sequence number for the environment
  *
diff --git a/include/env_callback.h b/include/env_callback.h
index 507a52e13c9fbcd0b7b9f2d8dad045edf0241333..3d30a33f5bad6bb678a0016924cf8335d4e3af6d 100644
--- a/include/env_callback.h
+++ b/include/env_callback.h
@@ -72,29 +72,6 @@
 	"serial#:serialno," \
 	CONFIG_ENV_CALLBACK_LIST_STATIC
 
-struct env_clbk_tbl {
-	const char *name;		/* Callback name */
-	int (*callback)(const char *name, const char *value, enum env_op op,
-		int flags);
-};
-
 void env_callback_init(ENTRY *var_entry);
 
-/*
- * Define a callback that can be associated with variables.
- * when associated through the ".callbacks" environment variable, the callback
- * will be executed any time the variable is inserted, overwritten, or deleted.
- */
-#ifdef CONFIG_SPL_BUILD
-#define U_BOOT_ENV_CALLBACK(name, callback) \
-	static inline __maybe_unused void _u_boot_env_noop_##name(void) \
-	{ \
-		(void)callback; \
-	}
-#else
-#define U_BOOT_ENV_CALLBACK(name, callback) \
-	ll_entry_declare(struct env_clbk_tbl, name, env_clbk) = \
-	{#name, callback}
-#endif
-
 #endif /* __ENV_CALLBACK_H__ */
diff --git a/include/search.h b/include/search.h
index 9750336b5e5856a2c1354f08c7f14c1ca21081f3..f9fb29fdf9984d6d48d92f652f87a68c46fa58be 100644
--- a/include/search.h
+++ b/include/search.h
@@ -19,12 +19,6 @@
 
 #define __set_errno(val) do { errno = val; } while (0)
 
-enum env_op {
-	env_op_create,
-	env_op_delete,
-	env_op_overwrite,
-};
-
 /* Action which shall be performed in the call to hsearch.  */
 typedef enum {
 	FIND,