cpu/x86/smm/smihandler.c: Implement smm_get_save_state()
This will be used in common save_state handling code. Change-Id: I4cb3180ec565cee931606e8a8f55b78fdb8932ae Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44320 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
ac0d2ee2de
commit
2f7d4c362c
|
@ -128,6 +128,24 @@ uint32_t smm_revision(void)
|
||||||
return *(uint32_t *)(SMM_BASE + SMM_ENTRY_OFFSET * 2 - SMM_REVISION_OFFSET_FROM_TOP);
|
return *(uint32_t *)(SMM_BASE + SMM_ENTRY_OFFSET * 2 - SMM_REVISION_OFFSET_FROM_TOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *smm_get_save_state(int cpu)
|
||||||
|
{
|
||||||
|
switch (smm_revision()) {
|
||||||
|
case 0x00030002:
|
||||||
|
case 0x00030007:
|
||||||
|
return smm_save_state(SMM_BASE, SMM_LEGACY_ARCH_OFFSET, cpu);
|
||||||
|
case 0x00030100:
|
||||||
|
return smm_save_state(SMM_BASE, SMM_EM64T100_ARCH_OFFSET, cpu);
|
||||||
|
case 0x00030101: /* SandyBridge, IvyBridge, and Haswell */
|
||||||
|
return smm_save_state(SMM_BASE, SMM_EM64T101_ARCH_OFFSET, cpu);
|
||||||
|
case 0x00020064:
|
||||||
|
case 0x00030064:
|
||||||
|
return smm_save_state(SMM_BASE, SMM_AMD64_ARCH_OFFSET, cpu);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
bool smm_region_overlaps_handler(const struct region *r)
|
bool smm_region_overlaps_handler(const struct region *r)
|
||||||
{
|
{
|
||||||
const struct region r_smm = {SMM_BASE, SMM_DEFAULT_SIZE};
|
const struct region r_smm = {SMM_BASE, SMM_DEFAULT_SIZE};
|
||||||
|
|
Loading…
Reference in New Issue