david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[prefix] Standardise calls to prot_call()

Use the standard "pushl $function ; pushw %cs ; call prot_call"
sequence everywhere that prot_call() is used.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2016-02-18 16:32:37 +00:00
parent adac4b1984
commit df2509db95
2 changed files with 28 additions and 11 deletions

View File

@ -867,6 +867,15 @@ payload_death_message:
movw %ax, (init_librm_vector+2)
lcall *init_librm_vector
/* Prepare for return to .prefix segment */
pushw %cs
/* Jump to .text16 segment */
pushw %ax
pushw $1f
lret
.section ".text16.install_prealloc", "ax", @progbits
1:
/* Inhibit INT 15,e820 and INT 15,e801 if applicable */
testl %ebp, %ebp
jnz 1f
@ -878,10 +887,15 @@ payload_death_message:
* ready for the copy to the new location.
*/
progress " relocate\n"
movw %ax, (prot_call_vector+2)
pushl $relocate
lcall *prot_call_vector
pushw %cs
call prot_call
/* Jump back to .prefix segment */
pushw $1f
lret
.section ".prefix.install_prealloc", "awx", @progbits
1:
/* Copy code to new location */
progress " copy\n"
pushl %edi
@ -929,10 +943,6 @@ init_librm_vector:
.word init_librm
.word 0
.size init_librm_vector, . - init_librm_vector
prot_call_vector:
.word prot_call
.word 0
.size prot_call_vector, . - prot_call_vector
#endif
close_payload_vector:
.word close_payload

View File

@ -18,13 +18,16 @@ undiloader:
pushw %ds
pushw %es
pushw %bx
/* ROM segment address to %ds */
pushw %cs
popw %ds
/* UNDI loader parameter structure address into %es:%di */
movw %sp, %bx
movw %ss:22(%bx), %di
movw %ss:24(%bx), %es
/* Install to specified real-mode addresses */
pushw %di
movw %es:12(%di), %bx
@ -34,13 +37,18 @@ undiloader:
orl $0xffffffff, %ebp /* Allow arbitrary relocation */
call install_prealloc
popw %di
/* Jump to .text16 segment */
pushw %ax
pushw $1f
lret
.section ".text16", "ax", @progbits
1:
/* Call UNDI loader C code */
pushl $pxe_loader_call
pushw %cs
pushw $1f
pushw %ax
pushw $prot_call
lret
call prot_call
1: /* Restore registers and return */
popw %bx
popw %es
@ -49,4 +57,3 @@ undiloader:
popl %edi
popl %esi
lret
.size undiloader, . - undiloader