summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/drivers/amd/agesa/mtrr_fixme.c10
-rw-r--r--src/drivers/amd/agesa/romstage.c5
-rw-r--r--src/northbridge/amd/agesa/agesa_helper.h1
3 files changed, 10 insertions, 6 deletions
diff --git a/src/drivers/amd/agesa/mtrr_fixme.c b/src/drivers/amd/agesa/mtrr_fixme.c
index b8b8ef05e0..1a1818ffee 100644
--- a/src/drivers/amd/agesa/mtrr_fixme.c
+++ b/src/drivers/amd/agesa/mtrr_fixme.c
@@ -9,6 +9,7 @@
#include <cpu/x86/msr.h>
#include <cpu/x86/mtrr.h>
#include <northbridge/amd/agesa/agesa_helper.h>
+#include <romstage_handoff.h>
static void set_range_uc(u32 base, u32 size)
{
@@ -51,10 +52,11 @@ void fixup_cbmem_to_UC(int s3resume)
set_range_uc(top_of_ram - 8 * MiB, 4 * MiB);
}
-void recover_postcar_frame(struct postcar_frame *pcf, int s3resume)
+static void recover_postcar_frame(struct postcar_frame *pcf)
{
msr_t base, mask;
int i;
+ int s3resume = romstage_handoff_is_resume();
/* Replicate non-UC MTRRs as left behind by AGESA.
*/
@@ -86,3 +88,9 @@ void recover_postcar_frame(struct postcar_frame *pcf, int s3resume)
MTRR_TYPE_WRBACK);
}
}
+
+void fill_postcar_frame(struct postcar_frame *pcf)
+{
+ pcf->skip_common_mtrr = 1;
+ recover_postcar_frame(pcf);
+}
diff --git a/src/drivers/amd/agesa/romstage.c b/src/drivers/amd/agesa/romstage.c
index 648a0451b3..9abcdd6110 100644
--- a/src/drivers/amd/agesa/romstage.c
+++ b/src/drivers/amd/agesa/romstage.c
@@ -78,10 +78,7 @@ static void romstage_main(void)
romstage_handoff_init(cb->s3resume);
- postcar_frame_init(&pcf);
- recover_postcar_frame(&pcf, cb->s3resume);
-
- run_postcar_phase(&pcf);
+ prepare_and_run_postcar(&pcf);
/* We do not return. */
}
diff --git a/src/northbridge/amd/agesa/agesa_helper.h b/src/northbridge/amd/agesa/agesa_helper.h
index 120e74a71a..5f93d2ad17 100644
--- a/src/northbridge/amd/agesa/agesa_helper.h
+++ b/src/northbridge/amd/agesa/agesa_helper.h
@@ -36,7 +36,6 @@ void EmptyHeap(void);
#define HIGH_MEMORY_SCRATCH 0x30000
void fixup_cbmem_to_UC(int s3resume);
-void recover_postcar_frame(struct postcar_frame *pcf, int s3resume);
void restore_mtrr(void);
void backup_mtrr(void *mtrr_store, u32 *mtrr_store_size);