From: H. Peter Anvin Date: Mon, 2 Mar 2009 04:56:26 +0000 (-0800) Subject: [pxeprefix] Merge common code between !PXE and PXENV+ X-Git-Tag: v0.9.8~199 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3d09b5c7950ad2675760adf0633cccd95d8a800;p=thirdparty%2Fipxe.git [pxeprefix] Merge common code between !PXE and PXENV+ The parsing of the !PXE and PXENV+ structures share a fair bit of code; merge the common code to save a few bytes. Signed-off-by: Michael Brown --- diff --git a/src/arch/i386/prefix/pxeprefix.S b/src/arch/i386/prefix/pxeprefix.S index b3b7947f3..82b1da19e 100644 --- a/src/arch/i386/prefix/pxeprefix.S +++ b/src/arch/i386/prefix/pxeprefix.S @@ -105,20 +105,13 @@ have_pxenv: /* Record entry point and UNDI segments */ pushl %es:0x0a(%bx) /* Entry point */ - popl entry_segoff pushw %es:0x24(%bx) /* UNDI code segment */ pushw %es:0x26(%bx) /* UNDI code size */ - popl undi_code_segoff pushw %es:0x20(%bx) /* UNDI data segment */ pushw %es:0x22(%bx) /* UNDI data size */ - popl undi_data_segoff /* Print "PXENV+ at
" */ movw $10f, %si - call print_message - call print_segoff - movb $( ',' ), %al - call print_character jmp check_have_stack .section ".prefix.data", "aw", @progbits 10: .asciz " PXENV+ at " @@ -129,19 +122,13 @@ have_ppxe: movw %es, ppxe_segment pushl %es:0x10(%bx) /* Entry point */ - popl entry_segoff pushw %es:0x30(%bx) /* UNDI code segment */ pushw %es:0x36(%bx) /* UNDI code size */ - popl undi_code_segoff pushw %es:0x28(%bx) /* UNDI data segment */ pushw %es:0x2e(%bx) /* UNDI data size */ - popl undi_data_segoff + /* Print "!PXE at
" */ movw $10f, %si - call print_message - call print_segoff - movb $( ',' ), %al - call print_character jmp check_have_stack .section ".prefix.data", "aw", @progbits 10: .asciz " !PXE at " @@ -201,6 +188,17 @@ memory_scan_common: ***************************************************************************** */ check_have_stack: + /* Save common values pushed onto the stack */ + popl undi_data_segoff + popl undi_code_segoff + popl entry_segoff + + /* Print have !PXE/PXENV+ message; structure pointer in %es:%bx */ + call print_message + call print_segoff + movb $( ',' ), %al + call print_character + /* Check for entry point */ movl entry_segoff, %eax testl %eax, %eax