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/] [mt/] [setjmp.S] - Rev 158

Compare with Previous | Blame | View Log

# setjmp/longjmp for mt.
# 
# The jmpbuf looks like this:
#       
# Register      jmpbuf offset
# R0            ---             --
# R1            0x4              4
# R2            0x8              8
# R3            0xc             12
# R4            0x10            16
# R5            0x14            20
# R6            0x18            24
# R7            0x1c            28
# R8            0x20            32
# R9            ----            --
# R10           ----            --
# R11           0x2c            44
# R12           0x30            48
# R13           0x34            52
# R14           0x38            56
# R15           0x3c            60
#
# R1 contains the pointer to jmpbuf
        .text
        .global setjmp
        .type   setjmp ,@function
setjmp:

        stw     r1, r1, #4
        or      r0, r0, r0
        stw     r2, r1, #8
        or      r0, r0, r0
        stw     r3, r1, #12
        or      r0, r0, r0
        stw     r4, r1, #16
        or      r0, r0, r0
        stw     r5, r1, #20
        or      r0, r0, r0
        stw     r6, r1, #24
        or      r0, r0, r0
        stw     r7, r1, #28
        or      r0, r0, r0
        stw     r8, r1, #32
        or      r0, r0, r0
        stw     r11, r1, #44
        or      r0, r0, r0
        stw     r12, r1, #48
        or      r0, r0, r0
        stw     r13, r1, #52
        or      r0, r0, r0
        stw     r14, r1, #56
        or      r0, r0, r0
        stw     r15, r1, #60

        jal     r0, r14
        addi    r11, r0, #0
.Lend1:
        .size   setjmp,.Lend1-setjmp

        .global longjmp
        .type   longjmp,@function
longjmp:
        or      r9, r1, r1
        or      r11, r2, r2
        ldw     r1, r1, #4
        or      r0, r0, r0
        ldw     r2, r1, #8
        or      r0, r0, r0
        ldw     r3, r1, #12
        or      r0, r0, r0
        ldw     r4, r1, #16
        or      r0, r0, r0
        ldw     r5, r1, #20
        or      r0, r0, r0
        ldw     r6, r1, #24
        or      r0, r0, r0
        ldw     r7, r1, #28
        or      r0, r0, r0
        ldw     r8, r1, #32
        or      r0, r0, r0


        ldw     r12, r1, #48
        or      r0, r0, r0
        ldw     r13, r1, #52
        or      r0, r0, r0
        ldw     r14, r1, #56
        or      r0, r0, r0
        ldw     r15, r1, #60

        brne    r0, r11, .L01
        or      r0, r0, r0

        addi    r11, r0, #1
.L01:
        jal     r0, r14
        or      r0, r0, r0
.Lend2:
        .size   longjmp,.Lend2-longjmp2

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.