| /* |
| * This file is part of the coreboot project. |
| * |
| * Copyright (C) 2016 Intel Corp. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| */ |
| |
| #include <arch/cpu.h> |
| #include <console/console.h> |
| #include <fsp/util.h> |
| #include <lib.h> |
| |
| void fsp_display_upd_value(const char *name, size_t size, uint64_t old, |
| uint64_t new) |
| { |
| size *= 2; |
| if (old == new) { |
| printk(BIOS_SPEW, " 0x%0*llx: %s\n", size, new, name); |
| } else { |
| printk(BIOS_SPEW, " 0x%0*llx --> 0x%0*llx: %s\n", size, old, |
| size, new, name); |
| } |
| } |
| |
| static void fspm_display_arch_params(const struct FSPM_ARCH_UPD *old, |
| const struct FSPM_ARCH_UPD *new) |
| { |
| /* Display the architectural parameters for MemoryInit */ |
| printk(BIOS_SPEW, "Architectural UPD values for MemoryInit at: 0x%p\n", |
| new); |
| fsp_display_upd_value("Revision", sizeof(old->Revision), |
| old->Revision, new->Revision); |
| fsp_display_upd_value("NvsBufferPtr", sizeof(old->NvsBufferPtr), |
| (uintptr_t)old->NvsBufferPtr, |
| (uintptr_t)new->NvsBufferPtr); |
| fsp_display_upd_value("StackBase", sizeof(old->StackBase), |
| (uintptr_t)old->StackBase, |
| (uintptr_t)new->StackBase); |
| fsp_display_upd_value("StackSize", sizeof(old->StackSize), |
| old->StackSize, new->StackSize); |
| fsp_display_upd_value("BootLoaderTolumSize", |
| sizeof(old->BootLoaderTolumSize), |
| old->BootLoaderTolumSize, new->BootLoaderTolumSize); |
| fsp_display_upd_value("BootMode", sizeof(old->BootMode), |
| old->BootMode, new->BootMode); |
| } |
| |
| /* Display the UPD parameters for MemoryInit */ |
| __attribute__((weak)) void soc_display_fspm_upd_params( |
| const struct FSPM_UPD *fspm_old_upd, |
| const struct FSPM_UPD *fspm_new_upd) |
| { |
| printk(BIOS_SPEW, "UPD values for MemoryInit:\n"); |
| hexdump(fspm_new_upd, sizeof(*fspm_new_upd)); |
| } |
| |
| void fspm_display_upd_values(const struct FSPM_UPD *old, |
| const struct FSPM_UPD *new) |
| { |
| /* Display the UPD data */ |
| fspm_display_arch_params(&old->FspmArchUpd, &new->FspmArchUpd); |
| soc_display_fspm_upd_params(old, new); |
| } |
| |
| /* Display the UPD parameters for SiliconInit */ |
| __attribute__((weak)) void soc_display_fsps_upd_params( |
| const struct FSPS_UPD *fsps_old_upd, |
| const struct FSPS_UPD *fsps_new_upd) |
| { |
| printk(BIOS_SPEW, "UPD values for SiliconInit:\n"); |
| hexdump(fsps_new_upd, sizeof(*fsps_new_upd)); |
| } |