xref: /netbsd/lib/libc/arch/powerpc/sys/cerror.S (revision bf9ec67e)
1/*	$NetBSD: cerror.S,v 1.5 2000/01/27 14:58:48 kleink Exp $	*/
2
3#include <machine/asm.h>
4#include "SYS.h"
5
6#ifndef _REENTRANT
7	.globl	_C_LABEL(errno)
8#endif
9
10ENTRY(__cerror)
11#ifdef _REENTRANT
12	mflr	0
13	stwu	1,-16(1)		# allocate new stack frame
14	stw	0,20(1)
15	stw	31,8(1)
16	mr	31,3			# stash away in callee-saved register
17	bl	PIC_PLT(_C_LABEL(__errno))
18	stw	31,0(3)
19	lwz	0,20(1)
20	lwz	31,8(1)
21	mtlr	0
22	la	1,16(1)
23#else
24#ifdef PIC
25	mflr	10
26	bl	_GLOBAL_OFFSET_TABLE_@local-4
27	mflr	4
28	lwz	4,_C_LABEL(errno)@got(4)
29	stw	3,0(4)
30	mtlr	10
31#else
32	lis	4,_C_LABEL(errno)@ha
33	stw	3,_C_LABEL(errno)@l(4)
34#endif /* PIC */
35#endif /* _REENTRANT */
36	li	3,-1
37	li	4,-1
38	blr
39