xref: /minix3/lib/libc/arch/or1k/sys/cerror.S (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1/*	$NetBSD: cerror.S,v 1.1 2014/09/03 19:34:26 matt Exp $	*/
2
3#include "SYS.h"
4#include "assym.h"
5
6#if defined(LIBC_SCCS) && !defined(lint)
7__RCSID("$NetBSD: cerror.S,v 1.1 2014/09/03 19:34:26 matt Exp $")
8#endif /* LIBC_SCCS && !lint */
9
10#ifndef _REENTRANT
11	.globl	_C_LABEL(errno)
12#endif
13#ifdef __PIC__
14	.protected _C_LABEL(__cerror)
15#endif
16
17ENTRY(__cerror)
18#ifdef _REENTRANT
19	l.sw	-4(r1),r3
20	l.sw	-8(r1),lr
21	l.sw	-16(r1),r1
22	l.addi	r1,r1,-16
23#ifdef __PIC__
24	l.sw	-12(r1),r16
25	PIC_GOTSETUP(r16)
26#endif
27	l.jal	PLT(_C_LABEL(__errno))	# needs got in r16
28	l.nop
29	l.addi	r1,r1,16
30#ifdef __PIC__
31	l.lwz	r16,-12(r1)
32#endif
33	l.lwz	lr,-8(r1)
34	l.lwz	r3,-4(r1)
35#else
36#ifdef __PIC__
37	l.or	r8,r9,r0
38	PIC_GOTSETUP(r4)
39	l.lwz	r11,got(_C_LABEL(errno))(r4)
40	l.or	r9,r8,r0
41#else
42	l.movi	r11,hi(_C_LABEL(errno))
43	l.ori	r11,lo(_C_LABEL(errno))
44#endif /* __PIC__ */
45#endif /* _REENTRANT */
46	l.sw	0(r11),r3
47	l.addi	r11,r0,-1
48	l.addi	r12,r0,-1
49	l.jr	lr
50	l.nop
51END(__cerror)
52