mini update SMM:

- allow northbridge and cpu handlers, too
- support for older rev 2 cpus

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5141 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Stefan Reinauer 2010-02-22 09:32:33 +00:00 committed by Stefan Reinauer
parent 6363050c3f
commit 881a553000
2 changed files with 10 additions and 3 deletions

View File

@ -118,6 +118,7 @@ void smi_handler(u32 smm_revision)
printk_spew("\nSMI# #%d\n", node); printk_spew("\nSMI# #%d\n", node);
switch (smm_revision) { switch (smm_revision) {
case 0x00030002:
case 0x00030007: case 0x00030007:
state_save.type = LEGACY; state_save.type = LEGACY;
state_save.legacy_state_save = (legacy_smm_state_save_area_t *) state_save.legacy_state_save = (legacy_smm_state_save_area_t *)
@ -145,7 +146,11 @@ void smi_handler(u32 smm_revision)
/* Call chipset specific SMI handlers. This would be the place to /* Call chipset specific SMI handlers. This would be the place to
* add a CPU or northbridge specific SMI handler, too * add a CPU or northbridge specific SMI handler, too
*/ */
if (cpu_smi_handler)
cpu_smi_handler(node, &state_save);
if (northbridge_smi_handler)
northbridge_smi_handler(node, &state_save);
if (southbridge_smi_handler)
southbridge_smi_handler(node, &state_save); southbridge_smi_handler(node, &state_save);
smi_release_lock(); smi_release_lock();

View File

@ -254,5 +254,7 @@ void io_trap_handler(int smif);
int southbridge_io_trap_handler(int smif); int southbridge_io_trap_handler(int smif);
int mainboard_io_trap_handler(int smif); int mainboard_io_trap_handler(int smif);
void southbridge_smi_handler(unsigned int node, smm_state_save_area_t *state_save); void __attribute__((weak)) cpu_smi_handler(unsigned int node, smm_state_save_area_t *state_save);
void __attribute__((weak)) northbridge_smi_handler(unsigned int node, smm_state_save_area_t *state_save);
void __attribute__((weak)) southbridge_smi_handler(unsigned int node, smm_state_save_area_t *state_save);