cerror.S revision 1.7
11.7Smatt/* $NetBSD: cerror.S,v 1.7 2011/01/15 07:31:13 matt Exp $ */ 21.1Sthorpej 31.1Sthorpej#include "SYS.h" 41.7Smatt#include "assym.h" 51.7Smatt 61.7Smatt#if defined(LIBC_SCCS) && !defined(lint) 71.7Smatt__RCSID("$NetBSD: cerror.S,v 1.7 2011/01/15 07:31:13 matt Exp $") 81.7Smatt#endif /* LIBC_SCCS && !lint */ 91.1Sthorpej 101.5Skleink#ifndef _REENTRANT 111.5Skleink .globl _C_LABEL(errno) 121.5Skleink#endif 131.7Smatt#ifdef PIC 141.7Smatt .hidden _C_LABEL(__cerror) 151.7Smatt#endif 161.1Sthorpej 171.4SkleinkENTRY(__cerror) 181.5Skleink#ifdef _REENTRANT 191.6Smatt mflr %r0 201.7Smatt stwu %r1,-CALLFRAMELEN(%r1) # allocate new stack frame 211.7Smatt stw %r0,CALLFRAMELEN+CALLFRAME_LR(%r1) 221.7Smatt stw %r31,CALLFRAME_R31(%r1) 231.7Smatt mr %r31,%r3 # stash away in callee-saved register 241.5Skleink bl PIC_PLT(_C_LABEL(__errno)) 251.6Smatt stw %r31,0(%r3) 261.7Smatt lwz %r0,CALLFRAMELEN+CALLFRAME_LR(%r1) 271.7Smatt lwz %r31,CALLFRAME_R31(%r1) 281.6Smatt mtlr %r0 291.7Smatt addi %r1,%r1,CALLFRAMELEN 301.5Skleink#else 311.1Sthorpej#ifdef PIC 321.6Smatt mflr %r10 331.3Stsubai bl _GLOBAL_OFFSET_TABLE_@local-4 341.6Smatt mflr %r4 351.6Smatt lwz %r4,_C_LABEL(errno)@got(%r4) 361.6Smatt stw %r3,0(%r4) 371.6Smatt mtlr %r10 381.1Sthorpej#else 391.6Smatt lis %r4,_C_LABEL(errno)@ha 401.6Smatt stw %r3,_C_LABEL(errno)@l(%r4) 411.5Skleink#endif /* PIC */ 421.5Skleink#endif /* _REENTRANT */ 431.6Smatt li %r3,-1 441.6Smatt li %r4,-1 451.1Sthorpej blr 461.7SmattEND(__cerror) 47