|
@@ -391,24 +391,20 @@ static void hook_int13 ( void ) {
|
391
|
391
|
* should not chain to the previous handler. (The wrapper
|
392
|
392
|
* clears CF and OF before calling int13()).
|
393
|
393
|
*/
|
394
|
|
- __asm__ __volatile__ ( ".section \".text16\", \"ax\", @progbits\n\t"
|
395
|
|
- ".code16\n\t"
|
396
|
|
- "\nint13_wrapper:\n\t"
|
397
|
|
- "orb $0, %%al\n\t" /* clear CF and OF */
|
398
|
|
- "pushl %0\n\t" /* call int13() */
|
399
|
|
- "pushw %%cs\n\t"
|
400
|
|
- "call prot_call\n\t"
|
401
|
|
- "jo 1f\n\t" /* chain if OF not set */
|
402
|
|
- "pushfw\n\t"
|
403
|
|
- "lcall *%%cs:int13_vector\n\t"
|
404
|
|
- "\n1:\n\t"
|
405
|
|
- "call 2f\n\t" /* return with flags intact */
|
406
|
|
- "lret $2\n\t"
|
407
|
|
- "\n2:\n\t"
|
408
|
|
- "ret $4\n\t"
|
409
|
|
- ".previous\n\t"
|
410
|
|
- ".code32\n\t" : :
|
411
|
|
- "i" ( int13 ) );
|
|
394
|
+ __asm__ __volatile__ (
|
|
395
|
+ TEXT16_CODE ( "\nint13_wrapper:\n\t"
|
|
396
|
+ "orb $0, %%al\n\t" /* clear CF and OF */
|
|
397
|
+ "pushl %0\n\t" /* call int13() */
|
|
398
|
+ "pushw %%cs\n\t"
|
|
399
|
+ "call prot_call\n\t"
|
|
400
|
+ "jo 1f\n\t" /* chain if OF not set */
|
|
401
|
+ "pushfw\n\t"
|
|
402
|
+ "lcall *%%cs:int13_vector\n\t"
|
|
403
|
+ "\n1:\n\t"
|
|
404
|
+ "call 2f\n\t" /* return with flags intact */
|
|
405
|
+ "lret $2\n\t"
|
|
406
|
+ "\n2:\n\t"
|
|
407
|
+ "ret $4\n\t" ) : : "i" ( int13 ) );
|
412
|
408
|
|
413
|
409
|
hook_bios_interrupt ( 0x13, ( unsigned int ) int13_wrapper,
|
414
|
410
|
&int13_vector );
|