SMM: rename tseg_fixup to tseg_relocate and export

This function is exported so it can be used in other
places that need similar relocation due to TSEG.

Change-Id: I68b78ca32d58d1a414965404e38d71977c3da347
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: http://review.coreboot.org/1310
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Duncan Laurie 2012-06-23 15:29:59 -07:00 committed by Stefan Reinauer
parent 0aa5b0923a
commit ace7a6aadd
2 changed files with 8 additions and 7 deletions

View File

@ -376,9 +376,12 @@ void __attribute__((weak)) mainboard_smi_sleep(u8 slp_typ);
#if !CONFIG_SMM_TSEG #if !CONFIG_SMM_TSEG
void smi_release_lock(void); void smi_release_lock(void);
#define tseg_relocate(ptr)
#else #else
/* Return address of TSEG base */ /* Return address of TSEG base */
u32 smi_get_tseg_base(void); u32 smi_get_tseg_base(void);
/* Adjust pointer with TSEG base */
void tseg_relocate(void **ptr);
#endif #endif
#endif #endif

View File

@ -60,14 +60,12 @@ u32 smi_get_tseg_base(void)
tseg_base = pcie_read_config32(PCI_DEV(0, 0, 0), TSEG) & ~1; tseg_base = pcie_read_config32(PCI_DEV(0, 0, 0), TSEG) & ~1;
return tseg_base; return tseg_base;
} }
static inline void tseg_fixup(void **ptr) void tseg_relocate(void **ptr)
{ {
/* Adjust pointer with TSEG base */ /* Adjust pointer with TSEG base */
if (*ptr) if (*ptr)
*ptr = (void *)(((u8*)*ptr) + tseg_base); *ptr = (void *)(((u8*)*ptr) + smi_get_tseg_base());
} }
#else
#define tseg_fixup(x) do {} while(0)
#endif #endif
/** /**
@ -343,7 +341,7 @@ static void southbridge_smi_sleep(unsigned int node, smm_state_save_area_t *stat
slp_typ = (reg32 >> 10) & 7; slp_typ = (reg32 >> 10) & 7;
/* Do any mainboard sleep handling */ /* Do any mainboard sleep handling */
tseg_fixup((void **)&mainboard_sleep); tseg_relocate((void **)&mainboard_sleep);
if (mainboard_sleep) if (mainboard_sleep)
mainboard_sleep(slp_typ); mainboard_sleep(slp_typ);
@ -456,7 +454,7 @@ static void southbridge_smi_apmc(unsigned int node, smm_state_save_area_t *state
break; break;
} }
tseg_fixup((void **)&mainboard_apmc); tseg_relocate((void **)&mainboard_apmc);
if (mainboard_apmc) if (mainboard_apmc)
mainboard_apmc(reg8); mainboard_apmc(reg8);
} }
@ -496,7 +494,7 @@ static void southbridge_smi_gpi(unsigned int node, smm_state_save_area_t *state_
reg16 &= inw(pmbase + ALT_GP_SMI_EN); reg16 &= inw(pmbase + ALT_GP_SMI_EN);
tseg_fixup((void **)&mainboard_gpi); tseg_relocate((void **)&mainboard_gpi);
if (mainboard_gpi) { if (mainboard_gpi) {
mainboard_gpi(reg16); mainboard_gpi(reg16);
} else { } else {