sclow.s

来自「linux 内核源代码」· S 代码 · 共 87 行

S
87
字号
/* sclow.S: Low level special syscall handling. *          Basically these are cases where we can completely *          handle the system call without saving any state *          because we know that the process will not sleep. * * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */#include <asm/ptrace.h>#include <asm/asm-offsets.h>#include <asm/errno.h>#include <asm/winmacro.h>#include <asm/thread_info.h>#include <asm/psr.h>#include <asm/page.h>#define CC_AND_RETT  \	set	PSR_C, %l4; \	andn	%l0, %l4, %l4; \	wr	%l4, 0x0, %psr; \	nop; nop; nop; \	jmp	%l2; \	rett	%l2 + 4;#define SC_AND_RETT  \	set	PSR_C, %l4; \	or	%l0, %l4, %l4; \	wr	%l4, 0x0, %psr; \	nop; nop; nop; \	jmp	%l2; \	rett	%l2 + 4;#define LABEL(func)  func##_low	.globl	LABEL(sunosnop)LABEL(sunosnop):	CC_AND_RETT#if (ASIZ_task_uid == 2 && ASIZ_task_euid == 2)	.globl	LABEL(sunosgetuid)LABEL(sunosgetuid):	LOAD_CURRENT(l4, l5)	ld	[%l4 + TI_TASK], %l4	lduh	[%l4 + AOFF_task_uid], %i0	lduh	[%l4 + AOFF_task_euid], %i1	CC_AND_RETT#endif#if (ASIZ_task_gid == 2 && ASIZ_task_egid == 2)	.globl	LABEL(sunosgetgid)LABEL(sunosgetgid):	LOAD_CURRENT(l4, l5)	ld	[%l4 + TI_TASK], %l4	lduh	[%l4 + AOFF_task_gid], %i0	lduh	[%l4 + AOFF_task_egid], %i1	CC_AND_RETT#endif	.globl	LABEL(sunosmctl)LABEL(sunosmctl):	mov	0, %i0	CC_AND_RETT	.globl	LABEL(sunosgdtsize)LABEL(sunosgdtsize):		mov	256, %i0	CC_AND_RETT	.globl	LABEL(getpagesize)LABEL(getpagesize):	set	PAGE_SIZE, %i0	CC_AND_RETT	/* XXX sys_nice() XXX */	/* XXX sys_setpriority() XXX */	/* XXX sys_getpriority() XXX */	/* XXX sys_setregid() XXX */	/* XXX sys_setgid() XXX */	/* XXX sys_setreuid() XXX */	/* XXX sys_setuid() XXX */	/* XXX sys_setfsuid() XXX */	/* XXX sys_setfsgid() XXX */	/* XXX sys_setpgid() XXX */	/* XXX sys_getpgid() XXX */	/* XXX sys_setsid() XXX */	/* XXX sys_getsid() XXX */

⌨️ 快捷键说明

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