diff -urN linux-2.4.0t11p7/include/asm-alpha/module.h linux/include/asm-alpha/module.h --- linux-2.4.0t11p7/include/asm-alpha/module.h Fri Nov 17 20:26:22 2000 +++ linux/include/asm-alpha/module.h Sat Nov 18 12:11:04 2000 @@ -8,4 +8,9 @@ #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +static inline void arch_init_modules(void) +{ + __asm__("stq $29,%0" : "=m"(kernel_module.gp)); +} + #endif /* _ASM_ALPHA_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-arm/module.h linux/include/asm-arm/module.h --- linux-2.4.0t11p7/include/asm-arm/module.h Fri Nov 17 20:26:22 2000 +++ linux/include/asm-arm/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_ARM_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-i386/module.h linux/include/asm-i386/module.h --- linux-2.4.0t11p7/include/asm-i386/module.h Fri Nov 17 20:26:22 2000 +++ linux/include/asm-i386/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_I386_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-ia64/module.h linux/include/asm-ia64/module.h --- linux-2.4.0t11p7/include/asm-ia64/module.h Mon Oct 9 20:54:59 2000 +++ linux/include/asm-ia64/module.h Sat Nov 18 12:11:04 2000 @@ -15,6 +15,7 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) ia64_module_unmap(x) #define module_arch_init(x) ia64_module_init(x) +#define arch_init_modules() do { } while (0) /* * This must match in size and layout the data created by diff -urN linux-2.4.0t11p7/include/asm-m68k/module.h linux/include/asm-m68k/module.h --- linux-2.4.0t11p7/include/asm-m68k/module.h Fri Nov 17 20:26:22 2000 +++ linux/include/asm-m68k/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_M68K_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-mips/module.h linux/include/asm-mips/module.h --- linux-2.4.0t11p7/include/asm-mips/module.h Fri Nov 17 20:26:22 2000 +++ linux/include/asm-mips/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_MIPS_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-mips64/module.h linux/include/asm-mips64/module.h --- linux-2.4.0t11p7/include/asm-mips64/module.h Fri Nov 17 20:26:22 2000 +++ linux/include/asm-mips64/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_MIPS64_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-ppc/module.h linux/include/asm-ppc/module.h --- linux-2.4.0t11p7/include/asm-ppc/module.h Fri Nov 17 20:26:23 2000 +++ linux/include/asm-ppc/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_PPC_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-s390/module.h linux/include/asm-s390/module.h --- linux-2.4.0t11p7/include/asm-s390/module.h Fri Nov 17 20:26:24 2000 +++ linux/include/asm-s390/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_S390_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-sh/module.h linux/include/asm-sh/module.h --- linux-2.4.0t11p7/include/asm-sh/module.h Fri Nov 17 20:26:24 2000 +++ linux/include/asm-sh/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_SH_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-sparc/module.h linux/include/asm-sparc/module.h --- linux-2.4.0t11p7/include/asm-sparc/module.h Fri Nov 17 20:26:24 2000 +++ linux/include/asm-sparc/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ #define module_map(x) vmalloc(x) #define module_unmap(x) vfree(x) #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_SPARC_MODULE_H */ diff -urN linux-2.4.0t11p7/include/asm-sparc64/module.h linux/include/asm-sparc64/module.h --- linux-2.4.0t11p7/include/asm-sparc64/module.h Fri Nov 17 20:26:24 2000 +++ linux/include/asm-sparc64/module.h Sat Nov 18 12:11:04 2000 @@ -7,5 +7,6 @@ extern void * module_map (unsigned long size); extern void module_unmap (void *addr); #define module_arch_init(x) (0) +#define arch_init_modules() do { } while (0) #endif /* _ASM_SPARC64_MODULE_H */ diff -urN linux-2.4.0t11p7/kernel/module.c linux/kernel/module.c --- linux-2.4.0t11p7/kernel/module.c Fri Nov 17 20:26:24 2000 +++ linux/kernel/module.c Sat Nov 18 12:11:04 2000 @@ -230,10 +230,7 @@ void __init init_modules(void) { kernel_module.nsyms = __stop___ksymtab - __start___ksymtab; - -#ifdef __alpha__ - __asm__("stq $29,%0" : "=m"(kernel_module.gp)); -#endif + arch_init_modules(); } /*