From f3d09b5c7950ad2675760adf0633cccd95d8a800 Mon Sep 17 00:00:00 2001 From: H. Peter Anvin Date: Sun, 1 Mar 2009 20:56:26 -0800 Subject: [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 --- src/arch/i386/prefix/pxeprefix.S | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'src/arch/i386') diff --git a/src/arch/i386/prefix/pxeprefix.S b/src/arch/i386/prefix/pxeprefix.S index b3b7947f..82b1da19 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 -- cgit v1.2.3-55-g7522