setjmp.s

来自「klibc精简化的c程序库」· S 代码 · 共 86 行

S
86
字号
## arch/ppc64/setjmp.S## Basic setjmp/longjmp implementation#	.text	.align 4	.section ".opd","aw"setjmp:	.quad	.setjmp,.TOC.@tocbase,0	.previous	.size	setjmp,24	.type	.setjmp,@function	.globl	setjmp	.globl	.setjmp.setjmp:	mflr	%r11			/* save return address */	mfcr	%r12			/* save condition register */	std	%r2,0(%r3)		/* save TOC pointer (not needed) */	stdu	%r1,8(%r3)		/* save stack pointer */	stdu	%r11,8(%r3)	stdu	%r12,8(%r3)	stdu	%r13,8(%r3)		/* save caller saved regs */	stdu	%r14,8(%r3)	stdu	%r15,8(%r3)	stdu	%r16,8(%r3)	stdu	%r17,8(%r3)	stdu	%r18,8(%r3)	stdu	%r19,8(%r3)	stdu	%r20,8(%r3)	stdu	%r21,8(%r3)	stdu	%r22,8(%r3)	stdu	%r23,8(%r3)	stdu	%r24,8(%r3)	stdu	%r25,8(%r3)	stdu	%r26,8(%r3)	stdu	%r27,8(%r3)	stdu	%r28,8(%r3)	stdu	%r29,8(%r3)	stdu	%r30,8(%r3)	std	%r31,8(%r3)	li	%r3,0			/* indicate success */	blr				/* return */	.size .setjmp,.-.setjmp	.section ".opd","aw"longjmp:	.quad	.longjmp,.TOC.@tocbase,0	.previous	.size	longjmp,24	.type	.longjmp,@function	.globl	longjmp	.globl	.longjmp.longjmp:	ld	%r2,0(%r3)		/* restore TOC pointer (not needed) */	ldu	%r1,8(%r3)		/* restore stack */	ldu	%r11,8(%r3)	ldu	%r12,8(%r3)	ldu	%r13,8(%r3)		/* restore caller saved regs */	ldu	%r14,8(%r3)	ldu	%r15,8(%r3)	ldu	%r16,8(%r3)	ldu	%r17,8(%r3)	ldu	%r18,8(%r3)	ldu	%r19,8(%r3)	ldu	%r20,8(%r3)	ldu	%r21,8(%r3)	ldu	%r22,8(%r3)	ldu	%r23,8(%r3)	ldu	%r24,8(%r3)	ldu	%r25,8(%r3)	ldu	%r26,8(%r3)	ldu	%r27,8(%r3)	ldu	%r28,8(%r3)	ldu	%r29,8(%r3)	ldu	%r30,8(%r3)	ld	%r31,8(%r3)	mtlr	%r11			/* restore LR */	mtcr	%r12			/* restore CR */	mr	%r3,%r4			/* get return value */	blr				/* return */	.size .longjmp,.-.longjmp

⌨️ 快捷键说明

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