source: rtems/c/src/exec/score/cpu/a29k/sig.S @ bbfdedd

4.104.114.84.95
Last change on this file since bbfdedd was bbfdedd, checked in by Joel Sherrill <joel.sherrill@…>, on 09/22/00 at 20:34:15

2000-09-22 Joel Sherrill <joel@…>

  • amd.ah, cpu.c, cpu_asm.S, register.ah, sig.S, rtems/score/cpu.h: Updated and fixed minor things. Commented out offensive assembly and made applications link.
  • Property mode set to 100644
File size: 3.5 KB
Line 
1;/*
2; *  $Id$
3; */
4
5;       .include "register.ah"
6#include <amd.ah>
7#include <pswmacro.ah>
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
51interrupt:
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
125ifill:
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
139nfill:
140        cpgtu   v0, gr1, rfb                            ; if gr1>rfb -> gr1=rfb
141        jmpt    v0, lower                               ;
142        cpltu   v0, gr1, rab                            ;
143        jmpt    v0, raise                               ; gr1<rab then gr1=rab
144        nop                                             ;
145
146sendsig:
147        sub     gr1, gr1, RALLOC                        ;
148        asgeu   V_SPILL, gr1, rab                       ;
149        add     lr1, rfb, 0                             ;
150        add     v1, msp, SIGCTX_SIG                     ;
151
152cont:
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
162lower:
163        jmp     sendsig                                 ;
164        add     gr1, rfb, 0                             ;
165raise:
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
Note: See TracBrowser for help on using the repository browser.