[coreboot-gerrit] Patch set updated for coreboot: AGESA: Unify some of f*/Proc/Common

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Mon Apr 25 21:42:14 CEST 2016


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/7781

-gerrit

commit 7fce35655fc80aa051ea1f7943b5285ba290185a
Author: Edward O'Callaghan <eocallaghan at alterapraxis.com>
Date:   Wed Dec 10 23:17:21 2014 +1100

    AGESA: Unify some of f*/Proc/Common
    
    Sanitize some board includes to match the refactor.
    
    Change-Id: I5e304d5a02a54322dfce9c376ab32455b81d8a0a
    Signed-off-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
---
 src/cpu/amd/agesa/family12/Makefile.inc            |   2 +-
 src/cpu/amd/agesa/family16kb/Makefile.inc          |   4 +-
 src/mainboard/amd/dinar/buildOpts.c                |   2 +-
 src/mainboard/amd/inagua/buildOpts.c               |   2 +-
 src/mainboard/amd/olivehill/buildOpts.c            |   2 +-
 src/mainboard/amd/parmer/buildOpts.c               |   2 +-
 src/mainboard/amd/persimmon/buildOpts.c            |   2 +-
 src/mainboard/amd/south_station/buildOpts.c        |   2 +-
 src/mainboard/amd/thatcher/buildOpts.c             |   2 +-
 src/mainboard/amd/torpedo/buildOpts.c              |   2 +-
 src/mainboard/amd/union_station/buildOpts.c        |   2 +-
 src/mainboard/asrock/e350m1/buildOpts.c            |   2 +-
 src/mainboard/asrock/imb-a180/buildOpts.c          |   2 +-
 src/mainboard/asus/f2a85-m/buildOpts.c             |   2 +-
 src/mainboard/asus/f2a85-m_le/buildOpts.c          |   2 +-
 src/mainboard/gizmosphere/gizmo/buildOpts.c        |   2 +-
 src/mainboard/gizmosphere/gizmo2/buildOpts.c       |   2 +-
 src/mainboard/hp/pavilion_m6_1035dx/buildOpts.c    |   2 +-
 src/mainboard/jetway/nf81-t56n-lf/buildOpts.c      |   2 +-
 src/mainboard/lenovo/g505s/buildOpts.c             |   2 +-
 src/mainboard/lippert/frontrunner-af/buildOpts.c   |   2 +-
 src/mainboard/lippert/toucan-af/buildOpts.c        |   2 +-
 .../amd/agesa/common/Proc/Common/AmdFch.h          |  65 +++++
 .../amd/agesa/common/Proc/Common/AmdInitRecovery.c | 168 +++++++++++
 .../agesa/common/Proc/Common/AmdLateRunApTask.c    | 159 +++++++++++
 .../amd/agesa/common/Proc/Common/CommonInits.h     |  65 +++++
 .../amd/agesa/common/Proc/Common/CommonPage.h      | 116 ++++++++
 .../amd/agesa/common/Proc/Common/CreateStruct.c    | 313 ++++++++++++++++++++
 .../amd/agesa/common/Proc/Common/CreateStruct.h    | 197 +++++++++++++
 src/vendorcode/amd/agesa/f10/Makefile.inc          |   3 +-
 .../amd/agesa/f10/Proc/Common/AmdInitRecovery.c    | 165 -----------
 .../amd/agesa/f10/Proc/Common/AmdLateRunApTask.c   | 156 ----------
 .../amd/agesa/f10/Proc/Common/CommonInits.h        |  65 -----
 .../amd/agesa/f10/Proc/Common/CommonPage.h         | 116 --------
 .../amd/agesa/f10/Proc/Common/CreateStruct.h       | 195 -------------
 src/vendorcode/amd/agesa/f12/Makefile.inc          |   1 +
 src/vendorcode/amd/agesa/f12/Proc/Common/AmdFch.h  |  65 -----
 .../amd/agesa/f12/Proc/Common/AmdInitRecovery.c    | 168 -----------
 .../amd/agesa/f12/Proc/Common/CommonInits.h        |  65 -----
 .../amd/agesa/f12/Proc/Common/CommonPage.h         | 116 --------
 .../amd/agesa/f12/Proc/Common/CreateStruct.c       | 313 --------------------
 .../amd/agesa/f12/Proc/Common/CreateStruct.h       | 195 -------------
 src/vendorcode/amd/agesa/f14/Makefile.inc          |   5 +-
 .../amd/agesa/f14/Proc/Common/AmdInitRecovery.c    | 171 -----------
 .../amd/agesa/f14/Proc/Common/AmdLateRunApTask.c   | 161 -----------
 .../amd/agesa/f14/Proc/Common/CommonInits.h        |  66 -----
 .../amd/agesa/f14/Proc/Common/CommonPage.h         | 118 --------
 .../amd/agesa/f14/Proc/Common/CreateStruct.c       | 315 ---------------------
 .../amd/agesa/f14/Proc/Common/CreateStruct.h       | 197 -------------
 src/vendorcode/amd/agesa/f15/Makefile.inc          |   5 +-
 src/vendorcode/amd/agesa/f15/Proc/Common/AmdFch.h  |  65 -----
 .../amd/agesa/f15/Proc/Common/AmdInitRecovery.c    | 168 -----------
 .../amd/agesa/f15/Proc/Common/AmdLateRunApTask.c   | 159 -----------
 .../amd/agesa/f15/Proc/Common/CommonInits.h        |  65 -----
 .../amd/agesa/f15/Proc/Common/CommonPage.h         | 116 --------
 .../amd/agesa/f15/Proc/Common/CreateStruct.c       | 313 --------------------
 .../amd/agesa/f15/Proc/Common/CreateStruct.h       | 195 -------------
 src/vendorcode/amd/agesa/f15tn/Makefile.inc        |   5 +-
 .../amd/agesa/f15tn/Proc/Common/AmdFch.h           |  65 -----
 .../amd/agesa/f15tn/Proc/Common/AmdInitRecovery.c  | 168 -----------
 .../amd/agesa/f15tn/Proc/Common/AmdLateRunApTask.c | 159 -----------
 .../amd/agesa/f15tn/Proc/Common/CommonInits.h      |  65 -----
 .../amd/agesa/f15tn/Proc/Common/CommonPage.h       | 116 --------
 .../amd/agesa/f15tn/Proc/Common/CreateStruct.c     | 313 --------------------
 .../amd/agesa/f15tn/Proc/Common/CreateStruct.h     | 195 -------------
 src/vendorcode/amd/agesa/f16kb/Makefile.inc        |   1 +
 .../amd/agesa/f16kb/Proc/Common/AmdFch.h           |  65 -----
 .../amd/agesa/f16kb/Proc/Common/AmdLateRunApTask.c | 159 -----------
 .../amd/agesa/f16kb/Proc/Common/CommonInits.h      |  65 -----
 .../amd/agesa/f16kb/Proc/Common/CreateStruct.c     | 313 --------------------
 .../amd/agesa/f16kb/Proc/Common/CreateStruct.h     | 195 -------------
 71 files changed, 1119 insertions(+), 5636 deletions(-)

diff --git a/src/cpu/amd/agesa/family12/Makefile.inc b/src/cpu/amd/agesa/family12/Makefile.inc
index e372fdf..b8bd16e 100644
--- a/src/cpu/amd/agesa/family12/Makefile.inc
+++ b/src/cpu/amd/agesa/family12/Makefile.inc
@@ -51,7 +51,7 @@ agesa_lib_src  += $(AGESA_ROOT)/Proc/Common/AmdS3LateRestore.c
 agesa_lib_src  += $(AGESA_ROOT)/Proc/Common/AmdS3Save.c
 agesa_lib_src  += $(AGESA_ROOT)/Proc/Common/CommonInits.c
 agesa_lib_src  += $(AGESA_ROOT)/Proc/Common/CommonReturns.c
-agesa_lib_src  += $(AGESA_ROOT)/Proc/Common/CreateStruct.c
+agesa_lib_src  += $(AGESA_ROOT)/../common/Proc/Common/CreateStruct.c
 agesa_lib_src  += $(AGESA_ROOT)/Proc/Common/S3RestoreState.c
 agesa_lib_src  += $(AGESA_ROOT)/Proc/Common/S3SaveState.c
 agesa_lib_src  += $(AGESA_ROOT)/Proc/CPU/cahalt.c
diff --git a/src/cpu/amd/agesa/family16kb/Makefile.inc b/src/cpu/amd/agesa/family16kb/Makefile.inc
index c84391a..7f98965 100644
--- a/src/cpu/amd/agesa/family16kb/Makefile.inc
+++ b/src/cpu/amd/agesa/family16kb/Makefile.inc
@@ -37,12 +37,12 @@ agesa_lib_src += $(AGESA_ROOT)/Proc/Common/AmdInitMid.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/AmdInitPost.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/AmdInitReset.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/AmdInitResume.c
-agesa_lib_src += $(AGESA_ROOT)/Proc/Common/AmdLateRunApTask.c
+agesa_lib_src += $(AGESA_ROOT)/../common/Proc/Common/AmdLateRunApTask.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/AmdS3LateRestore.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/AmdS3Save.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/CommonInits.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/CommonReturns.c
-agesa_lib_src += $(AGESA_ROOT)/Proc/Common/CreateStruct.c
+agesa_lib_src += $(AGESA_ROOT)/../common/Proc/Common/CreateStruct.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/S3RestoreState.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Common/S3SaveState.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/CPU/cahaltasm.S
diff --git a/src/mainboard/amd/dinar/buildOpts.c b/src/mainboard/amd/dinar/buildOpts.c
index 88e3c6f..b26d6c9 100644
--- a/src/mainboard/amd/dinar/buildOpts.c
+++ b/src/mainboard/amd/dinar/buildOpts.c
@@ -400,7 +400,7 @@ CONST DEVICE_CAP_OVERRIDE ROMDATA MaranelloOverrideDevCap[2] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/amd/inagua/buildOpts.c b/src/mainboard/amd/inagua/buildOpts.c
index 5779ccd..eb984ce 100644
--- a/src/mainboard/amd/inagua/buildOpts.c
+++ b/src/mainboard/amd/inagua/buildOpts.c
@@ -252,7 +252,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "cpuEarlyInit.h"
diff --git a/src/mainboard/amd/olivehill/buildOpts.c b/src/mainboard/amd/olivehill/buildOpts.c
index f739a13..a44651e 100644
--- a/src/mainboard/amd/olivehill/buildOpts.c
+++ b/src/mainboard/amd/olivehill/buildOpts.c
@@ -256,7 +256,7 @@ CONST AP_MTRR_SETTINGS ROMDATA KabiniApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/amd/parmer/buildOpts.c b/src/mainboard/amd/parmer/buildOpts.c
index 7aa95c0..cbd1de9 100644
--- a/src/mainboard/amd/parmer/buildOpts.c
+++ b/src/mainboard/amd/parmer/buildOpts.c
@@ -257,7 +257,7 @@ CONST AP_MTRR_SETTINGS ROMDATA TrinityApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/amd/persimmon/buildOpts.c b/src/mainboard/amd/persimmon/buildOpts.c
index 2f93930..d67680d 100644
--- a/src/mainboard/amd/persimmon/buildOpts.c
+++ b/src/mainboard/amd/persimmon/buildOpts.c
@@ -252,7 +252,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "cpuEarlyInit.h"
diff --git a/src/mainboard/amd/south_station/buildOpts.c b/src/mainboard/amd/south_station/buildOpts.c
index 9c7c219..8cdb056 100644
--- a/src/mainboard/amd/south_station/buildOpts.c
+++ b/src/mainboard/amd/south_station/buildOpts.c
@@ -252,7 +252,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "cpuEarlyInit.h"
diff --git a/src/mainboard/amd/thatcher/buildOpts.c b/src/mainboard/amd/thatcher/buildOpts.c
index 7ead4c6..d36a918 100644
--- a/src/mainboard/amd/thatcher/buildOpts.c
+++ b/src/mainboard/amd/thatcher/buildOpts.c
@@ -257,7 +257,7 @@ CONST AP_MTRR_SETTINGS ROMDATA TrinityApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/amd/torpedo/buildOpts.c b/src/mainboard/amd/torpedo/buildOpts.c
index 31d1fef..2f547be 100644
--- a/src/mainboard/amd/torpedo/buildOpts.c
+++ b/src/mainboard/amd/torpedo/buildOpts.c
@@ -235,7 +235,7 @@ CONST AP_MTRR_SETTINGS ROMDATA LlanoApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/amd/union_station/buildOpts.c b/src/mainboard/amd/union_station/buildOpts.c
index 9c7c219..8cdb056 100644
--- a/src/mainboard/amd/union_station/buildOpts.c
+++ b/src/mainboard/amd/union_station/buildOpts.c
@@ -252,7 +252,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "cpuEarlyInit.h"
diff --git a/src/mainboard/asrock/e350m1/buildOpts.c b/src/mainboard/asrock/e350m1/buildOpts.c
index bc106b7..8e733c2 100644
--- a/src/mainboard/asrock/e350m1/buildOpts.c
+++ b/src/mainboard/asrock/e350m1/buildOpts.c
@@ -251,7 +251,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/asrock/imb-a180/buildOpts.c b/src/mainboard/asrock/imb-a180/buildOpts.c
index 06199e0..37ee8b6 100644
--- a/src/mainboard/asrock/imb-a180/buildOpts.c
+++ b/src/mainboard/asrock/imb-a180/buildOpts.c
@@ -256,7 +256,7 @@ CONST AP_MTRR_SETTINGS ROMDATA KabiniApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/asus/f2a85-m/buildOpts.c b/src/mainboard/asus/f2a85-m/buildOpts.c
index cd1c812..3a0402d 100644
--- a/src/mainboard/asus/f2a85-m/buildOpts.c
+++ b/src/mainboard/asus/f2a85-m/buildOpts.c
@@ -44,7 +44,7 @@
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/Feature/cpuFeatures.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/heapManager.h>
 /* the next two headers depend on heapManager.h */
-#include <vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.h>
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEarlyInit.h>
 /* These tables are optional and may be used to adjust memory timing settings */
 #include <vendorcode/amd/agesa/f15tn/Proc/Mem/mm.h>
diff --git a/src/mainboard/asus/f2a85-m_le/buildOpts.c b/src/mainboard/asus/f2a85-m_le/buildOpts.c
index 4e43ead..bed6c02 100644
--- a/src/mainboard/asus/f2a85-m_le/buildOpts.c
+++ b/src/mainboard/asus/f2a85-m_le/buildOpts.c
@@ -44,7 +44,7 @@
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/Feature/cpuFeatures.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/heapManager.h>
 /* the next two headers depend on heapManager.h */
-#include <vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.h>
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEarlyInit.h>
 /* These tables are optional and may be used to adjust memory timing settings */
 #include <vendorcode/amd/agesa/f15tn/Proc/Mem/mm.h>
diff --git a/src/mainboard/gizmosphere/gizmo/buildOpts.c b/src/mainboard/gizmosphere/gizmo/buildOpts.c
index 613b3bc..adbf1c8 100644
--- a/src/mainboard/gizmosphere/gizmo/buildOpts.c
+++ b/src/mainboard/gizmosphere/gizmo/buildOpts.c
@@ -254,7 +254,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "cpuEarlyInit.h"
diff --git a/src/mainboard/gizmosphere/gizmo2/buildOpts.c b/src/mainboard/gizmosphere/gizmo2/buildOpts.c
index 51d9dd0..8d4e585 100644
--- a/src/mainboard/gizmosphere/gizmo2/buildOpts.c
+++ b/src/mainboard/gizmosphere/gizmo2/buildOpts.c
@@ -258,7 +258,7 @@ CONST AP_MTRR_SETTINGS ROMDATA KabiniApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "CommonReturns.h"
diff --git a/src/mainboard/hp/pavilion_m6_1035dx/buildOpts.c b/src/mainboard/hp/pavilion_m6_1035dx/buildOpts.c
index bfda9da..9153acc 100644
--- a/src/mainboard/hp/pavilion_m6_1035dx/buildOpts.c
+++ b/src/mainboard/hp/pavilion_m6_1035dx/buildOpts.c
@@ -46,7 +46,7 @@
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/Feature/cpuFeatures.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/heapManager.h>
 /* AGESA nonesense: the next two headers depend on heapManager.h */
-#include <vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.h>
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEarlyInit.h>
 /* These tables are optional and may be used to adjust memory timing settings */
 #include <vendorcode/amd/agesa/f15tn/Proc/Mem/mm.h>
diff --git a/src/mainboard/jetway/nf81-t56n-lf/buildOpts.c b/src/mainboard/jetway/nf81-t56n-lf/buildOpts.c
index 8d8bbec..3c4c6a8 100644
--- a/src/mainboard/jetway/nf81-t56n-lf/buildOpts.c
+++ b/src/mainboard/jetway/nf81-t56n-lf/buildOpts.c
@@ -44,7 +44,7 @@
 #include <vendorcode/amd/agesa/f14/Proc/CPU/Feature/cpuFeatures.h>
 #include <vendorcode/amd/agesa/f14/Proc/CPU/heapManager.h>
 /* AGESA nonesense: the next two headers depend on heapManager.h */
-#include <vendorcode/amd/agesa/f14/Proc/Common/CreateStruct.h>
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include <vendorcode/amd/agesa/f14/Proc/CPU/cpuEarlyInit.h>
 /* These tables are optional and may be used to adjust memory timing settings */
 #include <vendorcode/amd/agesa/f14/Proc/Mem/mm.h>
diff --git a/src/mainboard/lenovo/g505s/buildOpts.c b/src/mainboard/lenovo/g505s/buildOpts.c
index 9ed4c74..82ce249 100644
--- a/src/mainboard/lenovo/g505s/buildOpts.c
+++ b/src/mainboard/lenovo/g505s/buildOpts.c
@@ -46,7 +46,7 @@
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/Feature/cpuFeatures.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/heapManager.h>
 /* AGESA nonesense: the next two headers depend on heapManager.h */
-#include <vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.h>
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEarlyInit.h>
 /* These tables are optional and may be used to adjust memory timing settings */
 #include <vendorcode/amd/agesa/f15tn/Proc/Mem/mm.h>
diff --git a/src/mainboard/lippert/frontrunner-af/buildOpts.c b/src/mainboard/lippert/frontrunner-af/buildOpts.c
index a6e4472..f9ffa02 100644
--- a/src/mainboard/lippert/frontrunner-af/buildOpts.c
+++ b/src/mainboard/lippert/frontrunner-af/buildOpts.c
@@ -253,7 +253,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "cpuEarlyInit.h"
diff --git a/src/mainboard/lippert/toucan-af/buildOpts.c b/src/mainboard/lippert/toucan-af/buildOpts.c
index a6e4472..f9ffa02 100644
--- a/src/mainboard/lippert/toucan-af/buildOpts.c
+++ b/src/mainboard/lippert/toucan-af/buildOpts.c
@@ -253,7 +253,7 @@ CONST AP_MTRR_SETTINGS ROMDATA OntarioApMtrrSettingsList[] =
 #include "cpuFamilyTranslation.h"
 #include "AdvancedApi.h"
 #include "heapManager.h"
-#include "CreateStruct.h"
+#include <vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h>
 #include "cpuFeatures.h"
 #include "Table.h"
 #include "cpuEarlyInit.h"
