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