--- linux-2.0.36/arch/i386/kernel/ioport.c +++ linux/arch/i386/kernel/ioport.c 1998/11/17 09:33:32 @@ -10,6 +10,7 @@ #include #include #include +#include /* Set EXTENT bits starting at BASE in BITMAP to value TURN_ON. */ static void set_bitmap(unsigned long *bitmap, short base, short extent, int new_value) @@ -73,17 +74,16 @@ * on system-call entry - see also fork() and the signal handling * code. */ -asmlinkage int sys_iopl(long ebx,long ecx,long edx, - long esi, long edi, long ebp, long eax, long ds, - long es, long fs, long gs, long orig_eax, - long eip,long cs,long eflags,long esp,long ss) + +asmlinkage int sys_iopl(unsigned long unused) { - unsigned int level = ebx; + struct pt_regs * regs = (struct pt_regs *) &unused; + unsigned int level = regs->ebx; if (level > 3) return -EINVAL; if (!suser() || securelevel > 0) return -EPERM; - *(&eflags) = (eflags & 0xffffcfff) | (level << 12); + regs->eflags = (regs->eflags & 0xffffcfff) | (level << 12); return 0; } --- linux-2.0.36/arch/i386/kernel/ksyms.c +++ linux/arch/i386/kernel/ksyms.c 1998/11/17 09:33:32 @@ -10,6 +10,7 @@ extern void dump_thread(struct pt_regs *, struct user *); extern int dump_fpu(elf_fpregset_t *); +extern char * strstr(const char *,const char *); static struct symbol_table arch_symbol_table = { #include @@ -18,6 +19,7 @@ X(dump_thread), X(dump_fpu), X(get_pt_regs_for_task), + X(strstr), XNOVERS(__do_delay), XNOVERS(down_failed), XNOVERS(down_failed_interruptible), --- linux-2.0.36/include/asm-i386/string.h +++ linux/include/asm-i386/string.h 1998/11/17 09:33:32 @@ -258,6 +258,7 @@ return __res; } +#if 0 #define __HAVE_ARCH_STRSTR extern inline char * strstr(const char * cs,const char * ct) { @@ -286,6 +287,7 @@ :"cx","dx","di","si"); return __res; } +#endif #define __HAVE_ARCH_STRLEN extern inline size_t strlen(const char * s) @@ -437,7 +439,7 @@ case 0: COMMON(""); return to; case 1: COMMON("\n\tmovsb"); return to; case 2: COMMON("\n\tmovsw"); return to; - case 3: COMMON("\n\tmovsw\n\tmovsb"); return to; + default: COMMON("\n\tmovsw\n\tmovsb"); return to; } #undef COMMON } @@ -588,7 +590,7 @@ case 0: COMMON(""); return s; case 1: COMMON("\n\tstosb"); return s; case 2: COMMON("\n\tstosw"); return s; - case 3: COMMON("\n\tstosw\n\tstosb"); return s; + default: COMMON("\n\tstosw\n\tstosb"); return s; } #undef COMMON } --- linux-2.0.36/include/linux/types.h +++ linux/include/linux/types.h 1998/11/04 07:17:50 @@ -1,18 +1,6 @@ #ifndef _LINUX_TYPES_H #define _LINUX_TYPES_H -#ifdef __i386__ -#if defined(__KERNEL__) && !defined(STDC_HEADERS) -#if ((__GNUC_MINOR__ >= 8) || (__GNUC_MAJOR >=3)) -#warning "This code is tested with gcc 2.7.2.x only. Using egcs/gcc 2.8.x needs" -#warning "additional patches that have not been sufficiently tested to include by" -#warning "default." -#warning "See http://www.suse.de/~florian/kernel+egcs.html for more information" -#error "Remove this if you have applied the gcc 2.8/egcs patches and wish to use them" -#endif -#endif -#endif - #include #include