The version of the GNU assembler shipped with Fedora 10
(2.18.50.0.9-8.fc10) complains about character literals in some of our
assembly code. Changing $'x' to $( 'x' ) seems to fix the problem.
Yes, the whitespace is required; using just $('x') does not work.
Reported by Kevin O'Connor <kevin@koconnor.net>.
xchgb %al, %ah
call print_hex_byte
/* Print ":" */
- movb $':', %al
+ movb $( ':' ), %al
call print_character
/* Print device */
movb %ah, %al
shrb $3, %al
call print_hex_byte
/* Print "." */
- movb $'.', %al
+ movb $( '.' ), %al
call print_character
/* Print function */
movb %ah, %al
pushw %ax
pushw %cx
/* Print CR */
- movb $'\r', %al
+ movb $( '\r' ), %al
call print_character
/* Print 79 spaces */
- movb $' ', %al
+ movb $( ' ' ), %al
movw $79, %cx
1: call print_character
loop 1b
/* Print CR */
- movb $'\r', %al
+ movb $( '\r' ), %al
call print_character
/* Restore registers and return */
popw %cx
movw $10f, %si
call print_message
call print_segoff
- movb $',', %al
+ movb $( ',' ), %al
call print_character
jmp 99f
.section ".prefix.data", "aw", @progbits
movw $10f, %si
call print_message
call print_segoff
- movb $',', %al
+ movb $( ',' ), %al
call print_character
jmp 99f
.section ".prefix.data", "aw", @progbits
call print_message
movw undi_fbms_start, %ax
call print_word
- movb $'-', %al
+ movb $( '-' ), %al
call print_character
movw undi_fbms_end, %ax
call print_word
/* Print "<segment>:offset" */
movw %es, %ax
call print_hex_word
- movb $':', %al
+ movb $( ':' ), %al
call print_character
movw %bx, %ax
call print_hex_word
/* Fill in product name string, if possible */
movw $prodstr_pci_id, %di
call print_pci_busdevfn
- movb $' ', prodstr_separator
+ movb $( ' ' ), prodstr_separator
/* Print segment address */
- movb $' ', %al
+ movb $( ' ' ), %al
xorw %di, %di
call print_character
movw %cs, %ax
call print_message
movb %bh, %al
call print_hex_nibble
- movb $'.', %al
+ movb $( '.' ), %al
call print_character
movb %bl, %al
call print_hex_byte
cmpw %bx, %ax
jbe 1f
pci3_insane: /* PCI 3.0 with insane %gs value: print error and ignore %gs */
- movb $'!', %al
+ movb $( '!' ), %al
call print_character
movw %gs, %ax
call print_hex_word
movw %dx, %ax
xorw %di, %di
call print_hex_word
- movb $'@', %al
+ movb $( '@' ), %al
call print_character
movw %si, %ax
call print_hex_byte
* loads us to a temporary location in low memory. Will be a
* no-op for lower PCI versions.
*/
- movb $' ', %al
+ movb $( ' ' ), %al
xorw %di, %di
call print_character
movw %gs, %ax