summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/interface
diff options
context:
space:
mode:
authorMichael Brown2007-01-08 04:04:54 +0100
committerMichael Brown2007-01-08 04:04:54 +0100
commita6ba48e51eb917e1c124b3657090f257dc2efca2 (patch)
tree791e44a0eb8a0d1e8a69967c4749eb103a1b34b1 /src/arch/i386/interface
parentAdded missing includes (diff)
downloadipxe-a6ba48e51eb917e1c124b3657090f257dc2efca2.tar.gz
ipxe-a6ba48e51eb917e1c124b3657090f257dc2efca2.tar.xz
ipxe-a6ba48e51eb917e1c124b3657090f257dc2efca2.zip
Added debugging statements
Diffstat (limited to 'src/arch/i386/interface')
-rw-r--r--src/arch/i386/interface/pcbios/biosint.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/arch/i386/interface/pcbios/biosint.c b/src/arch/i386/interface/pcbios/biosint.c
index 6028998a1..5a48f0479 100644
--- a/src/arch/i386/interface/pcbios/biosint.c
+++ b/src/arch/i386/interface/pcbios/biosint.c
@@ -37,13 +37,21 @@ void hook_bios_interrupt ( unsigned int interrupt, unsigned int handler,
.offset = handler,
};
+ DBG ( "Hooking INT %#02x to %04x:%04x\n",
+ interrupt, rm_cs, handler );
+
if ( ( chain_vector->segment != 0 ) ||
( chain_vector->offset != 0 ) ) {
/* Already hooked; do nothing */
+ DBG ( "...already hooked\n" );
return;
}
+
copy_from_real ( chain_vector, 0, ( interrupt * 4 ),
sizeof ( *chain_vector ) );
+ DBG ( "...chaining to %04x:%04x\n",
+ chain_vector->segment, chain_vector->offset );
+
copy_to_real ( 0, ( interrupt * 4 ), &vector, sizeof ( vector ) );
hooked_bios_interrupts++;
}
@@ -65,11 +73,21 @@ int unhook_bios_interrupt ( unsigned int interrupt, unsigned int handler,
struct segoff *chain_vector ) {
struct segoff vector;
+ DBG ( "Unhooking INT %#02x from %04x:%04x\n",
+ interrupt, rm_cs, handler );
+
copy_from_real ( &vector, 0, ( interrupt * 4 ), sizeof ( vector ) );
- if ( ( vector.segment != rm_cs ) || ( vector.offset != handler ) )
+ if ( ( vector.segment != rm_cs ) || ( vector.offset != handler ) ) {
+ DBG ( "...cannot unhook; vector points to %04x:%04x\n",
+ vector.segment, vector.offset );
return -EBUSY;
+ }
+
+ DBG ( "...restoring to %04x:%04x\n",
+ chain_vector->segment, chain_vector->offset );
copy_to_real ( 0, ( interrupt * 4 ), chain_vector,
sizeof ( *chain_vector ) );
+
chain_vector->segment = 0;
chain_vector->offset = 0;
hooked_bios_interrupts--;