include/bootstate.h: Fail compilation on invalid bootstate hooks

No BS_ON_EXIT hooks are run on BS_PAYLOAD_BOOT or BS_OS_RESUME, so don't
allow these hooks.

Change-Id: I318165f0bd510aed3138d3612dd3e264901aba96
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/72708
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Benjamin Doron <benjamin.doron00@gmail.com>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
diff --git a/src/include/bootstate.h b/src/include/bootstate.h
index 87ed0c8..a1743a8 100644
--- a/src/include/bootstate.h
+++ b/src/include/bootstate.h
@@ -188,7 +188,11 @@
 	};								\
 	static struct boot_state_init_entry *				\
 		bsie_ ## func_ ##_## state_ ##_## when_ BOOT_STATE_INIT_ATTR = \
-		&func_ ##_## state_ ##_## when_;
+		&func_ ##_## state_ ##_## when_;			\
+	_Static_assert(!(state_ == BS_PAYLOAD_BOOT && when_ == BS_ON_EXIT), \
+		       "Invalid bootstate hook");			\
+	_Static_assert(!(state_ == BS_OS_RESUME && when_ == BS_ON_EXIT), \
+		       "Invalid bootstate hook");
 
 /* Hook per arch when coreboot is exiting to payload or ACPI OS resume. It's
  * the very last thing done before the transition. */