Sync usage with man page.
[netbsd-mini2440.git] / lib / libc / arch / powerpc / sys / cerror.S
blobb1e0081b7a64f35a5e092690edec9047422e20ad
1 /*      $NetBSD: cerror.S,v 1.5 2000/01/27 14:58:48 kleink Exp $        */
3 #include <machine/asm.h>
4 #include "SYS.h"
6 #ifndef _REENTRANT
7         .globl  _C_LABEL(errno)
8 #endif
10 ENTRY(__cerror)
11 #ifdef _REENTRANT
12         mflr    %r0
13         stwu    %r1,-16(%r1)            # allocate new stack frame
14         stw     %r0,20(%r1)
15         stw     %r31,8(%r1)
16         mr      %r31,%r3                # stash away in callee-saved register
17         bl      PIC_PLT(_C_LABEL(__errno))
18         stw     %r31,0(%r3)
19         lwz     %r0,20(%r1)
20         lwz     %r31,8(%r1)
21         mtlr    %r0
22         la      %r1,16(%r1)
23 #else
24 #ifdef PIC
25         mflr    %r10
26         bl      _GLOBAL_OFFSET_TABLE_@local-4
27         mflr    %r4
28         lwz     %r4,_C_LABEL(errno)@got(%r4)
29         stw     %r3,0(%r4)
30         mtlr    %r10
31 #else
32         lis     %r4,_C_LABEL(errno)@ha
33         stw     %r3,_C_LABEL(errno)@l(%r4)
34 #endif /* PIC */
35 #endif /* _REENTRANT */
36         li      %r3,-1
37         li      %r4,-1
38         blr