diff --git a/src/vendorcode/amd/agesa/common/Proc/Common/AmdFch.h b/src/vendorcode/amd/agesa/common/Proc/Common/AmdFch.h
new file mode 100644
index 0000000..afe565b
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Common/AmdFch.h
@@ -0,0 +1,65 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * AMD FCH Component
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:     AGESA
+ * @e sub-project: FCH
+ * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
+ *
+ */
+/*
+*****************************************************************************
+*
+ * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
+ *       its contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* ***************************************************************************
+*
+*/
+
+#ifndef _AMD_FCH_H_
+#define _AMD_FCH_H_
+
+typedef AGESA_STATUS FCH_INIT (IN VOID *DataPtr);
+typedef VOID FCH_TASK_ENTRY (IN VOID *FchCfg);
+
+
+/// FCH API build options
+typedef struct {
+  FCH_INIT        *InitReset;                   ///< InitReset
+  FCH_INIT        *InitResetConstructor;        ///< InitResetConstructor
+  FCH_INIT        *InitEnv;                     ///< InitEnv
+  FCH_INIT        *InitEnvConstructor;          ///< InitEnvConstructor
+  FCH_INIT        *InitMid;                     ///< InitMid
+  FCH_INIT        *InitMidConstructor;          ///< InitMidConstructor
+  FCH_INIT        *InitLate;                    ///< InitLate
+  FCH_INIT        *InitLateConstructor;         ///< InitLateConstructor
+} BLDOPT_FCH_FUNCTION;
+
+#endif
diff --git a/src/vendorcode/amd/agesa/common/Proc/Common/AmdInitRecovery.c b/src/vendorcode/amd/agesa/common/Proc/Common/AmdInitRecovery.c
new file mode 100644
index 0000000..ac4c08d
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Common/AmdInitRecovery.c
@@ -0,0 +1,168 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * AMD AGESA Basic Level Public APIs
+ *
+ * Contains basic Level Initialization routines.
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:      AGESA
+ * @e sub-project:  Common
+ * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
+ *
+ */
+/*****************************************************************************
+ *
+ * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
+ *       its contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ******************************************************************************
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ *                             M O D U L E S    U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "amdlib.h"
+#include "Ids.h"
+#include "AdvancedApi.h"
+#include "heapManager.h"
+#include "mm.h"
+#include "GnbInterface.h"
+#include "cpuRecovery.h"
+#include "cpuCacheInit.h"
+#include "Filecode.h"
+CODE_GROUP (G2_PEI)
+RDATA_GROUP (G2_PEI)
+
+#define FILECODE PROC_COMMON_AMDINITRECOVERY_FILECODE
+
+/*----------------------------------------------------------------------------------------
+ *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+/*----------------------------------------------------------------------------------------
+ *                   D E F I N I T I O N S    A N D    M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+
+/*---------------------------------------------------------------------------------------*/
+/**
+ * Perform initialization services required at the Early Init POST time point.
+ *
+ * Execution Cache, HyperTransport, C1e, and AP Init advanced services are performed.
+ *
+ * @param[in, out]     RecoveryParams  The interface struct for Recovery services
+ *
+ * @return        The most severe AGESA_STATUS returned by any called service.
+ *
+ */
+AGESA_STATUS
+AmdInitRecovery (
+  IN OUT   AMD_RECOVERY_PARAMS      *RecoveryParams
+  )
+{
+  AGESA_STATUS  AgesaStatus;
+  AGESA_STATUS  CalledAgesaStatus;
+
+  AGESA_TESTPOINT (TpIfAmdInitRecoveryEntry, &RecoveryParams->StdHeader);
+
+  ASSERT (RecoveryParams != NULL);
+
+  AgesaStatus = AGESA_SUCCESS;
+
+  // Setup ROM execution cache
+  CalledAgesaStatus = AllocateExecutionCache (&RecoveryParams->StdHeader, &RecoveryParams->CacheRegion[0]);
+  if (CalledAgesaStatus > AgesaStatus) {
+    AgesaStatus = CalledAgesaStatus;
+  }
+
+  CalledAgesaStatus = AmdHtInitRecovery (&RecoveryParams->StdHeader);
+  if (CalledAgesaStatus > AgesaStatus) {
+    AgesaStatus = CalledAgesaStatus;
+  }
+
+  CalledAgesaStatus = AmdCpuRecovery ((AMD_CPU_RECOVERY_PARAMS *) &RecoveryParams->StdHeader);
+  if (CalledAgesaStatus > AgesaStatus) {
+    AgesaStatus = CalledAgesaStatus;
+  }
+
+  CalledAgesaStatus = AmdMemRecovery (RecoveryParams->MemConfig.MemData);
+  if (CalledAgesaStatus > AgesaStatus) {
+    AgesaStatus = CalledAgesaStatus;
+  }
+
+  CalledAgesaStatus = AmdGnbRecovery (&RecoveryParams->StdHeader);
+  if (CalledAgesaStatus > AgesaStatus) {
+    AgesaStatus = CalledAgesaStatus;
+  }
+
+  AGESA_TESTPOINT (TpIfAmdInitRecoveryExit, &RecoveryParams->StdHeader);
+  return  AgesaStatus;
+}
+
+/*---------------------------------------------------------------------------------------*/
+/**
+ *
+ * Initialize defaults and options for Amd Init Reset.
+ *
+ * @param[in]  StdHeader              AMD standard header config param.
+ * @param[in]  AmdRecoveryParamsPtr   The Reset Init interface to initialize.
+ *
+ * @retval     AGESA_SUCCESS    Always Succeeds.
+ */
+AGESA_STATUS
+AmdInitRecoveryInitializer (
+  IN       AMD_CONFIG_PARAMS   *StdHeader,
+  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
+  )
+{
+  ALLOCATE_HEAP_PARAMS AllocHeapParams;
+
+  ASSERT (StdHeader != NULL);
+  ASSERT (AmdRecoveryParamsPtr != NULL);
+
+  AmdRecoveryParamsPtr->StdHeader = *StdHeader;
+
+  AllocHeapParams.RequestedBufferSize = sizeof (MEM_DATA_STRUCT);
+  AllocHeapParams.BufferHandle = AMD_MEM_DATA_HANDLE;
+  AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
+  if (HeapAllocateBuffer (&AllocHeapParams, &AmdRecoveryParamsPtr->StdHeader) == AGESA_SUCCESS) {
+    AmdRecoveryParamsPtr->MemConfig.MemData = (MEM_DATA_STRUCT *) AllocHeapParams.BufferPtr;
+    AmdRecoveryParamsPtr->MemConfig.MemData->ParameterListPtr = &(AmdRecoveryParamsPtr->MemConfig);
+    LibAmdMemCopy ((VOID *) AmdRecoveryParamsPtr->MemConfig.MemData,
+                   (VOID *) AmdRecoveryParamsPtr,
+                   (UINTN) sizeof (AmdRecoveryParamsPtr->StdHeader),
+                   &AmdRecoveryParamsPtr->StdHeader
+                  );
+    AmdMemInitDataStructDefRecovery (AmdRecoveryParamsPtr->MemConfig.MemData);
+    return AGESA_SUCCESS;
+  } else {
+    return AGESA_ERROR;
+  }
+}
diff --git a/src/vendorcode/amd/agesa/common/Proc/Common/AmdLateRunApTask.c b/src/vendorcode/amd/agesa/common/Proc/Common/AmdLateRunApTask.c
new file mode 100644
index 0000000..b7e125e
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Common/AmdLateRunApTask.c
@@ -0,0 +1,159 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * AMD AGESA Basic Level Public APIs
+ *
+ * Contains basic Level Initialization routines.
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:      AGESA
+ * @e sub-project:  Interface
+ * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
+ *
+ */
+/*****************************************************************************
+ *
+ * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
+ *       its contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ******************************************************************************
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ *                             M O D U L E S    U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "Ids.h"
+#include "Options.h"
+#include "Filecode.h"
+#include "heapManager.h"
+#include "CreateStruct.h"
+CODE_GROUP (G3_DXE)
+RDATA_GROUP (G3_DXE)
+
+#define FILECODE PROC_COMMON_AMDLATERUNAPTASK_FILECODE
+/*----------------------------------------------------------------------------------------
+ *                   D E F I N I T I O N S    A N D    M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ *                  T Y P E D E F S     A N D     S T R U C T U R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ *                          E X P O R T E D    F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+extern CONST DISPATCH_TABLE ApDispatchTable[];
+
+/*---------------------------------------------------------------------------------------*/
+/**
+ * Application Processor perform a function as directed by the BSC.
+ *
+ * This is needed for an AP task that must run after AGESA has relinquished control
+ * of the APs to the IBV.
+ *
+ * @param[in]     AmdApExeParams  The interface struct for any required routine.
+ *
+ * @return        The most severe AGESA_STATUS returned by any called service.  Note
+ *                that this will be the return value passed back to the BSC as the
+ *                return value for the call out.
+ *
+ */
+AGESA_STATUS
+AmdLateRunApTask (
+  IN       AP_EXE_PARAMS  *AmdApExeParams
+  )
+{
+  AGESA_STATUS        CalledAgesaStatus;
+  AGESA_STATUS        ApLateTaskStatus;
+  DISPATCH_TABLE      *Entry;
+
+  AGESA_TESTPOINT (TpIfAmdLateRunApTaskEntry, &AmdApExeParams->StdHeader);
+
+  ASSERT (AmdApExeParams != NULL);
+  ApLateTaskStatus = AGESA_SUCCESS;
+  CalledAgesaStatus = AGESA_UNSUPPORTED;
+
+  // Dispatch, if valid
+  Entry = (DISPATCH_TABLE *) ApDispatchTable;
+  while (Entry->FunctionId != 0) {
+    if (AmdApExeParams->FunctionNumber == Entry->FunctionId) {
+      CalledAgesaStatus = Entry->EntryPoint (AmdApExeParams);
+      break;
+    }
+    Entry++;
+  }
+
+  if (CalledAgesaStatus > ApLateTaskStatus) {
+    ApLateTaskStatus = CalledAgesaStatus;
+  }
+
+  AGESA_TESTPOINT (TpIfAmdLateRunApTaskExit, &AmdApExeParams->StdHeader);
+  return  ApLateTaskStatus;
+}
+
+/*---------------------------------------------------------------------------------------*/
+/**
+ * Constructor for the AMD_LATE_RUN_AP_TASK function.
+ *
+ * This routine is responsible for setting default values for the
+ * input parameters needed by the AMD_S3_SAVE entry point.
+ *
+ * @param[in]     StdHeader      The standard header.
+ * @param[in,out] AmdApExeParams Required input parameters for the AMD_LATE_RUN_AP_TASK
+ *                               entry point.
+ *
+ * @retval        AGESA_SUCCESS  Always Succeeds.
+ *
+ */
+AGESA_STATUS
+AmdLateRunApTaskInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
+  )
+{
+  ASSERT (StdHeader != NULL);
+  ASSERT (AmdApExeParams != NULL);
+
+  AmdApExeParams->StdHeader = *StdHeader;
+  AmdApExeParams->FunctionNumber = 0;
+  AmdApExeParams->RelatedDataBlock = NULL;
+  AmdApExeParams->RelatedBlockLength = 0;
+  return AGESA_SUCCESS;
+}
+
diff --git a/src/vendorcode/amd/agesa/common/Proc/Common/CommonInits.h b/src/vendorcode/amd/agesa/common/Proc/Common/CommonInits.h
new file mode 100644
index 0000000..681bc4a
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Common/CommonInits.h
@@ -0,0 +1,65 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Common initialization routines.
+ *
+ * Contains common initialization routines across AGESA entries of phases.
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:      AGESA
+ * @e sub-project:  Common
+ * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
+ *
+ */
+/*
+*****************************************************************************
+*
+ * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
+ *       its contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* ***************************************************************************
+*
+*/
+
+#ifndef _COMMON_INITS_H_
+#define _COMMON_INITS_H_
+
+/**
+ * Common routine to initialize PLATFORM_CONFIGURATION.
+ *
+ * @param[in,out]   PlatformConfig   Platform profile/build option config structure
+ * @param[in,out]   StdHeader        AMD standard header config param
+ *
+ * @retval      AGESA_SUCCESS     Always Succeeds.
+ *
+ */
+AGESA_STATUS
+CommonPlatformConfigInit (
+  IN OUT   PLATFORM_CONFIGURATION    *PlatformConfig,
+  IN OUT   AMD_CONFIG_PARAMS         *StdHeader
+  );
+
+#endif // _COMMON_INITS_H_
+
diff --git a/src/vendorcode/amd/agesa/common/Proc/Common/CommonPage.h b/src/vendorcode/amd/agesa/common/Proc/Common/CommonPage.h
new file mode 100644
index 0000000..1dcc6da
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Common/CommonPage.h
@@ -0,0 +1,116 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Create outline and references for Processor Common Component mainpage documentation.
+ *
+ * Design guides, maintenance guides, and general documentation, are
+ * collected using this file onto the documentation mainpage.
+ * This file contains doxygen comment blocks, only.
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:      AGESA
+ * @e sub-project:  Documentation
+ * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
+ *
+ */
+/*
+ ******************************************************************************
+ *
+ * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
+ *       its contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ******************************************************************************
+ */
+
+/**
+ * @page commonmain Processor Common Component Documentation
+ *
+ * Additional documentation for the Common component consists of
+ *
+ * - Maintenance Guides:
+ *   - @subpage amdconfigparamname "Naming Guidelines for type AMD_CONFIG_PARAMS"
+ * - Design Guides:
+ *   - add here >>>
+ *
+ */
+
+/**
+ * @page amdconfigparamname Naming Guidelines for type AMD_CONFIG_PARAMS
+ * @par
+ * These are the guidelines for naming objects of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * in AGESA code.
+ * <ul>
+ *
+ * <li>
+ * Formal parameter names of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * will always be named
+ * StdHeader. This covers all function prototypes, function definitions, and method typedefs (a
+ * typedef of a function prototype) in AGESA code. Examples:
+ * @n @code
+ * VOID
+ *   LibAmdPciFindNextCap (
+ *     IN OUT   PCI_ADDR *Address,
+ *     IN       AMD_CONFIG_PARAMS *StdHeader
+ *     )
+ *
+ * typedef VOID F_DO_TABLE_ENTRY (
+ *   IN       TABLE_ENTRY_DATA       *CurrentEntry,
+ *   IN       PLATFORM_CONFIGURATION *PlatformConfig,
+ *   IN       AMD_CONFIG_PARAMS      *StdHeader
+ *   );
+ *
+ * @endcode
+ *
+ * <li>
+ * Structure members of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * will always be named StdHeader. Examples:
+ * @n @code
+   /// Example of struct member naming.
+ * typedef struct {
+ *   IN OUT   AMD_CONFIG_PARAMS StdHeader;             ///< Standard Header
+ *   IN       PLATFORM_CONFIGURATION PlatformConfig;   ///< platform operational characteristics.
+ * } AMD_CPU_RECOVERY_PARAMS;
+ *
+ * @endcode
+ *
+ * <li>
+ * Routines which define local variables of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * should
+ * name the local variable as closely as practical to StdHeader, but otherwise freedom is allowed. Example:
+ * @n @code
+ * AMD_CONFIG_PARAMS *NewStdHeader;
+ * [...]
+ * NewStdHeader = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
+ * @endcode
+ *
+ * <li>
+ * Arguments to routines with AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * formal parameters are not
+ * checked.  Freedom is allowed in order to conform to these guidelines in a practical, readable
+ * way.  This includes typecast arguments.  Examples:
+ * @n @code
+ * Status = GetEventLog (&LogEvent, (AMD_CONFIG_PARAMS *)Event);
+ *
+ * MemS3ExitSelfRefRegDA (NBPtr, &MemPtr->StdHeader);
+ * @endcode
+ *
+ * </ul>
+ *
+ */
diff --git a/src/vendorcode/amd/agesa/common/Proc/Common/CreateStruct.c b/src/vendorcode/amd/agesa/common/Proc/Common/CreateStruct.c
new file mode 100644
index 0000000..8468d3b
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Common/CreateStruct.c
@@ -0,0 +1,313 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * AMD AGESA Input Structure Creation
+ *
+ * Contains AGESA input structure creation support.
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:      AGESA
+ * @e sub-project:  Common
+ * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
+ *
+ */
+/*
+ ******************************************************************************
+ *
+ * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
+ *       its contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ******************************************************************************
+ */
+
+/*----------------------------------------------------------------------------------------
+ *                             M O D U L E S    U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "amdlib.h"
+#include "Ids.h"
+#include "GeneralServices.h"
+#include "heapManager.h"
+#include "CreateStruct.h"
+#include "cpuFamilyTranslation.h"
+#include "Filecode.h"
+CODE_GROUP (G1_PEICC)
+RDATA_GROUP (G1_PEICC)
+
+#define FILECODE PROC_COMMON_CREATESTRUCT_FILECODE
+/*----------------------------------------------------------------------------------------
+ *                   D E F I N I T I O N S    A N D    M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+extern CONST FUNCTION_PARAMS_INFO FuncParamsInfo[];
+extern CONST UINTN InitializerCount;
+
+/*----------------------------------------------------------------------------------------
+ *                  T Y P E D E F S     A N D     S T R U C T U  R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+/*----------------------------------------------------------------------------------------
+ *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+/*----------------------------------------------------------------------------------------
+ *                          E X P O R T E D    F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+extern BUILD_OPT_CFG UserOptions;
+
+/*---------------------------------------------------------------------------------------*/
+/**
+ * Allocate and initialize Config headers and Service Interface structures.
+ *
+ * This function will be called for each AGESA public APIs.
+ * This function will do the following:
+ * -# Locate the AGESA API structure parameters initializer function information.
+ * -# Find the size of the structure that gets passed to each public APIs as
+ *    the entry parameter. Allocate heap space using the size for PreMemHeap, callout for
+ *    memory allocation for PostMemDram, and just set the config and service interface
+ *    pointers for ByHost.
+ * -# If the allocation is not ByHost, copy the AmdConfigParams into the newly created AmdConfigParams.
+ *    For ByHost, we're using the caller's existing config params.
+ * -# Call the initializer function, and pass a reference to the Config params and to
+ *    the Service Interface struct.  On return the constructor will have filled the
+ *    remaining structure with default values.
+ * -# Fill the remaining info in the newly created structure on heap in AMD_CONFIG_PARAMS
+ *    area (i.e. Fill *newStructPtr with the pointer to the newly created structure)
+ * -# Set the appropriate AGESA function number in the StdHeader member of the input
+ *    parameter structure.
+ *
+ * @param[in,out]  InterfaceParams         Pointer to structure containing the function call
+ *                                         whose parameter structure is to be created, the
+ *                                         allocation method, and a pointer to the newly
+ *                                         created structure.
+ *
+ * @retval         AGESA_SUCCESS           The interface struct is allocated and initialized.
+ * @retval         AGESA_UNSUPPORTED       The Service is not supported.
+ *
+ */
+AGESA_STATUS
+AmdCreateStruct (
+  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
+  )
+{
+  UINTN                     ServiceIndex;
+  ALLOCATE_HEAP_PARAMS      AllocHeapParams;
+  AMD_CONFIG_PARAMS         *NewlyCreatedConfig;
+  VOID                      *NewlyCreatedServiceInterface;
+  AGESA_STATUS              AgesaStatus;
+  AGESA_STATUS              TempStatus;
+  AGESA_STATUS              IgnoredSts;
+  CPU_SPECIFIC_SERVICES     *FamilySpecificServices;
+
+  AgesaStatus = AGESA_SUCCESS;
+
+  ASSERT (InterfaceParams != NULL);
+
+  switch (InterfaceParams->AgesaFunctionName) {
+  case AMD_INIT_RESET:
+    if (!IsBsp (&InterfaceParams->StdHeader, &IgnoredSts)) {
+      // APs must transfer their system core number from the mailbox to
+      // a local register while it is still valid.
+      GetCpuServicesOfCurrentCore ((CONST CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, &InterfaceParams->StdHeader);
+      FamilySpecificServices->TransferApCoreNumber (FamilySpecificServices, &InterfaceParams->StdHeader);
+    }
+    InterfaceParams->StdHeader.HeapStatus = HEAP_DO_NOT_EXIST_YET;
+    break;
+  case AMD_INIT_EARLY:
+  case AMD_INIT_RECOVERY:
+  case AMD_INIT_RESUME:
+  case AMD_INIT_POST:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
+    break;
+  case AMD_INIT_ENV:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
+    break;
+  case AMD_INIT_LATE:
+  case AMD_INIT_MID:
+  case AMD_S3_SAVE:
+  case AMD_LATE_RUN_AP_TASK:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
+    break;
+  case AMD_S3LATE_RESTORE:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
+    break;
+  default:
+    ASSERT (FALSE);
+    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
+    break;
+  }
+
+  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
+
+  if (InterfaceParams->AgesaFunctionName == AMD_INIT_RESET) {
+    AgesaStatus = HeapManagerInit (&InterfaceParams->StdHeader);
+  }
+
+  // Step 1
+  for (ServiceIndex = 0; ServiceIndex < InitializerCount; ServiceIndex++) {
+    if (FuncParamsInfo[ServiceIndex].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
+      break;
+    }
+  }
+  if (ServiceIndex >= InitializerCount) {
+    // A call was made to AGESA with an invalid function number.  This wrapper error may be due to the build target
+    // not containing the desired entry point.
+    return AGESA_UNSUPPORTED;
+  }
+
+  // Step 2
+  LibAmdMemFill (&AllocHeapParams, 0, (UINTN) (sizeof (ALLOCATE_HEAP_PARAMS)), &InterfaceParams->StdHeader);
+
+  if (InterfaceParams->AllocationMethod < ByHost) {
+    // Allocate one buffer to contain the config params and the service struct.
+    // The service struct begins immediately after the config params.
+    AllocHeapParams.RequestedBufferSize = FuncParamsInfo[ServiceIndex].CreateStructSize + sizeof (AMD_CONFIG_PARAMS);
+    AllocHeapParams.BufferHandle = FuncParamsInfo[ServiceIndex].BufferHandle;
+    AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
+    TempStatus = HeapAllocateBuffer (&AllocHeapParams, &(InterfaceParams->StdHeader));
+    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
+    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
+    NewlyCreatedConfig++;
+    NewlyCreatedServiceInterface =  NewlyCreatedConfig;
+    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
+  } else {
+    // The caller (example, agesa basic interface implementation) already has a buffer to use.
+    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)InterfaceParams;
+    NewlyCreatedServiceInterface = InterfaceParams->NewStructPtr;
+    ASSERT (InterfaceParams->NewStructSize >= FuncParamsInfo[ServiceIndex].CreateStructSize);
+  }
+  ASSERT (NewlyCreatedConfig != NULL);
+  ASSERT (NewlyCreatedServiceInterface != NULL);
+
+  // Step 3
+  if (InterfaceParams->AllocationMethod != ByHost) {
+    *NewlyCreatedConfig = InterfaceParams->StdHeader;
+  }
+
+  // Step 4
+  TempStatus = FuncParamsInfo[ServiceIndex].AgesaFunction (NewlyCreatedConfig, NewlyCreatedServiceInterface);
+  AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
+
+  // Step 5
+  if (InterfaceParams->AllocationMethod != ByHost) {
+    InterfaceParams->NewStructPtr = (VOID *) NewlyCreatedServiceInterface;
+    InterfaceParams->NewStructSize = FuncParamsInfo[ServiceIndex].CreateStructSize;
+  }
+
+  // Step 6
+  ((AMD_CONFIG_PARAMS *) InterfaceParams->NewStructPtr)->Func = InterfaceParams->AgesaFunctionName;
+  return AgesaStatus;
+}
+
+
+/*---------------------------------------------------------------------------------------*/
+/**
+ *  Clears storage space from allocation for a parameter block of an
+ *  AGESA software call entry.
+ *
+ *  @param[in,out]  InterfaceParams         Pointer to structure containing the function call
+ *                                          whose parameter structure is to be deallocated.
+ *
+ *  @retval         AGESA_STATUS
+ *
+ *---------------------------------------------------------------------------------------
+ **/
+AGESA_STATUS
+AmdReleaseStruct (
+  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
+  )
+{
+  UINT8 i;
+  UINT8 *BufferPtr;
+  VOID  *ServicePtr;
+  AGESA_STATUS  AgesaStatus;
+  AGESA_STATUS  TempStatus;
+  LOCATE_HEAP_PTR LocHeap;
+
+  AgesaStatus = AGESA_SUCCESS;
+
+  switch (InterfaceParams->AgesaFunctionName) {
+  case AMD_INIT_RESET:
+  case AMD_INIT_EARLY:
+  case AMD_INIT_RECOVERY:
+  case AMD_INIT_RESUME:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
+    break;
+  case AMD_INIT_POST:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
+    break;
+  case AMD_INIT_ENV:
+  case AMD_INIT_LATE:
+  case AMD_INIT_MID:
+  case AMD_S3_SAVE:
+  case AMD_LATE_RUN_AP_TASK:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
+    break;
+  case AMD_S3LATE_RESTORE:
+    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
+    break;
+  default:
+    ASSERT (FALSE);
+    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
+    break;
+  }
+
+  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
+
+// Step 1
+  for (i = 0; i < InitializerCount; i++) {
+    if (FuncParamsInfo[i].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
+      break;
+    }
+  }
+  if (i >= InitializerCount) {
+    return AGESA_BOUNDS_CHK;
+  }
+
+  // Step 2
+  if (InterfaceParams->AllocationMethod < ByHost) {
+    LocHeap.BufferHandle = FuncParamsInfo[i].BufferHandle;
+    if (HeapLocateBuffer (&LocHeap, &(InterfaceParams->StdHeader)) == AGESA_SUCCESS) {
+      BufferPtr = (UINT8 *) LocHeap.BufferPtr;
+      ServicePtr = &BufferPtr[sizeof (AMD_CONFIG_PARAMS)];
+      TempStatus = FuncParamsInfo[i].AgesaDestructor (&(InterfaceParams->StdHeader), ServicePtr);
+      AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
+    }
+  }
+
+  // Step 3
+  if (InterfaceParams->AllocationMethod < ByHost) {
+    TempStatus = HeapDeallocateBuffer (FuncParamsInfo[i].BufferHandle, &(InterfaceParams->StdHeader));
+    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
+  } else {
+    // Unless we define service specific destructors, nothing to do for ByHost.
+    return AGESA_SUCCESS;
+  }
+  return AgesaStatus;
+}
diff --git a/src/vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h b/src/vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h
new file mode 100644
index 0000000..ace0176
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Common/CreateStruct.h
@@ -0,0 +1,197 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * AMD AGESA Input Structure Creation
+ *
+ * Contains AGESA input creation structures.
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:      AGESA
+ * @e sub-project:  Common
+ * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $
+ *
+ */
+/*
+ *****************************************************************************
+ *
+ * Copyright (c) 2011, Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
+ *       its contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***************************************************************************
+ *
+ */
+
+#ifndef _CREATE_STRUCT_H_
+#define _CREATE_STRUCT_H_
+
+/**
+ * A constructor method.
+ *
+ * Sets inputs to valid, basic level, defaults for the specific service instance.
+ * Constructors should avoid using the header, since these routines should not
+ * do operations which may fail or require status back to the user.  The constructor
+ * should always SUCCEED.
+ *
+ * @param[in]   StdHeader         Opaque handle to standard config header
+ * @param[in]   ServiceInterface  Service Interface structure to initialize.
+ *
+ * @retval AGESA_SUCCESS      Constructors are not allowed to fail
+*/
+typedef AGESA_STATUS
+F_AGESA_FUNCTION (
+  IN       AMD_CONFIG_PARAMS    *StdHeader,
+  IN       VOID                 *ServiceInterface
+  );
+
+/// Reference to a Method.
+typedef F_AGESA_FUNCTION *PF_AGESA_FUNCTION;
+
+/**
+ * A Destructor method.
+ *
+ * Sets inputs to valid, basic level, defaults for the specific service instance.
+ * The constructor should always SUCCEED.
+ *
+ * @param[in]   StdHeader         Opaque handle to standard config header.
+ * @param[in]   ServiceInterface  Service Interface structure to initialize.
+ *
+ * @retval AGESA_SUCCESS      Constructors are not allowed to fail
+*/
+typedef AGESA_STATUS
+F_AGESA_DESTRUCTOR (
+  IN       AMD_CONFIG_PARAMS    *StdHeader,
+  IN       VOID                 *ServiceInterface
+  );
+
+/// Reference to a Method.
+typedef F_AGESA_DESTRUCTOR *PF_AGESA_DESTRUCTOR;
+
+/**
+ * Provide the information needed to invoke each service constructor.
+ */
+typedef struct {
+  IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< Identifies the service
+  IN       UINT16              CreateStructSize;   ///< The service's input struct size.
+                                                   ///  Do NOT include a config params header!
+     OUT   PF_AGESA_FUNCTION   AgesaFunction;      ///< The constructor function
+     OUT   PF_AGESA_DESTRUCTOR AgesaDestructor;    ///< The destructor function.
+  IN       UINT32              BufferHandle;       ///< The buffer handle id for the service.
+} FUNCTION_PARAMS_INFO;
+
+/**
+ * All available services have their constructor info here.
+ */
+AGESA_STATUS
+AmdInitResetConstructor (
+  IN       AMD_CONFIG_PARAMS    *StdHeader,
+  IN       AMD_RESET_PARAMS     *AmdResetParams
+  );
+
+AGESA_STATUS
+AmdInitRecoveryInitializer (
+  IN       AMD_CONFIG_PARAMS   *StdHeader,
+  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
+  );
+
+AGESA_STATUS
+AmdInitEarlyInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_EARLY_PARAMS  *EarlyParams
+  );
+
+AGESA_STATUS
+AmdInitPostInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_POST_PARAMS *PostParamsPtr
+  );
+
+AGESA_STATUS
+AmdInitPostDestructor (
+  IN       AMD_CONFIG_PARAMS    *StdHeader,
+  IN       AMD_POST_PARAMS      *PostParamsPtr
+  );
+
+AGESA_STATUS
+AmdInitEnvInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_ENV_PARAMS *EnvParamsPtr
+  );
+
+AGESA_STATUS
+AmdInitMidInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_MID_PARAMS *MidParamsPtr
+  );
+
+AGESA_STATUS
+AmdInitLateInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_LATE_PARAMS *LateParamsPtr
+  );
+
+AGESA_STATUS
+AmdInitLateDestructor (
+  IN   AMD_CONFIG_PARAMS *StdHeader,
+  IN   AMD_LATE_PARAMS   *LateParamsPtr
+  );
+
+AGESA_STATUS
+AmdInitResumeInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_RESUME_PARAMS *ResumeParams
+  );
+
+AGESA_STATUS
+AmdInitResumeDestructor (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_RESUME_PARAMS *ResumeParams
+  );
+
+AGESA_STATUS
+AmdS3SaveInitializer (
+  IN OUT   AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
+  );
+
+AGESA_STATUS
+AmdS3SaveDestructor (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
+  );
+
+AGESA_STATUS
+AmdS3LateRestoreInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AMD_S3LATE_PARAMS *S3LateParams
+  );
+
+AGESA_STATUS
+AmdLateRunApTaskInitializer (
+  IN       AMD_CONFIG_PARAMS *StdHeader,
+  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
+  );
+#endif // _CREATE_STRUCT_H_
+
diff --git a/src/vendorcode/amd/agesa/f10/Makefile.inc b/src/vendorcode/amd/agesa/f10/Makefile.inc
index b6b2c77..8f8e40c 100644
--- a/src/vendorcode/amd/agesa/f10/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f10/Makefile.inc
@@ -28,6 +28,7 @@ AGESA_INC += -I$(AGESA_ROOT)/../common
 AGESA_INC += -I$(AGESA_ROOT)/Include
 AGESA_INC += -I$(AGESA_ROOT)/Lib
 AGESA_INC += -I$(AGESA_ROOT)/Legacy
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/HT
 AGESA_INC += -I$(AGESA_ROOT)/Proc/HT/NbCommon
