summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/intel/baytrail/refcode.c20
-rw-r--r--src/soc/intel/broadwell/refcode.c20
2 files changed, 24 insertions, 16 deletions
diff --git a/src/soc/intel/baytrail/refcode.c b/src/soc/intel/baytrail/refcode.c
index 059639bd02..45771e0777 100644
--- a/src/soc/intel/baytrail/refcode.c
+++ b/src/soc/intel/baytrail/refcode.c
@@ -23,6 +23,7 @@
#include <console/console.h>
#include <console/streams.h>
#include <cpu/x86/tsc.h>
+#include <program_loading.h>
#include <rmodule.h>
#include <ramstage_cache.h>
#if IS_ENABLED(CONFIG_CHROMEOS)
@@ -84,16 +85,16 @@ static void cache_refcode(const struct rmod_stage_load *rsl)
/* Determine how much remaining cache available. */
cache_size -= c->size + sizeof(*c);
- if (cache_size < (sizeof(*c) + cbmem_entry_size(rsl->cbmem_entry))) {
+ if (cache_size < (sizeof(*c) + prog_size(rsl->prog))) {
printk(BIOS_DEBUG, "Not enough cache space for ref code.\n");
return;
}
c = next_cache(c);
c->magic = RAMSTAGE_CACHE_MAGIC;
- c->entry_point = (uint32_t)rsl->entry;
- c->load_address = (uint32_t)cbmem_entry_start(rsl->cbmem_entry);
- c->size = cbmem_entry_size(rsl->cbmem_entry);
+ c->entry_point = (uint32_t)(uintptr_t)prog_entry(rsl->prog);
+ c->load_address = (uint32_t)(uintptr_t)prog_start(rsl->prog);
+ c->size = prog_size(rsl->prog);
printk(BIOS_DEBUG, "Caching refcode at 0x%p(%x)\n",
&c->program[0], c->size);
@@ -119,7 +120,7 @@ static int load_refcode_from_vboot(struct rmod_stage_load *refcode)
printk(BIOS_DEBUG, "refcode loading from vboot rw area.\n");
stage = (void *)(uintptr_t)fwc->address;
- if (rmodule_stage_load(refcode, stage) || refcode->entry == NULL) {
+ if (rmodule_stage_load(refcode, stage)) {
printk(BIOS_DEBUG, "Error loading reference code.\n");
return -1;
}
@@ -136,7 +137,7 @@ static int load_refcode_from_cbfs(struct rmod_stage_load *refcode)
{
printk(BIOS_DEBUG, "refcode loading from cbfs.\n");
- if (rmodule_stage_load_from_cbfs(refcode) || refcode->entry == NULL) {
+ if (rmodule_stage_load_from_cbfs(refcode)) {
printk(BIOS_DEBUG, "Error loading reference code.\n");
return -1;
}
@@ -146,9 +147,12 @@ static int load_refcode_from_cbfs(struct rmod_stage_load *refcode)
static efi_wrapper_entry_t load_reference_code(void)
{
+ struct prog prog = {
+ .name = CONFIG_CBFS_PREFIX "/refcode",
+ };
struct rmod_stage_load refcode = {
.cbmem_id = CBMEM_ID_REFCODE,
- .name = CONFIG_CBFS_PREFIX "/refcode",
+ .prog = &prog,
};
if (acpi_is_wakeup_s3()) {
@@ -162,7 +166,7 @@ static efi_wrapper_entry_t load_reference_code(void)
/* Cache loaded reference code. */
cache_refcode(&refcode);
- return refcode.entry;
+ return prog_entry(&prog);
}
void baytrail_run_reference_code(void)
diff --git a/src/soc/intel/broadwell/refcode.c b/src/soc/intel/broadwell/refcode.c
index 1328f1a412..36ce97d6af 100644
--- a/src/soc/intel/broadwell/refcode.c
+++ b/src/soc/intel/broadwell/refcode.c
@@ -23,6 +23,7 @@
#include <console/console.h>
#include <console/streams.h>
#include <cpu/x86/tsc.h>
+#include <program_loading.h>
#include <rmodule.h>
#include <ramstage_cache.h>
#include <string.h>
@@ -80,16 +81,16 @@ static void cache_refcode(const struct rmod_stage_load *rsl)
/* Determine how much remaining cache available. */
cache_size -= c->size + sizeof(*c);
- if (cache_size < (sizeof(*c) + cbmem_entry_size(rsl->cbmem_entry))) {
+ if (cache_size < (sizeof(*c) + prog_size(rsl->prog))) {
printk(BIOS_DEBUG, "Not enough cache space for ref code.\n");
return;
}
c = next_cache(c);
c->magic = RAMSTAGE_CACHE_MAGIC;
- c->entry_point = (uint32_t)rsl->entry;
- c->load_address = (uint32_t)cbmem_entry_start(rsl->cbmem_entry);
- c->size = cbmem_entry_size(rsl->cbmem_entry);
+ c->entry_point = (uint32_t)(uintptr_t)prog_entry(rsl->prog);
+ c->load_address = (uint32_t)(uintptr_t)prog_start(rsl->prog);
+ c->size = prog_size(rsl->prog);
printk(BIOS_DEBUG, "Caching refcode at 0x%p(%x)\n",
&c->program[0], c->size);
@@ -115,7 +116,7 @@ static int load_refcode_from_vboot(struct rmod_stage_load *refcode)
printk(BIOS_DEBUG, "refcode loading from vboot rw area.\n");
stage = (void *)(uintptr_t)fwc->address;
- if (rmodule_stage_load(refcode, stage) || refcode->entry == NULL) {
+ if (rmodule_stage_load(refcode, stage)) {
printk(BIOS_DEBUG, "Error loading reference code.\n");
return -1;
}
@@ -132,7 +133,7 @@ static int load_refcode_from_cbfs(struct rmod_stage_load *refcode)
{
printk(BIOS_DEBUG, "refcode loading from cbfs.\n");
- if (rmodule_stage_load_from_cbfs(refcode) || refcode->entry == NULL) {
+ if (rmodule_stage_load_from_cbfs(refcode)) {
printk(BIOS_DEBUG, "Error loading reference code.\n");
return -1;
}
@@ -142,9 +143,12 @@ static int load_refcode_from_cbfs(struct rmod_stage_load *refcode)
static pei_wrapper_entry_t load_reference_code(void)
{
+ struct prog prog = {
+ .name = CONFIG_CBFS_PREFIX "/refcode",
+ };
struct rmod_stage_load refcode = {
.cbmem_id = CBMEM_ID_REFCODE,
- .name = CONFIG_CBFS_PREFIX "/refcode",
+ .prog = &prog,
};
if (acpi_is_wakeup_s3()) {
@@ -158,7 +162,7 @@ static pei_wrapper_entry_t load_reference_code(void)
/* Cache loaded reference code. */
cache_refcode(&refcode);
- return refcode.entry;
+ return prog_entry(&prog);
}
void broadwell_run_reference_code(void)