libpayload: x86/main - propagate return value of main()
According to coreboot’s payload API [1], the called payload should be able to return a value via %eax. Support this by changing the prototype of start_main() and pass on the return value of main() to the caller instead of discarding it. [1] https://www.coreboot.org/Payload_API Change-Id: I8442faea19cc8e04487092f8e61aa4e5cba3ba76 Signed-off-by: Mathias Krause <minipli@googlemail.com> Reviewed-on: https://review.coreboot.org/18334 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
9fa78c136d
commit
7b681c5926
|
@ -42,8 +42,8 @@ char *main_argv[MAX_ARGC_COUNT];
|
||||||
* This is our C entry function - set up the system
|
* This is our C entry function - set up the system
|
||||||
* and jump into the payload entry point.
|
* and jump into the payload entry point.
|
||||||
*/
|
*/
|
||||||
void start_main(void);
|
int start_main(void);
|
||||||
void start_main(void)
|
int start_main(void)
|
||||||
{
|
{
|
||||||
extern int main(int argc, char **argv);
|
extern int main(int argc, char **argv);
|
||||||
|
|
||||||
|
@ -67,10 +67,9 @@ void start_main(void)
|
||||||
* In the future we may care about the return value.
|
* In the future we may care about the return value.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(void) main(main_argc, (main_argc != 0) ? main_argv : NULL);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returning here will go to the _leave function to return
|
* Returning from main() will go to the _leave function to return
|
||||||
* us to the original context.
|
* us to the original context.
|
||||||
*/
|
*/
|
||||||
|
return main(main_argc, (main_argc != 0) ? main_argv : NULL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue