mirror of https://github.com/wolfSSL/wolfBoot.git
fsp: stage1: use temporary parameters struct in pre-mem stage
parent
d89b44e0f1
commit
0833c4b1bf
|
@ -92,7 +92,8 @@ typedef uint32_t (*notify_phase_cb)(NOTIFY_PHASE_PARAMS *p);
|
||||||
|
|
||||||
/* need to be implemented by machine dependent code */
|
/* need to be implemented by machine dependent code */
|
||||||
int fsp_machine_update_m_parameters(uint8_t *default_m_params,
|
int fsp_machine_update_m_parameters(uint8_t *default_m_params,
|
||||||
uint32_t mem_base, uint32_t mem_size);
|
uint32_t mem_base, uint32_t mem_size,
|
||||||
|
struct stage2_parameter *params);
|
||||||
int fsp_machine_update_s_parameters(uint8_t *default_s_params);
|
int fsp_machine_update_s_parameters(uint8_t *default_s_params);
|
||||||
int post_temp_ram_init_cb(void);
|
int post_temp_ram_init_cb(void);
|
||||||
|
|
||||||
|
@ -597,6 +598,7 @@ void start(uint32_t stack_base, uint32_t stack_top, uint64_t timestamp,
|
||||||
uint8_t udp_m_parameter[FSP_M_UDP_MAX_SIZE], *udp_m_default;
|
uint8_t udp_m_parameter[FSP_M_UDP_MAX_SIZE], *udp_m_default;
|
||||||
struct fsp_info_header *fsp_m_info_header;
|
struct fsp_info_header *fsp_m_info_header;
|
||||||
struct stage2_parameter *stage2_params;
|
struct stage2_parameter *stage2_params;
|
||||||
|
struct stage2_parameter temp_params;
|
||||||
uint8_t *fsp_m_base, done = 0;
|
uint8_t *fsp_m_base, done = 0;
|
||||||
struct efi_hob *hobList, *it;
|
struct efi_hob *hobList, *it;
|
||||||
memory_init_cb MemoryInit;
|
memory_init_cb MemoryInit;
|
||||||
|
@ -621,8 +623,10 @@ void start(uint32_t stack_base, uint32_t stack_top, uint64_t timestamp,
|
||||||
wolfBoot_printf("post temp ram init cb failed" ENDLINE);
|
wolfBoot_printf("post temp ram init cb failed" ENDLINE);
|
||||||
panic();
|
panic();
|
||||||
}
|
}
|
||||||
|
memset(&temp_params, 0, sizeof(temp_params));
|
||||||
wolfBoot_printf("Cache-as-RAM initialized" ENDLINE);
|
wolfBoot_printf("Cache-as-RAM initialized" ENDLINE);
|
||||||
|
|
||||||
|
|
||||||
fsp_m_info_header =
|
fsp_m_info_header =
|
||||||
(struct fsp_info_header *)(fsp_m_base + FSP_INFO_HEADER_OFFSET);
|
(struct fsp_info_header *)(fsp_m_base + FSP_INFO_HEADER_OFFSET);
|
||||||
udp_m_default = fsp_m_base + fsp_m_info_header->CfgRegionOffset;
|
udp_m_default = fsp_m_base + fsp_m_info_header->CfgRegionOffset;
|
||||||
|
@ -638,7 +642,7 @@ void start(uint32_t stack_base, uint32_t stack_top, uint64_t timestamp,
|
||||||
|
|
||||||
memcpy(udp_m_parameter, udp_m_default, fsp_m_info_header->CfgRegionSize);
|
memcpy(udp_m_parameter, udp_m_default, fsp_m_info_header->CfgRegionSize);
|
||||||
status = fsp_machine_update_m_parameters(udp_m_parameter, stack_base + 0x4,
|
status = fsp_machine_update_m_parameters(udp_m_parameter, stack_base + 0x4,
|
||||||
FSP_M_CAR_MEM_SIZE);
|
FSP_M_CAR_MEM_SIZE, &temp_params);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
panic();
|
panic();
|
||||||
}
|
}
|
||||||
|
@ -678,7 +682,7 @@ void start(uint32_t stack_base, uint32_t stack_top, uint64_t timestamp,
|
||||||
top_address =
|
top_address =
|
||||||
new_stack - WOLFBOOT_X86_STACK_SIZE - sizeof(struct stage2_parameter);
|
new_stack - WOLFBOOT_X86_STACK_SIZE - sizeof(struct stage2_parameter);
|
||||||
stage2_params = (struct stage2_parameter *)(uint32_t)top_address;
|
stage2_params = (struct stage2_parameter *)(uint32_t)top_address;
|
||||||
memset((uint8_t *)stage2_params, 0, sizeof(struct stage2_parameter));
|
memcpy((uint8_t *)stage2_params, (uint8_t*)&temp_params, sizeof(struct stage2_parameter));
|
||||||
wolfBoot_printf("hoblist@0x%x" ENDLINE, (uint32_t)hobList);
|
wolfBoot_printf("hoblist@0x%x" ENDLINE, (uint32_t)hobList);
|
||||||
stage2_params->hobList = (uint32_t)hobList;
|
stage2_params->hobList = (uint32_t)hobList;
|
||||||
|
|
||||||
|
|
|
@ -113,10 +113,12 @@ int post_temp_ram_init_cb(void)
|
||||||
|
|
||||||
int fsp_machine_update_m_parameters(uint8_t *default_m_params,
|
int fsp_machine_update_m_parameters(uint8_t *default_m_params,
|
||||||
uint32_t mem_base,
|
uint32_t mem_base,
|
||||||
uint32_t mem_size)
|
uint32_t mem_size,
|
||||||
|
struct stage2_parameter *params)
|
||||||
{
|
{
|
||||||
struct fspm_upd *new_udp;
|
struct fspm_upd *new_udp;
|
||||||
|
|
||||||
|
(void)params;
|
||||||
new_udp = (struct fspm_upd*)default_m_params;
|
new_udp = (struct fspm_upd*)default_m_params;
|
||||||
new_udp->FspmArchUpd.BootLoaderTolumSize = 0;
|
new_udp->FspmArchUpd.BootLoaderTolumSize = 0;
|
||||||
new_udp->FspmArchUpd.BootMode = BOOT_WITH_FULL_CONFIGURATION;
|
new_udp->FspmArchUpd.BootMode = BOOT_WITH_FULL_CONFIGURATION;
|
||||||
|
|
|
@ -45,8 +45,8 @@
|
||||||
#include <x86/fsp/FsptUpd.h>
|
#include <x86/fsp/FsptUpd.h>
|
||||||
#include <x86/fsp/FspmUpd.h>
|
#include <x86/fsp/FspmUpd.h>
|
||||||
#include <x86/fsp/FspsUpd.h>
|
#include <x86/fsp/FspsUpd.h>
|
||||||
|
|
||||||
#include <x86/ahci.h>
|
#include <x86/ahci.h>
|
||||||
|
#include <stage1.h>
|
||||||
|
|
||||||
#define PCR_DMI_PORT_ID 0x88
|
#define PCR_DMI_PORT_ID 0x88
|
||||||
#define PCR_DMI_LPCLGIR1 0x2730
|
#define PCR_DMI_LPCLGIR1 0x2730
|
||||||
|
@ -689,11 +689,12 @@ int post_temp_ram_init_cb(void)
|
||||||
*/
|
*/
|
||||||
int fsp_machine_update_m_parameters(uint8_t *default_m_params,
|
int fsp_machine_update_m_parameters(uint8_t *default_m_params,
|
||||||
uint32_t mem_base,
|
uint32_t mem_base,
|
||||||
uint32_t mem_size)
|
uint32_t mem_size,
|
||||||
|
struct stage2_parameter *params)
|
||||||
{
|
{
|
||||||
FSPM_UPD *new_udp;
|
FSPM_UPD *new_udp;
|
||||||
int i;
|
|
||||||
|
|
||||||
|
(void)params;
|
||||||
wolfBoot_printf("machine_update_m_params" ENDLINE);
|
wolfBoot_printf("machine_update_m_params" ENDLINE);
|
||||||
|
|
||||||
new_udp = (FSPM_UPD*)default_m_params;
|
new_udp = (FSPM_UPD*)default_m_params;
|
||||||
|
|
Loading…
Reference in New Issue