@@ -133,7 +134,7 @@ libagesa-y += Proc/CPU/Feature/cpuWhea.c
 libagesa-y += Proc/Mem/Feat/CSINTLV/mfcsi.c
 libagesa-y += Proc/Mem/Feat/ECC/mfecc.c
 libagesa-y += Proc/Mem/Feat/DMI/mfDMI.c
-libagesa-y += Proc/Common/AmdLateRunApTask.c
+libagesa-y += ../common/Proc/Common/AmdLateRunApTask.c
 libagesa-y += Proc/CPU/cpuPowerMgmtMultiSocket.c
 libagesa-y += Proc/Mem/Main/mmUmaAlloc.c
 libagesa-y += Proc/CPU/Feature/cpuPstateTables.c
diff --git a/src/vendorcode/amd/agesa/f10/Proc/Common/AmdInitRecovery.c b/src/vendorcode/amd/agesa/f10/Proc/Common/AmdInitRecovery.c
deleted file mode 100644
index 169e09c..0000000
--- a/src/vendorcode/amd/agesa/f10/Proc/Common/AmdInitRecovery.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 7359 $   @e \$Date: 2008-08-13 01:53:23 +0800 (Wed, 13 Aug 2008) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "AdvancedApi.h"
-#include "heapManager.h"
-#include "mm.h"
-#include "GnbInterface.h"
-#include "cpuRecovery.h"
-#include "cpuCacheInit.h"
-#include "Filecode.h"
-#define FILECODE PROC_COMMON_AMDINITRECOVERY_FILECODE
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Perform initialization services required at the Early Init POST time point.
- *
- * Execution Cache, HyperTransport, C1e, and AP Init advanced services are performed.
- *
- * @param[in, out]     RecoveryParams  The interface struct for Recovery services
- *
- * @return        The most severe AGESA_STATUS returned by any called service.
- *
- */
-AGESA_STATUS
-AmdInitRecovery (
-  IN OUT   AMD_RECOVERY_PARAMS      *RecoveryParams
-  )
-{
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  CalledAgesaStatus;
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryEntry, &RecoveryParams->StdHeader);
-
-  ASSERT (RecoveryParams != NULL);
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  // Setup ROM execution cache
-  CalledAgesaStatus = AllocateExecutionCache (&RecoveryParams->StdHeader, &RecoveryParams->CacheRegion[0]);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdHtInitRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdCpuRecovery ((AMD_CPU_RECOVERY_PARAMS *) &RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdMemRecovery (RecoveryParams->MemConfig.MemData);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdGnbRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryExit, &RecoveryParams->StdHeader);
-  return  AgesaStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *
- * Initialize defaults and options for Amd Init Reset.
- *
- * @param[in]  StdHeader              AMD standard header config param.
- * @param[in]  AmdRecoveryParamsPtr   The Reset Init interface to initialize.
- *
- * @retval     AGESA_SUCCESS    Always Succeeds.
- */
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  )
-{
-  ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdRecoveryParamsPtr != NULL);
-
-  AmdRecoveryParamsPtr->StdHeader = *StdHeader;
-
-  AllocHeapParams.RequestedBufferSize = sizeof (MEM_DATA_STRUCT);
-  AllocHeapParams.BufferHandle = AMD_MEM_DATA_HANDLE;
-  AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
-  if (HeapAllocateBuffer (&AllocHeapParams, &AmdRecoveryParamsPtr->StdHeader) == AGESA_SUCCESS) {
-    AmdRecoveryParamsPtr->MemConfig.MemData = (MEM_DATA_STRUCT *) AllocHeapParams.BufferPtr;
-    AmdRecoveryParamsPtr->MemConfig.MemData->ParameterListPtr = &(AmdRecoveryParamsPtr->MemConfig);
-    LibAmdMemCopy ((VOID *) AmdRecoveryParamsPtr->MemConfig.MemData,
-                   (VOID *) AmdRecoveryParamsPtr,
-                   (UINTN) sizeof (AmdRecoveryParamsPtr->StdHeader),
-                   &AmdRecoveryParamsPtr->StdHeader
-                  );
-    AmdMemInitDataStructDefRecovery (AmdRecoveryParamsPtr->MemConfig.MemData);
-    return AGESA_SUCCESS;
-  } else {
-    return AGESA_ERROR;
-  }
-}
diff --git a/src/vendorcode/amd/agesa/f10/Proc/Common/AmdLateRunApTask.c b/src/vendorcode/amd/agesa/f10/Proc/Common/AmdLateRunApTask.c
deleted file mode 100644
index 5bb58af..0000000
--- a/src/vendorcode/amd/agesa/f10/Proc/Common/AmdLateRunApTask.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Interface
- * @e \$Revision: 7735 $   @e \$Date: 2008-08-27 14:49:19 -0500 (Wed, 27 Aug 2008) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "Ids.h"
-#include "Options.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-#include "Filecode.h"
-#define FILECODE PROC_COMMON_AMDLATERUNAPTASK_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern CONST DISPATCH_TABLE ApDispatchTable[];
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Application Processor perform a function as directed by the BSC.
- *
- * This is needed for an AP task that must run after AGESA has relinquished control
- * of the APs to the IBV.
- *
- * @param[in]     AmdApExeParams  The interface struct for any required routine.
- *
- * @return        The most severe AGESA_STATUS returned by any called service.  Note
- *                that this will be the return value passed back to the BSC as the
- *                return value for the call out.
- *
- */
-AGESA_STATUS
-AmdLateRunApTask (
-  IN       AP_EXE_PARAMS  *AmdApExeParams
-  )
-{
-  AGESA_STATUS        CalledAgesaStatus;
-  AGESA_STATUS        ApLateTaskStatus;
-  DISPATCH_TABLE      *Entry;
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskEntry, &AmdApExeParams->StdHeader);
-
-  ASSERT (AmdApExeParams != NULL);
-  ApLateTaskStatus = AGESA_SUCCESS;
-  CalledAgesaStatus = AGESA_UNSUPPORTED;
-
-  // Dispatch, if valid
-  Entry = (DISPATCH_TABLE *) ApDispatchTable;
-  while (Entry->FunctionId != 0) {
-    if (AmdApExeParams->FunctionNumber == Entry->FunctionId) {
-      CalledAgesaStatus = Entry->EntryPoint (AmdApExeParams);
-      break;
-    }
-    Entry++;
-  }
-
-  if (CalledAgesaStatus > ApLateTaskStatus) {
-    ApLateTaskStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskExit, &AmdApExeParams->StdHeader);
-  return  ApLateTaskStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Constructor for the AMD_LATE_RUN_AP_TASK function.
- *
- * This routine is responsible for setting default values for the
- * input parameters needed by the AMD_S3_SAVE entry point.
- *
- * @param[in]     StdHeader      The standard header.
- * @param[in,out] AmdApExeParams Required input parameters for the AMD_LATE_RUN_AP_TASK
- *                               entry point.
- *
- * @retval        AGESA_SUCCESS  Always Succeeds.
- *
- */
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  )
-{
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdApExeParams != NULL);
-
-  AmdApExeParams->StdHeader = *StdHeader;
-  AmdApExeParams->FunctionNumber = 0;
-  AmdApExeParams->RelatedDataBlock = NULL;
-  AmdApExeParams->RelatedBlockLength = 0;
-  return AGESA_SUCCESS;
-}
-
diff --git a/src/vendorcode/amd/agesa/f10/Proc/Common/CommonInits.h b/src/vendorcode/amd/agesa/f10/Proc/Common/CommonInits.h
deleted file mode 100644
index afecdce..0000000
--- a/src/vendorcode/amd/agesa/f10/Proc/Common/CommonInits.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * @file
- *
- * Common initialization routines.
- *
- * Contains common initialization routines across AGESA entries of phases.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 7735 $   @e \$Date: 2008-08-27 14:49:19 -0500 (Wed, 27 Aug 2008) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of Advanced Micro Devices, Inc. nor the names of
-*       its contributors may be used to endorse or promote products derived
-*       from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*
-* ***************************************************************************
-*
-*/
-
-#ifndef _COMMON_INITS_H_
-#define _COMMON_INITS_H_
-
-/**
- * Common routine to initialize PLATFORM_CONFIGURATION.
- *
- * @param[in,out]   PlatformConfig   Platform profile/build option config structure
- * @param[in,out]   StdHeader        AMD standard header config param
- *
- * @retval      AGESA_SUCCESS     Always Succeeds.
- *
- */
-AGESA_STATUS
-CommonPlatformConfigInit (
-  IN OUT   PLATFORM_CONFIGURATION    *PlatformConfig,
-  IN OUT   AMD_CONFIG_PARAMS         *StdHeader
-  );
-
-#endif // _COMMON_INITS_H_
-
diff --git a/src/vendorcode/amd/agesa/f10/Proc/Common/CommonPage.h b/src/vendorcode/amd/agesa/f10/Proc/Common/CommonPage.h
deleted file mode 100644
index 85aa183..0000000
--- a/src/vendorcode/amd/agesa/f10/Proc/Common/CommonPage.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * @file
- *
- * Create outline and references for Processor Common Component mainpage documentation.
- *
- * Design guides, maintenance guides, and general documentation, are
- * collected using this file onto the documentation mainpage.
- * This file contains doxygen comment blocks, only.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Documentation
- * @e \$Revision: 44323 $   @e \$Date: 2010-12-22 01:24:58 -0700 (Wed, 22 Dec 2010) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/**
- * @page commonmain Processor Common Component Documentation
- *
- * Additional documentation for the Common component consists of
- *
- * - Maintenance Guides:
- *   - @subpage amdconfigparamname "Naming Guidelines for type AMD_CONFIG_PARAMS"
- * - Design Guides:
- *   - add here >>>
- *
- */
-
-/**
- * @page amdconfigparamname Naming Guidelines for type AMD_CONFIG_PARAMS
- * @par
- * These are the guidelines for naming objects of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * in AGESA code.
- * <ul>
- *
- * <li>
- * Formal parameter names of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * will always be named
- * StdHeader. This covers all function prototypes, function definitions, and method typedefs (a
- * typedef of a function prototype) in AGESA code. Examples:
- * @n @code
- * VOID
- *   LibAmdPciFindNextCap (
- *     IN OUT   PCI_ADDR *Address,
- *     IN       AMD_CONFIG_PARAMS *StdHeader
- *     )
- *
- * typedef VOID F_DO_TABLE_ENTRY (
- *   IN       TABLE_ENTRY_DATA       *CurrentEntry,
- *   IN       PLATFORM_CONFIGURATION *PlatformConfig,
- *   IN       AMD_CONFIG_PARAMS      *StdHeader
- *   );
- *
- * @endcode
- *
- * <li>
- * Structure members of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * will always be named StdHeader. Examples:
- * @n @code
-   /// Example of struct member naming.
- * typedef struct {
- *   IN OUT   AMD_CONFIG_PARAMS StdHeader;             ///< Standard Header
- *   IN       PLATFORM_CONFIGURATION PlatformConfig;   ///< platform operational characteristics.
- * } AMD_CPU_RECOVERY_PARAMS;
- *
- * @endcode
- *
- * <li>
- * Routines which define local variables of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * should
- * name the local variable as closely as practical to StdHeader, but otherwise freedom is allowed. Example:
- * @n @code
- * AMD_CONFIG_PARAMS *NewStdHeader;
- * [...]
- * NewStdHeader = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
- * @endcode
- *
- * <li>
- * Arguments to routines with AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * formal parameters are not
- * checked.  Freedom is allowed in order to conform to these guidelines in a practical, readable
- * way.  This includes typecast arguments.  Examples:
- * @n @code
- * Status = GetEventLog (&LogEvent, (AMD_CONFIG_PARAMS *)Event);
- *
- * MemS3ExitSelfRefRegDA (NBPtr, &MemPtr->StdHeader);
- * @endcode
- *
- * </ul>
- *
- */
diff --git a/src/vendorcode/amd/agesa/f10/Proc/Common/CreateStruct.h b/src/vendorcode/amd/agesa/f10/Proc/Common/CreateStruct.h
deleted file mode 100644
index e782042..0000000
--- a/src/vendorcode/amd/agesa/f10/Proc/Common/CreateStruct.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input creation structures.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 6913 $   @e \$Date: 2008-07-23 11:34:49 -0500 (Wed, 23 Jul 2008) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-#ifndef _CREATE_STRUCT_H_
-#define _CREATE_STRUCT_H_
-
-/**
- * A constructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * Constructors should avoid using the header, since these routines should not
- * do operations which may fail or require status back to the user.  The constructor
- * should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_FUNCTION (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_FUNCTION *PF_AGESA_FUNCTION;
-
-/**
- * A Destructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * The constructor should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header.
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_DESTRUCTOR (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_DESTRUCTOR *PF_AGESA_DESTRUCTOR;
-
-/**
- * Provide the information needed to invoke each service constructor.
- */
-typedef struct {
-  IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< Identifies the service
-  IN       UINT16              CreateStructSize;   ///< The service's input struct size.
-                                                   ///  Do NOT include a config params header!
-     OUT   PF_AGESA_FUNCTION   AgesaFunction;      ///< The constructor function
-     OUT   PF_AGESA_DESTRUCTOR AgesaDestructor;    ///< The destructor function.
-  IN       AGESA_BUFFER_HANDLE BufferHandle;       ///< The buffer handle id for the service.
-} FUNCTION_PARAMS_INFO;
-
-/**
- * All available services have their constructor info here.
- */
-AGESA_STATUS
-AmdInitResetConstructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_RESET_PARAMS     *AmdResetParams
-  );
-
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEarlyInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_EARLY_PARAMS  *EarlyParams
-  );
-
-AGESA_STATUS
-AmdInitPostInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_POST_PARAMS *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitPostDestructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_POST_PARAMS      *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEnvInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_ENV_PARAMS *EnvParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitMidInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_MID_PARAMS *MidParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_LATE_PARAMS *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateDestructor (
-  IN   AMD_CONFIG_PARAMS *StdHeader,
-  IN   AMD_LATE_PARAMS   *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitResumeInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdInitResumeDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdS3SaveInitializer (
-  IN OUT   AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3SaveDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3LateRestoreInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3LATE_PARAMS *S3LateParams
-  );
-
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  );
-#endif // _CREATE_STRUCT_H_
-
diff --git a/src/vendorcode/amd/agesa/f12/Makefile.inc b/src/vendorcode/amd/agesa/f12/Makefile.inc
index 1e5bc70..24eb3d2 100644
--- a/src/vendorcode/amd/agesa/f12/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f12/Makefile.inc
@@ -39,6 +39,7 @@ AGESA_INC += -I$(AGESA_ROOT)/Include
 AGESA_INC += -I$(AGESA_ROOT)/Proc/IDS
 AGESA_INC += -I$(AGESA_ROOT)/Lib
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Feature
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Mem
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Recovery/CPU
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Common/AmdFch.h b/src/vendorcode/amd/agesa/f12/Proc/Common/AmdFch.h
deleted file mode 100644
index f9bdddb..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Common/AmdFch.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD FCH Component
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 34897 $   @e \$Date: 2010-07-13 19:07:10 -0700 (Tue, 13 Jul 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _AMD_FCH_H_
-#define _AMD_FCH_H_
-
-typedef AGESA_STATUS FCH_INIT (IN VOID *DataPtr);
-typedef VOID FCH_TASK_ENTRY (IN VOID *FchCfg);
-
-
-/// FCH API build options
-typedef struct {
-  FCH_INIT        *InitReset;                   ///< InitReset
-  FCH_INIT        *InitResetConstructor;        ///< InitResetConstructor
-  FCH_INIT        *InitEnv;                     ///< InitEnv
-  FCH_INIT        *InitEnvConstructor;          ///< InitEnvConstructor
-  FCH_INIT        *InitMid;                     ///< InitMid
-  FCH_INIT        *InitMidConstructor;          ///< InitMidConstructor
-  FCH_INIT        *InitLate;                    ///< InitLate
-  FCH_INIT        *InitLateConstructor;         ///< InitLateConstructor
-} BLDOPT_FCH_FUNCTION;
-
-#endif
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Common/AmdInitRecovery.c b/src/vendorcode/amd/agesa/f12/Proc/Common/AmdInitRecovery.c
deleted file mode 100644
index 47fc364..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Common/AmdInitRecovery.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "AdvancedApi.h"
-#include "heapManager.h"
-#include "mm.h"
-#include "GnbInterface.h"
-#include "cpuRecovery.h"
-#include "cpuCacheInit.h"
-#include "Filecode.h"
-CODE_GROUP (G2_PEI)
-RDATA_GROUP (G2_PEI)
-
-#define FILECODE PROC_COMMON_AMDINITRECOVERY_FILECODE
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Perform initialization services required at the Early Init POST time point.
- *
- * Execution Cache, HyperTransport, C1e, and AP Init advanced services are performed.
- *
- * @param[in, out]     RecoveryParams  The interface struct for Recovery services
- *
- * @return        The most severe AGESA_STATUS returned by any called service.
- *
- */
-AGESA_STATUS
-AmdInitRecovery (
-  IN OUT   AMD_RECOVERY_PARAMS      *RecoveryParams
-  )
-{
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  CalledAgesaStatus;
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryEntry, &RecoveryParams->StdHeader);
-
-  ASSERT (RecoveryParams != NULL);
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  // Setup ROM execution cache
-  CalledAgesaStatus = AllocateExecutionCache (&RecoveryParams->StdHeader, &RecoveryParams->CacheRegion[0]);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdHtInitRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdCpuRecovery ((AMD_CPU_RECOVERY_PARAMS *) &RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdMemRecovery (RecoveryParams->MemConfig.MemData);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdGnbRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryExit, &RecoveryParams->StdHeader);
-  return  AgesaStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *
- * Initialize defaults and options for Amd Init Reset.
- *
- * @param[in]  StdHeader              AMD standard header config param.
- * @param[in]  AmdRecoveryParamsPtr   The Reset Init interface to initialize.
- *
- * @retval     AGESA_SUCCESS    Always Succeeds.
- */
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  )
-{
-  ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdRecoveryParamsPtr != NULL);
-
-  AmdRecoveryParamsPtr->StdHeader = *StdHeader;
-
-  AllocHeapParams.RequestedBufferSize = sizeof (MEM_DATA_STRUCT);
-  AllocHeapParams.BufferHandle = AMD_MEM_DATA_HANDLE;
-  AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
-  if (HeapAllocateBuffer (&AllocHeapParams, &AmdRecoveryParamsPtr->StdHeader) == AGESA_SUCCESS) {
-    AmdRecoveryParamsPtr->MemConfig.MemData = (MEM_DATA_STRUCT *) AllocHeapParams.BufferPtr;
-    AmdRecoveryParamsPtr->MemConfig.MemData->ParameterListPtr = &(AmdRecoveryParamsPtr->MemConfig);
-    LibAmdMemCopy ((VOID *) AmdRecoveryParamsPtr->MemConfig.MemData,
-                   (VOID *) AmdRecoveryParamsPtr,
-                   (UINTN) sizeof (AmdRecoveryParamsPtr->StdHeader),
-                   &AmdRecoveryParamsPtr->StdHeader
-                  );
-    AmdMemInitDataStructDefRecovery (AmdRecoveryParamsPtr->MemConfig.MemData);
-    return AGESA_SUCCESS;
-  } else {
-    return AGESA_ERROR;
-  }
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Common/CommonInits.h b/src/vendorcode/amd/agesa/f12/Proc/Common/CommonInits.h
deleted file mode 100644
index 1a736b6..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Common/CommonInits.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Common initialization routines.
- *
- * Contains common initialization routines across AGESA entries of phases.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _COMMON_INITS_H_
-#define _COMMON_INITS_H_
-
-/**
- * Common routine to initialize PLATFORM_CONFIGURATION.
- *
- * @param[in,out]   PlatformConfig   Platform profile/build option config structure
- * @param[in,out]   StdHeader        AMD standard header config param
- *
- * @retval      AGESA_SUCCESS     Always Succeeds.
- *
- */
-AGESA_STATUS
-CommonPlatformConfigInit (
-  IN OUT   PLATFORM_CONFIGURATION    *PlatformConfig,
-  IN OUT   AMD_CONFIG_PARAMS         *StdHeader
-  );
-
-#endif // _COMMON_INITS_H_
-
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Common/CommonPage.h b/src/vendorcode/amd/agesa/f12/Proc/Common/CommonPage.h
deleted file mode 100644
index ec08ba8..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Common/CommonPage.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Create outline and references for Processor Common Component mainpage documentation.
- *
- * Design guides, maintenance guides, and general documentation, are
- * collected using this file onto the documentation mainpage.
- * This file contains doxygen comment blocks, only.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Documentation
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/**
- * @page commonmain Processor Common Component Documentation
- *
- * Additional documentation for the Common component consists of
- *
- * - Maintenance Guides:
- *   - @subpage amdconfigparamname "Naming Guidelines for type AMD_CONFIG_PARAMS"
- * - Design Guides:
- *   - add here >>>
- *
- */
-
-/**
- * @page amdconfigparamname Naming Guidelines for type AMD_CONFIG_PARAMS
- * @par
- * These are the guidelines for naming objects of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * in AGESA code.
- * <ul>
- *
- * <li>
- * Formal parameter names of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * will always be named
- * StdHeader. This covers all function prototypes, function definitions, and method typedefs (a
- * typedef of a function prototype) in AGESA code. Examples:
- * @n @code
- * VOID
- *   LibAmdPciFindNextCap (
- *     IN OUT   PCI_ADDR *Address,
- *     IN       AMD_CONFIG_PARAMS *StdHeader
- *     )
- *
- * typedef VOID F_DO_TABLE_ENTRY (
- *   IN       TABLE_ENTRY_DATA       *CurrentEntry,
- *   IN       PLATFORM_CONFIGURATION *PlatformConfig,
- *   IN       AMD_CONFIG_PARAMS      *StdHeader
- *   );
- *
- * @endcode
- *
- * <li>
- * Structure members of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * will always be named StdHeader. Examples:
- * @n @code
-   /// Example of struct member naming.
- * typedef struct {
- *   IN OUT   AMD_CONFIG_PARAMS StdHeader;             ///< Standard Header
- *   IN       PLATFORM_CONFIGURATION PlatformConfig;   ///< platform operational characteristics.
- * } AMD_CPU_RECOVERY_PARAMS;
- *
- * @endcode
- *
- * <li>
- * Routines which define local variables of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * should
- * name the local variable as closely as practical to StdHeader, but otherwise freedom is allowed. Example:
- * @n @code
- * AMD_CONFIG_PARAMS *NewStdHeader;
- * [...]
- * NewStdHeader = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
- * @endcode
- *
- * <li>
- * Arguments to routines with AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * formal parameters are not
- * checked.  Freedom is allowed in order to conform to these guidelines in a practical, readable
- * way.  This includes typecast arguments.  Examples:
- * @n @code
- * Status = GetEventLog (&LogEvent, (AMD_CONFIG_PARAMS *)Event);
- *
- * MemS3ExitSelfRefRegDA (NBPtr, &MemPtr->StdHeader);
- * @endcode
- *
- * </ul>
- *
- */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Common/CreateStruct.c b/src/vendorcode/amd/agesa/f12/Proc/Common/CreateStruct.c
deleted file mode 100644
index 010536e..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Common/CreateStruct.c
+++ /dev/null
@@ -1,313 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input structure creation support.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "GeneralServices.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-#include "cpuFamilyTranslation.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_COMMON_CREATESTRUCT_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-extern CONST FUNCTION_PARAMS_INFO FuncParamsInfo[];
-extern CONST UINTN InitializerCount;
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U  R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern BUILD_OPT_CFG UserOptions;
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Allocate and initialize Config headers and Service Interface structures.
- *
- * This function will be called for each AGESA public APIs.
- * This function will do the following:
- * -# Locate the AGESA API structure parameters initializer function information.
- * -# Find the size of the structure that gets passed to each public APIs as
- *    the entry parameter. Allocate heap space using the size for PreMemHeap, callout for
- *    memory allocation for PostMemDram, and just set the config and service interface
- *    pointers for ByHost.
- * -# If the allocation is not ByHost, copy the AmdConfigParams into the newly created AmdConfigParams.
- *    For ByHost, we're using the caller's existing config params.
- * -# Call the initializer function, and pass a reference to the Config params and to
- *    the Service Interface struct.  On return the constructor will have filled the
- *    remaining structure with default values.
- * -# Fill the remaining info in the newly created structure on heap in AMD_CONFIG_PARAMS
- *    area (i.e. Fill *newStructPtr with the pointer to the newly created structure)
- * -# Set the appropriate AGESA function number in the StdHeader member of the input
- *    parameter structure.
- *
- * @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                         whose parameter structure is to be created, the
- *                                         allocation method, and a pointer to the newly
- *                                         created structure.
- *
- * @retval         AGESA_SUCCESS           The interface struct is allocated and initialized.
- * @retval         AGESA_UNSUPPORTED       The Service is not supported.
- *
- */
-AGESA_STATUS
-AmdCreateStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINTN                     ServiceIndex;
-  ALLOCATE_HEAP_PARAMS      AllocHeapParams;
-  AMD_CONFIG_PARAMS         *NewlyCreatedConfig;
-  VOID                      *NewlyCreatedServiceInterface;
-  AGESA_STATUS              AgesaStatus;
-  AGESA_STATUS              TempStatus;
-  AGESA_STATUS              IgnoredSts;
-  CPU_SPECIFIC_SERVICES     *FamilySpecificServices;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  ASSERT (InterfaceParams != NULL);
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-    if (!IsBsp (&InterfaceParams->StdHeader, &IgnoredSts)) {
-      // APs must transfer their system core number from the mailbox to
-      // a local register while it is still valid.
-      GetCpuServicesOfCurrentCore ((const CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, &InterfaceParams->StdHeader);
-      FamilySpecificServices->TransferApCoreNumber (FamilySpecificServices, &InterfaceParams->StdHeader);
-    }
-    InterfaceParams->StdHeader.HeapStatus = HEAP_DO_NOT_EXIST_YET;
-    break;
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_ENV:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AgesaFunctionName == AMD_INIT_RESET) {
-    AgesaStatus = HeapManagerInit (&InterfaceParams->StdHeader);
-  }
-
-  // Step 1
-  for (ServiceIndex = 0; ServiceIndex < InitializerCount; ServiceIndex++) {
-    if (FuncParamsInfo[ServiceIndex].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (ServiceIndex >= InitializerCount) {
-    // A call was made to AGESA with an invalid function number.  This wrapper error may be due to the build target
-    // not containing the desired entry point.
-    return AGESA_UNSUPPORTED;
-  }
-
-  // Step 2
-  LibAmdMemFill (&AllocHeapParams, 0, (UINTN) (sizeof (ALLOCATE_HEAP_PARAMS)), &InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    // Allocate one buffer to contain the config params and the service struct.
-    // The service struct begins immediately after the config params.
-    AllocHeapParams.RequestedBufferSize = FuncParamsInfo[ServiceIndex].CreateStructSize + sizeof (AMD_CONFIG_PARAMS);
-    AllocHeapParams.BufferHandle = FuncParamsInfo[ServiceIndex].BufferHandle;
-    AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
-    TempStatus = HeapAllocateBuffer (&AllocHeapParams, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-    NewlyCreatedConfig++;
-    NewlyCreatedServiceInterface =  NewlyCreatedConfig;
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-  } else {
-    // The caller (example, agesa basic interface implementation) already has a buffer to use.
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)InterfaceParams;
-    NewlyCreatedServiceInterface = InterfaceParams->NewStructPtr;
-    ASSERT (InterfaceParams->NewStructSize >= FuncParamsInfo[ServiceIndex].CreateStructSize);
-  }
-  ASSERT (NewlyCreatedConfig != NULL);
-  ASSERT (NewlyCreatedServiceInterface != NULL);
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    *NewlyCreatedConfig = InterfaceParams->StdHeader;
-  }
-
-  // Step 4
-  TempStatus = FuncParamsInfo[ServiceIndex].AgesaFunction (NewlyCreatedConfig, NewlyCreatedServiceInterface);
-  AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-
-  // Step 5
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    InterfaceParams->NewStructPtr = (VOID *) NewlyCreatedServiceInterface;
-    InterfaceParams->NewStructSize = FuncParamsInfo[ServiceIndex].CreateStructSize;
-  }
-
-  // Step 6
-  ((AMD_CONFIG_PARAMS *) InterfaceParams->NewStructPtr)->Func = InterfaceParams->AgesaFunctionName;
-  return AgesaStatus;
-}
-
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *  Clears storage space from allocation for a parameter block of an
- *  AGESA software call entry.
- *
- *  @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                          whose parameter structure is to be deallocated.
- *
- *  @retval         AGESA_STATUS
- *
- *---------------------------------------------------------------------------------------
- **/
-AGESA_STATUS
-AmdReleaseStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINT8 i;
-  UINT8 *BufferPtr;
-  VOID  *ServicePtr;
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  TempStatus;
-  LOCATE_HEAP_PTR LocHeap;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_ENV:
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-// Step 1
-  for (i = 0; i < InitializerCount; i++) {
-    if (FuncParamsInfo[i].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (i >= InitializerCount) {
-    return AGESA_BOUNDS_CHK;
-  }
-
-  // Step 2
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    LocHeap.BufferHandle = FuncParamsInfo[i].BufferHandle;
-    if (HeapLocateBuffer (&LocHeap, &(InterfaceParams->StdHeader)) == AGESA_SUCCESS) {
-      BufferPtr = (UINT8 *) LocHeap.BufferPtr;
-      ServicePtr = &BufferPtr[sizeof (AMD_CONFIG_PARAMS)];
-      TempStatus = FuncParamsInfo[i].AgesaDestructor (&(InterfaceParams->StdHeader), ServicePtr);
-      AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    }
-  }
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    TempStatus = HeapDeallocateBuffer (FuncParamsInfo[i].BufferHandle, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-  } else {
-    // Unless we define service specific destructors, nothing to do for ByHost.
-    return AGESA_SUCCESS;
-  }
-  return AgesaStatus;
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Common/CreateStruct.h b/src/vendorcode/amd/agesa/f12/Proc/Common/CreateStruct.h
deleted file mode 100644
index 65a2040..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Common/CreateStruct.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input creation structures.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-#ifndef _CREATE_STRUCT_H_
-#define _CREATE_STRUCT_H_
-
-/**
- * A constructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * Constructors should avoid using the header, since these routines should not
- * do operations which may fail or require status back to the user.  The constructor
- * should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_FUNCTION (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_FUNCTION *PF_AGESA_FUNCTION;
-
-/**
- * A Destructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * The constructor should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header.
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_DESTRUCTOR (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_DESTRUCTOR *PF_AGESA_DESTRUCTOR;
-
-/**
- * Provide the information needed to invoke each service constructor.
- */
-typedef struct {
-  IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< Identifies the service
-  IN       UINT16              CreateStructSize;   ///< The service's input struct size.
-                                                   ///  Do NOT include a config params header!
-     OUT   PF_AGESA_FUNCTION   AgesaFunction;      ///< The constructor function
-     OUT   PF_AGESA_DESTRUCTOR AgesaDestructor;    ///< The destructor function.
-  IN       AGESA_BUFFER_HANDLE BufferHandle;       ///< The buffer handle id for the service.
-} FUNCTION_PARAMS_INFO;
-
-/**
- * All available services have their constructor info here.
- */
-AGESA_STATUS
-AmdInitResetConstructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_RESET_PARAMS     *AmdResetParams
-  );
-
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEarlyInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_EARLY_PARAMS  *EarlyParams
-  );
-
-AGESA_STATUS
-AmdInitPostInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_POST_PARAMS *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitPostDestructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_POST_PARAMS      *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEnvInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_ENV_PARAMS *EnvParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitMidInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_MID_PARAMS *MidParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_LATE_PARAMS *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateDestructor (
-  IN   AMD_CONFIG_PARAMS *StdHeader,
-  IN   AMD_LATE_PARAMS   *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitResumeInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdInitResumeDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdS3SaveInitializer (
-  IN OUT   AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3SaveDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3LateRestoreInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3LATE_PARAMS *S3LateParams
-  );
-
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  );
-#endif // _CREATE_STRUCT_H_
-
diff --git a/src/vendorcode/amd/agesa/f14/Makefile.inc b/src/vendorcode/amd/agesa/f14/Makefile.inc
index d1c8911..8775a1b 100644
--- a/src/vendorcode/amd/agesa/f14/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f14/Makefile.inc
@@ -36,6 +36,7 @@ AGESA_INC += -I$(AGESA_ROOT)/../common
 AGESA_INC += -I$(AGESA_ROOT)/Include
 AGESA_INC += -I$(AGESA_ROOT)/Lib
 AGESA_INC += -I$(AGESA_ROOT)/Legacy
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Family
@@ -228,13 +229,13 @@ libagesa-y += Proc/Mem/NB/mn.c
 libagesa-y += Proc/GNB/Gfx/GfxInitAtEnvPost.c
 libagesa-y += Proc/CPU/Feature/cpuHwC1e.c
 libagesa-y += Proc/CPU/cpuLateInit.c
