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

📄 segment.h

📁 arm平台上的uclinux系统全部源代码
💻 H
字号:
/* * linux/include/asm-arm/proc-armv/segment.h * * Copyright (C) 1996 Russell King */#ifndef __ASM_PROC_SEGMENT_H#define __ASM_PROC_SEGMENT_Hstatic __inline__ void __put_user(unsigned long x, void * y, int size){	switch (size) {	case 1:	__asm__(       "teq	%2, #0\n"       "strnebt	%0, [%1]\n"       "streqb	%0, [%1]\n"	: : "r" (x), "r" (y), "r" (current->tss.fs)	: "lr", "cc");	break;	case 2:	{ register unsigned long tmp1 = x; void *tmp2 = y;	__asm__ __volatile__(       "teq	%4, #0\n"       "strnebt	%0, [%1], #1\n"       "streqb	%0, [%1], #1\n"       "mov	%0, %0, lsr #8\n"       "strnebt	%0, [%1]\n"       "streqb	%0, [%1]\n"	: "=&r" (tmp1), "=&r" (tmp2)	: "0" (tmp1), "1" (tmp2), "r" (current->tss.fs)	: "lr", "cc");	}	break;	case 4:	__asm__(       "teq	%2, #0\n"       "strnet	%0, [%1]\n"       "streq	%0, [%1]\n"	: : "r" (x), "r" (y), "r" (current->tss.fs)	: "lr", "cc");	break;	default:	bad_user_access_length ();	}}static __inline__ unsigned long __get_user(const void *y, int size){	unsigned long result;	switch (size) {	case 1:	__asm__(       "teq	%2, #0\n"       "ldrnebt	%0, [%1]\n"       "ldreqb	%0, [%1]\n"	: "=r" (result)	: "r" (y), "r" (current->tss.fs)	: "lr", "cc");	return result;	case 2:	__asm__(       "teq	%2, #0\n"       "ldrnet	%0, [%1]\n"       "ldreq	%0, [%1]\n"       "mov	%0, %0, lsl #16\n"       "mov	%0, %0, lsr #16\n"	: "=&r" (result)	: "r" (y), "r" (current->tss.fs)	: "lr", "cc");	return result;	case 4:	__asm__(       "teq	%2, #0\n"       "ldrnet	%0, [%1]\n"       "ldreq	%0, [%1]\n"	: "=r" (result)	: "r" (y), "r" (current->tss.fs)	: "lr", "cc");	return result;	default:	return bad_user_access_length ();	}}		#endif /* __ASM_PROC_SEGMENT_H */

⌨️ 快捷键说明

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