xref: /minix3/lib/libc/arch/powerpc/sys/cerror.S (revision 84d9c625bfea59e274550651111ae9edfdc40fbd)
1*84d9c625SLionel Sambuc/*	$NetBSD: cerror.S,v 1.11 2013/09/12 15:36:15 joerg Exp $	*/
22fe8fb19SBen Gras
32fe8fb19SBen Gras#include "SYS.h"
42fe8fb19SBen Gras#include "assym.h"
52fe8fb19SBen Gras
62fe8fb19SBen Gras#if defined(LIBC_SCCS) && !defined(lint)
7*84d9c625SLionel Sambuc__RCSID("$NetBSD: cerror.S,v 1.11 2013/09/12 15:36:15 joerg Exp $")
82fe8fb19SBen Gras#endif /* LIBC_SCCS && !lint */
92fe8fb19SBen Gras
102fe8fb19SBen Gras#ifndef _REENTRANT
112fe8fb19SBen Gras	.globl	_C_LABEL(errno)
122fe8fb19SBen Gras#endif
13*84d9c625SLionel Sambuc#ifdef __PIC__
14e415d488SLionel Sambuc	.protected _C_LABEL(__cerror)
152fe8fb19SBen Gras#endif
162fe8fb19SBen Gras
172fe8fb19SBen GrasENTRY(__cerror)
182fe8fb19SBen Gras#ifdef _REENTRANT
192fe8fb19SBen Gras	mflr	%r0
202fe8fb19SBen Gras	stwu	%r1,-CALLFRAMELEN(%r1)		# allocate new stack frame
212fe8fb19SBen Gras	stw	%r0,CALLFRAMELEN+CALLFRAME_LR(%r1)
22*84d9c625SLionel Sambuc#ifdef __PIC__
232fe8fb19SBen Gras	stw	%r30,CALLFRAME_R30(%r1)
242fe8fb19SBen Gras	PIC_TOCSETUP(__cerror, %r30)
252fe8fb19SBen Gras#endif
262fe8fb19SBen Gras	stw	%r31,CALLFRAME_R31(%r1)
272fe8fb19SBen Gras	mr	%r31,%r3		# stash away in callee-saved register
282fe8fb19SBen Gras	bl	PIC_PLT(_C_LABEL(__errno))
292fe8fb19SBen Gras	stw	%r31,0(%r3)
302fe8fb19SBen Gras	lwz	%r0,CALLFRAMELEN+CALLFRAME_LR(%r1)
312fe8fb19SBen Gras	lwz	%r31,CALLFRAME_R31(%r1)
32*84d9c625SLionel Sambuc#ifdef __PIC__
332fe8fb19SBen Gras	lwz	%r30,CALLFRAME_R30(%r1)
342fe8fb19SBen Gras#endif
352fe8fb19SBen Gras	mtlr	%r0
362fe8fb19SBen Gras	addi	%r1,%r1,CALLFRAMELEN
372fe8fb19SBen Gras#else
38*84d9c625SLionel Sambuc#ifdef __PIC__
392fe8fb19SBen Gras	mflr	%r10
402fe8fb19SBen Gras	PIC_GOTSETUP(%r4)
412fe8fb19SBen Gras	lwz	%r4,_C_LABEL(errno)@got(%r4)
422fe8fb19SBen Gras	stw	%r3,0(%r4)
432fe8fb19SBen Gras	mtlr	%r10
442fe8fb19SBen Gras#else
452fe8fb19SBen Gras	lis	%r4,_C_LABEL(errno)@ha
462fe8fb19SBen Gras	stw	%r3,_C_LABEL(errno)@l(%r4)
47*84d9c625SLionel Sambuc#endif /* __PIC__ */
482fe8fb19SBen Gras#endif /* _REENTRANT */
492fe8fb19SBen Gras	li	%r3,-1
502fe8fb19SBen Gras	li	%r4,-1
512fe8fb19SBen Gras	blr
522fe8fb19SBen GrasEND(__cerror)
53