-libagesa-y += Proc/Common/CreateStruct.c
+libagesa-y += ../common/Proc/Common/CreateStruct.c
 libagesa-y += Proc/CPU/Feature/cpuWhea.c
 libagesa-y += Proc/Mem/Feat/CSINTLV/mfcsi.c
 libagesa-y += Proc/Mem/Feat/ECC/mfecc.c
 libagesa-y += Proc/Mem/Feat/DMI/mfDMI.c
 libagesa-y += Proc/Mem/Ps/ON/mpson3.c
-libagesa-y += Proc/Common/AmdLateRunApTask.c
+libagesa-y += ../common/Proc/Common/AmdLateRunApTask.c
 libagesa-y += Proc/CPU/cpuPowerMgmtMultiSocket.c
 libagesa-y += Proc/Mem/Main/mmUmaAlloc.c
 libagesa-y += Proc/CPU/Feature/cpuPstateTables.c
diff --git a/src/vendorcode/amd/agesa/f14/Proc/Common/AmdInitRecovery.c b/src/vendorcode/amd/agesa/f14/Proc/Common/AmdInitRecovery.c
deleted file mode 100644
index fccb5d9..0000000
--- a/src/vendorcode/amd/agesa/f14/Proc/Common/AmdInitRecovery.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 35136 $   @e \$Date: 2010-07-16 11:29:48 +0800 (Fri, 16 Jul 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***************************************************************************
- *
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "AdvancedApi.h"
-#include "heapManager.h"
-#include "mm.h"
-#include "GnbInterface.h"
-#include "cpuRecovery.h"
-#include "cpuCacheInit.h"
-#include "Filecode.h"
-CODE_GROUP (G2_PEI)
-RDATA_GROUP (G2_PEI)
-
-#define FILECODE PROC_COMMON_AMDINITRECOVERY_FILECODE
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Perform initialization services required at the Early Init POST time point.
- *
- * Execution Cache, HyperTransport, C1e, and AP Init advanced services are performed.
- *
- * @param[in, out]     RecoveryParams  The interface struct for Recovery services
- *
- * @return        The most severe AGESA_STATUS returned by any called service.
- *
- */
-AGESA_STATUS
-AmdInitRecovery (
-  IN OUT   AMD_RECOVERY_PARAMS      *RecoveryParams
-  )
-{
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  CalledAgesaStatus;
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryEntry, &RecoveryParams->StdHeader);
-
-  ASSERT (RecoveryParams != NULL);
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  // Setup ROM execution cache
-  CalledAgesaStatus = AllocateExecutionCache (&RecoveryParams->StdHeader, &RecoveryParams->CacheRegion[0]);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdHtInitRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdCpuRecovery ((AMD_CPU_RECOVERY_PARAMS *) &RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdMemRecovery (RecoveryParams->MemConfig.MemData);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdGnbRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryExit, &RecoveryParams->StdHeader);
-  return  AgesaStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *
- * Initialize defaults and options for Amd Init Reset.
- *
- * @param[in]  StdHeader              AMD standard header config param.
- * @param[in]  AmdRecoveryParamsPtr   The Reset Init interface to initialize.
- *
- * @retval     AGESA_SUCCESS    Always Succeeds.
- */
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  )
-{
-  ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdRecoveryParamsPtr != NULL);
-
-  AmdRecoveryParamsPtr->StdHeader = *StdHeader;
-
-  AllocHeapParams.RequestedBufferSize = sizeof (MEM_DATA_STRUCT);
-  AllocHeapParams.BufferHandle = AMD_MEM_DATA_HANDLE;
-  AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
-  if (HeapAllocateBuffer (&AllocHeapParams, &AmdRecoveryParamsPtr->StdHeader) == AGESA_SUCCESS) {
-    AmdRecoveryParamsPtr->MemConfig.MemData = (MEM_DATA_STRUCT *) AllocHeapParams.BufferPtr;
-    AmdRecoveryParamsPtr->MemConfig.MemData->ParameterListPtr = &(AmdRecoveryParamsPtr->MemConfig);
-    LibAmdMemCopy ((VOID *) AmdRecoveryParamsPtr->MemConfig.MemData,
-                   (VOID *) AmdRecoveryParamsPtr,
-                   (UINTN) sizeof (AmdRecoveryParamsPtr->StdHeader),
-                   &AmdRecoveryParamsPtr->StdHeader
-                  );
-    AmdMemInitDataStructDefRecovery (AmdRecoveryParamsPtr->MemConfig.MemData);
-    return AGESA_SUCCESS;
-  } else {
-    return AGESA_ERROR;
-  }
-}
diff --git a/src/vendorcode/amd/agesa/f14/Proc/Common/AmdLateRunApTask.c b/src/vendorcode/amd/agesa/f14/Proc/Common/AmdLateRunApTask.c
deleted file mode 100644
index 9a1c99e..0000000
--- a/src/vendorcode/amd/agesa/f14/Proc/Common/AmdLateRunApTask.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Interface
- * @e \$Revision: 35136 $   @e \$Date: 2010-07-16 11:29:48 +0800 (Fri, 16 Jul 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***************************************************************************
- *
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "Ids.h"
-#include "Options.h"
-#include "CreateStruct.h"
-#include "Filecode.h"
-CODE_GROUP (G3_DXE)
-RDATA_GROUP (G3_DXE)
-
-#define FILECODE PROC_COMMON_AMDLATERUNAPTASK_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern CONST DISPATCH_TABLE ApDispatchTable[];
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Application Processor perform a function as directed by the BSC.
- *
- * This is needed for an AP task that must run after AGESA has relinquished control
- * of the APs to the IBV.
- *
- * @param[in]     AmdApExeParams  The interface struct for any required routine.
- *
- * @return        The most severe AGESA_STATUS returned by any called service.  Note
- *                that this will be the return value passed back to the BSC as the
- *                return value for the call out.
- *
- */
-AGESA_STATUS
-AmdLateRunApTask (
-  IN       AP_EXE_PARAMS  *AmdApExeParams
-  )
-{
-  AGESA_STATUS        CalledAgesaStatus;
-  AGESA_STATUS        ApLateTaskStatus;
-  DISPATCH_TABLE      *Entry;
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskEntry, &AmdApExeParams->StdHeader);
-
-  ASSERT (AmdApExeParams != NULL);
-  ApLateTaskStatus = AGESA_SUCCESS;
-  CalledAgesaStatus = AGESA_UNSUPPORTED;
-
-  // Dispatch, if valid
-  Entry = (DISPATCH_TABLE *) ApDispatchTable;
-  while (Entry->FunctionId != 0) {
-    if (AmdApExeParams->FunctionNumber == Entry->FunctionId) {
-      CalledAgesaStatus = Entry->EntryPoint (AmdApExeParams);
-      break;
-    }
-    Entry++;
-  }
-
-  if (CalledAgesaStatus > ApLateTaskStatus) {
-    ApLateTaskStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskExit, &AmdApExeParams->StdHeader);
-  return  ApLateTaskStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Constructor for the AMD_LATE_RUN_AP_TASK function.
- *
- * This routine is responsible for setting default values for the
- * input parameters needed by the AMD_S3_SAVE entry point.
- *
- * @param[in]     StdHeader      The standard header.
- * @param[in,out] AmdApExeParams Required input parameters for the AMD_LATE_RUN_AP_TASK
- *                               entry point.
- *
- * @retval        AGESA_SUCCESS  Always Succeeds.
- *
- */
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  )
-{
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdApExeParams != NULL);
-
-  AmdApExeParams->StdHeader = *StdHeader;
-  AmdApExeParams->FunctionNumber = 0;
-  AmdApExeParams->RelatedDataBlock = NULL;
-  AmdApExeParams->RelatedBlockLength = 0;
-  return AGESA_SUCCESS;
-}
-
diff --git a/src/vendorcode/amd/agesa/f14/Proc/Common/CommonInits.h b/src/vendorcode/amd/agesa/f14/Proc/Common/CommonInits.h
deleted file mode 100644
index 34f3c93..0000000
--- a/src/vendorcode/amd/agesa/f14/Proc/Common/CommonInits.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Common initialization routines.
- *
- * Contains common initialization routines across AGESA entries of phases.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***************************************************************************
- *
- */
-
-#ifndef _COMMON_INITS_H_
-#define _COMMON_INITS_H_
-
-/**
- * Common routine to initialize PLATFORM_CONFIGURATION.
- *
- * @param[in,out]   PlatformConfig   Platform profile/build option config structure
- * @param[in,out]   StdHeader        AMD standard header config param
- *
- * @retval      AGESA_SUCCESS     Always Succeeds.
- *
- */
-AGESA_STATUS
-CommonPlatformConfigInit (
-  IN OUT   PLATFORM_CONFIGURATION    *PlatformConfig,
-  IN OUT   AMD_CONFIG_PARAMS         *StdHeader
-  );
-
-#endif // _COMMON_INITS_H_
-
diff --git a/src/vendorcode/amd/agesa/f14/Proc/Common/CommonPage.h b/src/vendorcode/amd/agesa/f14/Proc/Common/CommonPage.h
deleted file mode 100644
index 4e73e21..0000000
--- a/src/vendorcode/amd/agesa/f14/Proc/Common/CommonPage.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Create outline and references for Processor Common Component mainpage documentation.
- *
- * Design guides, maintenance guides, and general documentation, are
- * collected using this file onto the documentation mainpage.
- * This file contains doxygen comment blocks, only.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Documentation
- * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***************************************************************************
- *
- */
-
-/**
- * @page commonmain Processor Common Component Documentation
- *
- * Additional documentation for the Common component consists of
- *
- * - Maintenance Guides:
- *   - @subpage amdconfigparamname "Naming Guidelines for type AMD_CONFIG_PARAMS"
- * - Design Guides:
- *   - add here >>>
- *
- */
-
-/**
- * @page amdconfigparamname Naming Guidelines for type AMD_CONFIG_PARAMS
- * @par
- * These are the guidelines for naming objects of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * in AGESA code.
- * <ul>
- *
- * <li>
- * Formal parameter names of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * will always be named
- * StdHeader. This covers all function prototypes, function definitions, and method typedefs (a
- * typedef of a function prototype) in AGESA code. Examples:
- * @n @code
- * VOID
- *   LibAmdPciFindNextCap (
- *     IN OUT   PCI_ADDR *Address,
- *     IN       AMD_CONFIG_PARAMS *StdHeader
- *     )
- *
- * typedef VOID F_DO_TABLE_ENTRY (
- *   IN       TABLE_ENTRY_DATA       *CurrentEntry,
- *   IN       PLATFORM_CONFIGURATION *PlatformConfig,
- *   IN       AMD_CONFIG_PARAMS      *StdHeader
- *   );
- *
- * @endcode
- *
- * <li>
- * Structure members of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * will always be named StdHeader. Examples:
- * @n @code
-   /// Example of struct member naming.
- * typedef struct {
- *   IN OUT   AMD_CONFIG_PARAMS StdHeader;             ///< Standard Header
- *   IN       PLATFORM_CONFIGURATION PlatformConfig;   ///< platform operational characteristics.
- * } AMD_CPU_RECOVERY_PARAMS;
- *
- * @endcode
- *
- * <li>
- * Routines which define local variables of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * should
- * name the local variable as closely as practical to StdHeader, but otherwise freedom is allowed. Example:
- * @n @code
- * AMD_CONFIG_PARAMS *NewStdHeader;
- * [...]
- * NewStdHeader = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
- * @endcode
- *
- * <li>
- * Arguments to routines with AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * formal parameters are not
- * checked.  Freedom is allowed in order to conform to these guidelines in a practical, readable
- * way.  This includes typecast arguments.  Examples:
- * @n @code
- * Status = GetEventLog (&LogEvent, (AMD_CONFIG_PARAMS *)Event);
- *
- * MemS3ExitSelfRefRegDA (NBPtr, &MemPtr->StdHeader);
- * @endcode
- *
- * </ul>
- *
- */
diff --git a/src/vendorcode/amd/agesa/f14/Proc/Common/CreateStruct.c b/src/vendorcode/amd/agesa/f14/Proc/Common/CreateStruct.c
deleted file mode 100644
index d7041d2..0000000
--- a/src/vendorcode/amd/agesa/f14/Proc/Common/CreateStruct.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input structure creation support.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 35136 $   @e \$Date: 2010-07-16 11:29:48 +0800 (Fri, 16 Jul 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***************************************************************************
- *
- */
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "GeneralServices.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-#include "cpuFamilyTranslation.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_COMMON_CREATESTRUCT_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-extern CONST FUNCTION_PARAMS_INFO FuncParamsInfo[];
-extern CONST UINTN InitializerCount;
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U  R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern BUILD_OPT_CFG UserOptions;
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Allocate and initialize Config headers and Service Interface structures.
- *
- * This function will be called for each AGESA public APIs.
- * This function will do the following:
- * -# Locate the AGESA API structure parameters initializer function information.
- * -# Find the size of the structure that gets passed to each public APIs as
- *    the entry parameter. Allocate heap space using the size for PreMemHeap, callout for
- *    memory allocation for PostMemDram, and just set the config and service interface
- *    pointers for ByHost.
- * -# If the allocation is not ByHost, copy the AmdConfigParams into the newly created AmdConfigParams.
- *    For ByHost, we're using the caller's existing config params.
- * -# Call the initializer function, and pass a reference to the Config params and to
- *    the Service Interface struct.  On return the constructor will have filled the
- *    remaining structure with default values.
- * -# Fill the remaining info in the newly created structure on heap in AMD_CONFIG_PARAMS
- *    area (i.e. Fill *newStructPtr with the pointer to the newly created structure)
- * -# Set the appropriate AGESA function number in the StdHeader member of the input
- *    parameter structure.
- *
- * @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                         whose parameter structure is to be created, the
- *                                         allocation method, and a pointer to the newly
- *                                         created structure.
- *
- * @retval         AGESA_SUCCESS           The interface struct is allocated and initialized.
- * @retval         AGESA_UNSUPPORTED       The Service is not supported.
- *
- */
-AGESA_STATUS
-AmdCreateStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINTN                     ServiceIndex;
-  ALLOCATE_HEAP_PARAMS      AllocHeapParams;
-  AMD_CONFIG_PARAMS         *NewlyCreatedConfig;
-  VOID                      *NewlyCreatedServiceInterface;
-  AGESA_STATUS              AgesaStatus;
-  AGESA_STATUS              TempStatus;
-  AGESA_STATUS              IgnoredSts;
-  CPU_SPECIFIC_SERVICES     *FamilySpecificServices;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  ASSERT (InterfaceParams != NULL);
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-    if (!IsBsp (&InterfaceParams->StdHeader, &IgnoredSts)) {
-      // APs must transfer their system core number from the mailbox to
-      // a local register while it is still valid.
-      GetCpuServicesOfCurrentCore ((const CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, &InterfaceParams->StdHeader);
-      FamilySpecificServices->TransferApCoreNumber (FamilySpecificServices, &InterfaceParams->StdHeader);
-    }
-    InterfaceParams->StdHeader.HeapStatus = HEAP_DO_NOT_EXIST_YET;
-    break;
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_ENV:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AgesaFunctionName == AMD_INIT_RESET) {
-    AgesaStatus = HeapManagerInit (&InterfaceParams->StdHeader);
-  }
-
-  // Step 1
-  for (ServiceIndex = 0; ServiceIndex < InitializerCount; ServiceIndex++) {
-    if (FuncParamsInfo[ServiceIndex].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (ServiceIndex >= InitializerCount) {
-    // A call was made to AGESA with an invalid function number.  This wrapper error may be due to the build target
-    // not containing the desired entry point.
-    return AGESA_UNSUPPORTED;
-  }
-
-  // Step 2
-  LibAmdMemFill (&AllocHeapParams, 0, (UINTN) (sizeof (ALLOCATE_HEAP_PARAMS)), &InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    // Allocate one buffer to contain the config params and the service struct.
-    // The service struct begins immediately after the config params.
-    AllocHeapParams.RequestedBufferSize = FuncParamsInfo[ServiceIndex].CreateStructSize + sizeof (AMD_CONFIG_PARAMS);
-    AllocHeapParams.BufferHandle = FuncParamsInfo[ServiceIndex].BufferHandle;
-    AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
-    TempStatus = HeapAllocateBuffer (&AllocHeapParams, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-    NewlyCreatedConfig++;
-    NewlyCreatedServiceInterface =  NewlyCreatedConfig;
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-  } else {
-    // The caller (example, agesa basic interface implementation) already has a buffer to use.
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)InterfaceParams;
-    NewlyCreatedServiceInterface = InterfaceParams->NewStructPtr;
-    ASSERT (InterfaceParams->NewStructSize >= FuncParamsInfo[ServiceIndex].CreateStructSize);
-  }
-  ASSERT (NewlyCreatedConfig != NULL);
-  ASSERT (NewlyCreatedServiceInterface != NULL);
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    *NewlyCreatedConfig = InterfaceParams->StdHeader;
-  }
-
-  // Step 4
-  TempStatus = FuncParamsInfo[ServiceIndex].AgesaFunction (NewlyCreatedConfig, NewlyCreatedServiceInterface);
-  AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-
-  // Step 5
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    InterfaceParams->NewStructPtr = (VOID *) NewlyCreatedServiceInterface;
-    InterfaceParams->NewStructSize = FuncParamsInfo[ServiceIndex].CreateStructSize;
-  }
-
-  // Step 6
-  ((AMD_CONFIG_PARAMS *) InterfaceParams->NewStructPtr)->Func = InterfaceParams->AgesaFunctionName;
-  return AgesaStatus;
-}
-
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *  Clears storage space from allocation for a parameter block of an
- *  AGESA software call entry.
- *
- *  @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                          whose parameter structure is to be deallocated.
- *
- *  @retval         AGESA_STATUS
- *
- *---------------------------------------------------------------------------------------
- **/
-AGESA_STATUS
-AmdReleaseStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINT8 i;
-  UINT8 *BufferPtr;
-  VOID  *ServicePtr;
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  TempStatus;
-  LOCATE_HEAP_PTR LocHeap;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_ENV:
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-// Step 1
-  for (i = 0; i < InitializerCount; i++) {
-    if (FuncParamsInfo[i].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (i >= InitializerCount) {
-    return AGESA_BOUNDS_CHK;
-  }
-
-  // Step 2
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    LocHeap.BufferHandle = FuncParamsInfo[i].BufferHandle;
-    if (HeapLocateBuffer (&LocHeap, &(InterfaceParams->StdHeader)) == AGESA_SUCCESS) {
-      BufferPtr = (UINT8 *) LocHeap.BufferPtr;
-      ServicePtr = &BufferPtr[sizeof (AMD_CONFIG_PARAMS)];
-      TempStatus = FuncParamsInfo[i].AgesaDestructor (&(InterfaceParams->StdHeader), ServicePtr);
-      AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    }
-  }
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    TempStatus = HeapDeallocateBuffer (FuncParamsInfo[i].BufferHandle, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-  } else {
-    // Unless we define service specific destructors, nothing to do for ByHost.
-    return AGESA_SUCCESS;
-  }
-  return AgesaStatus;
-}
diff --git a/src/vendorcode/amd/agesa/f14/Proc/Common/CreateStruct.h b/src/vendorcode/amd/agesa/f14/Proc/Common/CreateStruct.h
deleted file mode 100644
index ace0176..0000000
--- a/src/vendorcode/amd/agesa/f14/Proc/Common/CreateStruct.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input creation structures.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * ***************************************************************************
- *
- */
-
-#ifndef _CREATE_STRUCT_H_
-#define _CREATE_STRUCT_H_
-
-/**
- * A constructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * Constructors should avoid using the header, since these routines should not
- * do operations which may fail or require status back to the user.  The constructor
- * should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_FUNCTION (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_FUNCTION *PF_AGESA_FUNCTION;
-
-/**
- * A Destructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * The constructor should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header.
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_DESTRUCTOR (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_DESTRUCTOR *PF_AGESA_DESTRUCTOR;
-
-/**
- * Provide the information needed to invoke each service constructor.
- */
-typedef struct {
-  IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< Identifies the service
-  IN       UINT16              CreateStructSize;   ///< The service's input struct size.
-                                                   ///  Do NOT include a config params header!
-     OUT   PF_AGESA_FUNCTION   AgesaFunction;      ///< The constructor function
-     OUT   PF_AGESA_DESTRUCTOR AgesaDestructor;    ///< The destructor function.
-  IN       UINT32              BufferHandle;       ///< The buffer handle id for the service.
-} FUNCTION_PARAMS_INFO;
-
-/**
- * All available services have their constructor info here.
- */
-AGESA_STATUS
-AmdInitResetConstructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_RESET_PARAMS     *AmdResetParams
-  );
-
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEarlyInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_EARLY_PARAMS  *EarlyParams
-  );
-
-AGESA_STATUS
-AmdInitPostInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_POST_PARAMS *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitPostDestructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_POST_PARAMS      *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEnvInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_ENV_PARAMS *EnvParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitMidInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_MID_PARAMS *MidParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_LATE_PARAMS *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateDestructor (
-  IN   AMD_CONFIG_PARAMS *StdHeader,
-  IN   AMD_LATE_PARAMS   *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitResumeInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdInitResumeDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdS3SaveInitializer (
-  IN OUT   AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3SaveDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3LateRestoreInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3LATE_PARAMS *S3LateParams
-  );
-
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  );
-#endif // _CREATE_STRUCT_H_
-
diff --git a/src/vendorcode/amd/agesa/f15/Makefile.inc b/src/vendorcode/amd/agesa/f15/Makefile.inc
index d709199..51260bf 100644
--- a/src/vendorcode/amd/agesa/f15/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f15/Makefile.inc
@@ -35,6 +35,7 @@ AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Family/0x10
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Family/0x15
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Family/0x15/OR
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Feature
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/HT
 AGESA_INC += -I$(AGESA_ROOT)/Proc/HT/Fam10
