summaryrefslogtreecommitdiff
path: root/apps/plugins/sdl/src/timer/mint/SDL_vbltimer.S
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/sdl/src/timer/mint/SDL_vbltimer.S')
-rw-r--r--apps/plugins/sdl/src/timer/mint/SDL_vbltimer.S228
1 files changed, 0 insertions, 228 deletions
diff --git a/apps/plugins/sdl/src/timer/mint/SDL_vbltimer.S b/apps/plugins/sdl/src/timer/mint/SDL_vbltimer.S
deleted file mode 100644
index 7837afce08..0000000000
--- a/apps/plugins/sdl/src/timer/mint/SDL_vbltimer.S
+++ /dev/null
@@ -1,228 +0,0 @@
1/*
2 SDL - Simple DirectMedia Layer
3 Copyright (C) 1997-2012 Sam Lantinga
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19 Sam Lantinga
20 slouken@libsdl.org
21*/
22
23/*
24 * VBL queue routine
25 *
26 * Patrice Mandin
27 */
28
29#define _vbl_queue 0x456
30#define _hz_200 0x4ba
31
32 .text
33
34 .globl _SDL_AtariVblInstall
35 .globl _SDL_AtariVblUninstall
36
37 .globl _SDL_MintAudio_hasfpu
38
39/*--- Save/restore FPU context ---*/
40
41#if defined(__mcoldfire__)
42
43#define SAVE_FPU_CONTEXT \
44 lea sp@(-216),sp; \
45 fsave sp@; \
46 fmovel fpiar,sp@-; \
47 lea sp@(-64),sp; \
48 fmovemd fp0-fp7,sp@
49
50#define RESTORE_FPU_CONTEXT \
51 fmovemd sp@,fp0-fp7; \
52 lea sp@(64),sp; \
53 fmovel sp@+,fpiar; \
54 frestore sp@; \
55 lea sp@(216),sp
56
57#else
58
59#define SAVE_FPU_CONTEXT \
60 .chip 68k/68881; \
61 fsave sp@-; \
62 fmoveml fpcr/fpsr/fpiar,sp@-; \
63 fmovemx fp0-fp7,sp@-; \
64 .chip 68k
65
66#define RESTORE_FPU_CONTEXT \
67 .chip 68k/68881; \
68 fmovemx sp@+,fp0-fp7; \
69 fmoveml sp@+,fpcr/fpsr/fpiar; \
70 frestore sp@+; \
71 .chip 68k
72
73#endif
74
75/*--- Vector installer ---*/
76
77_SDL_AtariVblInstall:
78#if defined(__mcoldfire__)
79 movel sp@(4),d0
80 movel d0,my_vector
81#else
82 movel sp@(4),my_vector
83#endif
84
85 lea _my_vbl,a0
86
87 clrw vbl_mutex
88#if defined(__mcoldfire__)
89 movel _hz_200.w,d0
90 movel d0, _SDL_Atari_hz200
91#else
92 movel _hz_200.w, _SDL_Atari_hz200
93#endif
94
95 /* Stop interrupts */
96
97 movew #0x2700,sr
98
99 /* Read vbl_queue pointer */
100 movel _vbl_queue.w,a1
101
102 /* Search a free place */
103 moveq #7,d0
104bcl_search_place:
105 movel (a1),d1
106 beqs place_found
107 addql #4,a1
108#if defined(__mcoldfire__)
109 subql #1,d0
110 bpls bcl_search_place
111#else
112 dbra d0,bcl_search_place
113#endif
114
115 /* Not found */
116 moveq #1,d0
117 bras exit_vbl_queue
118
119 /* Then install ourselves */
120place_found:
121 movel a0,(a1)
122 moveq #0,d0
123
124exit_vbl_queue:
125 /* Restart interrupts */
126 movew #0x2300,sr
127
128 rts
129
130/*--- Vector uninstaller ---*/
131
132_SDL_AtariVblUninstall:
133 movel sp@(4),d0
134 cmpl my_vector,d0
135 bnes badvector
136
137 movel #_my_vbl,d0
138
139 /* Stop interrupts */
140
141 movew #0x2700,sr
142
143 /* Read vbl_queue pointer */
144 movel _vbl_queue.w,a1
145
146 /* Search where we are */
147 moveq #7,d1
148bcl2_search_place:
149 cmpl (a1),d0
150 bnes next_place
151 clrl (a1)
152 moveq #0,d1
153next_place:
154 addql #4,a1
155#if defined(__mcoldfire__)
156 subql #1,d1
157 bpls bcl_search_place
158#else
159 dbra d1,bcl2_search_place
160#endif
161
162 /* Restart interrupts */
163 movew #0x2300,sr
164badvector:
165 rts
166
167/*--- Our vbl ---*/
168
169_my_vbl:
170#if defined(__mcoldfire__)
171 lea sp@(-60),sp
172 moveml d0-d7/a0-a6,sp@
173#else
174 moveml d0-d7/a0-a6,sp@-
175#endif
176
177 /* Update _hz_200 */
178#if defined(__mcoldfire__)
179 movel _hz_200.w,d0
180 movel d0, _SDL_Atari_hz200
181#else
182 movel _hz_200.w, _SDL_Atari_hz200
183#endif
184
185 /* Verify if this is not already running */
186
187 tstw vbl_mutex
188 bnes vbl_end
189#if defined(__mcoldfire__)
190 movew vbl_mutex,d0
191 notl d0
192 movew d0,vbl_mutex
193#else
194 notw vbl_mutex
195#endif
196
197 /* Save FPU if needed */
198 tstw _SDL_MintAudio_hasfpu
199 beqs SDL_AtariVbl_nofpu1
200 SAVE_FPU_CONTEXT
201SDL_AtariVbl_nofpu1:
202
203 movel my_vector,a0
204 jsr a0@
205
206 /* Restore FPU if needed */
207 tstw _SDL_MintAudio_hasfpu
208 beqs SDL_AtariVbl_Xbios_nofpu2
209 RESTORE_FPU_CONTEXT
210SDL_AtariVbl_Xbios_nofpu2:
211
212 clrw vbl_mutex
213vbl_end:
214#if defined(__mcoldfire__)
215 moveml sp@,d0-d7/a0-a6
216 lea sp@(60),sp
217#else
218 moveml sp@+,d0-d7/a0-a6
219#endif
220 rts
221
222 .data
223 .even
224 .comm _SDL_Atari_hz200,4*1
225 .even
226 .comm vbl_mutex,2*1
227 .even
228 .comm my_vector,4*1