program loading: unify on struct prog

Instead of having different structures for loading
ramstage and payload align to using struct prog.
This also removes arch_payload_run() in favor of
the prog_run() interface.

Change-Id: I31483096094eacc713a7433811cd69cc5621c43e
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/8849
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Tested-by: build bot (Jenkins)
Reviewed-by: Marc Jones <marc.jones@se-eng.com>
diff --git a/src/include/program_loading.h b/src/include/program_loading.h
index 1df1825..2699887 100644
--- a/src/include/program_loading.h
+++ b/src/include/program_loading.h
@@ -50,7 +50,8 @@
 	const char *name;
 	/* The area can mean different things depending on what type the
 	 * program is. e.g. a payload prog uses this field for the backing
-	 * store of the payload_segments and data. */
+	 * store of the payload_segments and data. After loading the segments
+	 * area is updated to reflect the bounce buffer used. */
 	struct buffer_area area;
 	/* Entry to program with optional argument. It's up to the architecture
 	 * to decide if argument is passed. */
@@ -100,6 +101,14 @@
  * code it needs to that as well. */
 void platform_prog_run(struct prog *prog);
 
+struct prog_loader_ops {
+	const char *name;
+	/* Returns < 0 on error or 0 on success. This function needs to do
+	 * different things depending on the prog type. See definition
+	 * of struct prog above. */
+	int (*prepare)(struct prog *prog);
+};
+
 /************************
  *   ROMSTAGE LOADING   *
  ************************/
@@ -111,6 +120,9 @@
  *   RAMSTAGE LOADING   *
  ************************/
 
+/* Run ramstage from romstage. */
+void run_ramstage(void);
+
 struct romstage_handoff;
 #if IS_ENABLED(CONFIG_RELOCATABLE_RAMSTAGE)
 /* Cache the loaded ramstage described by prog. */
@@ -124,25 +136,10 @@
 					struct prog *p) {}
 #endif
 
-/* Run ramstage from romstage. */
-void run_ramstage(void);
-
-struct ramstage_loader_ops {
-	const char *name;
-	/* Returns 0 on succes. < 0 on error. */
-	int (*load)(struct prog *ramstage);
-};
-
 /***********************
  *   PAYLOAD LOADING   *
  ***********************/
 
-struct payload {
-	struct prog prog;
-	/* Used when payload wants memory coreboot ramstage is running at. */
-	struct buffer_area bounce;
-};
-
 /* Load payload into memory in preparation to run. */
 void payload_load(void);
 
@@ -150,23 +147,9 @@
 void payload_run(void);
 
 /* Mirror the payload to be loaded. */
-void mirror_payload(struct payload *payload);
-
-/* architecture specific function to run payload. */
-void arch_payload_run(struct payload *payload);
-
-/* Payload loading operations. */
-struct payload_loader_ops {
-	const char *name;
-	/*
-	 * Fill in payload_backing_store structure.  Return 0 on success, < 0
-	 * on failure.
-	 */
-	int (*locate)(struct payload *payload);
-};
+void mirror_payload(struct prog *payload);
 
 /* Defined in src/lib/selfboot.c */
-void *selfload(struct payload *payload);
-
+void *selfload(struct prog *payload);
 
 #endif /* PROGRAM_LOADING_H */