@@ -80,12 +81,12 @@ libagesa-y += Proc/Common/AmdInitMid.c
 libagesa-y += Proc/Common/AmdInitPost.c
 libagesa-y += Proc/Common/AmdInitReset.c
 libagesa-y += Proc/Common/AmdInitResume.c
-libagesa-y += Proc/Common/AmdLateRunApTask.c
+libagesa-y += ../common/Proc/Common/AmdLateRunApTask.c
 libagesa-y += Proc/Common/AmdS3LateRestore.c
 libagesa-y += Proc/Common/AmdS3Save.c
 libagesa-y += Proc/Common/CommonInits.c
 libagesa-y += Proc/Common/CommonReturns.c
-libagesa-y += Proc/Common/CreateStruct.c
+libagesa-y += ../common/Proc/Common/CreateStruct.c
 libagesa-y += Proc/Common/S3RestoreState.c
 libagesa-y += Proc/Common/S3SaveState.c
 libagesa-y += Proc/CPU/cahaltasm.S
diff --git a/src/vendorcode/amd/agesa/f15/Proc/Common/AmdFch.h b/src/vendorcode/amd/agesa/f15/Proc/Common/AmdFch.h
deleted file mode 100644
index afe565b..0000000
--- a/src/vendorcode/amd/agesa/f15/Proc/Common/AmdFch.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD FCH Component
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _AMD_FCH_H_
-#define _AMD_FCH_H_
-
-typedef AGESA_STATUS FCH_INIT (IN VOID *DataPtr);
-typedef VOID FCH_TASK_ENTRY (IN VOID *FchCfg);
-
-
-/// FCH API build options
-typedef struct {
-  FCH_INIT        *InitReset;                   ///< InitReset
-  FCH_INIT        *InitResetConstructor;        ///< InitResetConstructor
-  FCH_INIT        *InitEnv;                     ///< InitEnv
-  FCH_INIT        *InitEnvConstructor;          ///< InitEnvConstructor
-  FCH_INIT        *InitMid;                     ///< InitMid
-  FCH_INIT        *InitMidConstructor;          ///< InitMidConstructor
-  FCH_INIT        *InitLate;                    ///< InitLate
-  FCH_INIT        *InitLateConstructor;         ///< InitLateConstructor
-} BLDOPT_FCH_FUNCTION;
-
-#endif
diff --git a/src/vendorcode/amd/agesa/f15/Proc/Common/AmdInitRecovery.c b/src/vendorcode/amd/agesa/f15/Proc/Common/AmdInitRecovery.c
deleted file mode 100644
index ac4c08d..0000000
--- a/src/vendorcode/amd/agesa/f15/Proc/Common/AmdInitRecovery.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "AdvancedApi.h"
-#include "heapManager.h"
-#include "mm.h"
-#include "GnbInterface.h"
-#include "cpuRecovery.h"
-#include "cpuCacheInit.h"
-#include "Filecode.h"
-CODE_GROUP (G2_PEI)
-RDATA_GROUP (G2_PEI)
-
-#define FILECODE PROC_COMMON_AMDINITRECOVERY_FILECODE
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Perform initialization services required at the Early Init POST time point.
- *
- * Execution Cache, HyperTransport, C1e, and AP Init advanced services are performed.
- *
- * @param[in, out]     RecoveryParams  The interface struct for Recovery services
- *
- * @return        The most severe AGESA_STATUS returned by any called service.
- *
- */
-AGESA_STATUS
-AmdInitRecovery (
-  IN OUT   AMD_RECOVERY_PARAMS      *RecoveryParams
-  )
-{
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  CalledAgesaStatus;
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryEntry, &RecoveryParams->StdHeader);
-
-  ASSERT (RecoveryParams != NULL);
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  // Setup ROM execution cache
-  CalledAgesaStatus = AllocateExecutionCache (&RecoveryParams->StdHeader, &RecoveryParams->CacheRegion[0]);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdHtInitRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdCpuRecovery ((AMD_CPU_RECOVERY_PARAMS *) &RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdMemRecovery (RecoveryParams->MemConfig.MemData);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdGnbRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryExit, &RecoveryParams->StdHeader);
-  return  AgesaStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *
- * Initialize defaults and options for Amd Init Reset.
- *
- * @param[in]  StdHeader              AMD standard header config param.
- * @param[in]  AmdRecoveryParamsPtr   The Reset Init interface to initialize.
- *
- * @retval     AGESA_SUCCESS    Always Succeeds.
- */
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  )
-{
-  ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdRecoveryParamsPtr != NULL);
-
-  AmdRecoveryParamsPtr->StdHeader = *StdHeader;
-
-  AllocHeapParams.RequestedBufferSize = sizeof (MEM_DATA_STRUCT);
-  AllocHeapParams.BufferHandle = AMD_MEM_DATA_HANDLE;
-  AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
-  if (HeapAllocateBuffer (&AllocHeapParams, &AmdRecoveryParamsPtr->StdHeader) == AGESA_SUCCESS) {
-    AmdRecoveryParamsPtr->MemConfig.MemData = (MEM_DATA_STRUCT *) AllocHeapParams.BufferPtr;
-    AmdRecoveryParamsPtr->MemConfig.MemData->ParameterListPtr = &(AmdRecoveryParamsPtr->MemConfig);
-    LibAmdMemCopy ((VOID *) AmdRecoveryParamsPtr->MemConfig.MemData,
-                   (VOID *) AmdRecoveryParamsPtr,
-                   (UINTN) sizeof (AmdRecoveryParamsPtr->StdHeader),
-                   &AmdRecoveryParamsPtr->StdHeader
-                  );
-    AmdMemInitDataStructDefRecovery (AmdRecoveryParamsPtr->MemConfig.MemData);
-    return AGESA_SUCCESS;
-  } else {
-    return AGESA_ERROR;
-  }
-}
diff --git a/src/vendorcode/amd/agesa/f15/Proc/Common/AmdLateRunApTask.c b/src/vendorcode/amd/agesa/f15/Proc/Common/AmdLateRunApTask.c
deleted file mode 100644
index b11fca2..0000000
--- a/src/vendorcode/amd/agesa/f15/Proc/Common/AmdLateRunApTask.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Interface
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "Ids.h"
-#include "Options.h"
-#include "Filecode.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-CODE_GROUP (G3_DXE)
-RDATA_GROUP (G3_DXE)
-
-#define FILECODE PROC_COMMON_AMDLATERUNAPTASK_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern CONST DISPATCH_TABLE ApDispatchTable[];
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Application Processor perform a function as directed by the BSC.
- *
- * This is needed for an AP task that must run after AGESA has relinquished control
- * of the APs to the IBV.
- *
- * @param[in]     AmdApExeParams  The interface struct for any required routine.
- *
- * @return        The most severe AGESA_STATUS returned by any called service.  Note
- *                that this will be the return value passed back to the BSC as the
- *                return value for the call out.
- *
- */
-AGESA_STATUS
-AmdLateRunApTask (
-  IN       AP_EXE_PARAMS  *AmdApExeParams
-  )
-{
-  AGESA_STATUS        CalledAgesaStatus;
-  AGESA_STATUS        ApLateTaskStatus;
-  DISPATCH_TABLE      *Entry;
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskEntry, &AmdApExeParams->StdHeader);
-
-  ASSERT (AmdApExeParams != NULL);
-  ApLateTaskStatus = AGESA_SUCCESS;
-  CalledAgesaStatus = AGESA_UNSUPPORTED;
-
-  // Dispatch, if valid
-  Entry = (DISPATCH_TABLE *) ApDispatchTable;
-  while (Entry->FunctionId != 0) {
-    if (AmdApExeParams->FunctionNumber == Entry->FunctionId) {
-      CalledAgesaStatus = Entry->EntryPoint (AmdApExeParams);
-      break;
-    }
-    Entry++;
-  }
-
-  if (CalledAgesaStatus > ApLateTaskStatus) {
-    ApLateTaskStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskExit, &AmdApExeParams->StdHeader);
-  return  ApLateTaskStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Constructor for the AMD_LATE_RUN_AP_TASK function.
- *
- * This routine is responsible for setting default values for the
- * input parameters needed by the AMD_S3_SAVE entry point.
- *
- * @param[in]     StdHeader      The standard header.
- * @param[in,out] AmdApExeParams Required input parameters for the AMD_LATE_RUN_AP_TASK
- *                               entry point.
- *
- * @retval        AGESA_SUCCESS  Always Succeeds.
- *
- */
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  )
-{
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdApExeParams != NULL);
-
-  AmdApExeParams->StdHeader = *StdHeader;
-  AmdApExeParams->FunctionNumber = 0;
-  AmdApExeParams->RelatedDataBlock = NULL;
-  AmdApExeParams->RelatedBlockLength = 0;
-  return AGESA_SUCCESS;
-}
-
diff --git a/src/vendorcode/amd/agesa/f15/Proc/Common/CommonInits.h b/src/vendorcode/amd/agesa/f15/Proc/Common/CommonInits.h
deleted file mode 100644
index 681bc4a..0000000
--- a/src/vendorcode/amd/agesa/f15/Proc/Common/CommonInits.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Common initialization routines.
- *
- * Contains common initialization routines across AGESA entries of phases.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _COMMON_INITS_H_
-#define _COMMON_INITS_H_
-
-/**
- * Common routine to initialize PLATFORM_CONFIGURATION.
- *
- * @param[in,out]   PlatformConfig   Platform profile/build option config structure
- * @param[in,out]   StdHeader        AMD standard header config param
- *
- * @retval      AGESA_SUCCESS     Always Succeeds.
- *
- */
-AGESA_STATUS
-CommonPlatformConfigInit (
-  IN OUT   PLATFORM_CONFIGURATION    *PlatformConfig,
-  IN OUT   AMD_CONFIG_PARAMS         *StdHeader
-  );
-
-#endif // _COMMON_INITS_H_
-
diff --git a/src/vendorcode/amd/agesa/f15/Proc/Common/CommonPage.h b/src/vendorcode/amd/agesa/f15/Proc/Common/CommonPage.h
deleted file mode 100644
index 1dcc6da..0000000
--- a/src/vendorcode/amd/agesa/f15/Proc/Common/CommonPage.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Create outline and references for Processor Common Component mainpage documentation.
- *
- * Design guides, maintenance guides, and general documentation, are
- * collected using this file onto the documentation mainpage.
- * This file contains doxygen comment blocks, only.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Documentation
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/**
- * @page commonmain Processor Common Component Documentation
- *
- * Additional documentation for the Common component consists of
- *
- * - Maintenance Guides:
- *   - @subpage amdconfigparamname "Naming Guidelines for type AMD_CONFIG_PARAMS"
- * - Design Guides:
- *   - add here >>>
- *
- */
-
-/**
- * @page amdconfigparamname Naming Guidelines for type AMD_CONFIG_PARAMS
- * @par
- * These are the guidelines for naming objects of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * in AGESA code.
- * <ul>
- *
- * <li>
- * Formal parameter names of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * will always be named
- * StdHeader. This covers all function prototypes, function definitions, and method typedefs (a
- * typedef of a function prototype) in AGESA code. Examples:
- * @n @code
- * VOID
- *   LibAmdPciFindNextCap (
- *     IN OUT   PCI_ADDR *Address,
- *     IN       AMD_CONFIG_PARAMS *StdHeader
- *     )
- *
- * typedef VOID F_DO_TABLE_ENTRY (
- *   IN       TABLE_ENTRY_DATA       *CurrentEntry,
- *   IN       PLATFORM_CONFIGURATION *PlatformConfig,
- *   IN       AMD_CONFIG_PARAMS      *StdHeader
- *   );
- *
- * @endcode
- *
- * <li>
- * Structure members of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * will always be named StdHeader. Examples:
- * @n @code
-   /// Example of struct member naming.
- * typedef struct {
- *   IN OUT   AMD_CONFIG_PARAMS StdHeader;             ///< Standard Header
- *   IN       PLATFORM_CONFIGURATION PlatformConfig;   ///< platform operational characteristics.
- * } AMD_CPU_RECOVERY_PARAMS;
- *
- * @endcode
- *
- * <li>
- * Routines which define local variables of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * should
- * name the local variable as closely as practical to StdHeader, but otherwise freedom is allowed. Example:
- * @n @code
- * AMD_CONFIG_PARAMS *NewStdHeader;
- * [...]
- * NewStdHeader = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
- * @endcode
- *
- * <li>
- * Arguments to routines with AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * formal parameters are not
- * checked.  Freedom is allowed in order to conform to these guidelines in a practical, readable
- * way.  This includes typecast arguments.  Examples:
- * @n @code
- * Status = GetEventLog (&LogEvent, (AMD_CONFIG_PARAMS *)Event);
- *
- * MemS3ExitSelfRefRegDA (NBPtr, &MemPtr->StdHeader);
- * @endcode
- *
- * </ul>
- *
- */
diff --git a/src/vendorcode/amd/agesa/f15/Proc/Common/CreateStruct.c b/src/vendorcode/amd/agesa/f15/Proc/Common/CreateStruct.c
deleted file mode 100644
index f99bd66..0000000
--- a/src/vendorcode/amd/agesa/f15/Proc/Common/CreateStruct.c
+++ /dev/null
@@ -1,313 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input structure creation support.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "GeneralServices.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-#include "cpuFamilyTranslation.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_COMMON_CREATESTRUCT_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-extern CONST FUNCTION_PARAMS_INFO FuncParamsInfo[];
-extern CONST UINTN InitializerCount;
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U  R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern BUILD_OPT_CFG UserOptions;
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Allocate and initialize Config headers and Service Interface structures.
- *
- * This function will be called for each AGESA public APIs.
- * This function will do the following:
- * -# Locate the AGESA API structure parameters initializer function information.
- * -# Find the size of the structure that gets passed to each public APIs as
- *    the entry parameter. Allocate heap space using the size for PreMemHeap, callout for
- *    memory allocation for PostMemDram, and just set the config and service interface
- *    pointers for ByHost.
- * -# If the allocation is not ByHost, copy the AmdConfigParams into the newly created AmdConfigParams.
- *    For ByHost, we're using the caller's existing config params.
- * -# Call the initializer function, and pass a reference to the Config params and to
- *    the Service Interface struct.  On return the constructor will have filled the
- *    remaining structure with default values.
- * -# Fill the remaining info in the newly created structure on heap in AMD_CONFIG_PARAMS
- *    area (i.e. Fill *newStructPtr with the pointer to the newly created structure)
- * -# Set the appropriate AGESA function number in the StdHeader member of the input
- *    parameter structure.
- *
- * @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                         whose parameter structure is to be created, the
- *                                         allocation method, and a pointer to the newly
- *                                         created structure.
- *
- * @retval         AGESA_SUCCESS           The interface struct is allocated and initialized.
- * @retval         AGESA_UNSUPPORTED       The Service is not supported.
- *
- */
-AGESA_STATUS
-AmdCreateStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINTN                     ServiceIndex;
-  ALLOCATE_HEAP_PARAMS      AllocHeapParams;
-  AMD_CONFIG_PARAMS         *NewlyCreatedConfig;
-  VOID                      *NewlyCreatedServiceInterface;
-  AGESA_STATUS              AgesaStatus;
-  AGESA_STATUS              TempStatus;
-  AGESA_STATUS              IgnoredSts;
-  CPU_SPECIFIC_SERVICES     *FamilySpecificServices;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  ASSERT (InterfaceParams != NULL);
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-    if (!IsBsp (&InterfaceParams->StdHeader, &IgnoredSts)) {
-      // APs must transfer their system core number from the mailbox to
-      // a local register while it is still valid.
-      GetCpuServicesOfCurrentCore ((CONST CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, &InterfaceParams->StdHeader);
-      FamilySpecificServices->TransferApCoreNumber (FamilySpecificServices, &InterfaceParams->StdHeader);
-    }
-    InterfaceParams->StdHeader.HeapStatus = HEAP_DO_NOT_EXIST_YET;
-    break;
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_ENV:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AgesaFunctionName == AMD_INIT_RESET) {
-    AgesaStatus = HeapManagerInit (&InterfaceParams->StdHeader);
-  }
-
-  // Step 1
-  for (ServiceIndex = 0; ServiceIndex < InitializerCount; ServiceIndex++) {
-    if (FuncParamsInfo[ServiceIndex].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (ServiceIndex >= InitializerCount) {
-    // A call was made to AGESA with an invalid function number.  This wrapper error may be due to the build target
-    // not containing the desired entry point.
-    return AGESA_UNSUPPORTED;
-  }
-
-  // Step 2
-  LibAmdMemFill (&AllocHeapParams, 0, (UINTN) (sizeof (ALLOCATE_HEAP_PARAMS)), &InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    // Allocate one buffer to contain the config params and the service struct.
-    // The service struct begins immediately after the config params.
-    AllocHeapParams.RequestedBufferSize = FuncParamsInfo[ServiceIndex].CreateStructSize + sizeof (AMD_CONFIG_PARAMS);
-    AllocHeapParams.BufferHandle = FuncParamsInfo[ServiceIndex].BufferHandle;
-    AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
-    TempStatus = HeapAllocateBuffer (&AllocHeapParams, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-    NewlyCreatedConfig++;
-    NewlyCreatedServiceInterface =  NewlyCreatedConfig;
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-  } else {
-    // The caller (example, agesa basic interface implementation) already has a buffer to use.
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)InterfaceParams;
-    NewlyCreatedServiceInterface = InterfaceParams->NewStructPtr;
-    ASSERT (InterfaceParams->NewStructSize >= FuncParamsInfo[ServiceIndex].CreateStructSize);
-  }
-  ASSERT (NewlyCreatedConfig != NULL);
-  ASSERT (NewlyCreatedServiceInterface != NULL);
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    *NewlyCreatedConfig = InterfaceParams->StdHeader;
-  }
-
-  // Step 4
-  TempStatus = FuncParamsInfo[ServiceIndex].AgesaFunction (NewlyCreatedConfig, NewlyCreatedServiceInterface);
-  AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-
-  // Step 5
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    InterfaceParams->NewStructPtr = (VOID *) NewlyCreatedServiceInterface;
-    InterfaceParams->NewStructSize = FuncParamsInfo[ServiceIndex].CreateStructSize;
-  }
-
-  // Step 6
-  ((AMD_CONFIG_PARAMS *) InterfaceParams->NewStructPtr)->Func = InterfaceParams->AgesaFunctionName;
-  return AgesaStatus;
-}
-
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *  Clears storage space from allocation for a parameter block of an
- *  AGESA software call entry.
- *
- *  @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                          whose parameter structure is to be deallocated.
- *
- *  @retval         AGESA_STATUS
- *
- *---------------------------------------------------------------------------------------
- **/
-AGESA_STATUS
-AmdReleaseStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINT8 i;
-  UINT8 *BufferPtr;
-  VOID  *ServicePtr;
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  TempStatus;
-  LOCATE_HEAP_PTR LocHeap;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_ENV:
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-// Step 1
-  for (i = 0; i < InitializerCount; i++) {
-    if (FuncParamsInfo[i].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (i >= InitializerCount) {
-    return AGESA_BOUNDS_CHK;
-  }
-
-  // Step 2
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    LocHeap.BufferHandle = FuncParamsInfo[i].BufferHandle;
-    if (HeapLocateBuffer (&LocHeap, &(InterfaceParams->StdHeader)) == AGESA_SUCCESS) {
-      BufferPtr = (UINT8 *) LocHeap.BufferPtr;
-      ServicePtr = &BufferPtr[sizeof (AMD_CONFIG_PARAMS)];
-      TempStatus = FuncParamsInfo[i].AgesaDestructor (&(InterfaceParams->StdHeader), ServicePtr);
-      AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    }
-  }
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    TempStatus = HeapDeallocateBuffer (FuncParamsInfo[i].BufferHandle, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-  } else {
-    // Unless we define service specific destructors, nothing to do for ByHost.
-    return AGESA_SUCCESS;
-  }
-  return AgesaStatus;
-}
diff --git a/src/vendorcode/amd/agesa/f15/Proc/Common/CreateStruct.h b/src/vendorcode/amd/agesa/f15/Proc/Common/CreateStruct.h
deleted file mode 100644
index 66a7bbf..0000000
--- a/src/vendorcode/amd/agesa/f15/Proc/Common/CreateStruct.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input creation structures.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-#ifndef _CREATE_STRUCT_H_
-#define _CREATE_STRUCT_H_
-
-/**
- * A constructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * Constructors should avoid using the header, since these routines should not
- * do operations which may fail or require status back to the user.  The constructor
- * should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_FUNCTION (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_FUNCTION *PF_AGESA_FUNCTION;
-
-/**
- * A Destructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * The constructor should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header.
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_DESTRUCTOR (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_DESTRUCTOR *PF_AGESA_DESTRUCTOR;
-
-/**
- * Provide the information needed to invoke each service constructor.
- */
-typedef struct {
-  IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< Identifies the service
-  IN       UINT16              CreateStructSize;   ///< The service's input struct size.
-                                                   ///  Do NOT include a config params header!
-     OUT   PF_AGESA_FUNCTION   AgesaFunction;      ///< The constructor function
-     OUT   PF_AGESA_DESTRUCTOR AgesaDestructor;    ///< The destructor function.
-  IN       AGESA_BUFFER_HANDLE BufferHandle;       ///< The buffer handle id for the service.
-} FUNCTION_PARAMS_INFO;
-
-/**
- * All available services have their constructor info here.
- */
-AGESA_STATUS
-AmdInitResetConstructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_RESET_PARAMS     *AmdResetParams
-  );
-
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEarlyInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_EARLY_PARAMS  *EarlyParams
-  );
-
-AGESA_STATUS
-AmdInitPostInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_POST_PARAMS *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitPostDestructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_POST_PARAMS      *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEnvInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_ENV_PARAMS *EnvParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitMidInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_MID_PARAMS *MidParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_LATE_PARAMS *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateDestructor (
-  IN   AMD_CONFIG_PARAMS *StdHeader,
-  IN   AMD_LATE_PARAMS   *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitResumeInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdInitResumeDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdS3SaveInitializer (
-  IN OUT   AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3SaveDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3LateRestoreInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3LATE_PARAMS *S3LateParams
-  );
-
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  );
-#endif // _CREATE_STRUCT_H_
-
diff --git a/src/vendorcode/amd/agesa/f15tn/Makefile.inc b/src/vendorcode/amd/agesa/f15tn/Makefile.inc
index 0de46b0..c4a7eeb 100644
--- a/src/vendorcode/amd/agesa/f15tn/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f15tn/Makefile.inc
@@ -36,6 +36,7 @@ AGESA_INC += -I$(AGESA_ROOT)/../common
 AGESA_INC += -I$(AGESA_ROOT)/Include
 AGESA_INC += -I$(AGESA_ROOT)/Lib
 AGESA_INC += -I$(AGESA_ROOT)/Legacy
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/HT
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU
@@ -169,12 +170,12 @@ libagesa-y += Proc/Common/AmdInitMid.c
 libagesa-y += Proc/Common/AmdInitPost.c
 libagesa-y += Proc/Common/AmdInitReset.c
 libagesa-y += Proc/Common/AmdInitResume.c
