david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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>
This commit is contained in:
Michael Brown 2012-04-10 12:55:54 +01:00
parent 943b3003bd
commit 3c13d68f50
1 changed files with 3 additions and 4 deletions

View File

@ -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 );