Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[int13] Fix compilation on some versions of gcc
Using __from_text16() and __from_data16() in inline asm constraints
sometimes defeats gcc's ability to simplify expressions down to
compile-time constants.

Reported-by: Jason Kohles <jkohles@palantir.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Apr 10, 2012
1 parent 943b300 commit 3c13d68
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions src/arch/i386/interface/pcbios/int13.c
Expand Up @@ -1499,16 +1499,15 @@ static void int13_hook_vector ( void ) {
"cmpb $0x08, -1(%%bp)\n\t"
"jne 3f\n\t"
"testb $0x80, %%dl\n\t"
"movb %%cs:%c1, %%dl\n\t"
"movb %%cs:num_drives, %%dl\n\t"
"jnz 3f\n\t"
"movb %%cs:%c2, %%dl\n\t"
"movb %%cs:num_fdds, %%dl\n\t"
/* Return */
"\n3:\n\t"
"movw %%bp, %%sp\n\t"
"popw %%bp\n\t"
"iret\n\t" )
: : "i" ( int13 ), "i" ( __from_text16 ( &num_drives ) ),
"i" ( __from_text16 ( &num_fdds ) ) );
: : "i" ( int13 ) );

hook_bios_interrupt ( 0x13, ( unsigned int ) int13_wrapper,
&int13_vector );
Expand Down

0 comments on commit 3c13d68

Please sign in to comment.