Blame SOURCES/ipxe-asm.patch
|
|
562251 |
diff -rup ipxe-20130517-gitc4bce43/src/arch/i386/interface/pxe/pxe_call.c ipxe-20130517-gitc4bce43.new/src/arch/i386/interface/pxe/pxe_call.c
|
|
|
562251 |
--- ipxe-20130517-gitc4bce43/src/arch/i386/interface/pxe/pxe_call.c 2013-05-16 15:41:20.000000000 +0100
|
|
|
562251 |
+++ ipxe-20130517-gitc4bce43.new/src/arch/i386/interface/pxe/pxe_call.c 2013-05-17 10:55:13.282095767 +0100
|
|
|
562251 |
@@ -271,12 +271,14 @@ int pxe_start_nbp ( void ) {
|
|
|
562251 |
DBG ( "Restarting NBP (%x)\n", jmp );
|
|
|
562251 |
|
|
|
562251 |
/* Far call to PXE NBP */
|
|
|
562251 |
- __asm__ __volatile__ ( REAL_CODE ( "movw %%cx, %%es\n\t"
|
|
|
562251 |
+ __asm__ __volatile__ ( REAL_CODE ( "pushl %%ebp\n\t"
|
|
|
562251 |
+ "movw %%cx, %%es\n\t"
|
|
|
562251 |
"pushw %%es\n\t"
|
|
|
562251 |
"pushw %%di\n\t"
|
|
|
562251 |
"sti\n\t"
|
|
|
562251 |
"lcall $0, $0x7c00\n\t"
|
|
|
562251 |
- "addw $4, %%sp\n\t" )
|
|
|
562251 |
+ "addw $4, %%sp\n\t"
|
|
|
562251 |
+ "popl %%ebp\n\t" )
|
|
|
562251 |
: "=a" ( status ), "=b" ( discard_b ),
|
|
|
562251 |
"=c" ( discard_c ), "=d" ( discard_d ),
|
|
|
562251 |
"=D" ( discard_D )
|
|
|
562251 |
@@ -284,7 +286,7 @@ int pxe_start_nbp ( void ) {
|
|
|
562251 |
"c" ( rm_cs ),
|
|
|
562251 |
"d" ( virt_to_phys ( &pxenv ) ),
|
|
|
562251 |
"D" ( __from_text16 ( &ppxe ) )
|
|
|
562251 |
- : "esi", "ebp", "memory" );
|
|
|
562251 |
+ : "esi", "memory" );
|
|
|
562251 |
if ( status )
|
|
|
562251 |
return -EPXENBP ( status );
|
|
|
562251 |
|