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