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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [newlib/] [libc/] [machine/] [fr30/] [setjmp.S] - Rev 158

Compare with Previous | Blame | View Log

# setjmp/longjmp for FR30.  The jmpbuf looks like this:
#       
# Register      jmpbuf offset
# R8            0x00
# R9            0x04
# R10           0x08
# R11           0x0c
# R12           0x10
# R13           0x14
# R14 (FP)      0x18
# R15 (SP)      0x1c
# RP            0x20
        
.macro save reg
        st      \reg,@r4
        add     #4,r4
.endm
        
.macro restore reg
        ld      @r4,\reg
        add     #4,r4
.endm


        .text
        .global setjmp
setjmp:
        save    r8
        save    r9
        save    r10
        save    r11
        save    r12
        save    r13
        save    r14
        save    r15
        mov     RP,r5
        st      r5,@r4

# Return 0 to caller.
        ldi:8   #0,r4
        ret

        .global longjmp
longjmp:
        restore r8
        restore r9
        restore r10
        restore r11
        restore r12
        restore r13
        restore r14
        restore r15
        ld      @r4,r4
        mov     r4,RP

# If caller attempted to return 0, return 1 instead.

        mov     r5,r4
        or      r4,r4
        bne     1f
        ldi:8   #1,r4
    1:
        ret
        

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.