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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib-1.10.0/] [newlib/] [libc/] [machine/] [m32r/] [setjmp.S] - Diff between revs 1008 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 1008 Rev 1765
# setjmp/longjmp for m32r.  The jmpbuf looks like this:
# setjmp/longjmp for m32r.  The jmpbuf looks like this:
#
#
# Register      jmpbuf offset
# Register      jmpbuf offset
# reserved      0x00
# reserved      0x00
# R8            0x04
# R8            0x04
# R9            0x08
# R9            0x08
# R10           0x0c
# R10           0x0c
# R11           0x10
# R11           0x10
# R12           0x14
# R12           0x14
# R13 (FP)      0x18
# R13 (FP)      0x18
# R14 (LR)      0x1c
# R14 (LR)      0x1c
# R15 (SP)      0x20
# R15 (SP)      0x20
# reserved      0x24
# reserved      0x24
        .text
        .text
        .global setjmp
        .global setjmp
setjmp:
setjmp:
        ;addi   r0, #-4         ; commented out as first word is reserved
        ;addi   r0, #-4         ; commented out as first word is reserved
        ;st     r1, @+r0
        ;st     r1, @+r0
        st      r8, @+r0
        st      r8, @+r0
        st      r9, @+r0
        st      r9, @+r0
        st      r10, @+r0
        st      r10, @+r0
        st      r11, @+r0
        st      r11, @+r0
        st      r12, @+r0
        st      r12, @+r0
        st      r13, @+r0
        st      r13, @+r0
        st      r14, @+r0
        st      r14, @+r0
        st      r15, @+r0
        st      r15, @+r0
# Return 0 to caller.
# Return 0 to caller.
        ldi     r0, #0
        ldi     r0, #0
        jmp     lr
        jmp     lr
        .global longjmp
        .global longjmp
longjmp:
longjmp:
        addi    r0, #4          ; first word is reserved
        addi    r0, #4          ; first word is reserved
        ;ld     r1, @r0+
        ;ld     r1, @r0+
        ld      r8, @r0+
        ld      r8, @r0+
        ld      r9, @r0+
        ld      r9, @r0+
        ld      r10, @r0+
        ld      r10, @r0+
        ld      r11, @r0+
        ld      r11, @r0+
        ld      r12, @r0+
        ld      r12, @r0+
        ld      r13, @r0+
        ld      r13, @r0+
        ld      r2, @r0+        ; return address
        ld      r2, @r0+        ; return address
        ld      r15, @r0+
        ld      r15, @r0+
# If caller attempted to return 0, return 1 instead.
# If caller attempted to return 0, return 1 instead.
        mv      r0, r1
        mv      r0, r1
        bnez    r0, .Lnonzero
        bnez    r0, .Lnonzero
        ldi     r0, #1
        ldi     r0, #1
.Lnonzero:
.Lnonzero:
        jmp     r2
        jmp     r2
 
 

powered by: WebSVN 2.1.0

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