-libagesa-y += Proc/Common/AmdLateRunApTask.c
+libagesa-y += ../common/Proc/Common/AmdLateRunApTask.c
 libagesa-y += Proc/Common/AmdS3LateRestore.c
 libagesa-y += Proc/Common/AmdS3Save.c
 libagesa-y += Proc/Common/CommonInits.c
 libagesa-y += Proc/Common/CommonReturns.c
-libagesa-y += Proc/Common/CreateStruct.c
+libagesa-y += ../common/Proc/Common/CreateStruct.c
 libagesa-y += Proc/Common/S3RestoreState.c
 libagesa-y += Proc/Common/S3SaveState.c
 libagesa-y += Proc/GNB/Common/GnbLibFeatures.c
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdFch.h b/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdFch.h
deleted file mode 100644
index afe565b..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdFch.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD FCH Component
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _AMD_FCH_H_
-#define _AMD_FCH_H_
-
-typedef AGESA_STATUS FCH_INIT (IN VOID *DataPtr);
-typedef VOID FCH_TASK_ENTRY (IN VOID *FchCfg);
-
-
-/// FCH API build options
-typedef struct {
-  FCH_INIT        *InitReset;                   ///< InitReset
-  FCH_INIT        *InitResetConstructor;        ///< InitResetConstructor
-  FCH_INIT        *InitEnv;                     ///< InitEnv
-  FCH_INIT        *InitEnvConstructor;          ///< InitEnvConstructor
-  FCH_INIT        *InitMid;                     ///< InitMid
-  FCH_INIT        *InitMidConstructor;          ///< InitMidConstructor
-  FCH_INIT        *InitLate;                    ///< InitLate
-  FCH_INIT        *InitLateConstructor;         ///< InitLateConstructor
-} BLDOPT_FCH_FUNCTION;
-
-#endif
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdInitRecovery.c b/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdInitRecovery.c
deleted file mode 100644
index ac4c08d..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdInitRecovery.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "AdvancedApi.h"
-#include "heapManager.h"
-#include "mm.h"
-#include "GnbInterface.h"
-#include "cpuRecovery.h"
-#include "cpuCacheInit.h"
-#include "Filecode.h"
-CODE_GROUP (G2_PEI)
-RDATA_GROUP (G2_PEI)
-
-#define FILECODE PROC_COMMON_AMDINITRECOVERY_FILECODE
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Perform initialization services required at the Early Init POST time point.
- *
- * Execution Cache, HyperTransport, C1e, and AP Init advanced services are performed.
- *
- * @param[in, out]     RecoveryParams  The interface struct for Recovery services
- *
- * @return        The most severe AGESA_STATUS returned by any called service.
- *
- */
-AGESA_STATUS
-AmdInitRecovery (
-  IN OUT   AMD_RECOVERY_PARAMS      *RecoveryParams
-  )
-{
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  CalledAgesaStatus;
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryEntry, &RecoveryParams->StdHeader);
-
-  ASSERT (RecoveryParams != NULL);
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  // Setup ROM execution cache
-  CalledAgesaStatus = AllocateExecutionCache (&RecoveryParams->StdHeader, &RecoveryParams->CacheRegion[0]);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdHtInitRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdCpuRecovery ((AMD_CPU_RECOVERY_PARAMS *) &RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdMemRecovery (RecoveryParams->MemConfig.MemData);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  CalledAgesaStatus = AmdGnbRecovery (&RecoveryParams->StdHeader);
-  if (CalledAgesaStatus > AgesaStatus) {
-    AgesaStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdInitRecoveryExit, &RecoveryParams->StdHeader);
-  return  AgesaStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *
- * Initialize defaults and options for Amd Init Reset.
- *
- * @param[in]  StdHeader              AMD standard header config param.
- * @param[in]  AmdRecoveryParamsPtr   The Reset Init interface to initialize.
- *
- * @retval     AGESA_SUCCESS    Always Succeeds.
- */
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  )
-{
-  ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdRecoveryParamsPtr != NULL);
-
-  AmdRecoveryParamsPtr->StdHeader = *StdHeader;
-
-  AllocHeapParams.RequestedBufferSize = sizeof (MEM_DATA_STRUCT);
-  AllocHeapParams.BufferHandle = AMD_MEM_DATA_HANDLE;
-  AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
-  if (HeapAllocateBuffer (&AllocHeapParams, &AmdRecoveryParamsPtr->StdHeader) == AGESA_SUCCESS) {
-    AmdRecoveryParamsPtr->MemConfig.MemData = (MEM_DATA_STRUCT *) AllocHeapParams.BufferPtr;
-    AmdRecoveryParamsPtr->MemConfig.MemData->ParameterListPtr = &(AmdRecoveryParamsPtr->MemConfig);
-    LibAmdMemCopy ((VOID *) AmdRecoveryParamsPtr->MemConfig.MemData,
-                   (VOID *) AmdRecoveryParamsPtr,
-                   (UINTN) sizeof (AmdRecoveryParamsPtr->StdHeader),
-                   &AmdRecoveryParamsPtr->StdHeader
-                  );
-    AmdMemInitDataStructDefRecovery (AmdRecoveryParamsPtr->MemConfig.MemData);
-    return AGESA_SUCCESS;
-  } else {
-    return AGESA_ERROR;
-  }
-}
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdLateRunApTask.c b/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdLateRunApTask.c
deleted file mode 100644
index b11fca2..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdLateRunApTask.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Interface
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "Ids.h"
-#include "Options.h"
-#include "Filecode.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-CODE_GROUP (G3_DXE)
-RDATA_GROUP (G3_DXE)
-
-#define FILECODE PROC_COMMON_AMDLATERUNAPTASK_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern CONST DISPATCH_TABLE ApDispatchTable[];
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Application Processor perform a function as directed by the BSC.
- *
- * This is needed for an AP task that must run after AGESA has relinquished control
- * of the APs to the IBV.
- *
- * @param[in]     AmdApExeParams  The interface struct for any required routine.
- *
- * @return        The most severe AGESA_STATUS returned by any called service.  Note
- *                that this will be the return value passed back to the BSC as the
- *                return value for the call out.
- *
- */
-AGESA_STATUS
-AmdLateRunApTask (
-  IN       AP_EXE_PARAMS  *AmdApExeParams
-  )
-{
-  AGESA_STATUS        CalledAgesaStatus;
-  AGESA_STATUS        ApLateTaskStatus;
-  DISPATCH_TABLE      *Entry;
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskEntry, &AmdApExeParams->StdHeader);
-
-  ASSERT (AmdApExeParams != NULL);
-  ApLateTaskStatus = AGESA_SUCCESS;
-  CalledAgesaStatus = AGESA_UNSUPPORTED;
-
-  // Dispatch, if valid
-  Entry = (DISPATCH_TABLE *) ApDispatchTable;
-  while (Entry->FunctionId != 0) {
-    if (AmdApExeParams->FunctionNumber == Entry->FunctionId) {
-      CalledAgesaStatus = Entry->EntryPoint (AmdApExeParams);
-      break;
-    }
-    Entry++;
-  }
-
-  if (CalledAgesaStatus > ApLateTaskStatus) {
-    ApLateTaskStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskExit, &AmdApExeParams->StdHeader);
-  return  ApLateTaskStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Constructor for the AMD_LATE_RUN_AP_TASK function.
- *
- * This routine is responsible for setting default values for the
- * input parameters needed by the AMD_S3_SAVE entry point.
- *
- * @param[in]     StdHeader      The standard header.
- * @param[in,out] AmdApExeParams Required input parameters for the AMD_LATE_RUN_AP_TASK
- *                               entry point.
- *
- * @retval        AGESA_SUCCESS  Always Succeeds.
- *
- */
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  )
-{
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdApExeParams != NULL);
-
-  AmdApExeParams->StdHeader = *StdHeader;
-  AmdApExeParams->FunctionNumber = 0;
-  AmdApExeParams->RelatedDataBlock = NULL;
-  AmdApExeParams->RelatedBlockLength = 0;
-  return AGESA_SUCCESS;
-}
-
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CommonInits.h b/src/vendorcode/amd/agesa/f15tn/Proc/Common/CommonInits.h
deleted file mode 100644
index 681bc4a..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CommonInits.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Common initialization routines.
- *
- * Contains common initialization routines across AGESA entries of phases.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _COMMON_INITS_H_
-#define _COMMON_INITS_H_
-
-/**
- * Common routine to initialize PLATFORM_CONFIGURATION.
- *
- * @param[in,out]   PlatformConfig   Platform profile/build option config structure
- * @param[in,out]   StdHeader        AMD standard header config param
- *
- * @retval      AGESA_SUCCESS     Always Succeeds.
- *
- */
-AGESA_STATUS
-CommonPlatformConfigInit (
-  IN OUT   PLATFORM_CONFIGURATION    *PlatformConfig,
-  IN OUT   AMD_CONFIG_PARAMS         *StdHeader
-  );
-
-#endif // _COMMON_INITS_H_
-
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CommonPage.h b/src/vendorcode/amd/agesa/f15tn/Proc/Common/CommonPage.h
deleted file mode 100644
index 1dcc6da..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CommonPage.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Create outline and references for Processor Common Component mainpage documentation.
- *
- * Design guides, maintenance guides, and general documentation, are
- * collected using this file onto the documentation mainpage.
- * This file contains doxygen comment blocks, only.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Documentation
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/**
- * @page commonmain Processor Common Component Documentation
- *
- * Additional documentation for the Common component consists of
- *
- * - Maintenance Guides:
- *   - @subpage amdconfigparamname "Naming Guidelines for type AMD_CONFIG_PARAMS"
- * - Design Guides:
- *   - add here >>>
- *
- */
-
-/**
- * @page amdconfigparamname Naming Guidelines for type AMD_CONFIG_PARAMS
- * @par
- * These are the guidelines for naming objects of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * in AGESA code.
- * <ul>
- *
- * <li>
- * Formal parameter names of type AMD_CONFIG_PARAMS and AMD_CONFIG_PARAMS * will always be named
- * StdHeader. This covers all function prototypes, function definitions, and method typedefs (a
- * typedef of a function prototype) in AGESA code. Examples:
- * @n @code
- * VOID
- *   LibAmdPciFindNextCap (
- *     IN OUT   PCI_ADDR *Address,
- *     IN       AMD_CONFIG_PARAMS *StdHeader
- *     )
- *
- * typedef VOID F_DO_TABLE_ENTRY (
- *   IN       TABLE_ENTRY_DATA       *CurrentEntry,
- *   IN       PLATFORM_CONFIGURATION *PlatformConfig,
- *   IN       AMD_CONFIG_PARAMS      *StdHeader
- *   );
- *
- * @endcode
- *
- * <li>
- * Structure members of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * will always be named StdHeader. Examples:
- * @n @code
-   /// Example of struct member naming.
- * typedef struct {
- *   IN OUT   AMD_CONFIG_PARAMS StdHeader;             ///< Standard Header
- *   IN       PLATFORM_CONFIGURATION PlatformConfig;   ///< platform operational characteristics.
- * } AMD_CPU_RECOVERY_PARAMS;
- *
- * @endcode
- *
- * <li>
- * Routines which define local variables of type AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * should
- * name the local variable as closely as practical to StdHeader, but otherwise freedom is allowed. Example:
- * @n @code
- * AMD_CONFIG_PARAMS *NewStdHeader;
- * [...]
- * NewStdHeader = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
- * @endcode
- *
- * <li>
- * Arguments to routines with AMD_CONFIG_PARAMS or AMD_CONFIG_PARAMS * formal parameters are not
- * checked.  Freedom is allowed in order to conform to these guidelines in a practical, readable
- * way.  This includes typecast arguments.  Examples:
- * @n @code
- * Status = GetEventLog (&LogEvent, (AMD_CONFIG_PARAMS *)Event);
- *
- * MemS3ExitSelfRefRegDA (NBPtr, &MemPtr->StdHeader);
- * @endcode
- *
- * </ul>
- *
- */
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.c b/src/vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.c
deleted file mode 100644
index f99bd66..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.c
+++ /dev/null
@@ -1,313 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input structure creation support.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "GeneralServices.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-#include "cpuFamilyTranslation.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_COMMON_CREATESTRUCT_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-extern CONST FUNCTION_PARAMS_INFO FuncParamsInfo[];
-extern CONST UINTN InitializerCount;
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U  R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern BUILD_OPT_CFG UserOptions;
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Allocate and initialize Config headers and Service Interface structures.
- *
- * This function will be called for each AGESA public APIs.
- * This function will do the following:
- * -# Locate the AGESA API structure parameters initializer function information.
- * -# Find the size of the structure that gets passed to each public APIs as
- *    the entry parameter. Allocate heap space using the size for PreMemHeap, callout for
- *    memory allocation for PostMemDram, and just set the config and service interface
- *    pointers for ByHost.
- * -# If the allocation is not ByHost, copy the AmdConfigParams into the newly created AmdConfigParams.
- *    For ByHost, we're using the caller's existing config params.
- * -# Call the initializer function, and pass a reference to the Config params and to
- *    the Service Interface struct.  On return the constructor will have filled the
- *    remaining structure with default values.
- * -# Fill the remaining info in the newly created structure on heap in AMD_CONFIG_PARAMS
- *    area (i.e. Fill *newStructPtr with the pointer to the newly created structure)
- * -# Set the appropriate AGESA function number in the StdHeader member of the input
- *    parameter structure.
- *
- * @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                         whose parameter structure is to be created, the
- *                                         allocation method, and a pointer to the newly
- *                                         created structure.
- *
- * @retval         AGESA_SUCCESS           The interface struct is allocated and initialized.
- * @retval         AGESA_UNSUPPORTED       The Service is not supported.
- *
- */
-AGESA_STATUS
-AmdCreateStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINTN                     ServiceIndex;
-  ALLOCATE_HEAP_PARAMS      AllocHeapParams;
-  AMD_CONFIG_PARAMS         *NewlyCreatedConfig;
-  VOID                      *NewlyCreatedServiceInterface;
-  AGESA_STATUS              AgesaStatus;
-  AGESA_STATUS              TempStatus;
-  AGESA_STATUS              IgnoredSts;
-  CPU_SPECIFIC_SERVICES     *FamilySpecificServices;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  ASSERT (InterfaceParams != NULL);
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-    if (!IsBsp (&InterfaceParams->StdHeader, &IgnoredSts)) {
-      // APs must transfer their system core number from the mailbox to
-      // a local register while it is still valid.
-      GetCpuServicesOfCurrentCore ((CONST CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, &InterfaceParams->StdHeader);
-      FamilySpecificServices->TransferApCoreNumber (FamilySpecificServices, &InterfaceParams->StdHeader);
-    }
-    InterfaceParams->StdHeader.HeapStatus = HEAP_DO_NOT_EXIST_YET;
-    break;
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_ENV:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AgesaFunctionName == AMD_INIT_RESET) {
-    AgesaStatus = HeapManagerInit (&InterfaceParams->StdHeader);
-  }
-
-  // Step 1
-  for (ServiceIndex = 0; ServiceIndex < InitializerCount; ServiceIndex++) {
-    if (FuncParamsInfo[ServiceIndex].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (ServiceIndex >= InitializerCount) {
-    // A call was made to AGESA with an invalid function number.  This wrapper error may be due to the build target
-    // not containing the desired entry point.
-    return AGESA_UNSUPPORTED;
-  }
-
-  // Step 2
-  LibAmdMemFill (&AllocHeapParams, 0, (UINTN) (sizeof (ALLOCATE_HEAP_PARAMS)), &InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    // Allocate one buffer to contain the config params and the service struct.
-    // The service struct begins immediately after the config params.
-    AllocHeapParams.RequestedBufferSize = FuncParamsInfo[ServiceIndex].CreateStructSize + sizeof (AMD_CONFIG_PARAMS);
-    AllocHeapParams.BufferHandle = FuncParamsInfo[ServiceIndex].BufferHandle;
-    AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
-    TempStatus = HeapAllocateBuffer (&AllocHeapParams, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-    NewlyCreatedConfig++;
-    NewlyCreatedServiceInterface =  NewlyCreatedConfig;
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-  } else {
-    // The caller (example, agesa basic interface implementation) already has a buffer to use.
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)InterfaceParams;
-    NewlyCreatedServiceInterface = InterfaceParams->NewStructPtr;
-    ASSERT (InterfaceParams->NewStructSize >= FuncParamsInfo[ServiceIndex].CreateStructSize);
-  }
-  ASSERT (NewlyCreatedConfig != NULL);
-  ASSERT (NewlyCreatedServiceInterface != NULL);
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    *NewlyCreatedConfig = InterfaceParams->StdHeader;
-  }
-
-  // Step 4
-  TempStatus = FuncParamsInfo[ServiceIndex].AgesaFunction (NewlyCreatedConfig, NewlyCreatedServiceInterface);
-  AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-
-  // Step 5
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    InterfaceParams->NewStructPtr = (VOID *) NewlyCreatedServiceInterface;
-    InterfaceParams->NewStructSize = FuncParamsInfo[ServiceIndex].CreateStructSize;
-  }
-
-  // Step 6
-  ((AMD_CONFIG_PARAMS *) InterfaceParams->NewStructPtr)->Func = InterfaceParams->AgesaFunctionName;
-  return AgesaStatus;
-}
-
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *  Clears storage space from allocation for a parameter block of an
- *  AGESA software call entry.
- *
- *  @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                          whose parameter structure is to be deallocated.
- *
- *  @retval         AGESA_STATUS
- *
- *---------------------------------------------------------------------------------------
- **/
-AGESA_STATUS
-AmdReleaseStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINT8 i;
-  UINT8 *BufferPtr;
-  VOID  *ServicePtr;
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  TempStatus;
-  LOCATE_HEAP_PTR LocHeap;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_ENV:
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-// Step 1
-  for (i = 0; i < InitializerCount; i++) {
-    if (FuncParamsInfo[i].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (i >= InitializerCount) {
-    return AGESA_BOUNDS_CHK;
-  }
-
-  // Step 2
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    LocHeap.BufferHandle = FuncParamsInfo[i].BufferHandle;
-    if (HeapLocateBuffer (&LocHeap, &(InterfaceParams->StdHeader)) == AGESA_SUCCESS) {
-      BufferPtr = (UINT8 *) LocHeap.BufferPtr;
-      ServicePtr = &BufferPtr[sizeof (AMD_CONFIG_PARAMS)];
-      TempStatus = FuncParamsInfo[i].AgesaDestructor (&(InterfaceParams->StdHeader), ServicePtr);
-      AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    }
-  }
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    TempStatus = HeapDeallocateBuffer (FuncParamsInfo[i].BufferHandle, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-  } else {
-    // Unless we define service specific destructors, nothing to do for ByHost.
-    return AGESA_SUCCESS;
-  }
-  return AgesaStatus;
-}
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.h b/src/vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.h
deleted file mode 100644
index 66a7bbf..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Common/CreateStruct.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input creation structures.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-#ifndef _CREATE_STRUCT_H_
-#define _CREATE_STRUCT_H_
-
-/**
- * A constructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * Constructors should avoid using the header, since these routines should not
- * do operations which may fail or require status back to the user.  The constructor
- * should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_FUNCTION (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_FUNCTION *PF_AGESA_FUNCTION;
-
-/**
- * A Destructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * The constructor should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header.
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_DESTRUCTOR (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_DESTRUCTOR *PF_AGESA_DESTRUCTOR;
-
-/**
- * Provide the information needed to invoke each service constructor.
- */
-typedef struct {
-  IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< Identifies the service
-  IN       UINT16              CreateStructSize;   ///< The service's input struct size.
-                                                   ///  Do NOT include a config params header!
-     OUT   PF_AGESA_FUNCTION   AgesaFunction;      ///< The constructor function
-     OUT   PF_AGESA_DESTRUCTOR AgesaDestructor;    ///< The destructor function.
-  IN       AGESA_BUFFER_HANDLE BufferHandle;       ///< The buffer handle id for the service.
-} FUNCTION_PARAMS_INFO;
-
-/**
- * All available services have their constructor info here.
- */
-AGESA_STATUS
-AmdInitResetConstructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_RESET_PARAMS     *AmdResetParams
-  );
-
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEarlyInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_EARLY_PARAMS  *EarlyParams
-  );
-
-AGESA_STATUS
-AmdInitPostInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_POST_PARAMS *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitPostDestructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_POST_PARAMS      *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEnvInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_ENV_PARAMS *EnvParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitMidInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_MID_PARAMS *MidParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_LATE_PARAMS *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateDestructor (
-  IN   AMD_CONFIG_PARAMS *StdHeader,
-  IN   AMD_LATE_PARAMS   *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitResumeInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdInitResumeDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdS3SaveInitializer (
-  IN OUT   AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3SaveDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3LateRestoreInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3LATE_PARAMS *S3LateParams
-  );
-
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  );
-#endif // _CREATE_STRUCT_H_
-
diff --git a/src/vendorcode/amd/agesa/f16kb/Makefile.inc b/src/vendorcode/amd/agesa/f16kb/Makefile.inc
index 5ce7aee..ab82bcc 100644
--- a/src/vendorcode/amd/agesa/f16kb/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f16kb/Makefile.inc
@@ -36,6 +36,7 @@ AGESA_INC += -I$(AGESA_ROOT)/../common
 AGESA_INC += -I$(AGESA_ROOT)/Include
 AGESA_INC += -I$(AGESA_ROOT)/Lib
 AGESA_INC += -I$(AGESA_ROOT)/Legacy
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/HT
 AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Common/AmdFch.h b/src/vendorcode/amd/agesa/f16kb/Proc/Common/AmdFch.h
