OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libc/] [machine/] [mips/] [setjmp.S] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 39 lampret
/* This is a simple version of setjmp and longjmp.
2
 
3
   This version does NOT save the floating point register, which is
4
   wrong, but I don't know how to cleanly handle machines without a
5
   floating point coprocessor.
6
 
7
   Ian Lance Taylor, Cygnus Support, 13 May 1993.  */
8
 
9
#ifdef __mips16
10
/* This file contains 32 bit assembly code.  */
11
        .set nomips16
12
#endif
13
 
14
/* int setjmp (jmp_buf);  */
15
        .globl  setjmp
16
        .ent    setjmp
17
setjmp:
18
        .frame  $sp,0,$31
19
 
20
        sw      $16,0($4)       /* $s0 */
21
        sw      $17,4($4)       /* $s1 */
22
        sw      $18,8($4)       /* $s2 */
23
        sw      $19,12($4)      /* $s3 */
24
        sw      $20,16($4)      /* $s4 */
25
        sw      $21,20($4)      /* $s5 */
26
        sw      $22,24($4)      /* $s6 */
27
        sw      $23,28($4)      /* $s7 */
28
        sw      $30,32($4)      /* $s8 */
29
 
30
        sw      $sp,36($4)
31
        sw      $31,40($4)
32
 
33
        move    $2,$0
34
 
35
        j       $31
36
 
37
        .end    setjmp
38
 
39
/* volatile void longjmp (jmp_buf, int);  */
40
        .globl  longjmp
41
        .ent    longjmp
42
longjmp:
43
        .frame  $sp,0,$31
44
 
45
        lw      $16,0($4)       /* $s0 */
46
        lw      $17,4($4)       /* $s1 */
47
        lw      $18,8($4)       /* $s2 */
48
        lw      $19,12($4)      /* $s3 */
49
        lw      $20,16($4)      /* $s4 */
50
        lw      $21,20($4)      /* $s5 */
51
        lw      $22,24($4)      /* $s6 */
52
        lw      $23,28($4)      /* $s7 */
53
        lw      $30,32($4)      /* $s8 */
54
 
55
        lw      $sp,36($4)
56
        lw      $31,40($4)
57
 
58
        bne     $5,$0,1f
59
        li      $5,1
60
1:
61
        move    $2,$5
62
 
63
        j       $31
64
 
65
        .end longjmp

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.