Libpayload fixes to prevent triple-faults when running in QEMU.
Let the linker figure out the correct address and just CALL the start_main entry point. Signed-off-by: Klaus Schnass <dev@stuffit.at> Acked-by: Uwe Hermann <uwe@hermann-uwe.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3204 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
committed by
Uwe Hermann
parent
ab5b3e0d98
commit
2c6b33ce3e
@@ -36,17 +36,12 @@
|
||||
* stack we store the original stack pointer from the calling application.
|
||||
*/
|
||||
|
||||
static void start_main(void);
|
||||
extern void _leave(void);
|
||||
|
||||
static struct {
|
||||
uint32_t eip[2];
|
||||
uint32_t raddr[2];
|
||||
uint32_t esp;
|
||||
} initial_stack __attribute__ ((section(".istack"))) = {
|
||||
{ (uint32_t) start_main, 0 },
|
||||
{ (uint32_t) _leave, 0 },
|
||||
(uint32_t) & initial_stack,
|
||||
} initial_stack __attribute__ ((section(".istack"))) = {
|
||||
(uint32_t) &initial_stack,
|
||||
};
|
||||
|
||||
void *_istack = &initial_stack;
|
||||
@@ -55,7 +50,7 @@ void *_istack = &initial_stack;
|
||||
* This is our C entry function - set up the system
|
||||
* and jump into the payload entry point.
|
||||
*/
|
||||
static void start_main(void)
|
||||
void start_main(void)
|
||||
{
|
||||
extern int main(void);
|
||||
|
||||
@@ -70,9 +65,10 @@ static void start_main(void)
|
||||
* user gets control goes here.
|
||||
*/
|
||||
|
||||
/* Go to the entry point. */
|
||||
|
||||
/* In the future we may care about the return value. */
|
||||
/*
|
||||
* Go to the entry point.
|
||||
* In the future we may care about the return value.
|
||||
*/
|
||||
(void) main();
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user