From e5a5b54ab675988febeaa9cd831e21e675d5947b Mon Sep 17 00:00:00 2001 From: "mbuesch@freenet.de" Date: Wed, 13 Oct 2004 22:38:15 -0700 Subject: [PATCH] [PATCH] fix asmlinkage This patch fixes the reintroduced bug with the sig_handler(), if we link against a -mregparm=3 compiled klibc on i386. It also fixes some compiler warnings about redefined asmlinkage on some systems. Also some (broken?) compilers on distros throw out warnings if asmlinkage is before "static void". This fixes it, too. --- Makefile | 2 +- udev.c | 2 +- udev_lib.h | 9 +++++++++ udevd.c | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 4107b96a3ff..4b8df13985c 100644 --- a/Makefile +++ b/Makefile @@ -112,7 +112,7 @@ OPTIMIZATION := ${shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2> # add -Wredundant-decls when libsysfs gets cleaned up WARNINGS := -Wall -CFLAGS := -pipe -Dasmlinkage= +CFLAGS := -pipe # set up the proper tdb spinlock code if we can ifeq ($(strip $(ARCH)),i386) diff --git a/udev.c b/udev.c index 78da715fec2..94888d6a43a 100644 --- a/udev.c +++ b/udev.c @@ -58,7 +58,7 @@ void log_message(int level, const char *format, ...) } #endif -asmlinkage static void sig_handler(int signum) +static void asmlinkage sig_handler(int signum) { switch (signum) { case SIGALRM: diff --git a/udev_lib.h b/udev_lib.h index 2f1965ea32a..e9ff379fc66 100644 --- a/udev_lib.h +++ b/udev_lib.h @@ -65,6 +65,15 @@ do { \ pos = pos + len + strspn(pos, separator), len = strcspn(pos, separator)) \ if (len > 0) +#ifdef asmlinkage +# undef asmlinkage +#endif +#ifdef __i386__ +# define asmlinkage __attribute__((regparm(0))) +#endif +#ifndef asmlinkage +# define asmlinkage /* nothing */ +#endif extern char *get_action(void); extern char *get_devpath(void); diff --git a/udevd.c b/udevd.c index 380511d47eb..811f62243eb 100644 --- a/udevd.c +++ b/udevd.c @@ -309,7 +309,7 @@ skip: return; } -asmlinkage static void sig_handler(int signum) +static void asmlinkage sig_handler(int signum) { int rc;