program loading: add prog_run() function

The prog_run() function abstracts away what is required
for running a given program. Within it, there are 2
calls: 1. platform_prog_run() and 2. arch_prog_run().
The platform_prog_run() allows for a chipset to intercept
a program that will be run. This allows for CPU switching
as currently needed in t124 and t132.

Change-Id: I22a5dd5bfb1018e7e46475e47ac993a0941e2a8c
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/8846
Tested-by: build bot (Jenkins)
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Reviewed-by: Marc Jones <marc.jones@se-eng.com>
diff --git a/src/include/program_loading.h b/src/include/program_loading.h
index 38047c7..1df1825 100644
--- a/src/include/program_loading.h
+++ b/src/include/program_loading.h
@@ -90,6 +90,16 @@
 	prog->arg = arg;
 }
 
+/* Run the program described by prog. */
+void prog_run(struct prog *prog);
+/* Per architecture implementation running a program. */
+void arch_prog_run(struct prog *prog);
+/* Platform (SoC/chipset) specific overrides for running a program. This is
+ * called prior to calling the arch_prog_run. Thus, if there is anything
+ * special that needs to be done by the platform similar to the architecture
+ * code it needs to that as well. */
+void platform_prog_run(struct prog *prog);
+
 /************************
  *   ROMSTAGE LOADING   *
  ************************/
@@ -143,7 +153,7 @@
 void mirror_payload(struct payload *payload);
 
 /* architecture specific function to run payload. */
-void arch_payload_run(const struct payload *payload);
+void arch_payload_run(struct payload *payload);
 
 /* Payload loading operations. */
 struct payload_loader_ops {