Hi, I am trying to compile the Linux kernel with ICC 13.1.2, GCC 4.7.3 on Ubuntu 13.04. While I had some limited succes with kernel 2.6.32 after some code tweaks, I am totally stuck with 188.8.131.52. I get an error in linux-3.8.0/arch/x86/include/asm/cpufeature.h(349): error: invalid constant in assembly language instruction
asm goto("1: jmp %l[t_no]\n"
The problematic code snippet is:
asm goto("1: jmp %l[t_no]n" "2:n" ".section .altinstructions,"a"n" " .long 1b - .n" " .long 0n" /* no replacement */ " .word %P0n" /* feature bit */ " .byte 2b - 1bn" /* source len */ " .byte 0n" /* replacement len */ ".previousn" /* skipping size check since replacement size = 0 */ : : "i" (bit) : : t_no); return true; t_no: return false;
After some Google research it turns out that this syntacs is not recognized by the Intel Compiler and some tweaks have to be done. I tryed all possible combinations with __asm __asm__ volatile asm and so on but nothing helps. How is this piece supposed to be rewritten in order to compile?
By the way, attached is my wrapper script for the compiler. I don't know how good it is so any comments on it are welcome too.