Messages in this thread Patch in this message |  | | Date | Thu, 28 Feb 2002 23:11:20 +0100 | From | Pavel Machek <> | Subject | asmlinkage FASTCALL |
| |
Hi!
Well, asmlinkage is "__attribute__ regparm(0)", while fastcall is "__attribute__ regparm(3)". If you mix them on gcc 3.1, you get nice miscompilation. That should be fixed.
Index: arch/i386/kernel/signal.c =================================================================== RCS file: /cvs/Repository/linux/arch/i386/kernel/signal.c,v retrieving revision 1.3 diff -u -u -r1.3 signal.c --- arch/i386/kernel/signal.c 2001/10/16 23:40:31 1.3 +++ arch/i386/kernel/signal.c 2002/02/28 22:11:41 @@ -28,7 +28,7 @@ #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) -asmlinkage int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset)); +int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset)); int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) { Index: arch/i386/kernel/vm86.c =================================================================== RCS file: /cvs/Repository/linux/arch/i386/kernel/vm86.c,v retrieving revision 1.2 diff -u -u -r1.2 vm86.c --- arch/i386/kernel/vm86.c 2001/07/21 13:03:51 1.2 +++ arch/i386/kernel/vm86.c 2002/02/28 22:11:41 @@ -62,7 +62,7 @@ ( (unsigned)( & (((struct kernel_vm86_regs *)0)->VM86_REGS_PART2) ) ) #define VM86_REGS_SIZE2 (sizeof(struct kernel_vm86_regs) - VM86_REGS_SIZE1) -asmlinkage struct pt_regs * FASTCALL(save_v86_state(struct kernel_vm86_regs * regs)); +struct pt_regs * FASTCALL(save_v86_state(struct kernel_vm86_regs * regs)); struct pt_regs * save_v86_state(struct kernel_vm86_regs * regs) { struct tss_struct *tss; Index: arch/s390/kernel/signal.c =================================================================== RCS file: /cvs/Repository/linux/arch/s390/kernel/signal.c,v retrieving revision 1.4 diff -u -u -r1.4 signal.c --- arch/s390/kernel/signal.c 2001/10/24 23:58:45 1.4 +++ arch/s390/kernel/signal.c 2002/02/28 22:11:44 @@ -47,7 +47,7 @@ struct ucontext uc; } rt_sigframe; -asmlinkage int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset)); +int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset)); int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) { Index: arch/s390x/kernel/signal.c =================================================================== RCS file: /cvs/Repository/linux/arch/s390x/kernel/signal.c,v retrieving revision 1.4 diff -u -u -r1.4 signal.c --- arch/s390x/kernel/signal.c 2001/10/24 23:58:47 1.4 +++ arch/s390x/kernel/signal.c 2002/02/28 22:11:44 @@ -47,7 +47,7 @@ struct ucontext uc; } rt_sigframe; -asmlinkage int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset)); +int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset)); int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) { Pavel -- (about SSSCA) "I don't say this lightly. However, I really think that the U.S. no longer is classifiable as a democracy, but rather as a plutocracy." --hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |