Cygwin: access: Fix X_OK behaviour for backup operators and admins
[newlib-cygwin.git] / newlib / libc / machine / csky / setjmp.S
blobb93687319eff0c167ad01bc7c29afd982cadbd36
1 /* Copyright (c) 2020  C-SKY Microsystems All rights reserved.
3    This copyrighted material is made available to anyone wishing to use,
4    modify, copy, or redistribute it subject to the terms and conditions
5    of the FreeBSD License.   This program is distributed in the hope that
6    it will be useful, but WITHOUT ANY WARRANTY expressed or implied,
7    including the implied warranties of MERCHANTABILITY or FITNESS FOR
8    A PARTICULAR PURPOSE.  A copy of this license is available at
9    http://www.opensource.org/licenses.
12         .section        .text
13         .align  3
14         .globl  setjmp
15         .type   setjmp,@function
16         .globl  longjmp
17         .type   longjmp,@function
19 setjmp:
21 #if defined(__CK801__)
22         stw     r4, (r0, 0)
23         stw     r5, (r0, 4)
24         stw     r6, (r0, 8)
25         stw     r7, (r0, 12)
26         stw     r8, (r0, 16)
27         stw     r15, (r0, 20)
28         stw     sp, (r0, 24)
29 #elif defined(__CK802__)
30         stm     r4-r11, (r0)
31         stw     r15, (r0, 32)
32         stw     sp, (r0, 36)
33 #else
34         stm     r4-r11, (r0)
35         stw     r15, (r0, 32)
36         stw     r16, (r0, 36)
37         stw     r17, (r0, 40)
38         stw     r26, (r0, 44)
39         stw     r27, (r0, 48)
40         stw     r28, (r0, 52)
41         stw     r29, (r0, 56)
42         stw     r30, (r0, 60)
43         stw     r31, (r0, 64)
44         stw     sp, (r0, 68)
45 #endif
46         movi    r0, 0
47         rts
49 longjmp:
50 #if defined(__CK801__)
51         ldw     r4, (r0, 0)
52         ldw     r5, (r0, 4)
53         ldw     r6, (r0, 8)
54         ldw     r7, (r0, 12)
55         ldw     r8, (r0, 16)
56         ldw     r15, (r0, 20)
57         ldw     sp, (r0, 24)
58 #elif defined(__CK802__)
59         ldm     r4-r11, (r0)
60         ldw     r15, (r0, 32)
61         ldw     sp, (r0, 36)
62 #else
63         ldm     r4-r11, (r0)
64         ldw     r15, (r0, 32)
65         ldw     r16, (r0, 36)
66         ldw     r17, (r0, 40)
67         ldw     r26, (r0, 44)
68         ldw     r27, (r0, 48)
69         ldw     r28, (r0, 52)
70         ldw     r29, (r0, 56)
71         ldw     r30, (r0, 60)
72         ldw     r31, (r0, 64)
73         ldw     sp, (r0, 68)
74 #endif
75         mov     r0, r1
76         cmpnei  r1, 0
77         bt      1f
78         movi    r0, 1
79 1:      rts