summaryrefslogtreecommitdiff
path: root/src/cpu/x86/smm/smihandler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/smm/smihandler.c')
-rw-r--r--src/cpu/x86/smm/smihandler.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cpu/x86/smm/smihandler.c b/src/cpu/x86/smm/smihandler.c
index 7e8a9ca9de..063e9a5ffb 100644
--- a/src/cpu/x86/smm/smihandler.c
+++ b/src/cpu/x86/smm/smihandler.c
@@ -19,11 +19,33 @@
#include <cpu/x86/cache.h>
#include <cpu/x86/smm.h>
#include <cpu/x86/smi_deprecated.h>
+#include <cpu/amd/amd64_save_state.h>
+#include <cpu/intel/em64t_save_state.h>
+#include <cpu/intel/em64t100_save_state.h>
+#include <cpu/intel/em64t101_save_state.h>
+#include <cpu/x86/legacy_save_state.h>
#if CONFIG(SPI_FLASH_SMM)
#include <spi-generic.h>
#endif
+typedef enum {
+ AMD64,
+ EM64T,
+ EM64T101,
+ LEGACY
+} save_state_type_t;
+
+typedef struct {
+ save_state_type_t type;
+ union {
+ amd64_smm_state_save_area_t *amd64_state_save;
+ em64t_smm_state_save_area_t *em64t_state_save;
+ em64t101_smm_state_save_area_t *em64t101_state_save;
+ legacy_smm_state_save_area_t *legacy_state_save;
+ };
+} smm_state_save_area_t;
+
static int do_driver_init = 1;
typedef enum { SMI_LOCKED, SMI_UNLOCKED } smi_semaphore;