cerror.S revision 1.6
11.6Smatt/* $NetBSD: cerror.S,v 1.6 2002/07/30 06:07:59 matt Exp $ */ 21.1Sthorpej 31.1Sthorpej#include <machine/asm.h> 41.1Sthorpej#include "SYS.h" 51.1Sthorpej 61.5Skleink#ifndef _REENTRANT 71.5Skleink .globl _C_LABEL(errno) 81.5Skleink#endif 91.1Sthorpej 101.4SkleinkENTRY(__cerror) 111.5Skleink#ifdef _REENTRANT 121.6Smatt mflr %r0 131.6Smatt stwu %r1,-16(%r1) # allocate new stack frame 141.6Smatt stw %r0,20(%r1) 151.6Smatt stw %r31,8(%r1) 161.6Smatt mr %r31,%r3 # stash away in callee-saved register 171.5Skleink bl PIC_PLT(_C_LABEL(__errno)) 181.6Smatt stw %r31,0(%r3) 191.6Smatt lwz %r0,20(%r1) 201.6Smatt lwz %r31,8(%r1) 211.6Smatt mtlr %r0 221.6Smatt la %r1,16(%r1) 231.5Skleink#else 241.1Sthorpej#ifdef PIC 251.6Smatt mflr %r10 261.3Stsubai bl _GLOBAL_OFFSET_TABLE_@local-4 271.6Smatt mflr %r4 281.6Smatt lwz %r4,_C_LABEL(errno)@got(%r4) 291.6Smatt stw %r3,0(%r4) 301.6Smatt mtlr %r10 311.1Sthorpej#else 321.6Smatt lis %r4,_C_LABEL(errno)@ha 331.6Smatt stw %r3,_C_LABEL(errno)@l(%r4) 341.5Skleink#endif /* PIC */ 351.5Skleink#endif /* _REENTRANT */ 361.6Smatt li %r3,-1 371.6Smatt li %r4,-1 381.1Sthorpej blr 39