Przeglądaj źródła

[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 <mcb30@etherboot.org>
tags/v0.9.8
H. Peter Anvin 15 lat temu
rodzic
commit
f3d09b5c79
1 zmienionych plików z 12 dodań i 14 usunięć
  1. 12
    14
      src/arch/i386/prefix/pxeprefix.S

+ 12
- 14
src/arch/i386/prefix/pxeprefix.S Wyświetl plik

@@ -105,20 +105,13 @@ have_pxenv:
105 105
 
106 106
 	/* Record entry point and UNDI segments */
107 107
 	pushl	%es:0x0a(%bx)		/* Entry point */
108
-	popl	entry_segoff
109 108
 	pushw	%es:0x24(%bx)		/* UNDI code segment */
110 109
 	pushw	%es:0x26(%bx)		/* UNDI code size */
111
-	popl	undi_code_segoff
112 110
 	pushw	%es:0x20(%bx)		/* UNDI data segment */
113 111
 	pushw	%es:0x22(%bx)		/* UNDI data size */
114
-	popl	undi_data_segoff
115 112
 
116 113
 	/* Print "PXENV+ at <address>" */
117 114
 	movw	$10f, %si
118
-	call	print_message
119
-	call	print_segoff
120
-	movb	$( ',' ), %al
121
-	call	print_character
122 115
 	jmp	check_have_stack
123 116
 	.section ".prefix.data", "aw", @progbits
124 117
 10:	.asciz	" PXENV+ at "
@@ -129,19 +122,13 @@ have_ppxe:
129 122
 	movw	%es, ppxe_segment
130 123
 	
131 124
 	pushl	%es:0x10(%bx)		/* Entry point */
132
-	popl	entry_segoff
133 125
 	pushw	%es:0x30(%bx)		/* UNDI code segment */
134 126
 	pushw	%es:0x36(%bx)		/* UNDI code size */
135
-	popl	undi_code_segoff
136 127
 	pushw	%es:0x28(%bx)		/* UNDI data segment */
137 128
 	pushw	%es:0x2e(%bx)		/* UNDI data size */
138
-	popl	undi_data_segoff
129
+
139 130
 	/* Print "!PXE at <address>" */
140 131
 	movw	$10f, %si
141
-	call	print_message
142
-	call	print_segoff
143
-	movb	$( ',' ), %al
144
-	call	print_character
145 132
 	jmp	check_have_stack
146 133
 	.section ".prefix.data", "aw", @progbits
147 134
 10:	.asciz	" !PXE at "
@@ -201,6 +188,17 @@ memory_scan_common:
201 188
  *****************************************************************************
202 189
  */
203 190
 check_have_stack:
191
+	/* Save common values pushed onto the stack */
192
+	popl	undi_data_segoff
193
+	popl	undi_code_segoff
194
+	popl	entry_segoff
195
+
196
+	/* Print have !PXE/PXENV+ message; structure pointer in %es:%bx */
197
+	call	print_message
198
+	call	print_segoff
199
+	movb	$( ',' ), %al
200
+	call	print_character
201
+
204 202
 	/* Check for entry point */
205 203
 	movl	entry_segoff, %eax
206 204
 	testl	%eax, %eax

Ładowanie…
Anuluj
Zapisz