mirror of
https://github.com/ipxe/ipxe
synced 2025-12-13 23:41:45 +03:00
[comboot] Unhook interrupt vectors after returning from a COMBOOT image
This commit is contained in:
@@ -136,6 +136,7 @@ static int com32_exec ( struct image *image ) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unhook_comboot_interrupts();
|
||||||
comboot_force_text_mode();
|
comboot_force_text_mode();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ static int comboot_exec ( struct image *image ) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unhook_comboot_interrupts();
|
||||||
comboot_force_text_mode();
|
comboot_force_text_mode();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ typedef struct {
|
|||||||
} comboot_shuffle_descriptor;
|
} comboot_shuffle_descriptor;
|
||||||
|
|
||||||
extern void hook_comboot_interrupts ( );
|
extern void hook_comboot_interrupts ( );
|
||||||
|
extern void unhook_comboot_interrupts ( );
|
||||||
|
|
||||||
/* These are not the correct prototypes, but it doens't matter,
|
/* These are not the correct prototypes, but it doens't matter,
|
||||||
* as we only ever get the address of these functions;
|
* as we only ever get the address of these functions;
|
||||||
|
|||||||
@@ -616,3 +616,18 @@ void hook_comboot_interrupts ( ) {
|
|||||||
hook_bios_interrupt ( 0x22, ( unsigned int ) int22_wrapper,
|
hook_bios_interrupt ( 0x22, ( unsigned int ) int22_wrapper,
|
||||||
&int22_vector );
|
&int22_vector );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unhook BIOS interrupts related to COMBOOT API (INT 20h, 21h, 22h)
|
||||||
|
*/
|
||||||
|
void unhook_comboot_interrupts ( ) {
|
||||||
|
|
||||||
|
unhook_bios_interrupt ( 0x20, ( unsigned int ) int20_wrapper,
|
||||||
|
&int20_vector );
|
||||||
|
|
||||||
|
unhook_bios_interrupt ( 0x21, ( unsigned int ) int21_wrapper,
|
||||||
|
&int21_vector );
|
||||||
|
|
||||||
|
unhook_bios_interrupt ( 0x22, ( unsigned int ) int22_wrapper,
|
||||||
|
&int22_vector );
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user