mirror of
https://github.com/ipxe/ipxe
synced 2025-12-24 15:23:42 +03:00
[librm] Provide an abstraction wrapper for prot_call
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -531,14 +531,12 @@ static void bios_inject_startup ( void ) {
|
||||
__asm__ __volatile__ (
|
||||
TEXT16_CODE ( "\nint16_wrapper:\n\t"
|
||||
"pushfw\n\t"
|
||||
"cmpb $0, %%cs:bios_inject_lock\n\t"
|
||||
"cmpb $0, %cs:bios_inject_lock\n\t"
|
||||
"jnz 1f\n\t"
|
||||
"pushl %0\n\t"
|
||||
"call prot_call\n\t"
|
||||
VIRT_CALL ( bios_inject )
|
||||
"\n1:\n\t"
|
||||
"popfw\n\t"
|
||||
"ljmp *%%cs:int16_vector\n\t" )
|
||||
: : "i" ( bios_inject ) );
|
||||
"ljmp *%cs:int16_vector\n\t" ) );
|
||||
|
||||
/* Hook INT 16 */
|
||||
hook_bios_interrupt ( 0x16, ( ( intptr_t ) int16_wrapper ),
|
||||
|
||||
@@ -46,7 +46,7 @@ static void bios_reboot ( int warm ) {
|
||||
put_real ( flag, BDA_SEG, BDA_REBOOT );
|
||||
|
||||
/* Jump to system reset vector */
|
||||
__asm__ __volatile__ ( REAL_CODE ( "ljmp $0xf000, $0xfff0" ) : : );
|
||||
__asm__ __volatile__ ( REAL_CODE ( "ljmp $0xf000, $0xfff0" ) );
|
||||
}
|
||||
|
||||
PROVIDE_REBOOT ( pcbios, reboot, bios_reboot );
|
||||
|
||||
@@ -1480,8 +1480,7 @@ static void int13_hook_vector ( void ) {
|
||||
/* Clear OF, set CF, call int13() */
|
||||
"orb $0, %%al\n\t"
|
||||
"stc\n\t"
|
||||
"pushl %0\n\t"
|
||||
"call prot_call\n\t"
|
||||
VIRT_CALL ( int13 )
|
||||
/* Chain if OF not set */
|
||||
"jo 1f\n\t"
|
||||
"pushfw\n\t"
|
||||
@@ -1512,8 +1511,7 @@ static void int13_hook_vector ( void ) {
|
||||
"\n3:\n\t"
|
||||
"movw %%bp, %%sp\n\t"
|
||||
"popw %%bp\n\t"
|
||||
"iret\n\t" )
|
||||
: : "i" ( int13 ) );
|
||||
"iret\n\t" ) : : );
|
||||
|
||||
hook_bios_interrupt ( 0x13, ( intptr_t ) int13_wrapper, &int13_vector );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )
|
||||
|
||||
#include <librm.h>
|
||||
|
||||
.arch i386
|
||||
|
||||
/****************************************************************************
|
||||
@@ -120,8 +122,7 @@ pxenv_null_entry:
|
||||
.section ".text16", "ax", @progbits
|
||||
.code16
|
||||
pxenv_entry:
|
||||
pushl $pxe_api_call
|
||||
call prot_call
|
||||
virtcall pxe_api_call
|
||||
lret
|
||||
.size pxenv_entry, . - pxenv_entry
|
||||
|
||||
|
||||
Reference in New Issue
Block a user