source: trunk/libs/newlib/src/newlib/libc/machine/moxie/setjmp.S @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 2.3 KB
Line 
1/* A setjmp.c for Moxie
2   Copyright (C) 2009  Anthony Green
3
4   The authors hereby grant permission to use, copy, modify, distribute,
5   and license this software and its documentation for any purpose, provided
6   that existing copyright notices are retained in all copies and that this
7   notice is included verbatim in any distributions. No written agreement,
8   license, or royalty fee is required for any of the authorized uses.
9   Modifications to this software may be copyrighted by their authors
10   and need not follow the licensing terms described here, provided that
11   the new terms are clearly indicated on the first page of each file where
12   they apply.  */
13
14# setjmp/longjmp for moxie.  The jmpbuf looks like this:
15#       
16# Register      jmpbuf offset
17#   $r0           0x00
18#   $r1           0x04
19#   $r2           0x08
20#   $r3           0x0c
21#   $r4           0x10
22#   $r5           0x14
23#   $r6           0x18
24#   $r7           0x1c
25#   $r8           0x20
26#   $r9           0x24
27#   $r10          0x28
28#   $r11          0x2c
29#   $r12          0x30
30#   $r13          0x34
31#   $fp           0x38
32#   $sp           0x3c
33
34        .text
35        .global setjmp
36        .type   setjmp,@function
37setjmp:
38        st.l    ($r0),     $r0
39        sto.l   0x04($r0), $r1
40        sto.l   0x08($r0), $r2
41        sto.l   0x0c($r0), $r3
42        sto.l   0x10($r0), $r4
43        sto.l   0x14($r0), $r5
44        sto.l   0x18($r0), $r6
45        sto.l   0x1c($r0), $r7
46        sto.l   0x20($r0), $r8
47        sto.l   0x24($r0), $r9
48        sto.l   0x28($r0), $r10
49        sto.l   0x2c($r0), $r11
50        sto.l   0x30($r0), $r12
51        sto.l   0x34($r0), $r13
52        sto.l   0x38($r0), $sp
53        sto.l   0x3c($r0), $fp
54        xor     $r0, $r0
55        ret
56.Lend1:
57        .size   setjmp,.Lend1-setjmp
58
59        .global longjmp
60        .type   longjmp,@function
61longjmp:
62        ldi.l   $r2, 0x00
63        cmp     $r1, $r2
64        beq     .Lreturn1
65        ldo.l   $r1, 0x04($r0)
66        ldo.l   $r2, 0x08($r0)
67        ldo.l   $r3, 0x0c($r0)
68        ldo.l   $r4, 0x10($r0)
69        ldo.l   $r5, 0x14($r0)
70        ldo.l   $r6, 0x18($r0)
71        ldo.l   $r7, 0x1c($r0)
72        ldo.l   $r8, 0x20($r0)
73        ldo.l   $r9, 0x24($r0)
74        ldo.l   $r10, 0x28($r0)
75        ldo.l   $r11, 0x2c($r0)
76        ldo.l   $r12, 0x30($r0)
77        ldo.l   $r13, 0x34($r0)
78        ldo.l   $sp, 0x38($r0)
79        ldo.l   $fp, 0x3c($r0)
80        mov     $r0, $r1
81        ret
82.Lreturn1:
83        ldo.l   $r1, 0x04($r0)
84        ldo.l   $r2, 0x08($r0)
85        ldo.l   $r3, 0x0c($r0)
86        ldo.l   $r4, 0x10($r0)
87        ldo.l   $r5, 0x14($r0)
88        ldo.l   $r6, 0x18($r0)
89        ldo.l   $r7, 0x1c($r0)
90        ldo.l   $r8, 0x20($r0)
91        ldo.l   $r9, 0x24($r0)
92        ldo.l   $r10, 0x28($r0)
93        ldo.l   $r11, 0x2c($r0)
94        ldo.l   $r12, 0x30($r0)
95        ldo.l   $r13, 0x34($r0)
96        ldo.l   $sp, 0x38($r0)
97        ldo.l   $fp, 0x3c($r0)
98        ldi.l   $r0, 0x01
99        ret
100.Lend2:
101        .size   longjmp,.Lend2-longjmp
Note: See TracBrowser for help on using the repository browser.