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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [cpukit/] [score/] [cpu/] [a29k/] [sig.S] - Blame information for rev 1780

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

Line No. Rev Author Line
1 1026 ivang
;/*
2
; *  sig.S,v 1.2 2000/09/22 20:34:15 joel Exp
3
; */
4
 
5
;       .include "register.ah"
6
#include 
7
#include 
8
        .comm   WindowSize,4
9
        .text
10
        .reg    it0,gr64
11
        .reg    it1,gr65
12
        .reg    it2,gr66
13
        .reg    it3,gr67
14
        .reg    v0,gr96
15
        .reg    v1,gr97
16
        .reg    v2,gr98
17
        .reg    v3,gr99
18
        .reg    trapreg,it0
19
        .reg    FPStat0,gr79
20
        .reg    FPStat1,gr79
21
        .reg    FPStat2,gr79
22
        .reg    FPStat3,gr79
23
 
24
        .global _intr14
25
_intr14:
26
#if 0
27
        const   it3,14
28
        sup_sv
29
        jmp     interrupt
30
        nop
31
#endif
32
 
33
        .global _intr18
34
_intr18:
35
#if 0
36
        const   it3,18
37
        sup_sv
38
        jmp     interrupt
39
        nop
40
#endif
41
 
42
        .global _intr19
43
_intr19:
44
#if 0
45
        const   it3,19
46
        sup_sv
47
        jmp     interrupt
48
        nop
49
#endif
50
 
51
interrupt:
52
#if 0
53
        push    msp,it3
54
        push    msp,gr1
55
        push    msp,rab
56
        const   it0,512
57
        sub     rab,rfb,it0     ;set rab = rfb-512
58
        pushsr  msp,it0,pc0
59
        pushsr  msp,it0,pc1
60
        pushsr  msp,it0,pc2
61
        pushsr  msp,it0,cha
62
        pushsr  msp,it0,chd
63
        pushsr  msp,it0,chc
64
        pushsr  msp,it0,alu
65
        pushsr  msp,it0,ops
66
        push    msp,tav
67
;
68
;now come off freeze, and go to user-mode code.
69
;ensure load/store does not restart
70
;
71
        mtsrim  chc,0
72
 
73
        mfsr    it0, cps
74
        const   it1, FZ
75
        consth  it1, FZ
76
        andn    it0, it0, it1
77
        const   it1,(DI|TD)
78
        consth  it1,(DI|TD)
79
        or      it0,it1,it0
80
        mtsr    cps, it0
81
; fall through to _sigcode
82
#endif
83
 
84
        .extern _a29k_ISR_Handler
85
        .global _sigcode
86
_sigcode:
87
#if 0
88
 
89
        push    msp, lr1                                ; R stack support
90
        push    msp, rfb                                ; support
91
        push    msp, msp                                ; M stack support
92
 
93
;       push    msp, FPStat0                            ; Floating point 0
94
;       push    msp, FPStat1                            ; Floating point 1
95
;       push    msp, FPStat2                            ; Floating point 2
96
;       push    msp, FPStat3                            ; Floating point 3
97
        sub     msp,msp,4*4
98
 
99
        pushsr  msp, tav, IPA                           ; save user mode special
100
        pushsr  msp, tav, IPB                           ; save user mode special
101
        pushsr  msp, tav, IPC                           ; save user mode special
102
        pushsr  msp, tav, Q                             ; save user mode special
103
 
104
        sub     msp, msp, 29*4                          ; gr96-gr124
105
        mtsrim  cr, 29-1                                ;
106
        storem  0, 0, gr96, msp                         ;
107
 
108
 
109
        const   v0, WindowSize                          ; Window Size value
110
        consth  v0, WindowSize                          ; Window Size value
111
        load    0, 0, v0, v0                            ; load  Window size
112
        add     v2, msp, SIGCTX_RAB                     ; intr RAB value
113
 
114
        load    0, 0, v2, v2                            ; rab value
115
 
116
        sub     v1, rfb, v2                             ;
117
        cpgeu   v1, v1, v0                              ;
118
        jmpt    v1, nfill                               ; jmp if spill
119
        add     v1, gr1, 8                              ;
120
 
121
        cpgtu   v1, v1, rfb                             ; longjump test
122
        jmpt    v1, nfill                               ;
123
        nop                                             ;
124
 
125
ifill:
126
        add     v0, msp, SIGCTX_RAB+4                   ;
127
        push    v0, rab                                 ;
128
        const   v2, fill+4                              ;
129
        consth  v2, fill+4                              ;
130
 
131
        push    v0, v2                                  ; resave PC0
132
        sub     v2, v2, 4                               ;
133
        push    v0, v2                                  ; resave PC1
134
        const   v2, 0                                   ;
135
 
136
        sub     v0, v0, 3*4                             ;
137
        push    v0, v2                                  ;
138
 
139
nfill:
140
        cpgtu   v0, gr1, rfb                            ; if gr1>rfb -> gr1=rfb
141
        jmpt    v0, lower                               ;
142
        cpltu   v0, gr1, rab                            ;
143
        jmpt    v0, raise                               ; gr1
144
        nop                                             ;
145
 
146
sendsig:
147
        sub     gr1, gr1, RALLOC                        ;
148
        asgeu   V_SPILL, gr1, rab                       ;
149
        add     lr1, rfb, 0                             ;
150
        add     v1, msp, SIGCTX_SIG                     ;
151
 
152
cont:
153
        add     lr2,it3,0                               ; signal #
154
        call    lr0, _a29k_ISR_Handler                  ; call the handler
155
        nop
156
 
157
        nop                                             ; WASTE
158
        jmp     _a29k_sigdfl                            ; return code
159
        nop                                             ; WASTE
160
        nop                                             ; ALIGN
161
 
162
lower:
163
        jmp     sendsig                                 ;
164
        add     gr1, rfb, 0                             ;
165
raise:
166
        jmp     sendsig                                 ;
167
        add     gr1, rab, 0                             ;
168
#endif
169
 
170
 
171
        .global _a29k_sigdfl_sup
172
_a29k_sigdfl_sup:
173
#if 0
174
        repair_R_stack                                  ;
175
        repair_regs                                     ;
176
        sig_return                                      ; return
177
        halt                                            ; never executes
178
#endif
179
 
180
 
181
        .global _sigret
182
_sigret:
183
#if 0
184
;assume msp points to tav
185
        mfsr    it0,cps
186
        const   it1,FZ
187
        or      it1,it0,it1
188
        mtsr    cps,it1
189
        nop
190
        nop
191
_sigret1:
192
        pop     tav,msp
193
        popsr   ops,it0,msp
194
        popsr   alu,it0,msp
195
        popsr   chc,it0,msp
196
        popsr   chd,it0,msp
197
        popsr   cha,it0,msp
198
        popsr   pc2,it0,msp
199
        popsr   pc1,it0,msp
200
        popsr   pc0,it0,msp
201
        pop     rab,msp
202
        pop     it0,msp
203
        add     gr1,it0,0
204
        add     msp,msp,4       ;discount signal
205
        iret
206
#endif
207
 
208
_a29k_sigdfl:
209
#if 0
210
        asneq   SIGDFL,gr1,gr1
211
        jmpi    lr0
212
        nop
213
#endif

powered by: WebSVN 2.1.0

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