diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2009-03-11 19:46:35 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2009-03-11 19:46:35 -0700 |
commit | d16e5e8e8ea526326ed6f8880464399624bfe171 (patch) | |
tree | 9d1eb354f74532c219d31607e28840c4ebde3103 /gpxe/src/arch/i386/interface/pxe | |
parent | 43224f02c231ed97a15d8300eaaf69ad8118d222 (diff) | |
download | syslinux.git-d16e5e8e8ea526326ed6f8880464399624bfe171.tar.gz syslinux.git-d16e5e8e8ea526326ed6f8880464399624bfe171.tar.xz syslinux.git-d16e5e8e8ea526326ed6f8880464399624bfe171.zip |
Update gPXE to version 0.9.7syslinux-3.74-pre3
Diffstat (limited to 'gpxe/src/arch/i386/interface/pxe')
-rw-r--r-- | gpxe/src/arch/i386/interface/pxe/pxe_call.c | 20 | ||||
-rw-r--r-- | gpxe/src/arch/i386/interface/pxe/pxe_entry.S | 8 |
2 files changed, 17 insertions, 11 deletions
diff --git a/gpxe/src/arch/i386/interface/pxe/pxe_call.c b/gpxe/src/arch/i386/interface/pxe/pxe_call.c index 04aaf3b2..06dee25c 100644 --- a/gpxe/src/arch/i386/interface/pxe/pxe_call.c +++ b/gpxe/src/arch/i386/interface/pxe/pxe_call.c @@ -433,22 +433,24 @@ void pxe_init_structures ( void ) { * @ret rc Return status code */ int pxe_start_nbp ( void ) { - int discard_b, discard_c; + int discard_b, discard_c, discard_d, discard_D; uint16_t rc; /* Far call to PXE NBP */ - __asm__ __volatile__ ( REAL_CODE ( "pushw %%cx\n\t" - "pushw %%ax\n\t" - "movw %%cx, %%es\n\t" + __asm__ __volatile__ ( REAL_CODE ( "movw %%cx, %%es\n\t" + "pushw %%es\n\t" + "pushw %%di\n\t" "sti\n\t" "lcall $0, $0x7c00\n\t" "addw $4, %%sp\n\t" ) : "=a" ( rc ), "=b" ( discard_b ), - "=c" ( discard_c ) - : "a" ( __from_text16 ( &ppxe ) ), - "b" ( __from_text16 ( &pxenv ) ), - "c" ( rm_cs ) - : "edx", "esi", "edi", "ebp", "memory" ); + "=c" ( discard_c ), "=d" ( discard_d ), + "=D" ( discard_D ) + : "a" ( 0 ), "b" ( __from_text16 ( &pxenv ) ), + "c" ( rm_cs ), + "d" ( virt_to_phys ( &pxenv ) ), + "D" ( __from_text16 ( &ppxe ) ) + : "esi", "ebp", "memory" ); return rc; } diff --git a/gpxe/src/arch/i386/interface/pxe/pxe_entry.S b/gpxe/src/arch/i386/interface/pxe/pxe_entry.S index 68b7374f..22ef4181 100644 --- a/gpxe/src/arch/i386/interface/pxe/pxe_entry.S +++ b/gpxe/src/arch/i386/interface/pxe/pxe_entry.S @@ -178,6 +178,7 @@ pxe_entry_common: * Returns: * %ax : 0x564e * %es:bx : Far pointer to the PXENV+ structure + * %edx : Physical address of the PXENV+ structure * CF cleared * Corrupts: * none @@ -191,9 +192,12 @@ pxe_int_1a: cmpw $0x5650, %ax jne 1f /* INT 1A,5650 - PXE installation check */ - pushw %cs - popw %es + xorl %edx, %edx + movw %cs, %dx + movw %dx, %es movw $pxenv, %bx + shll $4, %edx + addl $pxenv, %edx movw $0x564e, %ax popfw clc |