deleted file mode 100644
index adef011..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Common/AmdFch.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD FCH Component
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _AMD_FCH_H_
-#define _AMD_FCH_H_
-
-typedef AGESA_STATUS FCH_INIT (IN VOID *DataPtr);
-typedef VOID FCH_TASK_ENTRY (IN VOID *FchCfg);
-
-
-/// FCH API build options
-typedef struct {
-  FCH_INIT        *InitReset;                   ///< InitReset
-  FCH_INIT        *InitResetConstructor;        ///< InitResetConstructor
-  FCH_INIT        *InitEnv;                     ///< InitEnv
-  FCH_INIT        *InitEnvConstructor;          ///< InitEnvConstructor
-  FCH_INIT        *InitMid;                     ///< InitMid
-  FCH_INIT        *InitMidConstructor;          ///< InitMidConstructor
-  FCH_INIT        *InitLate;                    ///< InitLate
-  FCH_INIT        *InitLateConstructor;         ///< InitLateConstructor
-} BLDOPT_FCH_FUNCTION;
-
-#endif
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Common/AmdLateRunApTask.c b/src/vendorcode/amd/agesa/f16kb/Proc/Common/AmdLateRunApTask.c
deleted file mode 100644
index b7e125e..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Common/AmdLateRunApTask.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Basic Level Public APIs
- *
- * Contains basic Level Initialization routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Interface
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*****************************************************************************
- *
- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "Ids.h"
-#include "Options.h"
-#include "Filecode.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-CODE_GROUP (G3_DXE)
-RDATA_GROUP (G3_DXE)
-
-#define FILECODE PROC_COMMON_AMDLATERUNAPTASK_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern CONST DISPATCH_TABLE ApDispatchTable[];
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Application Processor perform a function as directed by the BSC.
- *
- * This is needed for an AP task that must run after AGESA has relinquished control
- * of the APs to the IBV.
- *
- * @param[in]     AmdApExeParams  The interface struct for any required routine.
- *
- * @return        The most severe AGESA_STATUS returned by any called service.  Note
- *                that this will be the return value passed back to the BSC as the
- *                return value for the call out.
- *
- */
-AGESA_STATUS
-AmdLateRunApTask (
-  IN       AP_EXE_PARAMS  *AmdApExeParams
-  )
-{
-  AGESA_STATUS        CalledAgesaStatus;
-  AGESA_STATUS        ApLateTaskStatus;
-  DISPATCH_TABLE      *Entry;
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskEntry, &AmdApExeParams->StdHeader);
-
-  ASSERT (AmdApExeParams != NULL);
-  ApLateTaskStatus = AGESA_SUCCESS;
-  CalledAgesaStatus = AGESA_UNSUPPORTED;
-
-  // Dispatch, if valid
-  Entry = (DISPATCH_TABLE *) ApDispatchTable;
-  while (Entry->FunctionId != 0) {
-    if (AmdApExeParams->FunctionNumber == Entry->FunctionId) {
-      CalledAgesaStatus = Entry->EntryPoint (AmdApExeParams);
-      break;
-    }
-    Entry++;
-  }
-
-  if (CalledAgesaStatus > ApLateTaskStatus) {
-    ApLateTaskStatus = CalledAgesaStatus;
-  }
-
-  AGESA_TESTPOINT (TpIfAmdLateRunApTaskExit, &AmdApExeParams->StdHeader);
-  return  ApLateTaskStatus;
-}
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Constructor for the AMD_LATE_RUN_AP_TASK function.
- *
- * This routine is responsible for setting default values for the
- * input parameters needed by the AMD_S3_SAVE entry point.
- *
- * @param[in]     StdHeader      The standard header.
- * @param[in,out] AmdApExeParams Required input parameters for the AMD_LATE_RUN_AP_TASK
- *                               entry point.
- *
- * @retval        AGESA_SUCCESS  Always Succeeds.
- *
- */
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  )
-{
-  ASSERT (StdHeader != NULL);
-  ASSERT (AmdApExeParams != NULL);
-
-  AmdApExeParams->StdHeader = *StdHeader;
-  AmdApExeParams->FunctionNumber = 0;
-  AmdApExeParams->RelatedDataBlock = NULL;
-  AmdApExeParams->RelatedBlockLength = 0;
-  return AGESA_SUCCESS;
-}
-
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Common/CommonInits.h b/src/vendorcode/amd/agesa/f16kb/Proc/Common/CommonInits.h
deleted file mode 100644
index d08cbf8..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Common/CommonInits.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Common initialization routines.
- *
- * Contains common initialization routines across AGESA entries of phases.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _COMMON_INITS_H_
-#define _COMMON_INITS_H_
-
-/**
- * Common routine to initialize PLATFORM_CONFIGURATION.
- *
- * @param[in,out]   PlatformConfig   Platform profile/build option config structure
- * @param[in,out]   StdHeader        AMD standard header config param
- *
- * @retval      AGESA_SUCCESS     Always Succeeds.
- *
- */
-AGESA_STATUS
-CommonPlatformConfigInit (
-  IN OUT   PLATFORM_CONFIGURATION    *PlatformConfig,
-  IN OUT   AMD_CONFIG_PARAMS         *StdHeader
-  );
-
-#endif // _COMMON_INITS_H_
-
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Common/CreateStruct.c b/src/vendorcode/amd/agesa/f16kb/Proc/Common/CreateStruct.c
deleted file mode 100644
index 8468d3b..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Common/CreateStruct.c
+++ /dev/null
@@ -1,313 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input structure creation support.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "GeneralServices.h"
-#include "heapManager.h"
-#include "CreateStruct.h"
-#include "cpuFamilyTranslation.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_COMMON_CREATESTRUCT_FILECODE
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-extern CONST FUNCTION_PARAMS_INFO FuncParamsInfo[];
-extern CONST UINTN InitializerCount;
-
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U  R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-extern BUILD_OPT_CFG UserOptions;
-
-/*---------------------------------------------------------------------------------------*/
-/**
- * Allocate and initialize Config headers and Service Interface structures.
- *
- * This function will be called for each AGESA public APIs.
- * This function will do the following:
- * -# Locate the AGESA API structure parameters initializer function information.
- * -# Find the size of the structure that gets passed to each public APIs as
- *    the entry parameter. Allocate heap space using the size for PreMemHeap, callout for
- *    memory allocation for PostMemDram, and just set the config and service interface
- *    pointers for ByHost.
- * -# If the allocation is not ByHost, copy the AmdConfigParams into the newly created AmdConfigParams.
- *    For ByHost, we're using the caller's existing config params.
- * -# Call the initializer function, and pass a reference to the Config params and to
- *    the Service Interface struct.  On return the constructor will have filled the
- *    remaining structure with default values.
- * -# Fill the remaining info in the newly created structure on heap in AMD_CONFIG_PARAMS
- *    area (i.e. Fill *newStructPtr with the pointer to the newly created structure)
- * -# Set the appropriate AGESA function number in the StdHeader member of the input
- *    parameter structure.
- *
- * @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                         whose parameter structure is to be created, the
- *                                         allocation method, and a pointer to the newly
- *                                         created structure.
- *
- * @retval         AGESA_SUCCESS           The interface struct is allocated and initialized.
- * @retval         AGESA_UNSUPPORTED       The Service is not supported.
- *
- */
-AGESA_STATUS
-AmdCreateStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINTN                     ServiceIndex;
-  ALLOCATE_HEAP_PARAMS      AllocHeapParams;
-  AMD_CONFIG_PARAMS         *NewlyCreatedConfig;
-  VOID                      *NewlyCreatedServiceInterface;
-  AGESA_STATUS              AgesaStatus;
-  AGESA_STATUS              TempStatus;
-  AGESA_STATUS              IgnoredSts;
-  CPU_SPECIFIC_SERVICES     *FamilySpecificServices;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  ASSERT (InterfaceParams != NULL);
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-    if (!IsBsp (&InterfaceParams->StdHeader, &IgnoredSts)) {
-      // APs must transfer their system core number from the mailbox to
-      // a local register while it is still valid.
-      GetCpuServicesOfCurrentCore ((CONST CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, &InterfaceParams->StdHeader);
-      FamilySpecificServices->TransferApCoreNumber (FamilySpecificServices, &InterfaceParams->StdHeader);
-    }
-    InterfaceParams->StdHeader.HeapStatus = HEAP_DO_NOT_EXIST_YET;
-    break;
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_ENV:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AgesaFunctionName == AMD_INIT_RESET) {
-    AgesaStatus = HeapManagerInit (&InterfaceParams->StdHeader);
-  }
-
-  // Step 1
-  for (ServiceIndex = 0; ServiceIndex < InitializerCount; ServiceIndex++) {
-    if (FuncParamsInfo[ServiceIndex].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (ServiceIndex >= InitializerCount) {
-    // A call was made to AGESA with an invalid function number.  This wrapper error may be due to the build target
-    // not containing the desired entry point.
-    return AGESA_UNSUPPORTED;
-  }
-
-  // Step 2
-  LibAmdMemFill (&AllocHeapParams, 0, (UINTN) (sizeof (ALLOCATE_HEAP_PARAMS)), &InterfaceParams->StdHeader);
-
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    // Allocate one buffer to contain the config params and the service struct.
-    // The service struct begins immediately after the config params.
-    AllocHeapParams.RequestedBufferSize = FuncParamsInfo[ServiceIndex].CreateStructSize + sizeof (AMD_CONFIG_PARAMS);
-    AllocHeapParams.BufferHandle = FuncParamsInfo[ServiceIndex].BufferHandle;
-    AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
-    TempStatus = HeapAllocateBuffer (&AllocHeapParams, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-    NewlyCreatedConfig++;
-    NewlyCreatedServiceInterface =  NewlyCreatedConfig;
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)AllocHeapParams.BufferPtr;
-  } else {
-    // The caller (example, agesa basic interface implementation) already has a buffer to use.
-    NewlyCreatedConfig = (AMD_CONFIG_PARAMS *)InterfaceParams;
-    NewlyCreatedServiceInterface = InterfaceParams->NewStructPtr;
-    ASSERT (InterfaceParams->NewStructSize >= FuncParamsInfo[ServiceIndex].CreateStructSize);
-  }
-  ASSERT (NewlyCreatedConfig != NULL);
-  ASSERT (NewlyCreatedServiceInterface != NULL);
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    *NewlyCreatedConfig = InterfaceParams->StdHeader;
-  }
-
-  // Step 4
-  TempStatus = FuncParamsInfo[ServiceIndex].AgesaFunction (NewlyCreatedConfig, NewlyCreatedServiceInterface);
-  AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-
-  // Step 5
-  if (InterfaceParams->AllocationMethod != ByHost) {
-    InterfaceParams->NewStructPtr = (VOID *) NewlyCreatedServiceInterface;
-    InterfaceParams->NewStructSize = FuncParamsInfo[ServiceIndex].CreateStructSize;
-  }
-
-  // Step 6
-  ((AMD_CONFIG_PARAMS *) InterfaceParams->NewStructPtr)->Func = InterfaceParams->AgesaFunctionName;
-  return AgesaStatus;
-}
-
-
-/*---------------------------------------------------------------------------------------*/
-/**
- *  Clears storage space from allocation for a parameter block of an
- *  AGESA software call entry.
- *
- *  @param[in,out]  InterfaceParams         Pointer to structure containing the function call
- *                                          whose parameter structure is to be deallocated.
- *
- *  @retval         AGESA_STATUS
- *
- *---------------------------------------------------------------------------------------
- **/
-AGESA_STATUS
-AmdReleaseStruct (
-  IN OUT   AMD_INTERFACE_PARAMS *InterfaceParams
-  )
-{
-  UINT8 i;
-  UINT8 *BufferPtr;
-  VOID  *ServicePtr;
-  AGESA_STATUS  AgesaStatus;
-  AGESA_STATUS  TempStatus;
-  LOCATE_HEAP_PTR LocHeap;
-
-  AgesaStatus = AGESA_SUCCESS;
-
-  switch (InterfaceParams->AgesaFunctionName) {
-  case AMD_INIT_RESET:
-  case AMD_INIT_EARLY:
-  case AMD_INIT_RECOVERY:
-  case AMD_INIT_RESUME:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  case AMD_INIT_POST:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_TEMP_MEM;
-    break;
-  case AMD_INIT_ENV:
-  case AMD_INIT_LATE:
-  case AMD_INIT_MID:
-  case AMD_S3_SAVE:
-  case AMD_LATE_RUN_AP_TASK:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_SYSTEM_MEM;
-    break;
-  case AMD_S3LATE_RESTORE:
-    InterfaceParams->StdHeader.HeapStatus = HEAP_S3_RESUME;
-    break;
-  default:
-    ASSERT (FALSE);
-    InterfaceParams->StdHeader.HeapStatus = HEAP_LOCAL_CACHE;
-    break;
-  }
-
-  InterfaceParams->StdHeader.HeapBasePtr = HeapGetBaseAddress (&InterfaceParams->StdHeader);
-
-// Step 1
-  for (i = 0; i < InitializerCount; i++) {
-    if (FuncParamsInfo[i].AgesaFunctionName == InterfaceParams->AgesaFunctionName) {
-      break;
-    }
-  }
-  if (i >= InitializerCount) {
-    return AGESA_BOUNDS_CHK;
-  }
-
-  // Step 2
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    LocHeap.BufferHandle = FuncParamsInfo[i].BufferHandle;
-    if (HeapLocateBuffer (&LocHeap, &(InterfaceParams->StdHeader)) == AGESA_SUCCESS) {
-      BufferPtr = (UINT8 *) LocHeap.BufferPtr;
-      ServicePtr = &BufferPtr[sizeof (AMD_CONFIG_PARAMS)];
-      TempStatus = FuncParamsInfo[i].AgesaDestructor (&(InterfaceParams->StdHeader), ServicePtr);
-      AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-    }
-  }
-
-  // Step 3
-  if (InterfaceParams->AllocationMethod < ByHost) {
-    TempStatus = HeapDeallocateBuffer (FuncParamsInfo[i].BufferHandle, &(InterfaceParams->StdHeader));
-    AgesaStatus = ((AgesaStatus > TempStatus) ? AgesaStatus : TempStatus);
-  } else {
-    // Unless we define service specific destructors, nothing to do for ByHost.
-    return AGESA_SUCCESS;
-  }
-  return AgesaStatus;
-}
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Common/CreateStruct.h b/src/vendorcode/amd/agesa/f16kb/Proc/Common/CreateStruct.h
deleted file mode 100644
index 6b67f5f..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Common/CreateStruct.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * AMD AGESA Input Structure Creation
- *
- * Contains AGESA input creation structures.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:      AGESA
- * @e sub-project:  Common
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-#ifndef _CREATE_STRUCT_H_
-#define _CREATE_STRUCT_H_
-
-/**
- * A constructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * Constructors should avoid using the header, since these routines should not
- * do operations which may fail or require status back to the user.  The constructor
- * should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_FUNCTION (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_FUNCTION *PF_AGESA_FUNCTION;
-
-/**
- * A Destructor method.
- *
- * Sets inputs to valid, basic level, defaults for the specific service instance.
- * The constructor should always SUCCEED.
- *
- * @param[in]   StdHeader         Opaque handle to standard config header.
- * @param[in]   ServiceInterface  Service Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS      Constructors are not allowed to fail
-*/
-typedef AGESA_STATUS
-F_AGESA_DESTRUCTOR (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       VOID                 *ServiceInterface
-  );
-
-/// Reference to a Method.
-typedef F_AGESA_DESTRUCTOR *PF_AGESA_DESTRUCTOR;
-
-/**
- * Provide the information needed to invoke each service constructor.
- */
-typedef struct {
-  IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< Identifies the service
-  IN       UINT16              CreateStructSize;   ///< The service's input struct size.
-                                                   ///  Do NOT include a config params header!
-     OUT   PF_AGESA_FUNCTION   AgesaFunction;      ///< The constructor function
-     OUT   PF_AGESA_DESTRUCTOR AgesaDestructor;    ///< The destructor function.
-  IN       AGESA_BUFFER_HANDLE BufferHandle;       ///< The buffer handle id for the service.
-} FUNCTION_PARAMS_INFO;
-
-/**
- * All available services have their constructor info here.
- */
-AGESA_STATUS
-AmdInitResetConstructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_RESET_PARAMS     *AmdResetParams
-  );
-
-AGESA_STATUS
-AmdInitRecoveryInitializer (
-  IN       AMD_CONFIG_PARAMS   *StdHeader,
-  IN OUT   AMD_RECOVERY_PARAMS *AmdRecoveryParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEarlyInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_EARLY_PARAMS  *EarlyParams
-  );
-
-AGESA_STATUS
-AmdInitPostInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_POST_PARAMS *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitPostDestructor (
-  IN       AMD_CONFIG_PARAMS    *StdHeader,
-  IN       AMD_POST_PARAMS      *PostParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitEnvInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_ENV_PARAMS *EnvParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitMidInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_MID_PARAMS *MidParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_LATE_PARAMS *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitLateDestructor (
-  IN   AMD_CONFIG_PARAMS *StdHeader,
-  IN   AMD_LATE_PARAMS   *LateParamsPtr
-  );
-
-AGESA_STATUS
-AmdInitResumeInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdInitResumeDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_RESUME_PARAMS *ResumeParams
-  );
-
-AGESA_STATUS
-AmdS3SaveInitializer (
-  IN OUT   AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3SaveDestructor (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3SAVE_PARAMS *S3SaveParams
-  );
-
-AGESA_STATUS
-AmdS3LateRestoreInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AMD_S3LATE_PARAMS *S3LateParams
-  );
-
-AGESA_STATUS
-AmdLateRunApTaskInitializer (
-  IN       AMD_CONFIG_PARAMS *StdHeader,
-  IN OUT   AP_EXE_PARAMS     *AmdApExeParams
-  );
-#endif // _CREATE_STRUCT_H_
-



More information about the coreboot-gerrit mailing list