Lines 265-276
int pxe_start_nbp ( void ) {
Link Here
|
265 |
DBG ( "Restarting NBP (%x)\n", jmp ); |
265 |
DBG ( "Restarting NBP (%x)\n", jmp ); |
266 |
|
266 |
|
267 |
/* Far call to PXE NBP */ |
267 |
/* Far call to PXE NBP */ |
268 |
__asm__ __volatile__ ( REAL_CODE ( "movw %%cx, %%es\n\t" |
268 |
__asm__ __volatile__ ( REAL_CODE ( "pushl %%ebp\n\t" |
|
|
269 |
"movw %%cx, %%es\n\t" |
269 |
"pushw %%es\n\t" |
270 |
"pushw %%es\n\t" |
270 |
"pushw %%di\n\t" |
271 |
"pushw %%di\n\t" |
271 |
"sti\n\t" |
272 |
"sti\n\t" |
272 |
"lcall $0, $0x7c00\n\t" |
273 |
"lcall $0, $0x7c00\n\t" |
273 |
"addw $4, %%sp\n\t" ) |
274 |
"addw $4, %%sp\n\t" |
|
|
275 |
"popl %%ebp\n\t") |
274 |
: "=a" ( rc ), "=b" ( discard_b ), |
276 |
: "=a" ( rc ), "=b" ( discard_b ), |
275 |
"=c" ( discard_c ), "=d" ( discard_d ), |
277 |
"=c" ( discard_c ), "=d" ( discard_d ), |
276 |
"=D" ( discard_D ) |
278 |
"=D" ( discard_D ) |
Lines 278-284
int pxe_start_nbp ( void ) {
Link Here
|
278 |
"c" ( rm_cs ), |
280 |
"c" ( rm_cs ), |
279 |
"d" ( virt_to_phys ( &pxenv ) ), |
281 |
"d" ( virt_to_phys ( &pxenv ) ), |
280 |
"D" ( __from_text16 ( &ppxe ) ) |
282 |
"D" ( __from_text16 ( &ppxe ) ) |
281 |
: "esi", "ebp", "memory" ); |
283 |
: "esi", "memory" ); |
282 |
|
284 |
|
283 |
return rc; |
285 |
return rc; |
284 |
} |
286 |
} |