⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1035.gcc41x.patch

📁 sm86xx内核源包括补丁( GPL )的
💻 PATCH
📖 第 1 页 / 共 2 页
字号:
diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/arch/mips/Makefile linuxmips-2.4.30/arch/mips/Makefile--- linuxmips-2.4.30.ref/arch/mips/Makefile	2007-05-11 16:37:45.000000000 -0700+++ linuxmips-2.4.30/arch/mips/Makefile	2007-05-15 17:26:55.000000000 -0700@@ -46,7 +46,7 @@ GCCFLAGS	:= -I $(TOPDIR)/include/asm/gcc GCCFLAGS	+= -G 0 -mno-abicalls -fno-pic -pipe -fno-builtin GCCFLAGS	+= $(call check_gcc, -finline-limit=100000,)-LINKFLAGS	+= -G 0 -static -n+LINKFLAGS	+= -G 0 -static -n -nostdlib MODFLAGS	+= -mlong-calls  ifdef CONFIG_DEBUG_INFOdiff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/include/asm-mips/uaccess.h linuxmips-2.4.30/include/asm-mips/uaccess.h--- linuxmips-2.4.30.ref/include/asm-mips/uaccess.h	2007-05-11 16:37:46.000000000 -0700+++ linuxmips-2.4.30/include/asm-mips/uaccess.h	2007-05-16 10:57:50.000000000 -0700@@ -234,51 +234,45 @@  * for 32 bit mode and old iron.  */ #ifdef __mips64-#define __GET_USER_DW(__gu_err) __get_user_asm("ld", __gu_err)+#define __GET_USER_DW(val, ptr) __get_user_asm(val, "ld", ptr) #else-#define __GET_USER_DW(__gu_err) __get_user_asm_ll32(__gu_err)+#define __GET_USER_DW(val, ptr) __get_user_asm_ll32(val, ptr) #endif -#define __get_user_nocheck(x,ptr,size)					\-({									\-	long __gu_err = 0;						\-	__typeof(*(ptr)) __gu_val = 0;					\-	long __gu_addr;							\-	__gu_addr = (long) (ptr);					\+#define __get_user_common(val, size, ptr)				\+do {									\ 	switch (size) {							\-	case 1: __get_user_asm("lb", __gu_err); break;			\-	case 2: __get_user_asm("lh", __gu_err); break;			\-	case 4: __get_user_asm("lw", __gu_err); break;			\-	case 8: __GET_USER_DW(__gu_err); break;				\+	case 1: __get_user_asm(val, "lb", ptr); break;			\+	case 2: __get_user_asm(val, "lh", ptr); break;			\+	case 4: __get_user_asm(val, "lw", ptr); break;			\+	case 8: __GET_USER_DW(val, ptr); break;				\ 	default: __get_user_unknown(); break;				\ 	}								\-	 x = (__typeof__(*(ptr))) __gu_val;				\-	__gu_err;							\+} while (0)++#define __get_user_nocheck(x,ptr,size)					\+({									\+        long __gu_err;                                                  \+                                                                        \+        __get_user_common((x), size, ptr);                              \+        __gu_err;                                                       \ })  #define __get_user_check(x,ptr,size)					\ ({									\-	__typeof__(*(ptr)) __gu_val = 0;				\-	long __gu_addr = (long) (ptr);					\-	long __gu_err;							\-									\-	__gu_err = verify_area(VERIFY_READ, (void *) __gu_addr, size);	\-									\-	if (likely(!__gu_err)) {					\-		switch (size) {						\-		case 1: __get_user_asm("lb", __gu_err); break;		\-		case 2: __get_user_asm("lh", __gu_err); break;		\-		case 4: __get_user_asm("lw", __gu_err); break;		\-		case 8: __GET_USER_DW(__gu_err); break;			\-		default: __get_user_unknown(); break;			\-		}							\-	}								\-	x = (__typeof__(*(ptr))) __gu_val;				\-	 __gu_err;							\+        long __gu_err = -EFAULT;                                        \+        const __typeof__(*(ptr)) __user * __gu_ptr = (ptr);             \+                                                                        \+        if (likely(access_ok(VERIFY_READ,  __gu_ptr, size)))            \+                __get_user_common((x), size, __gu_ptr);                 \+                                                                        \+        __gu_err;                                                       \ }) -#define __get_user_asm(insn,__gu_err)					\-({									\+#define __get_user_asm(val, insn, addr)					\+{									\+	long __gu_tmp;							\+									\ 	__asm__ __volatile__(						\ 	"1:	" insn "	%1, %3				\n"	\ 	"2:							\n"	\@@ -289,21 +283,27 @@ 	"	.section __ex_table,\"a\"			\n"	\ 	"	"__UA_ADDR "\t1b, 3b				\n"	\ 	"	.previous					\n"	\-	: "=r" (__gu_err), "=r" (__gu_val)				\-	: "0" (__gu_err), "o" (__m(__gu_addr)), "i" (-EFAULT));		\-})+	: "=r" (__gu_err), "=r" (__gu_tmp)				\+	: "0" (0), "o" (__m(addr)), "i" (-EFAULT));			\+									\+	(val) = (__typeof__(*(addr))) __gu_tmp;				\+}  /*  * Get a long long 64 using 32 bit registers.  */-#define __get_user_asm_ll32(__gu_err)					\-({									\+#define __get_user_asm_ll32(val, addr)					\+{									\+	union {								\+		unsigned long long	l;				\+		__typeof__(*(addr))	t;				\+	} __gu_tmp;							\+									\ 	__asm__ __volatile__(						\-	"1:	lw	%1, %3					\n"	\-	"2:	lw	%D1, %4					\n"	\-	"	move	%0, $0					\n"	\+	"1:	lw	%1, (%3)				\n"	\+	"2:	lw	%D1, 4(%3)				\n"	\ 	"3:	.section	.fixup,\"ax\"			\n"	\-	"4:	li	%0, %5					\n"	\+	"4:	li	%0, %4					\n"	\ 	"	move	%1, $0					\n"	\ 	"	move	%D1, $0					\n"	\ 	"	j	3b					\n"	\@@ -312,10 +312,11 @@ 	"	" __UA_ADDR "	1b, 4b				\n"	\ 	"	" __UA_ADDR "	2b, 4b				\n"	\ 	"	.previous					\n"	\-	: "=r" (__gu_err), "=&r" (__gu_val)				\-	: "0" (__gu_err), "o" (__m(__gu_addr)),				\-	  "o" (__m(__gu_addr + 4)), "i" (-EFAULT));			\-})+	: "=r" (__gu_err), "=&r" (__gu_tmp.l)				\+	: "0" (0), "r" (addr), "i" (-EFAULT));				\+									\+	(val) = __gu_tmp.t;						\+}  extern void __get_user_unknown(void); @@ -324,23 +325,22 @@  * for 32 bit mode and old iron.  */ #ifdef __mips64-#define __PUT_USER_DW(__pu_val) __put_user_asm("sd", __pu_val)+#define __PUT_USER_DW(ptr) __put_user_asm("sd", ptr) #else-#define __PUT_USER_DW(__pu_val) __put_user_asm_ll32(__pu_val)+#define __PUT_USER_DW(ptr) __put_user_asm_ll32(ptr) #endif  #define __put_user_nocheck(x,ptr,size)					\ ({									\-	long __pu_err = 0;						\ 	__typeof__(*(ptr)) __pu_val;					\-	long __pu_addr;							\+	long __pu_err = 0;						\+									\ 	__pu_val = (x);							\-	__pu_addr = (long) (ptr);					\ 	switch (size) {							\-	case 1: __put_user_asm("sb", __pu_val); break;			\-	case 2: __put_user_asm("sh", __pu_val); break;			\-	case 4: __put_user_asm("sw", __pu_val); break;			\-	case 8: __PUT_USER_DW(__pu_val); break;				\+	case 1: __put_user_asm("sb", ptr); break;			\+	case 2: __put_user_asm("sh", ptr); break;			\+	case 4: __put_user_asm("sw", ptr); break;			\+	case 8: __PUT_USER_DW(ptr); break;				\ 	default: __put_user_unknown(); break;				\ 	}								\ 	__pu_err;							\@@ -348,26 +348,24 @@  #define __put_user_check(x,ptr,size)					\ ({									\+	__typeof__(*(ptr)) __user *__pu_addr = (ptr);			\ 	__typeof__(*(ptr)) __pu_val = (x);				\-	long __pu_addr = (long) (ptr);					\-	long __pu_err;							\-									\-	__pu_err = verify_area(VERIFY_WRITE, (void *) __pu_addr, size);	\+	long __pu_err = -EFAULT;					\ 									\-	if (likely(!__pu_err)) {					\+	if (likely(access_ok(VERIFY_WRITE,  __pu_addr, size))) {	\ 		switch (size) {						\-		case 1: __put_user_asm("sb", __pu_val); break;		\-		case 2: __put_user_asm("sh", __pu_val); break;		\-		case 4: __put_user_asm("sw", __pu_val); break;		\-		case 8: __PUT_USER_DW(__pu_val); break;			\+		case 1: __put_user_asm("sb", __pu_addr); break;		\+		case 2: __put_user_asm("sh", __pu_addr); break;		\+		case 4: __put_user_asm("sw", __pu_addr); break;		\+		case 8: __PUT_USER_DW(__pu_addr); break;		\ 		default: __put_user_unknown(); break;			\ 		}							\ 	}								\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -