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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libc/] [machine/] [mips/] [setjmp.S] - Rev 39

Go to most recent revision | Compare with Previous | Blame | View Log

/* This is a simple version of setjmp and longjmp.

   This version does NOT save the floating point register, which is
   wrong, but I don't know how to cleanly handle machines without a
   floating point coprocessor.

   Ian Lance Taylor, Cygnus Support, 13 May 1993.  */

#ifdef __mips16
/* This file contains 32 bit assembly code.  */
        .set nomips16
#endif

/* int setjmp (jmp_buf);  */
        .globl  setjmp
        .ent    setjmp
setjmp:
        .frame  $sp,0,$31

        sw      $16,0($4)       /* $s0 */
        sw      $17,4($4)       /* $s1 */
        sw      $18,8($4)       /* $s2 */
        sw      $19,12($4)      /* $s3 */
        sw      $20,16($4)      /* $s4 */
        sw      $21,20($4)      /* $s5 */
        sw      $22,24($4)      /* $s6 */
        sw      $23,28($4)      /* $s7 */
        sw      $30,32($4)      /* $s8 */

        sw      $sp,36($4)
        sw      $31,40($4)

        move    $2,$0

        j       $31

        .end    setjmp

/* volatile void longjmp (jmp_buf, int);  */
        .globl  longjmp
        .ent    longjmp
longjmp:
        .frame  $sp,0,$31

        lw      $16,0($4)       /* $s0 */
        lw      $17,4($4)       /* $s1 */
        lw      $18,8($4)       /* $s2 */
        lw      $19,12($4)      /* $s3 */
        lw      $20,16($4)      /* $s4 */
        lw      $21,20($4)      /* $s5 */
        lw      $22,24($4)      /* $s6 */
        lw      $23,28($4)      /* $s7 */
        lw      $30,32($4)      /* $s8 */

        lw      $sp,36($4)
        lw      $31,40($4)

        bne     $5,$0,1f
        li      $5,1
1:
        move    $2,$5

        j       $31

        .end longjmp

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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