x86: fsp: Simplify fsp_continue()

There is no need to pass shared_data to fsp_continue() so we can
remove unnecessary codes that simplifies the function a lot.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Bin Meng 2015-12-10 22:02:56 -08:00
parent fa85e826c1
commit aa02446406
2 changed files with 7 additions and 26 deletions
arch/x86
include/asm/fsp
lib/fsp

View File

@ -49,14 +49,12 @@ void fsp_init_done(void *hob_list);
/**
* FSP Continuation function
*
* @shared_data: Shared data base before stack migration
* @status: Always 0
* @hob_list: HOB list pointer
*
* @retval: Never returns
*/
void fsp_continue(struct shared_data *shared_data, u32 status,
void *hob_list);
void fsp_continue(u32 status, void *hob_list);
/**
* Find FSP header offset in FSP image

View File

@ -87,28 +87,12 @@ struct fsp_header *__attribute__((optimize("O0"))) find_fsp_header(void)
return (struct fsp_header *)fsp;
}
void fsp_continue(struct shared_data *shared_data, u32 status, void *hob_list)
void fsp_continue(u32 status, void *hob_list)
{
u32 stack_len;
u32 stack_base;
u32 stack_top;
post_code(POST_MRC);
assert(status == 0);
/* Get the migrated stack in normal memory */
stack_base = (u32)fsp_get_bootloader_tmp_mem(hob_list, &stack_len);
assert(stack_base != 0);
stack_top = stack_base + stack_len - sizeof(u32);
/*
* Old stack base is stored at the very end of the stack top,
* use it to calculate the migrated shared data base
*/
shared_data = (struct shared_data *)(stack_base +
((u32)shared_data - *(u32 *)stack_top));
/* The boot loader main function entry */
fsp_init_done(hob_list);
}
@ -176,19 +160,18 @@ void fsp_init(u32 stack_top, u32 boot_mode, void *nvs_buf)
setup_fsp_gdt();
/*
* Use ASM code to ensure the register value in EAX & ECX
* will be passed into BlContinuationFunc
* Use ASM code to ensure the register value in EAX & EDX
* will be passed into fsp_continue
*/
asm volatile (
"pushl %0;"
"call *%%eax;"
".global asm_continuation;"
"asm_continuation:;"
"movl %%ebx, %%eax;" /* shared_data */
"movl 4(%%esp), %%edx;" /* status */
"movl 8(%%esp), %%ecx;" /* hob_list */
"movl 4(%%esp), %%eax;" /* status */
"movl 8(%%esp), %%edx;" /* hob_list */
"jmp fsp_continue;"
: : "m"(params_ptr), "a"(init), "b"(&shared_data)
: : "m"(params_ptr), "a"(init)
);
/*