__start_context.s

来自「Glibc 2.3.2源代码(解压后有100多M)」· S 代码 · 共 53 行

S
53
字号
/* Copyright (C) 2001 Free Software Foundation, Inc.   This file is part of the GNU C Library.   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public   License as published by the Free Software Foundation; either   version 2.1 of the License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA.  */#include <sysdep.h>#include <features.h>/* When a context set up by __makecontext() is activated, control   transfers to __start_context.  When we get here:	b1 = entry point of function to call	in0 = address of UCP to resume after function returns	in1 = global pointer for __start_context	out0 .. outN = arguments for function  */ENTRY(__start_context)	.prologue	alloc r2 = ar.pfs, 2, 0, 8, 0	.save rp, r4		// terminate call chain with a NULL rp	mov r4 = r0	;;	.body	br.call.sptk rp = b11:	mov gp = in1			// restore gp	cmp.ne p6,p0 = in0, r0		// uc_link != 0 ?	;;(p6)	mov out0 = in0(p6)	br.call.sptk rp = __setcontext.Lexit:	mov out0 = 0	br.call.sptk rp = exit1:	br.cond.sptk .LexitEND(__start_context)

⌨️ 快捷键说明

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