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

Subversion Repositories or1k

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

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

Line No. Rev Author Line
1 39 lampret
; setjmp/longjmp for D10V.  The jmpbuf looks like this:
2
;
3
; Register              jmpbuf offset
4
; R6                    0x00
5
; R7                    0x02
6
; R8                    0x04
7
; R9                    0x06
8
; R10                   0x08
9
; R11                   0x0a
10
; R13 (return address)  0x0c
11
; R15 (SP)              0x0E
12
 
13
        .text
14
        .globl  setjmp
15
        .type   setjmp,@function
16
        .stabs  "setjmp.S",100,0,0,setjmp
17
        .stabs  "int:t(0,1)=r(0,1);-65536;65535;",128,0,0,0
18
        .stabs  "setjmp:F(0,1)",36,0,1,setjmp
19
 
20
setjmp:
21
; Address of jmpbuf is passed in R0.  Save the appropriate registers.
22
        st2w    r6, @r0+
23
        st2w    r8, @r0+
24
        st2w    r10, @r0+
25
        st      r13, @r0+
26
        st      r15, @r0+
27
 
28
; Return 0 to caller
29
        ldi     r0, 0
30
        jmp     r13
31
.Lsetjmp:
32
        .size   setjmp,.Lsetjmp-setjmp
33
        .stabs  "",36,0,0,.Lsetjmp-setjmp
34
 
35
        .globl  longjmp
36
        .type   longjmp,@function
37
        .stabs  "longjmp:F(0,1)",36,0,1,longjmp
38
longjmp:
39
; Address of jmpbuf is in R0.  Restore the registers.
40
        ld2w    r6, @r0+
41
        ld2w    r8, @r0+
42
        ld2w    r10, @r0+
43
        ld      r13, @r0+
44
        ld      r15, @r0+
45
 
46
; Value to return to caller is in R1.  If caller attemped to return 0,
47
; return 1 instead.
48
 
49
        mv      r0, r1
50
        cmpeqi  r0, 0
51
        exef0t || ldi r0,1
52
        jmp     r13
53
.Llongjmp:
54
        .size   longjmp,.Llongjmp-longjmp
55
        .stabs  "",36,0,0,.Llongjmp-longjmp

powered by: WebSVN 2.1.0

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