mirror of https://github.com/ipxe/ipxe.git
[librm] Discard argument as part of return from prot_call()
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/45/head
parent
f468f12b1e
commit
9dc340d735
|
@ -663,7 +663,7 @@ void hook_comboot_interrupts ( ) {
|
||||||
"pushl %0\n\t"
|
"pushl %0\n\t"
|
||||||
"pushw %%cs\n\t"
|
"pushw %%cs\n\t"
|
||||||
"call prot_call\n\t"
|
"call prot_call\n\t"
|
||||||
"addw $4, %%sp\n\t"
|
"clc\n\t"
|
||||||
"call patch_cf\n\t"
|
"call patch_cf\n\t"
|
||||||
"iret\n\t" )
|
"iret\n\t" )
|
||||||
: : "i" ( int20 ) );
|
: : "i" ( int20 ) );
|
||||||
|
@ -675,7 +675,7 @@ void hook_comboot_interrupts ( ) {
|
||||||
"pushl %0\n\t"
|
"pushl %0\n\t"
|
||||||
"pushw %%cs\n\t"
|
"pushw %%cs\n\t"
|
||||||
"call prot_call\n\t"
|
"call prot_call\n\t"
|
||||||
"addw $4, %%sp\n\t"
|
"clc\n\t"
|
||||||
"call patch_cf\n\t"
|
"call patch_cf\n\t"
|
||||||
"iret\n\t" )
|
"iret\n\t" )
|
||||||
: : "i" ( int21 ) );
|
: : "i" ( int21 ) );
|
||||||
|
@ -687,7 +687,7 @@ void hook_comboot_interrupts ( ) {
|
||||||
"pushl %0\n\t"
|
"pushl %0\n\t"
|
||||||
"pushw %%cs\n\t"
|
"pushw %%cs\n\t"
|
||||||
"call prot_call\n\t"
|
"call prot_call\n\t"
|
||||||
"addw $4, %%sp\n\t"
|
"clc\n\t"
|
||||||
"call patch_cf\n\t"
|
"call patch_cf\n\t"
|
||||||
"iret\n\t" )
|
"iret\n\t" )
|
||||||
: : "i" ( int22) );
|
: : "i" ( int22) );
|
||||||
|
|
|
@ -9,7 +9,6 @@ void __asmcall _dump_regs ( struct i386_all_regs *ix86 ) {
|
||||||
"pushl $_dump_regs\n\t"
|
"pushl $_dump_regs\n\t"
|
||||||
"pushw %%cs\n\t"
|
"pushw %%cs\n\t"
|
||||||
"call prot_call\n\t"
|
"call prot_call\n\t"
|
||||||
"addr32 leal 4(%%esp), %%esp\n\t"
|
|
||||||
"ret\n\t" ) : : );
|
"ret\n\t" ) : : );
|
||||||
|
|
||||||
printf ( "EAX=%08x EBX=%08x ECX=%08x EDX=%08x\n"
|
printf ( "EAX=%08x EBX=%08x ECX=%08x EDX=%08x\n"
|
||||||
|
|
|
@ -536,7 +536,6 @@ static void bios_inject_startup ( void ) {
|
||||||
"pushl %0\n\t"
|
"pushl %0\n\t"
|
||||||
"pushw %%cs\n\t"
|
"pushw %%cs\n\t"
|
||||||
"call prot_call\n\t"
|
"call prot_call\n\t"
|
||||||
"addw $4, %%sp\n\t"
|
|
||||||
"\n1:\n\t"
|
"\n1:\n\t"
|
||||||
"popfw\n\t"
|
"popfw\n\t"
|
||||||
"ljmp *%%cs:int16_vector\n\t" )
|
"ljmp *%%cs:int16_vector\n\t" )
|
||||||
|
|
|
@ -123,7 +123,6 @@ pxenv_entry:
|
||||||
pushl $pxe_api_call
|
pushl $pxe_api_call
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
addl $4, %esp
|
|
||||||
lret
|
lret
|
||||||
.size pxenv_entry, . - pxenv_entry
|
.size pxenv_entry, . - pxenv_entry
|
||||||
|
|
||||||
|
|
|
@ -373,7 +373,6 @@ start_runtime:
|
||||||
pushl $main
|
pushl $main
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %ecx /* discard */
|
|
||||||
|
|
||||||
/* Uninstall iPXE */
|
/* Uninstall iPXE */
|
||||||
call uninstall
|
call uninstall
|
||||||
|
|
|
@ -151,7 +151,6 @@ _exe_start:
|
||||||
pushl $main
|
pushl $main
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %ecx /* discard */
|
|
||||||
|
|
||||||
/* Uninstall iPXE */
|
/* Uninstall iPXE */
|
||||||
call uninstall
|
call uninstall
|
||||||
|
|
|
@ -102,7 +102,6 @@ start_image:
|
||||||
pushl $main
|
pushl $main
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %ecx /* discard */
|
|
||||||
|
|
||||||
/* Uninstall iPXE */
|
/* Uninstall iPXE */
|
||||||
call uninstall
|
call uninstall
|
||||||
|
|
|
@ -880,7 +880,6 @@ payload_death_message:
|
||||||
movw %ax, (prot_call_vector+2)
|
movw %ax, (prot_call_vector+2)
|
||||||
pushl $relocate
|
pushl $relocate
|
||||||
lcall *prot_call_vector
|
lcall *prot_call_vector
|
||||||
popl %edx /* discard */
|
|
||||||
|
|
||||||
/* Copy code to new location */
|
/* Copy code to new location */
|
||||||
progress " copy\n"
|
progress " copy\n"
|
||||||
|
|
|
@ -200,7 +200,6 @@ no_cmd_line:
|
||||||
pushl $main
|
pushl $main
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %ecx /* discard */
|
|
||||||
|
|
||||||
/* Uninstall iPXE */
|
/* Uninstall iPXE */
|
||||||
call uninstall
|
call uninstall
|
||||||
|
|
|
@ -69,7 +69,6 @@ _nbi_start:
|
||||||
pushl $main
|
pushl $main
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %ecx /* discard */
|
|
||||||
|
|
||||||
/* Uninstall iPXE */
|
/* Uninstall iPXE */
|
||||||
call uninstall
|
call uninstall
|
||||||
|
|
|
@ -823,7 +823,6 @@ run_ipxe:
|
||||||
pushl $main
|
pushl $main
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %ecx /* discard */
|
|
||||||
|
|
||||||
/* Uninstall iPXE */
|
/* Uninstall iPXE */
|
||||||
call uninstall
|
call uninstall
|
||||||
|
|
|
@ -807,7 +807,6 @@ exec: /* Set %ds = %cs */
|
||||||
pushl $main
|
pushl $main
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %eax /* discard */
|
|
||||||
|
|
||||||
/* Set up flat real mode for return to BIOS */
|
/* Set up flat real mode for return to BIOS */
|
||||||
call flatten_real_mode
|
call flatten_real_mode
|
||||||
|
|
|
@ -41,9 +41,7 @@ undiloader:
|
||||||
pushw %ax
|
pushw %ax
|
||||||
pushw $prot_call
|
pushw $prot_call
|
||||||
lret
|
lret
|
||||||
1: popw %bx /* discard */
|
1: /* Restore registers and return */
|
||||||
popw %bx /* discard */
|
|
||||||
/* Restore registers and return */
|
|
||||||
popw %bx
|
popw %bx
|
||||||
popw %es
|
popw %es
|
||||||
popw %ds
|
popw %ds
|
||||||
|
|
|
@ -134,7 +134,6 @@ init_librm:
|
||||||
pushl $init_idt
|
pushl $init_idt
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
popl %eax /* discard */
|
|
||||||
|
|
||||||
/* Restore registers */
|
/* Restore registers */
|
||||||
negl %edi
|
negl %edi
|
||||||
|
@ -385,8 +384,8 @@ rm_gdtr:
|
||||||
*
|
*
|
||||||
* Example usage:
|
* Example usage:
|
||||||
* pushl $pxe_api_call
|
* pushl $pxe_api_call
|
||||||
|
* pushw %cs
|
||||||
* call prot_call
|
* call prot_call
|
||||||
* addw $4, %sp
|
|
||||||
* to call in to the C function
|
* to call in to the C function
|
||||||
* void pxe_api_call ( struct i386_all_regs *ix86 );
|
* void pxe_api_call ( struct i386_all_regs *ix86 );
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
@ -455,7 +454,7 @@ pc_rmode:
|
||||||
*/
|
*/
|
||||||
addr32 movl -20(%esp), %esp
|
addr32 movl -20(%esp), %esp
|
||||||
popfl
|
popfl
|
||||||
lret
|
lret $4
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* real_call (protected-mode near call, 32-bit virtual return address)
|
* real_call (protected-mode near call, 32-bit virtual return address)
|
||||||
|
@ -554,7 +553,6 @@ flatten_real_mode:
|
||||||
pushl $flatten_dummy
|
pushl $flatten_dummy
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call prot_call
|
call prot_call
|
||||||
addw $4, %sp
|
|
||||||
/* Restore GDT */
|
/* Restore GDT */
|
||||||
movb $0x00, real_cs + 6
|
movb $0x00, real_cs + 6
|
||||||
movb $0x00, real_ds + 6
|
movb $0x00, real_ds + 6
|
||||||
|
|
|
@ -108,7 +108,6 @@ static void librm_test_exec ( void ) {
|
||||||
"pushl %k3\n\t"
|
"pushl %k3\n\t"
|
||||||
"pushw %%cs\n\t"
|
"pushw %%cs\n\t"
|
||||||
"call prot_call\n\t"
|
"call prot_call\n\t"
|
||||||
"addw $4, %%sp\n\t"
|
|
||||||
"rdtsc\n\t" )
|
"rdtsc\n\t" )
|
||||||
: "=a" ( stopped ), "=d" ( discard_d ),
|
: "=a" ( stopped ), "=d" ( discard_d ),
|
||||||
"=R" ( started )
|
"=R" ( started )
|
||||||
|
|
Loading…
Reference in New Issue