On Wed, 7 Mar 2007 11:01:55 -0800 "Miles Lane" <[EMAIL PROTECTED]> wrote:
> In file included from include/asm/timex.h:10, > from include/linux/timex.h:187, > from include/linux/sched.h:50, > from include/linux/utsname.h:35, > from include/asm/elf.h:12, > from include/linux/elf.h:7, > from include/linux/module.h:15, > from include/linux/crypto.h:21, > from arch/i386/kernel/asm-offsets.c:7: > include/asm/tsc.h: In function 'get_cycles_sync': > include/asm/tsc.h:45: warning: implicit declaration of function > 'alternative_io' > include/asm/tsc.h:46: error: called object '"=a"' is not a function > include/asm/tsc.h:46: error: called object '"0"' is not a function > include/asm/tsc.h:46: error: expected ')' before ':' token > make[1]: *** [arch/i386/kernel/asm-offsets.s] Error 1 Yes, I ended up dropping another patch to fix that up and things got in a mess. Andy's patch should fix it up again From: Andy Whitcroft <[EMAIL PROTECTED]> Add an i386 implementation of alternative_io modelled on the x86_64 version. Signed-off-by: Andy Whitcroft <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> --- include/asm-i386/alternative.h | 17 +++++++++++++++++ include/asm-i386/tsc.h | 1 + 2 files changed, 18 insertions(+) diff -puN include/asm-i386/alternative.h~i386-alternative_io-implementation include/asm-i386/alternative.h --- a/include/asm-i386/alternative.h~i386-alternative_io-implementation +++ a/include/asm-i386/alternative.h @@ -100,6 +100,23 @@ static inline void alternatives_smp_swit "663:\n\t" newinstr "\n664:\n" /* replacement */\ ".previous" :: "i" (feature), ##input) +#define alternative_io(oldinstr, newinstr, feature, output, input...) \ + asm volatile ("661:\n\t" oldinstr "\n662:\n" \ + ".section .altinstructions,\"a\"\n" \ + " .align 4\n" \ + " .long 661b\n" /* label */ \ + " .long 663f\n" /* new instruction */ \ + " .long 0x00\n" \ + " .byte %c[feat]\n" /* feature bit */ \ + " .byte 0x00\n" \ + " .byte 662b-661b\n" /* sourcelen */ \ + " .byte 664f-663f\n" /* replacementlen */ \ + " .byte 0x00\n" \ + ".previous\n" \ + ".section .altinstr_replacement,\"ax\"\n" \ + "663:\n\t" newinstr "\n664:\n" /* replacement */\ + ".previous" : output : [feat] "i" (feature), ##input) + /* Like alternative_io, but supports 2 possible alternatives */ #define alternative_io_two(oldinstr, newinstr, feat, newinstr2, feat2,\ output, input...) \ diff -puN include/asm-i386/tsc.h~i386-alternative_io-implementation include/asm-i386/tsc.h --- a/include/asm-i386/tsc.h~i386-alternative_io-implementation +++ a/include/asm-i386/tsc.h @@ -6,6 +6,7 @@ #ifndef _ASM_i386_TSC_H #define _ASM_i386_TSC_H +#include <asm/alternative.h> #include <asm/processor.h> /* _ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/