asmlinkage FASTCALL

From: Pavel Machek (pavel@ucw.cz)
Date: Thu Feb 28 2002 - 17:11:20 EST


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/



This archive was generated by hypermail 2b29 : Thu Feb 28 2002 - 21:00:45 EST